Hayabusaは、日本のYamato Securityグループによって作られたWindowsイベントログのファストフォレンジックタイムライン生成およびスレットハンティングツールです。 Hayabusaは日本語で「ハヤブサ」を意味し、ハヤブサが世界で最も速く、狩猟(hunting)に優れ、とても訓練しやすい動物であることから選ばれました。Rust で開発され、マルチスレッドに対応し、可能な限り高速に動作するよう配慮されています。SigmaルールをHayabusaルール形式に変換するツールも提供しています。Hayabusaの検知ルールもSigmaと同様にYML形式であり、カスタマイズ性や拡張性に優れます。稼働中のシステムで実行してライブ調査することも、複数のシステムからログを収集してオフライン調査することも可能です。また、 VelociraptorとHayabusa artifactを用いることで企業向けの広範囲なスレットハンティングとインシデントレスポンスにも活用できます。出力は一つのCSVタイムラインにまとめられ、Excel、Timeline Explorer、Elastic Stack等で簡単に分析できるようになります。
- Hayabusa について
- スクリーンショット
- タイムラインのサンプル結果
- 特徴&機能
- ダウンロード
- Gitクローン
- アドバンス: ソースコードからのコンパイル(任意)
- Hayabusaの実行
- 使用方法
- サンプルevtxファイルでHayabusaをテストする
- Hayabusaの出力
- Hayabusaルール
- その他のWindowsイベントログ解析ツールおよび関連リソース
- Windowsイベントログ設定のススメ
- Sysmon関係のプロジェクト
- コミュニティによるドキュメンテーション
- 貢献
- バグの報告
- ライセンス
Hayabusaには現在、2300以上のSigmaルールと130以上のHayabusa検知ルールがあり、定期的にルールが追加されています。 VelociraptorのHayabusa artifactを用いることで企業向けの広範囲なスレットハンティングだけでなくDFIR(デジタルフォレンジックとインシデントレスポンス)にも無料で利用することが可能です。この2つのオープンソースを組み合わせることで、SIEMが設定されていない環境でも実質的に遡及してSIEMを再現することができます。具体的な方法はEric Cupuanoのこちらの動画で学ぶことができます。 最終的な目標はインシデントレスポンスや定期的なスレットハンティングのために、HayabusaエージェントをすべてのWindows端末にインストールして、中央サーバーにアラートを返す仕組みを作ることです。
Windowsのイベントログは、 1)解析が困難なデータ形式であること 2)データの大半がノイズであり調査に有用でないこと から、従来は非常に長い時間と手間がかかる解析作業となっていました。 Hayabusa は、有用なデータのみを抽出し、専門的なトレーニングを受けた分析者だけでなく、Windowsのシステム管理者であれば誰でも利用できる読みやすい形式で提示することを主な目的としています。 Hayabusaは従来のWindowsイベントログ分析解析と比較して、分析者が20%の時間で80%の作業を行えるようにすることを目指しています。
CSVのタイムライン結果のサンプルはこちらで確認できます。
CSVのタイムラインをExcelやTimeline Explorerで分析する方法はこちらで紹介しています。
CSVのタイムラインをElastic Stackにインポートする方法はこちらで紹介しています。
- クロスプラットフォーム対応: Windows, Linux, macOS。
- Rustで開発され、メモリセーフでハヤブサよりも高速です!
- マルチスレッド対応により、最大5倍のスピードアップを実現。
- フォレンジック調査やインシデントレスポンスのために、分析しやすいCSVタイムラインを作成します。
- 読みやすい/作成/編集可能なYMLベースのHayabusaルールで作成されたIoCシグネチャに基づくスレット。
- SigmaルールをHayabusaルールに変換するためのSigmaルールのサポートがされています。
- 現在、他の類似ツールに比べ最も多くのSigmaルールをサポートしており、カウントルールにも対応しています。
- イベントログの統計。(どのような種類のイベントがあるのかを把握し、ログ設定のチューニングに有効です。)
- 不良ルールやノイズの多いルールを除外するルールチューニング設定が可能です。
- MITRE ATT&CKとのマッピング (CSVの出力ファイルのみ)。
- ルールレベルのチューニング。
- イベントログから不審なユーザやファイルを素早く特定するためのピボットキーワードの一覧作成。
- 詳細な調査のために全フィールド情報の出力。
- 成功と失敗したユーザログオンの要約。
- Velociraptorと組み合わせた企業向けの広範囲なすべてのエンドポイントに対するスレットハンティングとDFIR。
ReleasesページからHayabusaの安定したバージョンでコンパイルされたバイナリが含まれている最新版もしくはソースコードをダウンロードできます。
以下のgit clone
コマンドでレポジトリをダウンロードし、ソースコードからコンパイルして使用することも可能です:
git clone https://github.com/Yamato-Security/hayabusa.git --recursive
注意: mainブランチは開発中のバージョンです。まだ正式にリリースされていない新機能が使えるかもしれないが、バグがある可能性もあるので、テスト版だと思って下さい。
※ --recursive
をつけ忘れた場合、サブモジュールとして管理されているrules
フォルダ内のファイルはダウンロードされません。
git pull --recurse-submodules
コマンド、もしくは以下のコマンドでrules
フォルダを同期し、Hayabusaの最新のルールを更新することができます:
hayabusa-1.4.3-win-x64.exe -u
アップデートが失敗した場合は、rules
フォルダの名前を変更してから、もう一回アップデートしてみて下さい。
注意: アップデートを実行する際に
rules
フォルダは hayabusa-rules レポジトリの最新のルールとコンフィグファイルに置き換えられます 既存ファイルへの修正はすべて上書きされますので、アップデート実行前に編集したファイルのバックアップをおすすめします。 もし、--level-tuning
を行っているのであれば、アップデート後にルールファイルの再調整をしてくださいrules
フォルダ内に新しく追加したルールは、アップデート時に上書きもしくは削除は行われません。
Rustがインストールされている場合、以下のコマンドでソースコードからコンパイルすることができます:
cargo clean
cargo build --release
以下のコマンドで定期的にRustをアップデートしてください:
rustup update stable
コンパイルされたバイナリはtarget/release
フォルダ配下で作成されます。
コンパイル前に最新のRust crateにアップデートすることで、最新のライブラリを利用することができます:
cargo update
※ アップデート後、何か不具合がありましたらお知らせください。
以下のコマンドで64ビットのWindows端末で32ビットのバイナリをクロスコンパイルできます:
rustup install stable-i686-pc-windows-msvc
rustup target add i686-pc-windows-msvc
rustup run stable-i686-pc-windows-msvc cargo build --release
opensslについてのコンパイルエラーが表示される場合は、Homebrewをインストールしてから、以下のパッケージをインストールする必要があります:
brew install pkg-config
brew install openssl
opensslについてのコンパイルエラーが表示される場合は、以下のパッケージをインストールする必要があります。
Ubuntu系のディストロ:
sudo apt install libssl-dev
Fedora系のディストロ:
sudo yum install openssl-devel
Hayabusa実行する際や、.yml
ルールのダウンロードや実行時にルール内でdetectionに不審なPowerShellコマンドやmimikatz
のようなキーワードが書かれている際に、アンチウィルスやEDRにブロックされる可能性があります。
誤検知のため、セキュリティ対策の製品がHayabusaを許可するように設定する必要があります。
マルウェア感染が心配であれば、ソースコードを確認した上で、自分でバイナリをコンパイルして下さい。
Windows PC起動後の初回実行時に時間がかかる場合があります。これはWindows Defenderのリアルタイムスキャンが行われていることが原因です。リアルタイムスキャンを無効にするかHayabusaのディレクトリをアンチウィルススキャンから除外することでこの現象は解消しますが、設定を変える前にセキュリティリスクを十分ご考慮ください。
コマンドプロンプトやWindows Terminalから32ビットもしくは64ビットのWindowsバイナリをHayabusaのルートディレクトリから実行します。
例: hayabusa-1.4.3-windows-x64.exe
まず、バイナリに実行権限を与える必要があります。
chmod +x ./hayabusa-1.4.3-linux-x64-gnu
次に、Hayabusaのルートディレクトリから実行します:
./hayabusa-1.4.3-linux-x64-gnu
まず、ターミナルやiTerm2からバイナリに実行権限を与える必要があります。
chmod +x ./hayabusa-1.4.3-mac-intel
次に、Hayabusaのルートディレクトリから実行してみてください:
./hayabusa-1.4.3-mac-intel
macOSの最新版では、以下のセキュリティ警告が出る可能性があります:
macOSの環境設定から「セキュリティとプライバシー」を開き、「一般」タブから「このまま許可」ボタンをクリックしてください。
その後、ターミナルからもう一回実行してみてください:
./hayabusa-1.4.3-mac-intel
以下の警告が出るので、「開く」をクリックしてください。
これで実行できるようになります。
USAGE:
hayabusa.exe -f file.evtx [OPTIONS] / hayabusa.exe -d evtx-directory [OPTIONS]
OPTIONS:
--European-time ヨーロッパ形式で日付と時刻を出力する (例: 22-02-2022 22:00:00.123 +02:00)
--RFC-2822 RFC 2822形式で日付と時刻を出力する (例: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 RFC 3339形式で日付と時刻を出力する (例: 2022-02-22 22:00:00.123456-06:00)
--US-military-time 24時間制(ミリタリータイム)のアメリカ形式で日付と時刻を出力する (例: 02-22-2022 22:00:00.123 -06:00)
--US-time アメリカ形式で日付と時刻を出力する (例: 02-22-2022 10:00:00.123 PM -06:00)
--all-tags 出力したCSVファイルにルール内のタグ情報を全て出力する
-c, --rules-config <RULE_CONFIG_DIRECTORY> ルールフォルダのコンフィグディレクトリ (デフォルト: ./rules/config)
--contributors コントリビュータの一覧表示
-d, --directory <DIRECTORY> .evtxファイルを持つディレクトリのパス
-D, --deep-scan すべてのイベントIDを対象にしたスキャンを行う
--enable-deprecated-rules Deprecatedルールを有効にする
--end-timeline <END_TIMELINE> 解析対象とするイベントログの終了時刻 (例: "2022-02-22 23:59:59 +09:00")
--exclude-status <EXCLUDE_STATUS>... 読み込み対象外とするルール内でのステータス (ex: experimental) (ex: stable test)
-f, --filepath <FILE_PATH> 1つの.evtxファイルに対して解析を行う
-h, --help ヘルプ情報を表示する
-l, --live-analysis ローカル端末のC:\Windows\System32\winevt\Logsフォルダを解析する
-L, --logon-summary 成功と失敗したログオン情報の要約を出力する
--level-tuning [<LEVEL_TUNING_FILE>] ルールlevelのチューニング (デフォルト: ./rules/config/level_tuning.txt)
-m, --min-level <LEVEL> 結果出力をするルールの最低レベル (デフォルト: informational)
-n, --enable-noisy-rules Noisyルールを有効にする
--no_color カラー出力を無効にする
-o, --output <CSV_TIMELINE> タイムラインをCSV形式で保存する (例: results.csv)
-p, --pivot-keywords-list ピボットキーワードの一覧作成
-P, --profile <PROFILE> 利用する出力プロファイル名を指定する
-q, --quiet Quietモード: 起動バナーを表示しない
-Q, --quiet-errors Quiet errorsモード: エラーログを保存しない
-r, --rules <RULE_DIRECTORY/RULE_FILE> ルールファイルまたはルールファイルを持つディレクトリ (デフォルト: ./rules)
-s, --statistics イベントIDの統計情報を表示する
--set-default-profile <SET_DEFAULT_PROFILE> デフォルトの出力コンフィグを設定する
--start-timeline <START_TIMELINE> 解析対象とするイベントログの開始時刻 (例: "2020-02-22 00:00:00 +09:00")
-t, --thread-number <NUMBER> スレッド数 (デフォルト: パフォーマンスに最適な数値)
--target-file-ext <EVTX_FILE_EXT>... evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2:evtx1 evtx2)
-u, --update-rules rulesフォルダをhayabusa-rulesのgithubリポジトリの最新版に更新する
-U, --UTC UTC形式で日付と時刻を出力する (デフォルト: 現地時間)
-v, --verbose 詳細な情報を出力する
-V, --visualize-timeline イベント頻度タイムラインを出力する
--version バージョン情報を表示する
- 1つのWindowsイベントログファイルに対してHayabusaを実行します:
hayabusa-1.4.3-win-x64.exe -f eventlog.evtx
- 複数のWindowsイベントログファイルのあるsample-evtxディレクトリに対して、Hayabusaを実行します:
hayabusa-1.4.3-win-x64.exe -d .\hayabusa-sample-evtx
- 全てのフィールド情報も含めて1つのCSVファイルにエクスポートして、Excel、Timeline Explorer、Elastic Stack等でさらに分析することができます(注意:
-F
を有効にすると、出力するファイルのサイズがとても大きくなります!):
hayabusa-1.4.3-win-x64.exe -d .\hayabusa-sample-evtx -o results.csv -F
- Hayabusaルールのみを実行します(デフォルトでは
-r .\rules
にあるすべてのルールが利用されます):
hayabusa-1.4.3-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\hayabusa -o results.csv
- Windowsでデフォルトで有効になっているログに対してのみ、Hayabusaルールを実行します:
hayabusa-1.4.3-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\hayabusa\default -o results.csv
- Sysmonログに対してのみHayabusaルールを実行します:
hayabusa-1.4.3-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\hayabusa\sysmon -o results.csv
- Sigmaルールのみを実行します:
hayabusa-1.4.3-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\sigma -o results.csv
- 廃棄(deprecated)されたルール(
status
がdeprecated
になっているルール)とノイジールール(.\rules\config\noisy_rules.txt
にルールIDが書かれているルール)を有効にします:
hayabusa-1.4.3-win-x64.exe -d .\hayabusa-sample-evtx --enable-deprecated-rules --enable-noisy-rules -o results.csv
- ログオン情報を分析するルールのみを実行し、UTCタイムゾーンで出力します:
hayabusa-1.4.3-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\hayabusa\default\events\Security\Logons -U -o results.csv
- 起動中のWindows端末上で実行し(Administrator権限が必要)、アラート(悪意のある可能性のある動作)のみを検知します:
hayabusa-1.4.3-win-x64.exe -l -m low
- criticalレベルのアラートからピボットキーワードの一覧を作成します(結果は結果毎に
keywords-Ip Address.txt
やkeywords-Users.txt
等に出力されます):
hayabusa-1.4.3-win-x64.exe -l -m critical -p -o keywords
- イベントIDの統計情報を取得します:
hayabusa-1.4.3-win-x64.exe -f Security.evtx -s
- 詳細なメッセージを出力します(処理に時間がかかるファイル、パースエラー等を特定するのに便利):
hayabusa-1.4.3-win-x64.exe -d .\hayabusa-sample-evtx -v
- Verbose出力の例:
Checking target evtx FilePath: "./hayabusa-sample-evtx/YamatoSecurity/T1027.004_Obfuscated Files or Information\u{a0}Compile After Delivery/sysmon.evtx"
1 / 509 [>-------------------------------------------------------------------------------------------------------------------------------------------] 0.20 % 1s
Checking target evtx FilePath: "./hayabusa-sample-evtx/YamatoSecurity/T1558.004_Steal or Forge Kerberos Tickets AS-REP Roasting/Security.evtx"
2 / 509 [>-------------------------------------------------------------------------------------------------------------------------------------------] 0.39 % 1s
Checking target evtx FilePath: "./hayabusa-sample-evtx/YamatoSecurity/T1558.003_Steal or Forge Kerberos Tickets\u{a0}Kerberoasting/Security.evtx"
3 / 509 [>-------------------------------------------------------------------------------------------------------------------------------------------] 0.59 % 1s
Checking target evtx FilePath: "./hayabusa-sample-evtx/YamatoSecurity/T1197_BITS Jobs/Windows-BitsClient.evtx"
4 / 509 [=>------------------------------------------------------------------------------------------------------------------------------------------] 0.79 % 1s
Checking target evtx FilePath: "./hayabusa-sample-evtx/YamatoSecurity/T1218.004_Signed Binary Proxy Execution\u{a0}InstallUtil/sysmon.evtx"
5 / 509 [=>------------------------------------------------------------------------------------------------------------------------------------------] 0.98 % 1s
- エラーログの出力をさせないようにする:
デフォルトでは、Hayabusaはエラーメッセージをエラーログに保存します。
エラーメッセージを保存したくない場合は、
-Q
を追加してください。
-p
もしくは--pivot-keywords-list
オプションを使うことで不審なユーザやホスト名、プロセスなどを一覧で出力することができ、イベントログから素早く特定することができます。
ピボットキーワードのカスタマイズは./config/pivot_keywords.txt
を変更することで行うことができます。以下はデフォルトの設定になります:
Users.SubjectUserName
Users.TargetUserName
Users.User
Logon IDs.SubjectLogonId
Logon IDs.TargetLogonId
Workstation Names.WorkstationName
Ip Addresses.IpAddress
Processes.Image
形式はKeywordName.FieldName
となっています。例えばデフォルトの設定では、Users
というリストは検知したイベントからSubjectUserName
、 TargetUserName
、 User
のフィールドの値が一覧として出力されます。hayabusaのデフォルトでは検知したすべてのイベントから結果を出力するため、--pivot-keyword-list
オプションを使うときには -m
もしくは --min-level
オプションを併せて使って検知するイベントのレベルを指定することをおすすめします。まず-m critical
を指定して、最も高いcritical
レベルのアラートのみを対象として、レベルを必要に応じて下げていくとよいでしょう。結果に正常なイベントにもある共通のキーワードが入っている可能性が高いため、手動で結果を確認してから、不審なイベントにありそうなキーワードリストを1つのファイルに保存し、grep -f keywords.txt timeline.csv
等のコマンドで不審なアクティビティに絞ったタイムラインを作成することができます。
-L
または --logon-summary
オプションを使うことでログオン情報の要約(ユーザ名、ログイン成功数、ログイン失敗数)の画面出力ができます。単体のevtxファイルを解析したい場合は-f
オプションを利用してください。複数のevtxファイルを対象としたい場合は -d
オプションを合わせて使うことでevtxファイルごとのログイン情報の要約を出力できます。
Hayabusaをテストしたり、新しいルールを作成したりするためのサンプルevtxファイルをいくつか提供しています: https://github.com/Yamato-Security/Hayabusa-sample-evtx
以下のコマンドで、サンプルのevtxファイルを新しいサブディレクトリ hayabusa-sample-evtx
にダウンロードすることができます:
git clone https://github.com/Yamato-Security/hayabusa-sample-evtx.git
Hayabusaの結果を標準出力に表示しているとき(デフォルト)は、以下の情報を表示することができます:
Timestamp
: デフォルトではYYYY-MM-DD HH:mm:ss.sss +hh:mm
形式になっています。イベントログの<Event><System><TimeCreated SystemTime>
フィールドから来ています。デフォルトのタイムゾーンはローカルのタイムゾーンになりますが、--utc
オプションで UTC に変更することができます。Computer
: イベントログの<Event><System><Computer>
フィールドから来ています。Channel
: ログ名です。イベントログの<Event><System><EventID>
フィールドから来ています。Event ID
: イベントログの<Event><System><EventID>
フィールドから来ています。Level
: YML検知ルールのlevel
フィールドから来ています。(例:informational
,low
,medium
,high
,critical
) デフォルトでは、すべてのレベルのアラートとイベントが出力されますが、-m
オプションで最低のレベルを指定することができます。例えば-m high
オプションを付けると、high
とcritical
アラートしか出力されません。Title
: YML検知ルールのtitle
フィールドから来ています。RecordID
: イベントレコードIDです。<Event><System><EventRecordID>
フィールドから来ています。Details
: YML検知ルールのdetails
フィールドから来ていますが、このフィールドはHayabusaルールにしかありません。このフィールドはアラートとイベントに関する追加情報を提供し、ログのフィールドから有用なデータを抽出することができます。イベントキーのマッピングが間違っている場合、もしくはフィールドが存在しない場合で抽出ができなかった箇所はn/a
(not available)と記載されます。YML検知ルールにdetails
フィールドが存在しない時のdetailsのメッセージを./rules/config/default_details.txt
で設定できます。default_details.txt
ではProvider Name
、EventID
、details
の組み合わせで設定することができます。default_details.txt`やYML検知ルールに対応するルールが記載されていない場合はすべてのフィールド情報を出力します。MitreAttack
: MITRE ATT&CKの戦術。RuleFile
: アラートまたはイベントを生成した検知ルールのファイル名。EvtxFile
: アラートまたはイベントを起こしたevtxファイルへのパス。RecordInformation
: すべてのフィールド情報。
Hayabusaの出力内容はconfig/profiles.txtとconfig/default_profile.txtを変更することでカスタマイズできます。カスタマイズではHayabusaの出力で用いられている内容を以下のエイリアスで呼び出すことができます。
もし、config/profiles.txt
に書いてるプロファイルを用いたい場合は-P/--profile
オプションを利用してください。
default_profiles.txtをprofile.txtに書かれているプロファイルで上書きしたい場合は--set-default-profile
オプションを利用してください。
エイリアス名 | Haysbusaの出力にある情報 |
---|---|
%Timestamp% | Timestamp |
%Computer% | Computer |
%Channel% | Channel |
%Level% | Level |
%EventID% | EventID |
%MitreAttack% | MitreAttack |
%RecordID% | RecordID |
%RuleTitle% | Title |
%Details% | Details |
%RecordInformation% | RecordInformation |
%RuleFile% | RuleFile |
%EvtxFile% | EvtxFile |
profiles.txtへの記載例:
(profilename):
(column name): '%Timestamp%'
(column name2): '%Computer%'
(column name3): '%Channel%'
簡潔に出力するためにLevelを以下のように省略し出力しています。
crit
:critical
high
:high
med
:med
low
:low
info
:informational
簡潔に出力するためにMITRE ATT&CKの戦術を以下のように省略しています。
./config/output_tag.txt
の設定ファイルで自由に編集できます。
検知したデータの戦術を全て出力したい場合は、--all-tags
オプションをつけてください。
Recon
: Reconnaissance (偵察)ResDev
: Resource Development (リソース開発)InitAccess
: Initial Access (初期アクセス)Exec
: Execution (実行)Persis
: Persistence (永続化)PrivEsc
: Privilege Escalation (権限昇格)Evas
: Defense Evasion (防御回避)CredAccess
: Credential Access (認証情報アクセス)Disc
: Discovery (探索)LatMov
: Lateral Movement (横展開)Collect
: Collection (収集)C2
: Command and Control (遠隔操作)Exfil
: Exfiltration (持ち出し)Impact
: Impact (影響)
簡潔に出力するためにChannelの表示を以下のように省略しています。
./rules/config/channel_abbreviations.txt
の設定ファイルで自由に編集できます。
App
:Application
AppLocker
:Microsoft-Windows-AppLocker/*
BitsCli
:Microsoft-Windows-Bits-Client/Operational
CodeInteg
:Microsoft-Windows-CodeIntegrity/Operational
Defender
:Microsoft-Windows-Windows Defender/Operational
DHCP-Svr
:Microsoft-Windows-DHCP-Server/Operational
DNS-Svr
:DNS Server
DvrFmwk
:Microsoft-Windows-DriverFrameworks-UserMode/Operational
Exchange
:MSExchange Management
Firewall
:Microsoft-Windows-Windows Firewall With Advanced Security/Firewall
KeyMgtSvc
:Key Management Service
LDAP-Cli
:Microsoft-Windows-LDAP-Client/Debug
NTLM
Microsoft-Windows-NTLM/Operational
OpenSSH
:OpenSSH/Operational
PrintAdm
:Microsoft-Windows-PrintService/Admin
PrintOp
:Microsoft-Windows-PrintService/Operational
PwSh
:Microsoft-Windows-PowerShell/Operational
PwShClassic
:Windows PowerShell
RDP-Client
:Microsoft-Windows-TerminalServices-RDPClient/Operational
Sec
:Security
SecMitig
:Microsoft-Windows-Security-Mitigations/*
SmbCliSec
:Microsoft-Windows-SmbClient/Security
SvcBusCli
:Microsoft-ServiceBus-Client
Sys
:System
Sysmon
:Microsoft-Windows-Sysmon/Operational
TaskSch
:Microsoft-Windows-TaskScheduler/Operational
WinRM
:Microsoft-Windows-WinRM/Operational
WMI
:Microsoft-Windows-WMI-Activity/Operational
プログレス・バーは、複数のevtxファイルに対してのみ機能します。 解析したevtxファイルの数と割合をリアルタイムで表示します。
Hayabusaの結果はlevel
毎に文字色が変わります。
./config/level_color.txt
の値を変更することで文字色を変えることができます。
形式はlevel名,(6桁のRGBのカラーhex)
です。
カラー出力をしないようにしたい場合は--no-color
オプションをご利用ください。
-V
または--visualize-timeline
オプションを使うことで、検知したイベントの数が5以上の時、頻度のタイムライン(スパークライン)を画面に出力します。
マーカーの数は最大10個です。デフォルトのCommand PromptとPowerShell Promptでは文字化けがでるので、Windows TerminalやiTerm2等のターミナルをご利用ください。
各レベルで最も検知された日付を画面に出力します。
各レベルで多く検知されたユニークなイベントが多い端末名上位5つを画面に出力します。
Hayabusa検知ルールはSigmaのようなYML形式で記述されています。rules
ディレクトリに入っていますが、将来的にはhttps://github.com/Yamato-Security/hayabusa-rulesのレポジトリで管理する予定なので、ルールのissueとpull requestはhayabusaのレポジトリではなく、ルールレポジトリへお願いします。
ルールの作成方法については、hayabusa-rulesレポジトリのREADME をお読みください。
hayabusa-rulesレポジトリにあるすべてのルールは、rules
フォルダに配置する必要があります。
level
がinformationのルールは events
とみなされ、low
以上は alerts
とみなされます。
Hayabusaルールのディレクトリ構造は、3つのディレクトリに分かれています。
default
: Windows OSでデフォルトで記録されるログnon-default
: グループポリシーやセキュリティベースラインの適用でオンにする必要があるログsysmon
: sysmonによって生成されるログ。testing
: 現在テストしているルールを配置するための一時ディレクトリ
ルールはさらにログタイプ(例:Security、Systemなど)によってディレクトリに分けられ、次の形式で名前が付けられます。
- アラート形式:
<イベントID>_<イベントの説明>_<リスクの説明>.yml
- アラート例:
1102_SecurityLogCleared_PossibleAntiForensics.yml
- イベント形式:
<イベントID>_<イベントの説明>.yml
- イベント例:
4776_NTLM-LogonToLocalAccount.yml
現在のルールをご確認いただき、新規作成時のテンプレートとして、また検知ロジックの確認用としてご利用ください。
Sigmaルールは、最初にHayabusaルール形式に変換する必要があります。変換のやり方はここで説明されています。 殆どのルールはSigmaルールと互換性があるので、Sigmaルールのようにその他のSIEM形式に変換できます。 Hayabusaルールは、Windowsのイベントログ解析専用に設計されており、以下のような利点があります:
- ログの有用なフィールドのみから抽出された追加情報を表示するための
details
フィールドを追加しています。 - Hayabusaルールはすべてサンプルログに対してテストされ、検知することが確認されています。
変換処理のバグ、サポートされていない機能、実装の違い(正規表現など)により、一部のSigmaルールは意図したとおりに動作しない可能性があります。
- Sigmaルール仕様にない集計式(例:
|equalsfield
)の利用。
制限事項: 私たちの知る限り、Hayabusa はオープンソースの Windows イベントログ解析ツールの中でSigmaルールを最も多くサポートしていますが、まだサポートされていないルールもあります。
- Rust正規表現クレートでは機能しない正規表現を使用するルール。
- Sigmaルール仕様の
count
以外の集計式。 |near
を使用するルール。
ファイアウォールやIDSと同様に、シグネチャベースのツールは、環境に合わせて調整が必要になるため、特定のルールを永続的または一時的に除外する必要がある場合があります。
ルールID(例: 4fe151c2-ecf9-4fae-95ae-b88ec9c2fca6
) を ./rules/config/exclude_rules.txt
に追加すると、不要なルールや利用できないルールを無視することができます。
ルールIDを ./rules/config/noisy_rules.txt
に追加して、デフォルトでルールを無視することもできますが、-n
または --enable-noisy-rules
オプションを指定してルールを使用することもできます。
Hayabusaルール、Sigmaルールはそれぞれの作者が検知した際のリスクレベルを決めています。
ユーザが独自のリスクレベルに設定するには./rules/config/level_tuning.txt
に変換情報を書き、hayabusa-1.4.3-win-x64.exe --level-tuning
を実行することでルールファイルが書き換えられます。
ルールファイルが直接書き換えられることに注意して使用してください。
./rules/config/level_tuning.txt
の例:
id,new_level
00000000-0000-0000-0000-000000000000,informational # sample level tuning line
ルールディレクトリ内でid
が00000000-0000-0000-0000-000000000000
のルールのリスクレベルがinformational
に書き換えられます。
バージョン1.4.3以降では、デフォルトでパフォーマンスを上げるために、検知ルールでイベントIDが定義されていないイベントを無視しています。
デフォルトでは./rules/config/target_event_IDs.txt
で定義されたIDがスキャンされます。
If you want to scan all events, please use the -D, --deep-scan
option.
すべてのイベントをスキャンしたい場合は、-D, --deep-scan
オプションを使用してください。
「すべてを統治する1つのツール」というものはなく、それぞれにメリットがあるため、これらの他の優れたツールやプロジェクトをチェックして、どれが気に入ったかを確認することをお勧めします。
- APT-Hunter - Pythonで開発された攻撃検知ツール。
- Awesome Event IDs - フォレンジック調査とインシデント対応に役立つイベントIDのリソース。
- Chainsaw - Rustで開発されたSigmaベースの攻撃検知ツール。
- DeepBlueCLI - Eric Conrad によってPowershellで開発された攻撃検知ツール。
- Epagneul - Windowsイベントログの可視化ツール。
- EventList - Miriam Wiesnerによるセキュリティベースラインの有効なイベントIDをMITRE ATT&CKにマッピングするPowerShellツール。
- MITRE ATT&CKとWindowイベントログIDのマッピング - 作者:Michel de CREVOISIER
- EvtxECmd - Eric ZimmermanによるEvtxパーサー。
- EVTXtract - 未使用領域やメモリダンプからEVTXファイルを復元するツール。
- EvtxToElk - Elastic StackにEvtxデータを送信するPythonツール。
- EVTX ATTACK Samples - SBousseaden によるEVTX攻撃サンプルイベントログファイル。
- EVTX-to-MITRE-Attack - Michel de CREVOISIERによるATT&CKにマッピングされたEVTX攻撃サンプルログのレポジトリ。
- EVTX parser - @OBenamram によって書かれた、私たちが使用したRustライブラリ。
- Grafiki - SysmonとPowerShellログの可視化ツール。
- LogonTracer - JPCERTCC による、横方向の動きを検知するためにログオンを視覚化するグラフィカルなインターフェース。
- RustyBlue - 大和セキュリティによるDeepBlueCLIのRust版。
- Sigma - コミュニティベースの汎用SIEMルール。
- SOF-ELK - Phil Hagen によるDFIR解析用のElastic Stack VM。
- so-import-evtx - evtxファイルをSecurityOnionにインポートするツール。
- SysmonTools - Sysmonの設定とオフライン可視化ツール。
- Timeline Explorer - Eric Zimmerman による最高のCSVタイムラインアナライザ。
- Windows Event Log Analysis - Analyst Reference - Forward DefenseのSteve AnsonによるWindowsイベントログ解析の参考資料。
- WELA (Windows Event Log Analyzer) - Yamato SecurityによるWindowsイベントログ解析のマルチツール。
- Zircolite - Pythonで書かれたSigmaベースの攻撃検知ツール。
Windows機での悪性な活動を検知する為には、デフォルトのログ設定を改善することが必要です。 以下のサイトを閲覧することをおすすめします。:
- JSCU-NL (Joint Sigint Cyber Unit Netherlands) Logging Essentials
- ACSC (Australian Cyber Security Centre) Logging and Fowarding Guide
- Malware Archaeology Cheat Sheets
フォレンジックに有用な証拠を作り、高い精度で検知をさせるためには、sysmonをインストールする必要があります。以下のサイトを参考に設定することをおすすめします。:
- 2022/06/19 VelociraptorチュートリアルとHayabusaの統合方法 by Eric Cupuano
- 2022/01/24 Hayabusa結果をneo4jで可視化する方法 by Matthew Seyer (@forensic_matt)
- 2022/01/22 Hayabusa結果をElastic Stackで可視化する方法 by @kzzzzo2
- 2021/12/31 Windowsイベントログ解析ツール「Hayabusa」を使ってみる by itiB (@itiB_S144)
- 2021/12/27 Hayabusaの中身 by Kazuminn (@k47_um1n)
どのような形でも構いませんので、ご協力をお願いします。プルリクエスト、ルール作成、evtxログのサンプルなどがベストですが、機能リクエスト、バグの通知なども大歓迎です。
少なくとも、私たちのツールを気に入っていただけたなら、Githubで星を付けて、あなたのサポートを表明してください。
見つけたバグをこちらでご連絡ください。報告されたバグを喜んで修正します!
HayabusaはGPLv3で公開され、すべてのルールはDetection Rule License (DRL) 1.1で公開されています。
@SecurityYamatoでHayabusa、ルール更新、その他の大和セキュリティツール等々について情報を提供しています。