dumputmp

dumputmpは/var/run/utmp/var/log/wtmpファイルの中身をダンプするLinux用ツールです。

攻撃者がログクリーナーを使ってログイン履歴を削除した場合、ファイルには明らな痕跡が残りますが、lastwwhoコマンドでは削除したログイン履歴が表示されなくなります。

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では不審な点を検出できないので注意が必要です。