Closed YamatoSecurity closed 1 year ago
事象をこちらでも確認しました。対応策を考えます。
おそらく現象としてはEventDataで指定した場合はDataのすべてを見ることができるためヒットするが、Dataを指定した場合は配列の最初のもののみをデータとして取得していることになるためヒットしないという事象のように見えました。
対策は2つ考えられます。いったん2番目のパターンで対応できないか検討します
なるほど。私が見た限り、複数の同じフィールド名があるのは、Data
のみなので、Data
は少し例外的な扱いで、複数があった場合はData[0] 〜 Data[max]
まで順番にチェックしたら良いかもしれません。
同一階層に複数のデータが存在した場合は一括して取得するようにする
Data[0] 〜 Data[max]
の中身を一個の文字列等にするというイメージですか?
|endswith
等の条件もあるので、一個ずつ条件を確認した方が良いかもしれません。(一括されたら、|endswith
の条件が正しく動かないはずです)
今EventData
が定義された時と同じように全フィールドをチェックするのが一番ラクかも?
https://github.com/Yamato-Security/hayabusa-rules/blob/main/README-Japanese.md#eventdata%E3%81%AE%E4%BE%8B%E5%A4%96%E7%9A%84%E3%81%AA%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
同一階層に複数のデータが存在した場合は一括して取得するようにする
Data[0] 〜 Data[max]
の中身を一個の文字列等にするというイメージですか?
|endswith
等の条件もあるので、一個ずつ条件を確認した方が良いかもしれません。(一括されたら、|endswith
の条件が正しく動かないはずです)
はい、その想定でした。たしかにコメントの通り、本来の今までの挙動に対して影響を与える可能性が大きいので、 EventDataが定義されたときと同じように処理を回すことが出来ないか確認してみます。
@YamatoSecurity 対応が完了しました。hayabusa-rulesの方もEventDataをDataに変更するpull-requestを出しておきましたのでご確認のほどよろしくお願いいたします。
Describe the bug
Data|contains|
、Data:
等を使うルールは正しく検知しません。Applicationログの15件のルールがそれを使っています。 例:application/win_esent_ntdsutil_abuse.yml
元々のルール:Hayabusaルールに変換されると
Data: '*ntds.dit*'
になります。イベントログはこんな感じ:
複数の
Data
フィールドがあります。hayabusa-rulesレポジトリのReadmeに書いてありますが、複数のDataフィールドで検索したい場合は
Data:
ではなくて、EventData:
というフィールドを使う必要があります。rules/sigma/builtin/application/win_esent_ntdsutil_abuse.yml
のhayabusaルールでData: '*ntds.dit*'
をEventData: '*ntds.dit*'
に変えたら正しく検知できました。イベントキーアリアス(
rules/config/eventkey_alias.txt
)で直せるかなと試しましたが、駄目でした。Data,Event.EventData.Data
とData,Event.EventData
を試しましたが、駄目でした。なので、Hayabusaの方で修正する必要があります。 Dataフィールドを検索しているのに、EventDataを指定する必要があるのは分かりにくいのと、Sigmaルールは
Data
を使っているので、EventData
の利用をやめて、Sigmaルールに合わせたいです。※現在、
EventData: hogehoge
を使うhayabusaルールは3件ありますが、1.8.0をリリースしたら、Data:
に変更しようと思っています。Step to Reproduce
./hayabusa-1.8.0-dev -d ../hayabusa-sample-evtx -r rules/sigma/builtin/application/win_esent_ntdsutil_abuse_susp_location.yml
Expected behavior Ntdsutil Abuseのアラートが出るはずです。