web-dev-qa-db-ja.com

Linuxトロイの木馬を検出して削除する方法

私は最近これに(再)つまずきました:

はい、信頼できないソースからランダムなPPA /ソフトウェアを追加すると問題が発生する(またはさらに悪い)ことを知っています。私はそんなことはしませんが、多くの人がそうしています(多くのLinuxブログとタブロイド紙は、ファンシーアプリにPPAを追加することを奨励しています。

トロイの木馬または不正なアプリケーション/スクリプトを検出して削除するにはどうすればよいですか?

16
iamsid

一般的なレシピはありません。システムが未知のトロイの木馬に感染している場合は、再インストールするだけで済みます。

トロイの木馬が特定の方法で動作していることがわかっている場合(たとえば、トロイの木馬がカーネルに感染していないことがわかっている場合)は、それほど厳しくない方法で回復できる可能性があります。しかし、それはトロイの木馬がどのように動作するかを知ることに完全に依存しています。あなたが持っているすべてが症状(あなたの同意なしにコンピューターがスパムを送信するなど)である場合、一般的な手法はありません。トロイの木馬に関する限り、検出と隠蔽は銃と鎧のようなものです。技術的なエスカレーションがあり、どちらの当事者にも本質的な利点はありません(ただし、隠れ家は有利です)。

多くのシステムには、安全な配布チャネルがあります。たとえば、aptベースのツール(apt-get、aptitude、synaptic、ソフトウェアセンターなど)を使用してUbuntuリポジトリからパッケージをインストールすると、ツールは、Ubuntuが信頼する誰かによってパッケージが署名(検証)されていることを確認します。 (ほとんどのディストリビューションには同様のメカニズムがあります。)PPAからパッケージをインストールする場合、PPA所有者がパッケージを精査したことがわかるだけです。これは、最初にPPA所有者を信頼する理由がない場合は役に立ちません。

トロイの木馬とバックドアについては、 Ken Thompson のチューリング賞の講演 Reflections on Trusting Trust を読むことを強くお勧めします。要約すると、彼はコンパイラを変更して、ログインプログラムをコンパイルするときに、秘密のパスワードでログインできるコードを追加するようにしました。次に、コンパイラーを変更して、コンパイル時にバックドアを追加するコードを挿入しました。次に、システム全体(特にログインプログラムとコンパイラ)を再コンパイルしました。最後に、彼はコンパイラのソースを元の問題のないソースに復元しました。もう一度、読んでください ケントンプソンの記事 ;次に David Wheeler's counterpoint を読むこともできます。おそらく Bruce Schneierのブログ記事 を介して理解するのが最善です。

この記事で説明した「トロイの木馬」を正しく理解していれば、「通常の」マルウェアとして「通常の」方法で発見することはできません。このIRCdは使用されるまで正常に動作していたため、管理者はこのセキュリティホールを次の場合にのみ見つけることができます。1)これが使用され、このホールによって行われたアクションがログにエントリを引き起こしたか、他の方法で表示された、2)ソースコードを読み取った。

「本物の」Linuxマルウェアは、Linux用のAVソフトウェアまたはAV LiveCDレスキューディスクでも検出できるため、このソフトウェアを使用してコンピューターをスキャンできます。リストにある SecureList を見るとわかるように、名前にLinuxが含まれる1941のエントリがあり、そのソフトウェアはKasperskyソフトウェアによって検出されます。このリストをざっと見てみると、多くのエントリは一部のDDoSツールとエクスプロイト、または自動的に拡散することができず、攻撃用ツールとしてのみ使用できる(したがって有害で​​はない)ツールに関するものであることがわかります。

クラッカーによってインストールされたバックドア/ルートキットをチェックするには、ファイルチェックサムをチェックするツールを使用できます(クリーンなシステムでファイルとチェックサムのリストを生成し、サーバーソフトウェアの更新後に更新する必要があります)。新しいファイルやチェックサムが間違っているファイルはすべて疑わしいものです。チェックサムとそれを生成するツールのリストは読み取り専用のメディアにある必要があります(クラッカーは、たとえば、間違ったチェックサムを表示する独自のバージョンのmd5sumを変更することもできます)。マルウェアを検出するこの方法は、ソフトウェアが毎日アップグレードされない「安定した」システムで使用できます。

一部のマルウェアは、netstatをローカルで実行してネットワークトラフィックをチェックすることで検出できますが、システムが感染している場合は、netstatが示すデータも変更される可能性があります。この場合、解決策の1つは、別のコンピューター(ルーターなど)からのネットワークトラフィックを監視して、インターネットに送信されるトラフィックを確認することです。

7
pbm

SELinuxとAppArmorは、トロイの木馬/ルートキットおよびその他の感染を防止するために存在します。私はSELinuxのケースを教えてくれます。 SELinuxを有効にすると、マシンにインストールするすべてのプロセス(デーモンを含む)にコンテキストを与えます。また、コンテキストに合わせてファイルシステムにラベルを付け、それらを一致させます。プロセスがそのコンテキスト内にない何かを行おうとすると、メッセージが表示され、SELinuxが強制モードの場合、アクションは完了できません。
このようにして、ircdトロイの木馬がpsコマンドまたは何か他のもの(検出を回避するためのトロイの木馬/ルートキット/ワームの一般的な戦略)を上書きする意思がある場合、私はそれを許可されません。そして、あなたは通知されます。
私は設定するのが難しいと思いますが、私のマシンは現在施行されているSELinuxで動作しており、私の(2台の)Fedoraラップトップは、あまり面倒なくデスクトップのニーズをすべて実行できます。
ホームサーバーでも強制モードになっています。
別の戦略は、循環コマンドのチェックサムを計算し、基本コマンドの変更に関して通知するルートキット検出器の定期的な実行です。
私はSELinuxとrkhunterの両方を有効にして(プラスclamavアンチウイルスで)作業します。

よろしく

4
lucabotti

別の回答では、「隠し」(ステルスマルウェア)は「検出」よりも本質的に有利であるとしています。同意しません。これは、マルウェアの検出をシグネチャまたはヒューリスティックに依存する検出アプローチに限定する場合に当てはまります。しかし、マルウェアを検出する別の方法があります。既知の商品を確認することです。 Tripwire、AIDEなどは、ディスク上のファイルを検証できます。 Second Look は、実行中のカーネルとプロセスを確認できます。 Second Lookはメモリフォレンジックを使用して、オペレーティングシステム、アクティブなサービス、およびアプリケーションを直接検査します。メモリ内のコードとLinuxディストリビューションベンダーがリリースしたコードを比較します。このようにして、ルートキットやバックドアによって行われた悪意のある変更、および実行されている不正なプログラム(トロイの木馬など)を即座に特定できます。

(開示:私はSecond Lookの主任開発者です。)

2
Andrew Tappert