Yamato-Security / hayabusa

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

Slack alerting option #202

Open hitenkoku opened 2 years ago

hitenkoku commented 2 years ago

以下2機能を作ってからリリースするため一旦現状の通知機能は取り下げ

hitenkoku commented 2 years ago

ファイルを読み込む形ではなくストリームとして処理をする必要があるので現状ファイルを読み込む形のhayabusaの方向性と比べて相性が悪い ただ、ストリームだとcountの処理とかが難しい(というかできない)

YamatoSecurity commented 2 years ago

よく考えていたら、ストリームとして処理のリアルタイム検知ではなくて、定期的にライブ調査すると良いと思います。 理由は以下の通りです:

  1. EVTX解析はリアルタイムに向いていなくて、リアルタイムで検知したい場合はETWの方が良い。
  2. ルール更新ができない
  3. 新しいルールで過去にあった攻撃を検知できない

hayabusaは過去に攻撃があったかを調べるためのツールなので、検知するまで若干タイムラグはあるが、仕方ないと思います。代わりにルール更新で過去にあった(以前検知できなかった)攻撃の痕跡を検知できるメリットはあります。 イメージは管理者が以下の.batスクリプトをタスクで定期的に実行する。(負担がかからなさそうだったら、5分ごと等、あまり負担をかけたくないんだったら、深夜に1回とか自由に設定する。)

hayabusa-1.3.0-win-x64.exe -u
hayabusa-1.3.0-win-x64.exe --level-tuning
hayabusa-1.3.0-win-x64.exe --min-level medium --live-analysis --quiet --thread-number 2 --display-record-id --output scan-results.csv --slack-alert

--slack-alertが指定されていて、scan-results.csvが存在しない場合(一回目のスキャンの場合)は結果を全部slackで通知します。 scan-results.csvが存在する場合は「ファイルが既に存在している」というエラーを出力しないで、スキャンします。ルールのアラート名等が変わる可能性があるため、既に通知したアラートをもう一回通知しないように、イベントのTimestamp, Channel, RecordIDをチェックします。(TimesampとRecordIDだけで十分かもしれない) scan-results.csvにイベントが既に入っている場合は過去に通知したはずなので、無視します。無い場合は通知します。最後に新しい結果でscan-results.csvを上書きします。

という風に考えていますが、仕様はどうでしょうか?

また、slack-hook crateは古いので、slack-hook3にアップデートする必要があると思います。

hitenkoku commented 2 years ago

コメントありがとうございます。仕様として問題ないと思います。

scan-results.csvでの挙動ですが、現状は、同じファイル名があればエラー出力をするという流れになっています。 --slack-alertをつけた場合のみ、上書き扱いにする(その時に抽出した差分をslackに送付する)とのことで承りました。

特に問題はないと思います。 もし、都度のcsvファイルを保全したいという話であればユーザ側が実行前にファイルコピーをするようなスクリプトを組めば問題ないかと思います。

YamatoSecurity commented 2 years ago

そうですね。都度のCSVファイルの保全は普段要らないと思いますが、ユーザが欲しい場合はスクリプトの方でローカルで保全したり、サーバに送ったりできると思います。2回目以降のスキャンは一時的に結果をscan-results-temp.csv等に保存して、差分だけをslackに通知して、mv -f scan-results-temp.csv scan-results.csv等で上書きしたら、少し実装しやすくなるかも?

hitenkoku commented 2 years ago

正直なところを言うと、あまり出力に関するファイルをhayabusaが勝手に移動して上書きさせることをhayabusa側に行わせたくない(ファイルのリネームや移動をhayabusa内の処理で記載したくない)というのが個人的な本音です。

例えば、2回目以降のスキャンの検出のために衝突回避のために別ファイルに保存するという動きをさせると、別ファイルにしようとしたファイルの名前と合致してしまったという可能性が出てくることを心配しています。

そのため、CSVファイルの保全についてはドキュメントで方法をexampleに書くなりすることで対応をして、--slack-alertについては単純に指定されたファイルをそのまま上書き処理をするという形で良いかと思っています。

hitenkoku commented 1 year ago

一旦本件を @nishikawaakira に担当してもらうことで調整がついたため担当者を変更

hitenkoku commented 1 year ago

メモ:

YamatoSecurity commented 1 year ago

@nishikawaakira やはり、csv-timelineで実装するより新しいalertコマンドでElastic Stackやメール?、柔軟に通知方法をカスタマイズできるようにしたいので、まず別のissueでalertコマンドを実装してから、slack通知の機能をお願いできたらと思います。理由はalertコマンドを使う時に該当しないcsv-timelineオプションがある、alertコマンドにしか使えないオプションがcsv-timelineに入ってしまう、alertコマンドに分けた方が新機能としてアピールできるためです。ということで、暫く待って頂けますか?

nishikawaakira commented 1 year ago

@YamatoSecurity Sure!