diff --git a/README-Japanese_tmp.html b/README-Japanese_tmp.html deleted file mode 100644 index fc610768..00000000 --- a/README-Japanese_tmp.html +++ /dev/null @@ -1,1210 +0,0 @@ - - - -README-Japanese.md - - - - - - - - - - - - -
-

- Hayabusa Logo -

- [English] | [日本語] -
-
-

tag-1 tag-2 tag-3 tag-4 tag-8 -tag-5 tag-6 tag-7

-

Hayabusa について

-

Hayabusaは、日本のYamato Securityグループによって作られたWindowsイベントログのファストフォレンジックタイムライン生成およびスレットハンティングツールです。 Hayabusaは日本語で「ハヤブサ」を意味し、ハヤブサが世界で最も速く、狩猟(hunting)に優れ、とても訓練しやすい動物であることから選ばれました。Rust で開発され、マルチスレッドに対応し、可能な限り高速に動作するよう配慮されています。SigmaルールをHayabusaルール形式に変換するツールも提供しています。Hayabusaの検知ルールもSigmaと同様にYML形式であり、カスタマイズ性や拡張性に優れます。稼働中のシステムで実行してライブ調査することも、複数のシステムからログを収集してオフライン調査することも可能です。また、 VelociraptorHayabusa artifactを用いることで企業向けの広範囲なスレットハンティングとインシデントレスポンスにも活用できます。出力は一つのCSVタイムラインにまとめられ、Excel、Timeline ExplorerElastic StackTimesketch等で簡単に分析できるようになります。

-

目次

- -

主な目的

-

スレット(脅威)ハンティングと企業向けの広範囲なDFIR

-

Hayabusaには現在、2600以上のSigmaルールと130以上のHayabusa検知ルールがあり、定期的にルールが追加されています。 -VelociraptorHayabusa artifactを用いることで企業向けの広範囲なスレットハンティングだけでなくDFIR(デジタルフォレンジックとインシデントレスポンス)にも無料で利用することが可能です。この2つのオープンソースを組み合わせることで、SIEMが設定されていない環境でも実質的に遡及してSIEMを再現することができます。具体的な方法はEric Capuanoこちらの動画で学ぶことができます。 -最終的な目標はインシデントレスポンスや定期的なスレットハンティングのために、HayabusaエージェントをすべてのWindows端末にインストールして、中央サーバーにアラートを返す仕組みを作ることです。

-

フォレンジックタイムラインの高速生成

-

Windowsのイベントログは、 -1)解析が困難なデータ形式であること -2)データの大半がノイズであり調査に有用でないこと -から、従来は非常に長い時間と手間がかかる解析作業となっていました。 Hayabusa は、有用なデータのみを抽出し、専門的なトレーニングを受けた分析者だけでなく、Windowsのシステム管理者であれば誰でも利用できる読みやすい形式で提示することを主な目的としています。 -Hayabusaは従来のWindowsイベントログ分析解析と比較して、分析者が20%の時間で80%の作業を行えるようにすることを目指しています。

-

スクリーンショット

-

起動画面

-

Hayabusa 起動画面

-

ターミナル出力画面

-

Hayabusa ターミナル出力画面

-

イベント頻度タイムライン出力画面 (-Vオプション)

-

Hayabusa イベント頻度タイムライン出力画面

-

結果サマリ画面

-

Hayabusa 結果サマリ画面

-

Excelでの解析

-

Hayabusa Excelでの解析

-

Timeline Explorerでの解析

-

Hayabusa Timeline Explorerでの解析

-

Criticalアラートのフィルタリングとコンピュータごとのグルーピング

-

Timeline ExplorerでCriticalアラートのフィルタリングとコンピュータグルーピング

-

Elastic Stackダッシュボードでの解析

-

Elastic Stack Dashboard 1

-

Elastic Stack Dashboard 2

-

Timesketchでの解析

-

Timesketch

-

タイムラインのサンプル結果

-

CSVのタイムライン結果のサンプルはこちらで確認できます。

-

