Open hitenkoku opened 3 years ago
ファイルを読み込む形ではなくストリームとして処理をする必要があるので現状ファイルを読み込む形のhayabusaの方向性と比べて相性が悪い ただ、ストリームだとcountの処理とかが難しい(というかできない)
よく考えていたら、ストリームとして処理のリアルタイム検知ではなくて、定期的にライブ調査すると良いと思います。 理由は以下の通りです:
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にアップデートする必要があると思います。
コメントありがとうございます。仕様として問題ないと思います。
scan-results.csvでの挙動ですが、現状は、同じファイル名があればエラー出力をするという流れになっています。 --slack-alertをつけた場合のみ、上書き扱いにする(その時に抽出した差分をslackに送付する)とのことで承りました。
特に問題はないと思います。 もし、都度のcsvファイルを保全したいという話であればユーザ側が実行前にファイルコピーをするようなスクリプトを組めば問題ないかと思います。
そうですね。都度のCSVファイルの保全は普段要らないと思いますが、ユーザが欲しい場合はスクリプトの方でローカルで保全したり、サーバに送ったりできると思います。2回目以降のスキャンは一時的に結果をscan-results-temp.csv
等に保存して、差分だけをslackに通知して、mv -f scan-results-temp.csv scan-results.csv
等で上書きしたら、少し実装しやすくなるかも?
正直なところを言うと、あまり出力に関するファイルをhayabusaが勝手に移動して上書きさせることをhayabusa側に行わせたくない(ファイルのリネームや移動をhayabusa内の処理で記載したくない)というのが個人的な本音です。
例えば、2回目以降のスキャンの検出のために衝突回避のために別ファイルに保存するという動きをさせると、別ファイルにしようとしたファイルの名前と合致してしまったという可能性が出てくることを心配しています。
そのため、CSVファイルの保全についてはドキュメントで方法をexampleに書くなりすることで対応をして、--slack-alertについては単純に指定されたファイルをそのまま上書き処理をするという形で良いかと思っています。
一旦本件を @nishikawaakira に担当してもらうことで調整がついたため担当者を変更
メモ:
@nishikawaakira やはり、csv-timelineで実装するより新しいalertコマンドでElastic Stackやメール?、柔軟に通知方法をカスタマイズできるようにしたいので、まず別のissueでalertコマンドを実装してから、slack通知の機能をお願いできたらと思います。理由はalertコマンドを使う時に該当しないcsv-timelineオプションがある、alertコマンドにしか使えないオプションがcsv-timelineに入ってしまう、alertコマンドに分けた方が新機能としてアピールできるためです。ということで、暫く待って頂けますか?
@YamatoSecurity Sure!
以下2機能を作ってからリリースするため一旦現状の通知機能は取り下げ