Yamato-Security / hayabusa

Hayabusa (隼) is a sigma-based threat hunting and fast forensics timeline generator for Windows event logs.
GNU Affero General Public License v3.0
2.26k stars 200 forks source link

Pivot Keywords List機能 #393

Closed YamatoSecurity closed 2 years ago

YamatoSecurity commented 2 years ago

(levelがlow以上の)アラートがある場合は、以下のフィールドから"Pivot Keyword"(攻撃者の足跡になる送信元のIPアドレス、ログオンID等々)をリストアップして、テキストファイルに保存する機能です。キーワードリストで、大量のinformationalログをgrepして、攻撃者の痕跡だけを抽出するための機能です。(informationalログが多すぎて解析が難しいという意見(クレーム?)が来ていたので、これで不要なinformationalログが減るはずです。) また、キーワードの一覧を見るだけで、どのユーザや端末が攻撃を受けている可能性があるかパッと見て分かるので、fast forenscisに役立ちます。

取り敢えず、アラートに以下のフィールドが存在する場合は、Pivot Keywords Listに追加します。 %SubjectUserName% %TargetUserName% %User% %SubjectLogonId% %TargetLogonId% %WorkstationName% %IpAddress% %Image% (後でプロセスID等も追加したいかも)

オプション名: -p / --pivot-keywords-list <ファイル名> 例: ./hayabusa.exe --min-level high --pivot-keywords-list keywords.txt -d ./sample-evtx

スキャン後に以下を出力する: The following pivot keywords were found: Users: (%SubjectUserName%, %TargetUserName%, %User%の一覧)

Logon IDs: (%SubjectLogonId%と%TargetLogonId%の一覧)

Workstation Names: (%WorkstationName%の一覧)

IP Addresses: (%IpAddress%の一覧 (※127.0.0.1等を無視する))

Processes: %Image%の一覧

その後、すべてのキーワードをkeywords.txtに保存する。

注意点:

  1. キーワードが重複している可能性が高いので、重複しているキーワードを削除して、ソートしたいです。
  2. WorkstationNameとIpAddressが空("-")、IpAddressがローカルホスト("127.0.0.1")になっている可能性があって、誤検知になりそうなので、無視する必要がありそうです。

調査員がpivot keywords list(keywords.txt)を作った後に、informationalイベントも含めて詳細なCSV(results.csv)を作って、 grep -f keywords.txt results.csv > attacker-results.csv等で攻撃者の痕跡のタイムラインを作ります。

(※もちろん、検知漏れの可能性があります。調査の初期段階でノイズをなるべく削減して、攻撃者の主な痕跡を見つける(fast forensicsの)ためです。調査員はその後徹底的調査を行うイメージです。)

kazuminn commented 2 years ago

ちょっと、Slackの方でお話をして方針変わってきたので、メモっておきます。最終的にどのように実装したかは、プルリクエストのほうに書いておきます。

ザックさんの発言
キーワードをできればハードコーディングではなく、設定ファイルで自由に修正できたら理想ですが、できそうですか?

-> できそう。

ザックさんの発言
以下のよう使い方の方が良い気がしてきました:
-p / --pivot-keywords-listを指定する際に通常のフォレンジックタイムラインではなく、ピボット一覧を表示します。-p -o file.txtを指定する場合は結果をfile.txtに保存します。ファイルが存在する場合は上書きせず、エラーを出します。
(Fast forensicsはスピードを重視するが、エビデンスや解析データ等を上書きすると、大変なことになる可能があるので)
そうすると、--pivot-keywordsの後にfile.txtの必要性が無くなります。
もし、既存の-oオプションを利用するのが難しいのであれば、仕様に書いてあるように、アウトプットファイル名を-p <file.txt>にして、更に-oオプションが付けられた場合は「You cannot specify -o / --output when using -p / --pivot-keywords-list」というエラーを出しましょう。

-> 前者でやる。