CSVのタイムラインをExcelやTimeline Explorerで分析する方法はこちらで紹介しています。

-

CSVのタイムラインをElastic Stackにインポートする方法はこちらで紹介しています。

-

CSVのタイムラインをTimesketchにインポートする方法はこちらで紹介しています。

-

特徴&機能

- -

ダウンロード

-

ReleasesページからHayabusaの安定したバージョンでコンパイルされたバイナリが含まれている最新版もしくはソースコードをダウンロードできます。

-

Gitクローン

-

以下のgit cloneコマンドでレポジトリをダウンロードし、ソースコードからコンパイルして使用することも可能です:

-
git clone https://github.com/Yamato-Security/hayabusa.git --recursive -
-

注意: mainブランチは開発中のバージョンです。まだ正式にリリースされていない新機能が使えるかもしれないが、バグがある可能性もあるので、テスト版だと思って下さい。

-

--recursiveをつけ忘れた場合、サブモジュールとして管理されているrulesフォルダ内のファイルはダウンロードされません。

-

git pull --recurse-submodulesコマンド、もしくは以下のコマンドでrulesフォルダを同期し、Hayabusaの最新のルールを更新することができます:

-
hayabusa-1.6.0-win-x64.exe -u -
-

アップデートが失敗した場合は、rulesフォルダの名前を変更してから、もう一回アップデートしてみて下さい。

-
-
-

注意: アップデートを実行する際に rules フォルダは hayabusa-rules レポジトリの最新のルールとコンフィグファイルに置き換えられます -既存ファイルへの修正はすべて上書きされますので、アップデート実行前に編集したファイルのバックアップをおすすめします。 -もし、--level-tuning を行っているのであれば、アップデート後にルールファイルの再調整をしてください -rulesフォルダ内に新しく追加したルールは、アップデート時に上書きもしくは削除は行われません。

-
-
-

アドバンス: ソースコードからのコンパイル(任意)

-

Rustがインストールされている場合、以下のコマンドでソースコードからコンパイルすることができます:

-
cargo build --release -
-

以下のコマンドで定期的にRustをアップデートしてください:

-
rustup update stable -
-

コンパイルされたバイナリはtarget/releaseフォルダ配下で作成されます。

-

Rustパッケージの更新

-

コンパイル前に最新のRust crateにアップデートすることで、最新のライブラリを利用することができます:

-
cargo update -
-

※ アップデート後、何か不具合がありましたらお知らせください。

-

32ビットWindowsバイナリのクロスコンパイル

-

以下のコマンドで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 -
-

macOSでのコンパイルの注意点

-

opensslについてのコンパイルエラーが表示される場合は、Homebrewをインストールしてから、以下のパッケージをインストールする必要があります:

-
brew install pkg-config -brew install openssl -
-

Linuxでのコンパイルの注意点

-

opensslについてのコンパイルエラーが表示される場合は、以下のパッケージをインストールする必要があります。

-

Ubuntu系のディストロ:

-
sudo apt install libssl-dev -
-

Fedora系のディストロ:

-
sudo yum install openssl-devel -
-

LinuxのMUSLバイナリのクロスコンパイル

-

まず、Linux OSでターゲットをインストールします。

-
rustup install stable-x86_64-unknown-linux-musl -rustup target add x86_64-unknown-linux-musl -
-

以下のようにコンパイルします:

-
cargo build --release --target=x86_64-unknown-linux-musl -
-

MUSLバイナリは./target/x86_64-unknown-linux-musl/release/ディレクトリ配下に作成されます。 -MUSLバイナリはGNUバイナリより約15%遅いです。

-

Linuxでのコンパイルの注意点

-

Hayabusaの実行

-

注意: アンチウィルス/EDRの誤検知と遅い初回実行

-

Hayabusa実行する際や、.ymlルールのダウンロードや実行時にルール内でdetectionに不審なPowerShellコマンドやmimikatzのようなキーワードが書かれている際に、アンチウィルスやEDRにブロックされる可能性があります。 -誤検知のため、セキュリティ対策の製品がHayabusaを許可するように設定する必要があります。 -マルウェア感染が心配であれば、ソースコードを確認した上で、自分でバイナリをコンパイルして下さい。

