Closed YamatoSecurity closed 2 years ago
@YamatoSecurity
本件調査しましたが、そもそもバグではなく想定通りの動作をしています。
下記のXML(パス: hayabusa-sample-evtx\DeepBlueCLI\many-events-system.evtx
, 時刻: 2016-08-19 05:40:21
)を見てください。ISSUEの説明ではProvider Name
という空白の入ったタグ名がXMLに存在するように書かれていますが、これは間違っています。実際にはタグ名はProvider
で、その'Provider'タグにキーがName
の属性が定義されています。なので、Provider_Name,Event.System.Provider Name
という定義方法はそもそも間違っていて、Provider_Name,Event.System.Provider_attributes.Name
が正しいです。また、このように定義されたProvider_Name
はdetailでも正しく表示できることを確認しています。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Events>
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
<EventID Qualifiers="16384">
7045
</EventID>
</System>
<EventData>
</EventData>
</Event>
</Events>
次にSeverity Name
ですが、これも想定通りの動作をしています。ご存じの通り、EventDataはタグ名が全てData
になり、属性のキーも全てName
になっています。なので、Event.EventData.Severity Name
といった感じで、Event.EventData
に続いてEventDataタグ直下のDataタグについてはキーが"Name"という属性の属性値をeventkey_alias.txtで定義できるようにしています。この場合もdetailsだけでなく、selection conditionでも"SeverityName"で検知可能です。
下記XMLのパスはhayabusa-sample-evtx\EVTX-to-MITRE-Attack\Antivirus\ID1116-1117-Defender threat detected.evtx
です。
-
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
-
<System>
<EventID>
1116
</EventID>
<TimeCreated SystemTime="2020-12-11T12:28:44.3178756Z" />
<EventRecordID>
177
</EventRecordID>
</System>
-
<EventData>
<Data Name="Severity Name">
High
</Data>
</EventData>
</Event>
@hach1yon ご確認ありがとうございました!
前はなぜか%SeverityName%
を片方しか使えなかったが、今はconditionもdetailsも無事に使えているので、大丈夫です。
問題なさそうなので、issueをクローズします。
Describe the bug フィールドにスペースがある時に発生するバグです。 例えば、
rules/hayabusa/default/alerts/WindowsDefender/1116_WindowsDefenderAlert.yml
のdetails
で%SeverityName
を出力したい場合は、rules/config/eventkey_alias.txt
でSeverityName,Event.EventData.Severity Name
という風に定義する必要があります。が、selection conditionでスペースが入っているフィールド(Provider Name等々)を使いたい場合は、
Provider_Name,Event.System.Provider_attributes.Name
という風に定義する必要があります。(READMEにも書いてあります。) ※今までProvider_Name,Event.System.Provider_Name
という風に定義していましたが、正しく検知していませんでした。Provider_Name,Event.System.Provider Name
も駄目です。問題はaliasを
details
出力でもcondition
のselection
でも使う場合があるので、どちらにも対応する必要があります。SeverityName,Event.EventData.Severity_attributes.Name
と定義したら、conditionが使えるようになるけど、details
出力では%Event.EventData.Severity_attributes.Name%
が出力されてしまいます。多分eventkey_alias.txtでスペース対応するより、
details
出力でn/a
という風に定義されているフィールドが正しく変換されるように修正した方がラクかな?Step to Reproduce Steps to reproduce the behavior:
eventkey_alias.txt
でSeverityName,Event.EventData.Severity Name
をSeverityName,Event.EventData.Severity_attributes.Name
に変える。./target/release/hayabusa -d ../hayabusa-sample-evtx -r rules/hayabusa/default/alerts/WindowsDefender/1116_WindowsDefenderAlert.yml
等を実行する。details
出力でSeverity:
をチェックする。Expected behavior %SeverityName%が正しく変換されるはず。
Screenshots
Environment (please complete the following information):