【再掲】イベントビューアのクエリをカスタマイズする (2)

この記事はWindows Live Spaceで掲載したものです。
(一部加筆修正しています)


第1弾では、 イベントビューアのクエリをカスタマイズする方法としてXPathを使う方法を紹介しました。
XPathの書き方として、<QueryList>~</QueryList>の間に
*[EventData[Data[@Name=’LogonType’] = 2]]
のように記述すると紹介しましたね。

第2弾では、*[….]の部分のクエリの書き方について掘り下げてみたいと思います。
前回、イベントログはSystemタグの部分とEventDataの部分から構成されると話をしましたが、
両方の部分からクエリ条件を記述したいということであれば、 このように書けば良いと思います。

例1:イベントIDが4624で、ログオンタイプが2のログを抽出

*[System[(EventID=4624)] and EventData[Data[@Name=’LogonType’]=’2′]]

 

Systemの部分はGUIでイベントIDで4624と指定しておけば、自動的にXPathクエリが生成されますから
あとは、and以降の部分だけ書いておけばよいですね。
では続けて、特定のユーザーがログオンしたログを抽出する場合は?というと…

例2:イベントIDが4624で、ログオンタイプが2のAdministratorによるログオンのログを抽出

*[System[(EventID=4624)] and EventData[Data[@Name=’TargetUserName’]=’Administrator’] and EventData[Data[@Name=’LogonType’]=’2′]]

 

複数のEventDataの項目に対してクエリを実行する場合は、単純にEventData~を繰り返せばよいだけです。
ちなみに、イベントID4624でログオンしたユーザーはTargetUsernameというタグに記録されます。
くどいけれど、特定のコンピュータからログオンしたログを抽出する場合も紹介しておきます。

例3:イベントIDが4624で、ログオンタイプが2のPC01コンピュータからログオンしたログを抽出

*[System[(EventID=4624)] and EventData[Data[@Name=’WorkstationName’]=’PC01′] and EventData[Data[@Name=’LogonType’]=’2′]]

 

ここまで見てきたように、XPathを書くときは、あらかじめイベントログでクエリ条件に組み込みたい属性の名前を調べておいて、
あとはEventData~と書いて、全部andでつなげるだけです。 では、複数の条件をandではなく、orを使いたい場合は?
もちろん使えますよ。

例4:イベントIDが4624または4625(←ログオン失敗のログ)で、ログオンユーザーがAdministratorのログを抽出

*[System[(EventID=4624 or EventID=4625)] and EventData[Data[@Name=’TargetUserName’]=’Administrator’]]

 

EventDataの中でA and (B or C)のような条件を書くときは、単純に括弧( )でくくるだけでよいようです。

例4-1 ログオンユーザーがAdministratorまたはkuniiで、DC01コンピュータにログオンしたときのログを抽出

*[EventData[Data[@Name=’SubjectUserName’]=’DC01$’] and EventData[(Data[@Name=’TargetUserName’]=’Administrator’ or Data[@Name=’TargetUserName’]=’kunii’)]]

 

このようにXPathを使えば、単なる「イベントID4624でフィルタ」だけではない、より現実的なイベントログのフィルタが
かけられるようになると思います。これにより、今まで非現実的と思われていた、イベントビューアの監査証跡としての利用も
ちょっとは現実的になったのではないでしょうか?(ホントにちょっとだけかもしれないけど…)