-

Windows PC起動後の初回実行時に時間がかかる場合があります。これはWindows Defenderのリアルタイムスキャンが行われていることが原因です。リアルタイムスキャンを無効にするかHayabusaのディレクトリをアンチウィルススキャンから除外することでこの現象は解消しますが、設定を変える前にセキュリティリスクを十分ご考慮ください。

-

Windows

-

コマンドプロンプトやWindows Terminalから32ビットもしくは64ビットのWindowsバイナリをHayabusaのルートディレクトリから実行します。

-

例: hayabusa-1.6.0-windows-x64.exe

-

Linux

-

まず、バイナリに実行権限を与える必要があります。

-
chmod +x ./hayabusa-1.6.0-linux-x64-gnu -
-

次に、Hayabusaのルートディレクトリから実行します:

-
./hayabusa-1.6.0-linux-x64-gnu -
-

macOS

-

まず、ターミナルやiTerm2からバイナリに実行権限を与える必要があります。

-
chmod +x ./hayabusa-1.6.0-mac-intel -
-

次に、Hayabusaのルートディレクトリから実行してみてください:

-
./hayabusa-1.6.0-mac-intel -
-

macOSの最新版では、以下のセキュリティ警告が出る可能性があります:

-

Mac Error 1 JP

-

macOSの環境設定から「セキュリティとプライバシー」を開き、「一般」タブから「このまま許可」ボタンをクリックしてください。

-

Mac Error 2 JP

-

その後、ターミナルからもう一回実行してみてください:

-
./hayabusa-1.6.0-mac-intel -
-

以下の警告が出るので、「開く」をクリックしてください。

-

Mac Error 3 JP

-

これで実行できるようになります。

-

使用方法

-

主なコマンド

- -

コマンドラインオプション

-
USAGE: - hayabusa.exe <INPUT> [OTHER-ACTIONS] [OPTIONS] - -INPUT: - -d, --directory <DIRECTORY> .evtxファイルを持つディレクトリのパス - -f, --file <FILE> 1つの.evtxファイルに対して解析を行う - -l, --live-analysis ローカル端末のC:\Windows\System32\winevt\Logsフォルダを解析する - -ADVANCED: - -c, --rules-config <DIRECTORY> ルールフォルダのコンフィグディレクトリ (デフォルト: ./rules/config) - -Q, --quiet-errors Quiet errorsモード: エラーログを保存しない - -r, --rules <DIRECTORY/FILE> ルールファイルまたはルールファイルを持つディレクトリ (デフォルト: ./rules) - -t, --thread-number <NUMBER> スレッド数 (デフォルト: パフォーマンスに最適な数値) - --target-file-ext <EVTX_FILE_EXT>... evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2:evtx1 evtx2) - -OUTPUT: - -j, --json タイムラインの出力をJSON形式で保存する(例: -j -o results.json) - -o, --output <FILE> タイムラインをCSV形式で保存する (例: results.csv) - -P, --profile <PROFILE> 利用する出力プロファイル名を指定する (minimal, standard, verbose, verbose-all-field-info, verbose-details-and-all-field-info) - -DISPLAY-SETTINGS: - --no-color カラー出力を無効にする - --no-summary 結果概要を出力しない - -q, --quiet Quietモード: 起動バナーを表示しない - -v, --verbose 詳細な情報を出力する - -V, --visualize-timeline イベント頻度タイムラインを出力する - -FILTERING: - -D, --deep-scan すべてのイベントIDを対象にしたスキャンを行う(遅くなる) - --enable-deprecated-rules Deprecatedルールを有効にする - --exclude-status <STATUS>... 読み込み対象外とするルール内でのステータス (ex: experimental) (ex: stable test) - -m, --min-level <LEVEL> 結果出力をするルールの最低レベル (デフォルト: informational) - -n, --enable-noisy-rules Noisyルールを有効にする - --timeline-end <DATE> 解析対象とするイベントログの終了時刻 (例: "2022-02-22 23:59:59 +09:00") - --timeline-start <DATE> 解析対象とするイベントログの開始時刻 (例: "2020-02-22 00:00:00 +09:00") - -OTHER-ACTIONS: - --contributors コントリビュータの一覧表示 - -L, --logon-summary 成功と失敗したログオン情報の要約を出力する - --level-tuning [<FILE>] ルールlevelのチューニング (デフォルト: ./rules/config/level_tuning.txt) - -p, --pivot-keywords-list ピボットキーワードの一覧作成 - -s, --statistics イベントIDの統計情報を表示する - --set-default-profile <PROFILE> デフォルトの出力コンフィグを設定する - -u, --update-rules rulesフォルダをhayabusa-rulesのgithubリポジトリの最新版に更新する - -TIME-FORMAT: - --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) - -U, --UTC UTC形式で日付と時刻を出力する (デフォルト: 現地時間) -
-

