web-dev-qa-db-ja.com

SSH攻撃が自分のアプリケーションからのものでないことをどのように証明できますか?

私のRuby on Rails WebアプリケーションはLinodeでホストされています。Linodeはチケットを開き、他のサーバーを攻撃したため私のLinodeサーバーを非難しました。ログはそれがSSHであることを明らかにしましたサーバーからのブルートフォース攻撃ソースコードを調べ、サーバーに悪意のあるスクリプトがあるかどうかを確認しましたが、何も見つかりませんでした。

  1. 攻撃が私の端から始まっていないことをどのように証明できますか?
  2. しかし、攻撃が私の端から発生している場合、どのプロセスが攻撃の原因であるかをどのように検出できますか?

私のWebアプリケーションはUbuntu 12.04で実行されています。

6
Pratik Ganvir

Linodeは Xen を使用します。つまり、アプリを持っているだけではありません。カーネルとベースライブラリを完備したオペレーティングシステム全体を使用できます。攻撃はyourシステムから行われるため、完全にあなたの管轄となります。攻撃者は何らかの方法でシステムに侵入しましたが、そこに入ると、少なくとも半分の能力がある場合、 ルートキット を使用して侵入を恒久的なインストールに変換しました。それの欠点は、ルートキット化されたシステムがシステムの内部から表示されないことです:カーネルは感染していて、攻撃者からの攻撃プロセスをしないでしょう。

(ここでは、攻撃者がいったん入ると、自分の権利をルートレベルにエスカレートできるという仮定を使用しています。これは、オペレーティングシステムがローカルの攻撃者に対してめったに堅固ではないため、賢明な仮定です。)

これは、システムを一掃して最初から再インストールする必要があることを意味します。侵害されており、信頼できなくなっています。その時点で、2つの目標があります。

  1. 攻撃者がどのようにして侵入したかを理解し、新しく再インストールされたシステムで再び攻撃を行わないようにします。
  2. Linodeの人々に、あなたが共犯者ではなく犠牲者であることを納得させてください。

最初のポイントとして、これはシステムで検出できるすべてのログとその他のトレースの分析の問題です。したがって、スクレイピングを行う前に、完全なコピー(できれば、仮想ハードディスクのバイト単位のコピー)を取得して、後で分析します。しかし、攻撃者がかなり良ければ、彼は自分の痕跡を隠したことを覚えておいてください(それがルートキットの目的です)。また、アプリケーションコードの監査も適切です。攻撃者は、アプリケーションを含むサーバーの外部からアクセス可能なサービスの1つを介して何らかの方法で入力します(---)。別の可能性としては、攻撃者がSSHアカウントのパスワードを推測した可能性があります(結局のところ、この攻撃者はSSHログインに対してブルートフォース攻撃を実行することを知っています):新しいシステムでは、新しくて大きくランダムなパスワードを使用します(現在のシステムでは入力しないでください!危険にさらされているため、パスワードの変更をその場で取得します)。

第二に、これは信頼と人間関係の問題です。自分が攻撃者でないことを証明することはできません。しかし、Linodeの人々は、ハイジャックされたシステムが残念ながら一般的な現実であることを知っています。システムを最初から再インストールするなど、デューデリジェンスを実行するだけです。面倒なタスクを実行することは、その問題に対するあなたの誠実さを確立するのに大いに役立ちます。

6
Thomas Pornin

サーバーからのトラフィックを調査する必要があります。サーバーが他のネットワーク上のSSHサービスに接続しているかどうかがわかります。

サーバーから生成されたトラフィックからそのような証拠が見つからない場合は、この証拠をlinodeに提供し、反論するか受け入れるかを依頼します。

サーバーがこのように動作する原因を特定するために、ネットワークトラフィック、ログ、実行中のプロセス、ローカルファイルを調べる必要があるという証拠が見つかった場合。

これが行われると、サーバーを攻撃して信頼できるソースから再インストールすると同時に、最初にセキュリティを侵害したのと同じ攻撃ベクトルにさらされる前に修正を実装する必要があります。

2
artifex

サーバー上で何らかの形、形、または形式の侵害されたシステムを見つけることができれば、それを証明できます。あなたは証明の一部を持っています。ログファイルが1行であることは証明できません。したがって、これを「証明」するのは本当に困難です。 ITセキュリティは、WOT(Web of Trust)と多くの関係があります。何らかの方法で彼らに「信頼」させる必要があります。これを行う最も簡単な方法は、ソースコードを引き渡すことです。しかし、これはほとんどの場合不可能です。

しかし、それでも、サーバーがSSHを使用してサーバーで複数のログインを試みたことの確証がある場合は、何か問題が発生している可能性があります。 イメージを作成します(ハードドライブ、RAM)再起動して、ペンテスターを雇います。

自分で攻撃を検出することについて。サーバーのイーサネットポートにスニファーを置きます。これを行う最善の方法は、SPANポートを使用することです。システム自体を盗聴しないでください。

とても幸運 :)

1
Stolas