Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] Rules that use Data field won't work #775

Closed
YamatoSecurity opened this issue Oct 22, 2022 · 6 comments · Fixed by #805
Closed

[bug] Rules that use Data field won't work #775

YamatoSecurity opened this issue Oct 22, 2022 · 6 comments · Fixed by #805
Assignees
Labels
bug Something isn't working
Milestone

Comments

@YamatoSecurity
Copy link
Collaborator

Describe the bug
Data|contains|Data:等を使うルールは正しく検知しません。Applicationログの15件のルールがそれを使っています。
例: application/win_esent_ntdsutil_abuse.yml
元々のルール:

detection:
    selection:
        Provider_Name: 'ESENT'
        EventID:
            - 216
            - 325
            - 326
            - 327
        Data|contains: 'ntds.dit'
    condition: selection

Hayabusaルールに変換されるとData: '*ntds.dit*'になります。

イベントログはこんな感じ:
Screen Shot 2022-10-22 at 18 21 34
複数の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.DataData,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のアラートが出るはずです。

  • OS: mac
  • hayabusa version: up to 1.7.2
@YamatoSecurity YamatoSecurity added the bug Something isn't working label Oct 22, 2022
@YamatoSecurity YamatoSecurity added this to the v1.8.0 milestone Oct 22, 2022
@hitenkoku hitenkoku added the under-investigation under investigation to develop label Oct 23, 2022
@hitenkoku hitenkoku self-assigned this Oct 23, 2022
@hitenkoku
Copy link
Collaborator

事象をこちらでも確認しました。対応策を考えます。

@hitenkoku
Copy link
Collaborator

おそらく現象としてはEventDataで指定した場合はDataのすべてを見ることができるためヒットするが、Dataを指定した場合は配列の最初のもののみをデータとして取得していることになるためヒットしないという事象のように見えました。

対策は2つ考えられます。いったん2番目のパターンで対応できないか検討します

  • Dataが来たときには一度上位のEventDataのデータを見て確認をするように変更する。(hayabusa内部でDataと言われたら上の要素を見る形に変更する。)
  • 同一階層に複数のデータが存在した場合は一括して取得するようにする

@YamatoSecurity
Copy link
Collaborator Author

なるほど。私が見た限り、複数の同じフィールド名があるのは、Dataのみなので、Dataは少し例外的な扱いで、複数があった場合はData[0] 〜 Data[max]まで順番にチェックしたら良いかもしれません。

同一階層に複数のデータが存在した場合は一括して取得するようにする

Data[0] 〜 Data[max]の中身を一個の文字列等にするというイメージですか?

|endswith等の条件もあるので、一個ずつ条件を確認した方が良いかもしれません。(一括されたら、|endswithの条件が正しく動かないはずです)

@YamatoSecurity
Copy link
Collaborator Author

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

@hitenkoku
Copy link
Collaborator

hitenkoku commented Nov 3, 2022

同一階層に複数のデータが存在した場合は一括して取得するようにする

Data[0] 〜 Data[max]の中身を一個の文字列等にするというイメージですか?

|endswith等の条件もあるので、一個ずつ条件を確認した方が良いかもしれません。(一括されたら、|endswithの条件が正しく動かないはずです)

はい、その想定でした。たしかにコメントの通り、本来の今までの挙動に対して影響を与える可能性が大きいので、
EventDataが定義されたときと同じように処理を回すことが出来ないか確認してみます。

@hitenkoku
Copy link
Collaborator

@YamatoSecurity 対応が完了しました。hayabusa-rulesの方もEventDataをDataに変更するpull-requestを出しておきましたのでご確認のほどよろしくお願いいたします。

@hitenkoku hitenkoku removed the under-investigation under investigation to develop label Nov 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants