Linuxで非表示のプロセスを検出する方法は?


10

仕事で根付いていると思われる箱があります。問題は、それをどのように見つけるかです。私はシステム管理者ではありませんが、状況を解決するためにチームに連れて行かれました。問題など、探すのに適した場所がどこにあるのか知りたいです。

これが疑われる理由は、高い(ランダムに見える)ポートからのマシンでのネットワーク使用率が通常より高いことに気付いたためです。

問題のある子供を見つけるには何ができるでしょうか?将来これから保護するために何ができるでしょうか?将来これを認識させるために実行できる監視はありますか?(ネットワーク監視とは別に、私たちはすでにより注意深く監視するために取り組んでいます。)

よろしくお願いします。必要に応じて詳細をお知らせします。あなたの時間を感謝します。


2
保証された修正:軌道から核を作り、バックアップから復元します。
Chris S

これは、この最近の質問と重複しているようです。
スティーブン月曜日

1
「私はシステム管理者ではありませんが、状況を解決するためにチームに連れて行かれました」-これは非常に貴重です。明確にするために:あなたの質問は完全にOKです。あなたの実際の状況はそうではありません。あなたを巻き込むことに決めた人は誰でも間違っています。
2010年

@Chris S:これは学習問題であり、問​​題の問題を解決するための最速の方法ではありません。
Chris、

halp:私はこれを解決する責任はありませんが、そこから学ぶことはできます。私は最近cseを卒業し、仕事で足を濡らしています。
Chris

回答:


6

マシンにあるシステムツールを信頼することはできません。ルートキットは、ps、netstat、lsなどを置き換えて、それらの存在を隠します。マシンをオフラインにして、ハードドライブを取り出し、フォレンジックコピー(ddを考えてください)を作成してから、それを古いマシンで作業して、ルートキットをスキャンします。

ライブマシン(通常は無駄です)での作業を主張する場合は、CDにレスキューディストリビューション(非常に重要なのは読み取り専用であること)をダウンロードして、ps、lsmodなどのコピーを使用してみてください。

ルートキットがカーネルモジュールをインストールして、psなどのツールが通常動作する/ procのエントリを非表示にできるため、これでも失敗する可能性があります。

幸運を!


彼がRPMベースのディストリビューションを持っている場合は、実行rpm -V -f /bin/psして、変更されていないかどうかを確認できます。もちろん、これは攻撃者がrpmRPMデータベースを変更していない場合にのみ機能します。彼はいくつかrpmののファイルを変更してから実行rpm -V rpmし、それが嘘かどうかを確認することができました。
クリスティアンCiupitu

5

適切に構築されたルートキットの問題は、システムのコマンドを変更することです。ルートキットのプロセスを表示しないpsおよびtopと同様、ルートキットのファイルを表示しないlsと同様。

したがって、これらのコマンドをソースまたはバイナリー形式で取得する必要があります。(署名が正しいことを確認してください)。しかし、ルートキット(私はそれを見てきた)のトリックは、コンパイラも破損している可能性があることです。したがって、コンパイラーがlsやpsやその他のコマンドをコンパイルしていることを知ったとき、それらも感染させます。

この問題を見たとき、私はgccを再コンパイルしても問題ないと言ったが、gccをコンパイルするために必要なものは何もなかった...感染gcc...。

これは大きくて検出するのが難しいと言われますが、そうですが、私があなたに最悪のケースを与えただけの防弾になっているルートキットはまれです。

真剣に、あなたのサーバーにルートキットがあると確信しているなら、それを再インストールしてください!


答えに感謝し、はい、それを再インストールすることが今のところ解決策です。ただし、サーバー全体を再構築しなくても、将来的にはそれを検出して回復できるように、このことについて学びたいと思っています。私たちの幹部は、次の幹部よりもダウンタイムを好まない。
クリス

@クリス、予防こそがあなたの唯一の治療法です。私たちが答えられるように、どのようにしてそれが起こったのかを調べてください。それが再び起こらないようにする「方法」
Arenstar

質問に対する適切な回答者を選びますか?
Gopoi

5

サーバーが「ルート化」されているかどうかを知る最良の方法は、ホストベースの侵入検知システム(HIDS)を実行することです。残念ながら、現在HIDSを実行していない場合、HIDSをインストールするのは遅すぎます。HIDSをインストールする適切なタイミングは、サーバーが最初にインストールされたときと、ネットワークに配置されるです。

簡単に言うと、ほとんどのHIDSは、すべてのシステムバイナリの暗号化ハッシュを計算し、それらのハッシュを(他の多数のファイル統計と共に)ベースラインデータベースと呼ばれるデータベースに格納することによって機能します。次に、HIDSは定期的にシステムを再スキャンし、ベースラインデータベース内のすべてのファイルを実際のシステムファイルと比較します。

もちろん、ルートキットがベースラインデータベースを変更する可能性があります。そのため、サーバーをオンラインにするに、そのデータベースのコピーを取得してサーバーとは別に保存する必要があります。次に、自分が「ルート化」されている疑いがある場合(およびベースラインデータベースも改ざんされている疑いがある場合)、インストールメディアからシステムを起動し、バックアップから既知の正常なデータベースを復元してから、スキャンを実行します。既知の良い。ただし、ルートキットは特定のHIDSを打ち負かす必要がないと考える可能性がはるかに高いため、HIDSから、システムファイルが変更された可能性があり、システムへの侵入の可能性を示す通知を受け取ります。

