dumputmpは/var/run/utmp
や/var/log/wtmp
ファイルの中身をダンプするLinux用ツールです。
攻撃者がログクリーナーを使ってログイン履歴を削除した場合、ファイルには明らな痕跡が残りますが、last
やw
、who
コマンドでは削除したログイン履歴が表示されなくなります。
dumputmpはlast
コマンドなどで表示されなくなった不審なフィールドも表示させる小さなツールです。
ダウンロード
https://netwiz.co.jp/pub/dumputmp.c
コンパイルと使い方
C言語で開発しているため、GCCなどのCコンパイラが必要です。
gcc dumputmp.c
もしくは
gcc dumputmp.c -o dumputmp
実行するとデフォルトでは/var/run/utmp
と/var/log/utmp
を開いて内容を表示します。各ファイルの読み込み権限が必要なので注意してください。
FIELD NO.6 TYPE : 7 PID : 3884 LINE : pts/0 ID : ts/0shj USER : shj HOST : xx.xx.xx.xx SESSION: 0 ADDR : xx.xx.xx.xx TIME : 2023/05/13 07:44:47
wtmpファイルのパスを指定したい場合は-w
オプションを使います。また、utmpファイルのパスを指定したい場合は-u
オプションを使います。
dumputmp -w /path/to/wtmp
プロセスIDを指定したい場合は-p
オプションを使います。このオプションを使うとログイン・ログアウトのペアを見つけることができます。
$ dumputmp -p 7123 ======== WTMP: /var/log/wtmp ======== FIELD NO.19 TYPE : 7 PID : 7123 LINE : pts/6 ID : ts/6shj USER : shj HOST : xx.xx.xx.xx SESSION: 0 ADDR : xx.xx.xx.xx TIME : 2023/05/13 11:17:24 FIELD NO.29 TYPE : 8 PID : 7123 LINE : pts/6 ID : USER : HOST : SESSION: 0 ADDR : 0.0.0.0 TIME : 2023/05/13 13:00:29
現在ログイン中の場合はタイプ7
だけ表示されるはずです。また、wtmpとutmpの両方が表示されます。
$ dumputmp -p 493164 ======== WTMP: /var/log/wtmp ======== FIELD NO.504 TYPE : 7 PID : 493164 LINE : pts/1 ID : ts/1shj USER : shj HOST : xx.xx.xx.xx SESSION: 0 ADDR : xx.xx.xx.xx TIME : 2023/10/20 19:23:31 ======== UTMP: /var/run/utmp ======== FIELD NO.9 TYPE : 7 PID : 493164 LINE : pts/1 ID : ts/1shj USER : shj HOST : xx.xx.xx.xx SESSION: 0 ADDR : xx.xx.xx.xx TIME : 2023/10/20 19:23:31 $
不審なログの検出
今のところ不審なログを自動的に検出する機能はないため、目視で確認する必要があります。
zapなどのログクリーナーは隠したいログイン履歴の箇所を単純にゼロでパディングします。そのため、dumputmpを使うとひと目でログクリーナを使った痕跡を見つけることができます。
例として、ログクリーナを使うと先ほどwtmpとutmpの両方で表示されていたプロセスID493164が表示されなくなります。
ログクリーニング前:
$ dumputmp -p 493164 ======== WTMP: /var/log/wtmp ======== FIELD NO.504 TYPE : 7 PID : 493164 LINE : pts/1 ID : ts/1shj USER : shj HOST : xx.xx.xx.xx SESSION: 0 ADDR : xx.xx.xx.xx TIME : 2023/10/20 19:23:31 ======== UTMP: /var/run/utmp ======== FIELD NO.9 TYPE : 7 PID : 493164 LINE : pts/1 ID : ts/1shj USER : shj HOST : xx.xx.xx.xx SESSION: 0 ADDR : xx.xx.xx.xx TIME : 2023/10/20 19:23:31 $
ログクリーニング後:
$ dumputmp -p 493164 ======== WTMP: /var/log/wtmp ======== ======== UTMP: /var/run/utmp ======== $
504番の内容を見ると次のように改ざんされた様子を確認できます。
FIELD NO.504 TYPE : 0 PID : 0 LINE : ID : USER : HOST : SESSION: 0 ADDR : 0.0.0.0 TIME : 1970/01/01 09:00:00
まとめ
utmp・wtmpファイルを単純にゼロでパディングするツールはdumputmpで改ざんを検出できます。
しかし、utmp・wtmpを巧妙に切り詰めて改ざんを隠すタイプのログクリーナではdumputmpでは不審な点を検出できないので注意が必要です。