先ほど、あるユーザーが「httpd」と呼ばれるプロセスを開始すると述べました。
31712 ftp_johndoe 20 0 35988 8828 1460 S 14.0 0.0 1h50:31 httpd
28616 ftp_johndoe 20 0 5304M 43936 35080 S 4.0 0.2 0:02.72 /usr/bin/php5-cgi -c /var/www/vhosts/system/johndoe.net/etc/php.ini
31711 ftp_johndoe 20 0 35808 8608 1460 S 1.0 0.0 1h51:15 httpd
さて、なぜこのプロセスが「httpd」と呼ばれるのか疑問に思いました。Debian Apache では「httpd」と呼ばれるプロセスは起動されないからです。
lsof を実行すると、次の結果が得られます。
httpd 28868 ftp_johndoe txt REG 253,0 10456 12335127 /usr/bin/perl
httpd 28868 ftp_johndoe mem REG 253,0 22952 12335108 /usr/lib/perl/5.14.2/auto/File/Glob/Glob.so
httpd 28868 ftp_johndoe mem REG 253,0 109888 12335102 /usr/lib/perl/5.14.2/auto/POSIX/POSIX.so
httpd 28868 ftp_johndoe mem REG 253,0 18672 12335109 /usr/lib/perl/5.14.2/auto/Fcntl/Fcntl.so
httpd 28868 ftp_johndoe mem REG 253,0 39256 12980353 /usr/lib/perl5/auto/Socket/Socket.so
httpd 31712 ftp_johndoe 63u IPv4 520937935 0t0 TCP server.name.com:38504->64.233.165.26:smtp (ESTABLISHED)
httpd 31712 ftp_johndoe 67u IPv4 520937969 0t0 TCP server.name.com:38536->64.233.165.26:smtp (ESTABLISHED)
httpd 31712 ftp_johndoe 73u IPv4 520937951 0t0 TCP server.name.com:38520->64.233.165.26:smtp (ESTABLISHED)
これはマルウェアだと思います。しかし、httpd プロセスを開始するスクリプトを見つけるにはどうすればよいのでしょうか?
答え1
実行ファイルを見つけるには、
ls -l /proc/<PID>/exe
次に、誰が作成したか(親PID)を確認します。
ps -p <PID> -o ppid=
そして出発点が見つかるまで探します。
at
また、initスクリプト、グローバルおよびユーザー固有のcronジョブ、スクリプト、rc.local
ファイルなどの一般的な自動実行ポイントを確認することもできます。
アップデート:私はちょうど、スヌーピーそれ
Snoopy は、システム上で実行されたすべてのコマンド (および引数) を記録する小さなライブラリです。
コマンドの実行を確認するのに非常に便利です
これは完全な解決策ではありません。これを回避する簡単な方法があることはわかっています。私よりも経験豊富な人がいれば、もっと役立つと思います。