使用例

- -
hayabusa-1.6.0-win-x64.exe -f eventlog.evtx -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx -P verbose -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx -o results.csv -P verbose-details-and-all-field-info -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx -o results.json -j -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\hayabusa -o results.csv -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\hayabusa\default -o results.csv -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\hayabusa\sysmon -o results.csv -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\sigma -o results.csv -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx --enable-deprecated-rules --enable-noisy-rules -o results.csv -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx -r .\rules\hayabusa\default\events\Security\Logons -U -o results.csv -
- -
hayabusa-1.6.0-win-x64.exe -l -m low -
- -
hayabusa-1.6.0-win-x64.exe -l -m critical -p -o keywords -
- -
hayabusa-1.6.0-win-x64.exe -f Security.evtx -s -
- -
hayabusa-1.6.0-win-x64.exe -L -f Security.evtx -s -
- -
hayabusa-1.6.0-win-x64.exe -d .\hayabusa-sample-evtx -v -
- -
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-1.6.0-win-x64.exe -d ../hayabusa-sample-evtx --RFC-3339 -o timesketch-import.csv -P timesketch -U -
- -

ピボットキーワードの作成

-

-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というリストは検知したイベントからSubjectUserNameTargetUserNameUserのフィールドの値が一覧として出力されます。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ファイルごとのログイン情報の要約を出力できます。

-

サンプルevtxファイルでHayabusaをテストする

-

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の出力

-

プロファイル

-

Hayabusaのconfig/profiles.yaml設定ファイルでは、5つのプロファイルが定義されています:

-
    -
  1. minimal
  2. -
  3. standard (デフォルト)
  4. -
  5. verbose
  6. -
  7. all-field-info
  8. -
  9. all-field-info-verbose
  10. -
  11. super-verbose
  12. -
  13. timesketch-minimal
  14. -
  15. timesketch-verbose
  16. -
-

このファイルを編集することで、簡単に独自のプロファイルをカスタマイズしたり、追加したりすることができます。 ---set-default-profile <profile>オプションでデフォルトのプロファイルを変更することもできます。

-

1. minimalプロファイルの出力

-

%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RuleTitle%, %Details%

-

2. standardプロファイルの出力

-

%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %Details%

-

3. verboseプロファイルの出力

-

%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %Details%, %RuleFile%, %EvtxFile%

-

4. all-field-infoプロファイルの出力

-

最小限のdetails情報を出力する代わりに、イベントにあるすべてのEventDataフィールド情報が出力されます。

-

%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%

-

5. all-field-info-verboseプロファイルの出力

-

all-field-infoとタグ情報が出力されます。

-

%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%

-

6. super-verboseプロファイルの出力

-

verboseプロファイルで出力される情報とイベントにあるすべてのEventDataフィールド情報が出力されます。 -(注意: 出力ファイルサイズは2倍になります!)

-

%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %Details%, %RuleFile%, %EvtxFile%, %AllFieldInfo%

-

7. timesketchプロファイルの出力

-

Timesketchにインポートできるverboseプロファイル。

-

%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %RuleFile%, %EvtxFile%

