web-dev-qa-db-ja.com

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

そのため、オフィスでジオサービスWebサーバーをホストしています。

誰かが(おそらくftpまたはsshを介して)このボックスに侵入し、ある種のirc管理のルートキットを入れたようです。

今、私はすべてをクリーンアップしようとしています、irc経由で接続しようとするプロセスpidを見つけましたが、誰が呼び出しプロセスであるかわかりません(すでにps、pstree、lsofで調べました)プロセスはPerlですwwwユーザーが所有するスクリプトですが、ps aux | grepは最後の列に偽のファイルパスを表示します。

そのpidをトレースして呼び出し元をキャッチする別の方法はありますか?

言及するのを忘れました:カーネルは2.6.23であり、rootになるために悪用可能ですが、このマシンにあまり触れることができないため、カーネルをアップグレードできません

編集:lsofが役立つかもしれません:

lsof -p 9481
コマンドPIDユーザーFDタイプデバイスサイズノード名
Perl 9481 www cwd DIR 8,2 608 2/ss
Perl 9481 www rtd DIR 8,2 608 2/ss
Perl 9481 www txt REG 8,2 1168928 38385 /usr/bin/Perl5.8.8ss
Perl 9481 www mem REG 8,2 135348 23286 /lib64/ld-2.5.soss
Perl 9481 www mem REG 8,2 103711 23295 /lib64/libnsl-2.5.soss
Perl 9481 www mem REG 8,2 19112 23292 /lib64/libdl-2.5.soss
Perl 9481 www mem REG 8,2 586243 23293 /lib64/libm-2.5.soss
Perl 9481 www mem REG 8,2 27041 23291 /lib64/libcrypt-2.5.soss
Perl 9481 www mem REG 8,2 14262 23307 /lib64/libutil-2.5.soss
Perl 9481 www mem REG 8,2 128642 23303 /lib64/libpthread-2.5.soss
Perl 9481 www mem REG 8,2 1602809 23289 /lib64/libc-2.5.soss
Perl 9481 www mem REG 8,2 19256 38662 /usr/lib64/Perl5/5.8.8/x86_64-linux-threa d-multi/auto/IO/IO.soss
Perl 9481 www mem REG 8,2 21328 38877 /usr/lib64/Perl5/5.8.8/x86_64-linux-threa d-multi/auto/Socket/Socket.soss
Perl 9481 www mem REG 8,2 52512 23298 /lib64/libnss_files-2.5.soss
Perl 9481 www 0r FIFO 0,51068892パイプ
Perl 9481 www 1w FIFO 0,51071920パイプ
Perl 9481 www 2w FIFO 0,51068894パイプ
Perl 9481 www 3u IPv4 130646198 TCP 192.168.90.7:60321->www.****.net:ircd(SYN_SENT)

8
paul.ago

何かアドバイスがあれば、片付けに時間を無駄にするのをやめましょう。後で使用するフォレンジック用のOSのイメージを作成し、サーバーを再インストールするだけです。

申し訳ありませんが、ルートキットから自分を解決するための唯一の安全な方法です。

後で、特定の理由で、なぜそれが起こったのか、画像を確認することができます。

私自身の個人的な経験から、私はこれを行い、その後、2008年にopensslの欠陥を含むSSHキーを持っている内部ユーザーを見つけました。

私は、それが物事をクリアすることを願っています。

注:
再インストールする前にサーバーのイメージ/バックアップを行う場合は、非常に注意してください。 @dfrankeが言ったように、信頼できるメディアから起動してバックアップします。

優れたルートキットはSSHなどの信頼できるセッションを介して拡散できることが知られているため、ルートサーバーから他のマシンに接続しないでください。

37
Arenstar

プロセスがargv [0]を変更した場合、コマンドラインを変更できます。 ls -l /proc/[pid]/exeをお試しください

man 5 procから

このファイルは、実行されたコマンドの実際のパス名を含むシンボリックリンクです。このシンボリックリンクは通常どおり逆参照できます。それを開こうとすると、実行可能ファイルが開きます。/proc/[number]/exeと入力して、プロセス[number]で実行されているのと同じ実行可能ファイルの別のコピーを実行することもできます。マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、このシンボリックリンクのコンテンツは利用できません。

ps auxwf | lessは、プロセスの「フォレストビュー」を提供し、このプロセスを起動したプロセスを表示できます(ルートキットがプロセスを非表示にしている場合、またはアプリの親が終了し、親が再設定されて初期化されている場合を除く)。

これはほとんどが学術的で、おそらく時間の無駄ですが、strings -n 10 /proc/[pid]/memは過去のスクロールを見るのが楽しいかもしれません。 echo 0x7 > /proc/[pid]/coredump_filterおよびgdbgcoreを使用して、可能なすべてのものを含むコアダンプを強制することもできますが、プロセスが終了し、それ以上の分析がブロックされる可能性があります。

しかし、間違いなくアレンスターのアドバイスを受けてください。データのみをバックアップし、バックアップから実行可能ファイルをすべて復元して、最初からやり直します。おそらくバックアップからもWebサイトを復元する必要があります。すべてのhtmlまたはphpファイルに悪意のあるJavaScriptが追加されている可能性があります。法的措置を検討している場合は、マシンを脇に置き、ネットからプラグを抜いて、フォレンジックの専門家が仕事を終えるまで、実行していることをすべて停止することをお勧めします。

1
DerfK

「cat/proc/[process id]/cmdline」を試してください。ただし、それが真のルートキットである場合は、カーネルを変更して、それ自体をより適切に隠すことができます。

0
mfarver

再インストールする必要があります、私は同意します。パス内の文字をエスケープしようとしましたか?たぶん、それらのスラッシュの1つは、実際にはファイル名の一部であり、ディレクトリではありません。少なくとも、iptablesを使用して、そのホストへのアウトバウンドトラフィックをブロックするか、修正されるまでIRC一般的です。netstatも確認してください。

0
sinping

今までにあなたは再インストールしたと思います。プロセスを追跡し、フォレンジックを実行しようとするあなたの正当な無駄な時間は、それから合法的に発展する可能性は非常にわずかであり、ハッカーを見つける可能性はとにかく無駄です。楽しいことがあるルートキットを調査して逆にすることに興味がある場合を除いて:)

0
null