web-dev-qa-db-ja.com

Linuxで攻撃者のサーバーに情報を送信する悪意のあるコードを検出する方法

ルートキットやトロイの木馬など、Linuxラップトップに悪意のあるコードがあるとします。次に、悪意のあるコードがインターネット経由でハッカーに情報を転送する場合に注意を限定します。たとえば、ハッカーがコンピューターからいくつかのファイルを盗んだり、キーロガーを介してパスワードを盗んだり、コンピューターを次のように使用したりするためです。会社や政府のサーバーなどをハッキングするためのベース。

ネットワークセキュリティの素人である私は、(ARPスプーフィングなどによって)ボックスのすべてのトラフィックを(A)侵害されていない別のボックス(B)にリダイレクトし、そこにスニッフィングすることで確認できると思います疑わしいトラフィックです。 Aが現時点でトラフィックを送信してはならないことがわかっている場合、これは簡単なようです(Webを閲覧しないなどの理由により...)。ただし、悪意のあるコードは少し巧妙で、(A)から他のトラフィックが出ている場合にのみデータを送信する可能性があります。次に、マシンAから送信される制御されたトラフィックを生成する方法が必要になります。マシンBは、生成されたときのトラフィックを把握している必要があります。つまり、追加のトラフィックを予測し、サーバーに報告するときにウイルスがこのように検出できるようにする必要があります。 。

このモデルは少しナイーブだと思いますが、この点に関するより技術的な詳細を知りたいです:

  • 上記の説明は現実にどの程度近いですか?
  • ウイルスが情報の送信を隠すために使用できる他のより洗練された方法は何ですか?
  • 説明されているスニッフィングが、コードがサーバーに報告するときにそのようなコードを検出するための良い方法である場合、実際にどのように詳細にこれを行いますか(Linuxの場合)?そして、情報の送信をマスクする非常にスマートな方法を確実に検出する方法は?
6
student

実際には、攻撃者がシステム内のどの程度深いかに依存します。彼があなたのDNSを制御している場合、これは少しトリッキーになります。攻撃者がすでにサーバー上にいる場合、とにかく運命をたどっています。 Twitter、p2p、dns-queriesなどを使用して簡単に検出できない非表示のバックチャネルやコマンドチャネルがあります。 SANS-ISC読書室で「隠されたチャネル」を検索して、何が可能かについてのアイデアを得る

リダイレクト...疑わしいトラフィックがないかスニッフィングで確認

ほぼ不可能。ヒューリスティックは機能しません。そして、暗号化されたトラフィックをどのように処理しますか?

Httpリクエストを制御する場合:

  • Squidを透過プロキシとして使用し、許可された接続ターゲットでホワイトリストを使用する

一般的なネットワーク制御の場合:

  • サーバーの前で厳密なiptables-setupを使用します(すべてを拒否し、必要なものを許可します)
  • 後の分析のために、発信接続試行をログに記録します
  • Tcpdumpを使用してトラフィックを記録します(UDPを忘れないでください)