-

8. timesketchプロファイルの出力

-

Timesketchにインポートできるverboseプロファイル。

-

%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %RuleFile%, %EvtxFile%, %AllFieldInfo%

-

プロファイルの比較

-

以下のベンチマークは、2018年製のマックブックプロ上で7.5GBのEVTXデータに対して実施されました。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
プロファイル処理時間結果のファイルサイズ
minimal16分18秒690 MB
standard16分23秒710 MB
verbose17分990 MB
timesketch-minimal17分1015 MB
all-field-info-verbose16分50秒1.6 GB
super-verbose17分12秒2.1 GB
-

Profile Field Aliases

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
エイリアス名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>フィールド。
%EventID%イベントログの<Event><System><EventID>フィールド。
%Level%YML検知ルールのlevelフィールド。(例:informationallowmediumhighcritical)
%MitreTactics%MITRE ATT&CKの戦術 (例: Initial Access、Lateral Movement等々)
%MitreTags%MITRE ATT&CKの戦術以外の情報。attack.g(グループ)、attack.t(技術)、attack.s(ソフトウェア)の情報を出力する。
%OtherTags%YML検知ルールのtagsフィールドからMitreTacticsMitreTags以外のキーワードを出力する。
%RecordID%<Event><System><EventRecordID>フィールドのイベントレコードID。
%RuleTitle%YML検知ルールのtitleフィールド。
%Details%YML検知ルールのdetailsフィールドから来ていますが、このフィールドはHayabusaルールにしかありません。このフィールドはアラートとイベントに関する追加情報を提供し、ログのフィールドから有用なデータを抽出することができます。イベントキーのマッピングが間違っている場合、もしくはフィールドが存在しない場合で抽出ができなかった箇所はn/a (not available)と記載されます。YML検知ルールにdetailsフィールドが存在しない時のdetailsのメッセージを./rules/config/default_details.txtで設定できます。default_details.txtではProvider NameEventIDdetailsの組み合わせで設定することができます。default_details.txt`やYML検知ルールに対応するルールが記載されていない場合はすべてのフィールド情報を出力します。
%AllFieldInfo%すべてのフィールド情報。
%RuleFile%アラートまたはイベントを生成した検知ルールのファイル名。
%EvtxFile%アラートまたはイベントを起こしたevtxファイルへのパス。
-

これらのエイリアスは、出力プロファイルで使用することができます。また、他のイベントキーアライズを定義し、他のフィールドを出力することもできます。

-

Levelの省略

-

簡潔に出力するためにLevelを以下のように省略し出力しています。

- -

MITRE ATT&CK戦術の省略

-

簡潔に出力するためにMITRE ATT&CKの戦術を以下のように省略しています。 -./config/output_tag.txtの設定ファイルで自由に編集できます。 -検知したデータの戦術を全て出力したい場合は、--all-tagsオプションをつけてください。

- -

Channel情報の省略

-

簡潔に出力するためにChannelの表示を以下のように省略しています。 -./rules/config/channel_abbreviations.txtの設定ファイルで自由に編集できます。

- -

その他のの省略

-

できるだけ簡潔にするために、以下の略語を使用しています:

- -

プログレスバー

-

プログレス・バーは、複数の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ルール

-

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つのディレクトリに分かれています。

- -

ルールはさらにログタイプ(例:Security、Systemなど)によってディレクトリに分けられ、次の形式で名前が付けられます。

- -

現在のルールをご確認いただき、新規作成時のテンプレートとして、また検知ロジックの確認用としてご利用ください。

-

Hayabusa v.s. 変換されたSigmaルール

-

Sigmaルールは、最初にHayabusaルール形式に変換する必要があります。変換のやり方はここで説明されています。 -殆どのルールはSigmaルールと互換性があるので、Sigmaルールのようにその他のSIEM形式に変換できます。 -Hayabusaルールは、Windowsのイベントログ解析専用に設計されており、以下のような利点があります:

-
    -
  1. ログの有用なフィールドのみから抽出された追加情報を表示するための detailsフィールドを追加しています。
  2. -
  3. Hayabusaルールはすべてサンプルログに対してテストされ、検知することが確認されています。 -
    -

    変換処理のバグ、サポートされていない機能、実装の違い(正規表現など)により、一部のSigmaルールは意図したとおりに動作しない可能性があります。

    -
    -
  4. -
  5. Sigmaルール仕様にない集計式(例:|equalsfield)の利用。
  6. -
-

制限事項: 私たちの知る限り、Hayabusa はオープンソースの Windows イベントログ解析ツールの中でSigmaルールを最も多くサポートしていますが、まだサポートされていないルールもあります。

-
    -
  1. Rust正規表現クレートでは機能しない正規表現を使用するルール。
  2. -
  3. Sigmaルール仕様count以外の集計式。
  4. -
  5. |nearを使用するルール。
  6. -
-

検知ルールのチューニング

-

ファイアウォールやIDSと同様に、シグネチャベースのツールは、環境に合わせて調整が必要になるため、特定のルールを永続的または一時的に除外する必要がある場合があります。

-

ルールID(例: 4fe151c2-ecf9-4fae-95ae-b88ec9c2fca6) を ./rules/config/exclude_rules.txtに追加すると、不要なルールや利用できないルールを無視することができます。

-

ルールIDを ./rules/config/noisy_rules.txtに追加して、デフォルトでルールを無視することもできますが、-nまたは --enable-noisy-rulesオプションを指定してルールを使用することもできます。

-

検知レベルのlevelチューニング

-

Hayabusaルール、Sigmaルールはそれぞれの作者が検知した際のリスクレベルを決めています。 -ユーザが独自のリスクレベルに設定するには./rules/config/level_tuning.txtに変換情報を書き、hayabusa-1.6.0-win-x64.exe --level-tuningを実行することでルールファイルが書き換えられます。 -ルールファイルが直接書き換えられることに注意して使用してください。

-

./rules/config/level_tuning.txtの例:

-
id,new_level -00000000-0000-0000-0000-000000000000,informational # sample level tuning line -
-

ルールディレクトリ内でid00000000-0000-0000-0000-000000000000のルールのリスクレベルがinformationalに書き換えられます。

-

イベントIDフィルタリング

-

デフォルトではパフォーマンスを上げるために、検知ルールでイベントIDが定義されていないイベントを無視しています。 -./rules/config/target_event_IDs.txtで定義されたIDがスキャンされます。 -すべてのイベントをスキャンしたい場合は、-D, --deep-scanオプションを使用してください。

-

その他のWindowsイベントログ解析ツールおよび関連リソース

-

「すべてを統治する1つのツール」というものはなく、それぞれにメリットがあるため、これらの他の優れたツールやプロジェクトをチェックして、どれが気に入ったかを確認することをお勧めします。

- -

Windowsイベントログ設定のススメ

-

Windows機での悪性な活動を検知する為には、デフォルトのログ設定を改善することが必要です。 -以下のサイトを閲覧することをおすすめします。:

- -

Sysmon関係のプロジェクト

-

フォレンジックに有用な証拠を作り、高い精度で検知をさせるためには、sysmonをインストールする必要があります。以下のサイトを参考に設定することをおすすめします。:

- -

コミュニティによるドキュメンテーション

-

英語

- -

日本語

- -

貢献

-

どのような形でも構いませんので、ご協力をお願いします。プルリクエスト、ルール作成、evtxログのサンプルなどがベストですが、機能リクエスト、バグの通知なども大歓迎です。

-

少なくとも、私たちのツールを気に入っていただけたなら、Githubで星を付けて、あなたのサポートを表明してください。

-

バグの報告

-

見つけたバグをこちらでご連絡ください。報告されたバグを喜んで修正します!

-

ライセンス

-

HayabusaはGPLv3で公開され、すべてのルールはDetection Rule License (DRL) 1.1で公開されています。

-

Twitter

-

@SecurityYamatoでHayabusa、ルール更新、その他の大和セキュリティツール等々について情報を提供しています。

- - -