HIDSを実行していないため、ルート権限を取得しているかどうか、または変更されたシステムファイルを特定するための簡単な方法はありません。システムファイルを、正常なインストールメディアから取得した正常なファイルと比較するのに多くの時間を費やす可能性がありますが、その時間は、そのメディアからシステムを再インストールすることに費やしたほうがよいでしょう。事後のルーツを調査したい場合は、システムを消去してから再インストールする前に、システムのイメージをとることが最善の方法です。


SamhainはHIDSです。
ペフ2014

4

以前の投稿を参照してください

perlルートキットを削除する痛み

あなたがこれを読むことは本当に重要です。

あなたの質問に答えるように..

私は通常、snortのようなIDS / IPS(侵入検知/保護システム)を実行します。これは、不正行為に対して優れた効果を発揮します。

また、Syslogサーバーを使用して、ログメッセージを本番サーバーから切り離しているため、問題や変更をバックトレースしたり、ルートキット化したりできます。

また、cpu、メモリ、ディスク、ネットワークの使用状況をグラフ化し、異常があった場合にレポートを作成するcactiなどの管理ツールもよく使用します。

ルートキットであることは重大な問題です。間違いなく原因を解明してください。

これが役に立てば幸い..:D


3

ランダムなハイポートは一時的なポートであり、このシステムから外部に1つ以上のプログラム接続がある可能性が高いことを示しています。

ルート権限を取得していない場合は、netstat -np | grep -v ^unixどのプログラムがトラフィックを生成しているかについてのヒントが表示されることがあります。

また、tcpdumpを使用して、近くにあるシステムからのトラフィックをスキャンし、根付いていると思われるシステムから発信されたパケットをダンプすることもできます。問題のプログラムがrootとして実行されていない場合は、感染したシステムから実行できます。

根ざしを避けるためにできることはいくつかあります:

  • システム、特にカーネルにパッチを当ててください。カーネルリリースの理由を監視して、攻撃ベクトルを特定します。
  • 必要なプログラムのみをインストールして使用します。最小限のインストールを行います。
  • rootとしてできるだけ実行しないでください。多くのプログラムは、root特権を必要とするセットアップを完了すると、非特権ユーザーIDに変わります。

編集:ルート権限を取得している場合、静的にリンクされたpsおよびlsプログラムを使用すると、2つのツールが検出する実行中のプログラムの違いが示されることがあります。短命のプログラムがなくなると、リストに違いが生じることもあります。


1

ルート化される可能性のあるシステムの実際の修正は、安全なソースから再インストールすることです。インストールCDのように。次に、バックアップからのみデータを復元します。バックアップ内のバイナリまたはスクリプトは、侵害されてバックアップに保存されている可能性があります。

実行中のシステムでルートキットを見つけるには、ルートキットを検出するように設計されたカーネルモジュールをコンパイルする方法があります。同じOSバージョンを実行している別のマシンでコンパイルします。次に、それをコピーして挿入します。

ルートキットディテクターには、実行中のプロセステーブルをダンプし、syscallテーブル(syscallインターセプトを検索するため)やその他の機能を確認するためのツールがカーネルモジュールに組み込まれています。モジュールからの出力を取得し、それをps、netstat、lsなどからの出力と比較するスクリプトが含まれている場合があります。または、既知のルートキットシグネチャおよびレポートについてカーネル空間のメモリをスキャンできる場合があります。


1

これはネズミのようなものです。もし見かけたら、そこには100匹の生き物がいます。侵害の兆候が見られる場合は、システム全体が侵害されていると考えなければなりません。そのため、多くの時間を費やすのではなく、システムの再インストールを勧めています。マシンが危険にさらされて、システム管理者が混乱を片付けたと思ったいくつかの状況に遭遇しました。

ルートキットがps、top、netstatなどのシステムバイナリを置き換えることは非常に一般的です。また、トロイの木馬sshにも一般的です。したがって、これらのファイルでチェックサムの奇妙さを探すことは、最も重要なアプローチです。rpmベースのシステムを使用している場合、通常はrpm -Vが適切なツールですが、Debian / Ubuntuではdpkg-verifyを使用します。または、チェックサムを直接チェックすることもできます(ただし、速度の理由でバイナリがオンザフライで変更されるプリリンクに注意してください)。これは信頼できませんが、スクリプトキディ攻撃の多くはこれらのトレースをカバーしていません。(言い換えれば、何かを見つけた場合、良いことです。何かを見つけられない場合、それはあなたがきれいであることを証明するものではありません。)

その他の注意事項:外部から開いているnmapように表示されているnetstatが、マシン上では開いていないように見えるポート、およびに/proc表示されないPID ps。また、リモートsyslogを有効にしている場合は、lastlogにレコードがないsshログインを探します。


0

RKhunterとchkrootkitのコピーを自分で入手してください。彼らは通常、そこにあるべきではないものを見つけるのを手伝うことにかなりまともです。

ファイアウォールと一緒にApacheレイヤーでもmod_securityを実行することは常に良いことです。通常、彼らは古いWebアプリケーションやスクリプトを見つけ、そこからPerlシェルスクリプトやその他の楽しいものでアクセスを強化します。

ps auxfwwは通常、属していないプロセスを見つけるのに最適です。

また、netstat -anpは、特定のポートで何をリッスンしているかを確認します。

繰り返しますが、これらは、ルート化されていない場合、妥協するだけで十分です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.