Log2timeline.py(Plaso)によるタイムラインの作成(7)
WinEvtxParser(Parses Windows XML EventLog (EVTX) files)を試してみたいと思います。EVTX形式ですのでWindows Vista以降で使われている現時点では最新のイベントログファイル形式になります。
C:\Windows\System32\winevt\Logs\System.evtx ファイル単体をサンプルとしてパースしていきます。
root@siftworkstation:/cases# log2timeline.py --parsers WinEvtx --output L2tcsv --logfile out.log -d evtxtimeline.txt ./EVTX/
出力結果は以下のようになります。(1レコード分だけ抽出)
date,time,timezone,MACB,source,sourcetype,type,user,host,short,desc,version,filename,inode,notes,format,extra
07/07/2010,05:06:29,UTC,M...,EVT,WinEVTX,Content Modification Time,-,-,[0x0000001a] Strings: [u'0' u'0' u'1' u'0' u'8' u'01' None],[26 / 0x0000001a] Record Number: 25 Event Level: 4 Source Name: Microsoft-Windows-Kernel-Processor-Power Computer Name: 37L4247D28-05 Strings: [u'0' u'0' u'1' u'0' u'8' u'01' None],2,./EVTX/System.evtx,16777218,-,WinEvtxParser,xml_string: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">- <System>- <Provider Name="Microsoft-Windows-Kernel-Processor-Power" Guid="{0F67E49F-FE51-4E9F-B490-6F2948CC6027}"/>- <EventID>26</EventID>- <Version>0</Version>- <Level>4</Level>- <Task>4</Task>- <Opcode>0</Opcode>- <Keywords>0x8000000000000000</Keywords>- <TimeCreated SystemTime="2010-07-07T05:06:29.406250000Z"/>- <EventRecordID>25</EventRecordID>- <Correlation/>- <Execution ProcessID="4" ThreadID="52"/>- <Channel>System</Channel>- <Computer>37L4247D28-05</Computer>- <Security UserID="S-1-5-18"/>- </System>- <EventData>- <Data Name="Group">0</Data>- <Data Name="Number">0</Data>- <Data Name="IdleStateCount">1</Data>- <Data Name="PerfStateCount">0</Data>- <Data Name="ThrottleStateCount">8</Data>- <ComplexData Name="IdleState">01</ComplexData>- <ComplexData Name="PerfState"/>- </EventData>-</Event>- user_sid: S-1-5-18 recovered: False
イベントビューアで該当レコードを見た場合には、メッセージは下記になります。EVXTではXML形式になっており、このパーサは XML 部分をそのままメッセージとしてパースしてきているという事になります。
グループ 0 のプロセッサ 0 は次の状態を表示します。
1 アイドル状態
0 パフォーマンス状態
ちなみに、イベントビューアで該当レコードを「XMLで表示」とした場合には下記内容が表示されます。
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="Microsoft-Windows-Kernel-Processor-Power" Guid="{0F67E49F-FE51-4E9F-B490-6F2948CC6027}" />
<EventID>26</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>4</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000000</Keywords>
<TimeCreated SystemTime="2010-07-07T05:06:29.406250000Z" />
<EventRecordID>25</EventRecordID>
<Correlation />
<Execution ProcessID="4" ThreadID="52" />
<Channel>System</Channel>
<Computer>37L4247D28-05</Computer>
<Security UserID="S-1-5-18" />
</System>
- <EventData>
<Data Name="Group">0</Data>
<Data Name="Number">0</Data>
<Data Name="IdleStateCount">1</Data>
<Data Name="PerfStateCount">0</Data>
<Data Name="ThrottleStateCount">8</Data>
<ComplexData Name="IdleState">01</ComplexData>
<ComplexData Name="PerfState" />
</EventData>
</Event
出力したログを確認したところ、結構エラーが出ているようですので、パース結果の件数などはイベントビューアと差異がないかを確認した方がよいのかもしれません。
Mantaryのsupertimelineから出力した結果の方が見やすかったりしますので、イベントログのパースとタイムライン化は少し出力形式に工夫が必要そうですね。