私は最近これに(再)つまずいた:
はい、信頼できないソースからランダムなPPA /ソフトウェアを追加すると、トラブル(またはそれ以上)を要求することを知っています。私はそれを決してしませんが、多くのことを行います(多くのLinuxブログやタブロイドは、システムを壊したり、さらに悪いことにセキュリティを損なう可能性があることを警告せずに、派手なアプリにPPAを追加することを促進しています)。
トロイの木馬または不正なアプリケーション/スクリプトを検出して削除するにはどうすればよいですか?
私は最近これに(再)つまずいた:
はい、信頼できないソースからランダムなPPA /ソフトウェアを追加すると、トラブル(またはそれ以上)を要求することを知っています。私はそれを決してしませんが、多くのことを行います(多くのLinuxブログやタブロイドは、システムを壊したり、さらに悪いことにセキュリティを損なう可能性があることを警告せずに、派手なアプリにPPAを追加することを促進しています)。
トロイの木馬または不正なアプリケーション/スクリプトを検出して削除するにはどうすればよいですか?
回答:
一般的なレシピはありません。システムが未知のトロイの木馬に感染している場合、できることは再インストールだけです。
トロイの木馬が特定の方法で動作していることがわかっている場合(たとえば、トロイの木馬がカーネルに感染していないことを知っている場合)、回復の方法はそれほど厳しくありません。しかし、それはトロイの木馬がどのように動作するかを知ることに完全に依存しています。症状のみ(コンピュータが同意なしにスパムを送信するなど)の場合、一般的な手法はありません。トロイの木馬検出器は、トロイの木馬デザイナー(および幸運)よりもスマートでなければなりません。トロイの木馬に関する限り、検出と隠蔽は銃と鎧のようなものです。技術的なエスカレーションがあり、どちらの当事者にも本質的な利点はありません(ただし、隠れ家には有利なスタートがあります)。
多くのシステムには、安全な配布チャネルがあります。たとえば、aptベースのツール(apt-get、aptitude、synaptic、ソフトウェアセンターなど)を使用してUbuntuリポジトリからパッケージをインストールすると、ツールはUbuntuが信頼する誰かによってパッケージが署名(検証)されていることを確認します。(ほとんどのディストリビューションには同様のメカニズムがあります。)PPAからパッケージをインストールするとき、PPA所有者がパッケージを吟味したことだけがわかります。そもそもPPA所有者を信頼する理由がない場合は役に立ちません。
トロイの木馬とバックドアについては、Ken Thompsonのチューリング賞講演「Trustions on Trusting Trust」を読むことを強くお勧めします。要約すると、彼はログインプログラムをコンパイルするときに、秘密のパスワードでログインできるコードを追加するようにコンパイラを変更しました。その後、コンパイラを変更して、自身をコンパイルしたときにバックドアを追加するコードを挿入するようにしました。次に、システム全体(特にログインプログラムとコンパイラ)を再コンパイルしました。最終的に、彼はコンパイラのソースを元の問題のないソースに復元しました。再び、ケン・トンプソンの記事を読んでください。その後、デビッド・ウィーラーの対位法を読むこともできます。おそらく、ブルース・シュナイアーのブログ記事で最もよく理解できます。
この記事で説明されている「トロイの木馬」を正しく理解していれば、「通常の」マルウェアとして「通常の」方法で発見することはできませんでした。このIRCdは使用されるまで正常に動作していたため、管理者は次の場合にのみこのセキュリティホールを見つけることができました。
「本物の」Linuxマルウェアは、Linux用AVソフトウェアまたはAV LiveCD Rescue Disksでも検出されるため、このソフトウェアを使用してコンピューターをスキャンできます。リストのSecureListを見るとわかるように、Linuxの名前には1941のエントリがあり、そのソフトウェアはKasperskyソフトウェアによって検出されるはずです。このリストをざっと見てみると、多くのエントリが一部のDDoSツールとエクスプロイト、または自動的に拡散できず、攻撃用のツールとしてのみ使用できる(有害ではない)ツールに関するものであることがわかります。
クラッカーによってインストールされたバックドア/ルートキットをチェックするには、ファイルのチェックサムをチェックするツールを使用できます(クリーンなシステムでファイルとチェックサムのリストを生成し、サーバーソフトウェアの更新後に更新する必要があります)。すべての新しいファイルまたはチェックサムが間違っているファイルは疑わしいです。チェックサムとそれを生成するツールのリストは読み取り専用メディア上にある必要があります(クラッカーは、たとえば、間違ったチェックサムを表示する独自のバージョンのmd5sumを変更することもできます)。マルウェアを見つけるこの方法は、ソフトウェアが毎日アップグレードされない「安定した」システムで使用できます。
一部のマルウェアは、netstat
ローカルで実行してネットワークトラフィックをチェックすることで検出できますが、システムが感染している場合は、表示されるデータnetstat
も変更できます。この場合、いくつかの解決策は、別のコンピューターからのネットワークトラフィックを監視することです(たとえば、ルーターから、インターネットに送信されるトラフィックを確認する)。
SELinuxおよびAppArmorは、トロイの木馬/ルートキットおよびその他の感染を防ぐために存在します。私はSELinuxの場合について話していますが、それは私がよく知っています。SELinuxを有効にすると、マシンにインストールするすべてのプロセス(デーモンを含む)にコンテキストを与えます。また、ファイルシステムにラベルを付けて、コンテキストを処理し、それらを一致させます。プロセスがそのコンテキスト内にない何かを行おうとすると、メッセージを受け取り、SELinuxが強制モードになっている場合、アクションを完了できません。
このように、ircdトロイの木馬がpsコマンドまたは他の何か(検出を回避するためのトロイの木馬/ルートキット/ワームの一般的な戦略)を上書きすることをいとわない場合、私はそれを許可されません。そして、あなたは知らされるでしょう。
構成は難しいと思いますが、私のマシンは現在、SELinuxが適用された状態で動作しており、私の(2台の)Fedoraラップトップはデスクトップが必要とすることをあまり手間をかけずに実行できます。
私のホームサーバーも強制モードになっています。
別の戦略は、定期的なルートキット検出器の実行です。これは、重要なコマンドのチェックサムを計算し、基本的なコマンドの変更について通知します。
私は、SELinuxとrkhunterの両方(およびclamavウイルス対策)を有効にして作業しています。
よろしく
別の回答では、「隠れ家」(ステルスマルウェア)には「検出器」よりも本質的な利点があると主張しました。同意しません。これは、マルウェアを検出するためにシグネチャまたはヒューリスティックに依存する検出アプローチに自分を制限する場合に当てはまります。しかし、マルウェアを検出する別の方法があります:既知の商品を確認します。Tripwire、AIDEなどは、ディスク上のファイルを検証できます。Second Lookは、実行中のカーネルとプロセスを検証できます。Second Lookは、メモリフォレンジックを使用して、オペレーティングシステム、アクティブなサービス、およびアプリケーションを直接検査します。メモリ内のコードをLinuxディストリビューションベンダーがリリースしたものと比較します。このようにして、ルートキットやバックドアによって実行された悪意のある変更、および実行中の不正なプログラム(トロイの木馬など)を即座に特定できます。
(開示:Second Lookの主任開発者です。)