web-dev-qa-db-ja.com

Linuxで隠されたプロセスを検出する方法は?

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

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

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

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

10
Chris

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

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

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

幸運を!

6
bot403

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

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

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

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

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

5
Gopoi

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

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

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

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

5
Steven Monday

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

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

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

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

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

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

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

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

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

4
Arenstar

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

ルート権限を取得していない場合は、netstat -np | grep -v ^unixは、トラフィックを生成しているプログラムに関するヒントを提供します。

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

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

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

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

3
BillThor

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

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

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

1
Zan Lynx

これはネズミのようなものです。もし見れば、そこには100匹の生き物がいます。侵害の兆候が見られる場合は、システム全体が侵害されていると想定する必要があります。そのため、多くの時間を費やすのではなく、システムを再インストールすることを誰もが提案しています。マシンが危険にさらされ、システム管理者が混乱をクリーンアップしたと思った状況がいくつかありました。

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

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

1
mattdm

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

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

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

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

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

0
Steven Leggett