Security Tips
 

不審なプロセスを調査する

りょうわ あきら
2004/3/10

 システム管理作業中にふと見ると、幸か不幸か不審なプロセスを見つけてしまった。そんなときの調査手順に盛り込んでおくと役に立つのが、strace(Linuxなど)やtruss(Solaris)などのデバッグコマンドによる調査である。

 root権限があればstraceやtrussコマンドを使用して任意のタスクに対して、そのタスクにおけるシステムコールの実行状況を表示させることで、そのタスクが「何をしようとしているか?」を突き止められる場合がある。例えば、不審な時刻にシェルにログインしているユーザーを発見したとしよう。

[root@voyager admin]# who
admin pts/0 Dec 25 12:28 (admin.localdomain.local)
joe pts/1 Dec 25 13:22 (dsl-192038.example.com) <--不審ユーザー
[root@voyager admin]# ps -ef|grep pts/1
admin 26786 26784 0 13:22 ? 00:00:00 sshd: joe@pts/1
joe 26787 26786 0 13:22 pts/1 00:00:00 -bash
root 26805 26771 0 13:23 pts/0 00:00:00 grep pts/1

 この際、Linuxであれば、straceコマンドを用いてexecve()システムコールを監視することでこの不審なユーザーがシェルで何のコマンドを実行しているのかをモニターすることができる。

[root@voyager admin]# strace -f -e execve -p 26787
[pid 26807] execve("/usr/bin/less", ["less", "+F", "/usr/local/apache/logs/access_lo"...], [/* 33 vars */]) = 0
[pid 26807] --- SIGCHLD (Child exited) ---
[pid 26807] --- SIGINT (Interrupt) ---
--- SIGCHLD (Child exited) ---
[pid 26809] execve("/bin/ls", ["ls", "-NF", "--show-control-chars", "-la"], [/* 33 vars */]) = 0
--- SIGCHLD (Child exited) ---

 Solarisであれば、trussコマンドがあれば、次のように実行することでほぼ同じ結果が得られる。

# truss -fa -t execve -p 26787

 -eオプション(strace)や-tオプション(truss)で指定するシステムコールを変えることで、例えばopen()システムコールを監視するのであれば不審なユーザーがどのファイルをオープンしようとしているのかをチェックすることができるし、unlink()システムコールを監視すれば不審な一時ファイルを隠そうという試みや、システムファイルを削除しようという破壊工作の試みを検出することができる*1

*1
あくまでも「リアルタイムでの監視」が可能なのであって、防止できるわけではない点は注意してほしい。

 このようなデバッグ関連コマンドは、システム上の不審動作をチェックするのに重宝する。使い方を覚えておいて損はないだろう。ただし、使い方を誤るとユーザーのプライバシー侵害、システム障害にもつながりかねない危険性があるコマンドであるため、使用には十分慎重を期していただきたい。

Security Tips Index



Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間