Plaso Filestatパーサでタイムスタンプがズレる件
Plaso 1.4.0 ベースの Log2timeline ですが、Windows 7 環境上で実行すると、ファイルのタイムスタンプ情報が数秒ズレるという事象に悩んでいます。
具体的にはWindows 7 64bit環境で 32bit版の Plaso 1.4 を使い、filestat パーサでタイムスタンを作成した場合、該当ファイルやフォルダが持っているタイムスタンプから数秒ズレた値が結果として出力されます。(64bit版はなぜか手元でエラーになった為検証は未実施)
しかし、Windows 10環境上で同じく Plaso 1.4 ベースで filestat パーサを利用しても時刻ズレは発生しません。
log2timeline.exe --parsers filestat c:\case\filesta.db c:\Temp\example
psort.exe -z Japan -w c:\case\filestat.csv -o L2tcsv c:\case\filesta.db
実行環境のOSによる差異が起きる原因が不明ですが、Windows 10環境上では問題が再現しないという事は確認できました。
ファイルシステムのタイムラインを作成する場合、Plaso の filestat では削除ファイルが含まれない、$FILE_NAME 属性のタイムスタンプが含まれない、という点もあり fls ベースでタイムラインを生成する方がメリットがある場合もあります。
速度的にも fls ベースでタイムラインを作成した方が早いという点がありますね。
flsで作成した body ファイルを Plaso の mactime パーサで処理するという案もありますが、日本語ファイル名が含まれる場合は文字化けが発生しますので、この点はやや課題でしょうか。
Plaso Winjob パーサでタイムスタンプが+9時間ズレる件
Plaso 1.4.0 ベースの Log2timeline の winjob パーサですが、タイムゾーンの指定を正しく行わない場合、ジョブのスケジュールと実行日時が実際の時刻より +9 時間ズレて表示されます。
以下、Windows 10 環境上で、Plaso 1.4 ベースを実行しています。
log2timeline.exe --parsers winjob c:\case\winjob.db c:\Windows\Tasks
psort.exe -z Japan -w c:\case\winjob.csv -o L2tcsv c:\case\winjob.db
上記コマンドの実行により、下記結果が得られましたが、ジョブのスケジュール日時は16時06分となっています。
02/05/2016,16:06:00,Japan,....,JOB,Windows Scheduled Task Job,Scheduled To Start,WORKGROUP\EXAMPLE$,-,Application: C:\Program Files (x86)\Google\Update\GoogleUpdate.exe /ua /insta...,Application: C:\Program Files (x86)\Google\Update\GoogleUpdate.exe /ua /installsource scheduler Scheduled by: WORKGROUP\EXAMPLE$ Run Iteration: DAILY,2,OS:c:\Windows\Tasks\GoogleUpdateTaskMachineUA.job,-,-,winjob,comment: Google ソフトウェアを常に最新の状態に維持します。このタスクを無効にするか停止すると、Google ソフトウェアは最新の状態に維持されなくなります。その場合、セキュリティの脆弱性が見つかっても修正できなかったり、機能が動作しなかったりする可能性があります。このタスクを使用する Google ソフトウェアがなくなると、タスクは自動的にアンインストールされます。 sha256_hash: 3022735948b1c774412bb361838fe5439eb7bad32d3c05c66225f41f27c452ac
タスクスケジューラで確認すると、タスクは日本時間で 7時6分に設定されているので、9時間プラスされた値が出力されている事になります。
Windows Job File Format の記述に従い JOB ファイルの内容を確認してみると、Trigerの項目として開始時刻などが入っていますが、ローカル時刻が登録されている為、これを +9 して出力している為でしょうか。
次に、log2timelineの処理段階で -z オプションでタイムゾーンとして Japan を指定して処理します。
log2timeline.exe -z Japan --parsers winjob c:\case\winjobTZ9.db c:\Windows\Tasks
psort.exe -w c:\case\winjob9.csv -o L2tcsv c:\case\winjobTZ9.db
psortコマンドによるCSV出力時には -z を指定していない状態になりますので、ストレージ内に保存されているタイムスタンプ情報になります。
02/04/2016,22:06:00,UTC,....,JOB,Windows Scheduled Task Job,Scheduled To Start(以降省略)
ローカル時刻をUTC換算した値が保存されています。
psortにおいても-z Japanを指定して出力します。
02/05/2016,07:06:00,Japan,....,JOB,Windows Scheduled Task Job,Scheduled To Start(以降省略)
この場合は、日本時間として正しく出力されています。
Winjobパーサなど、ローカル時刻を保存しているアーティファクトを処理する場合、タイムゾーン指定に注意が必要という事ですね。
脱線した話題になりますが、タスクスケジューラのジョブファイルはカービングという観点ではどうなのでしょうか?
ファイルフォーマットによると、ファイル先頭部分にあるプロダクトバージョンとファイルフォーマットだけではノイズが多くなってしまいそうです。ただ、トリガー日時などが分かっているケースにおいては、そのパターンで探してみるというのも一つの案でしょうか。