Hayabusa は、日本のヤマト セキュリティ グループによって作成されたWindows イベント ログ高速フォレンジック タイムライン ジェネレーターおよび脅威ハンティング ツールです。ハヤブサは日本語で「ハヤブサ」を意味し、ハヤブサが世界で最も足が速く、狩猟が得意で、訓練しやすい動物であることから選ばれました。 Rust で書かれており、可能な限り高速にするためにマルチスレッドをサポートしています。シグマルールをハヤブサルール形式に変換するツールを提供しました。シグマ互換のはやぶさ検出ルールは、可能な限り簡単にカスタマイズおよび拡張できるように、YML で記述されています。 Hayabusa は、ライブ分析のために単一の実行システム上で実行することも、オフライン分析のために単一または複数のシステムからログを収集することによって実行することも、企業全体の脅威ハンティングとインシデント対応のために Velociraptor で Hayabusa アーティファクトを実行することによって実行することもできます。出力は単一の CSV タイムラインに統合され、LibreOffice、Timeline Explorer、Elastic Stack、Timesketch などで簡単に分析できるようになります。
evtx
クレートのより保守されたフォーク。-T
オプション)-H
オプション)-M
複数行出力)computer-metrics
コマンドcomputer-metrics
コマンドの例computer-metrics
スクリーンショットeid-metrics
コマンドeid-metrics
コマンドの例eid-metrics
コマンド構成ファイルeid-metrics
スクリーンショットlogon-summary
コマンドlogon-summary
コマンドの例logon-summary
スクリーンショットpivot-keywords-list
コマンドpivot-keywords-list
コマンドの例pivot-keywords-list
設定ファイルsearch
コマンドsearch
コマンドの例search
csv-timeline
コマンドcsv-timeline
コマンドの例csv-timeline
コマンド構成ファイルjson-timeline
コマンドjson-timeline
コマンドの例と設定ファイルlevel-tuning
コマンドlevel-tuning
コマンドの例level-tuning
設定ファイルlist-profiles
コマンドset-default-profile
コマンドset-default-profile
コマンドの例update-rules
コマンドupdate-rules
コマンドの例minimal
プロファイル出力standard
プロファイル出力verbose
プロファイル出力all-field-info
プロファイルの出力all-field-info-verbose
プロファイル出力super-verbose
プロファイル出力timesketch-minimal
プロファイル出力timesketch-verbose
プロファイル出力Hayabusa には現在 4,000 を超えるシグマ ルールと 170 を超える Hayabusa 組み込み検出ルールがあり、さらにルールが定期的に追加されます。これは、ヴェロキラプトルのハヤブサ アーティファクトを使用して、企業全体のプロアクティブな脅威ハンティングや DFIR (デジタル フォレンジックおよびインシデント対応) に無料で使用できます。これら 2 つのオープンソース ツールを組み合わせることで、環境内に SIEM セットアップが存在しない場合でも、基本的に SIEM を遡及的に再現できます。これを行う方法については、Eric Capuano の Velociraptor ウォークスルーをこちらでご覧ください。
Windows イベント ログの分析は、従来、非常に長くて退屈なプロセスでした。その理由は、Windows イベント ログは 1) 分析が難しいデータ形式であり、2) データの大部分はノイズであり、調査には役に立ちません。 Hayabusa の目標は、有用なデータのみを抽出し、専門的な訓練を受けたアナリストだけでなく、Windows システム管理者であれば誰でも使用できる、できるだけ簡潔で読みやすい形式で表示することです。 Hayabusa は、従来の Windows イベント ログ分析と比較して、アナリストが作業の 80% を 20% の時間で完了できるようにしたいと考えています。
-T
オプション) -H
オプション) -M
複数行出力) ここでは、Excel とタイムライン エクスプローラーで CSV タイムラインを分析する方法を学習できます。
CSV ファイルを Elastic Stack にインポートする方法については、こちらをご覧ください。
CSV ファイルを Timesketch にインポートする方法については、こちらをご覧ください。
ここでは、 jq
を使用して JSON 形式の結果を分析する方法を学習できます。
|equalsfield
や|endswithfield
などの新しい集計機能もサポートしています。0xc0000234
-> ACCOUNT LOCKED
)コンパイルされたバイナリを含む Hayabusa の最新の安定バージョンをダウンロードするか、リリース ページからソース コードをコンパイルしてください。
次のアーキテクチャのバイナリを提供します。
hayabusa-xxx-lin-aarch64-gnu
)hayabusa-xxx-lin-x64-gnu
)hayabusa-xxx-lin-x64-musl
)hayabusa-xxx-mac-aarch64
)hayabusa-xxx-mac-x64
)hayabusa-xxx-win-aarch64.exe
)hayabusa-xxx-win-x64.exe
)hayabusa-xxx-win-x86.exe
)何らかの理由で Linux ARM MUSL バイナリは適切に動作しないため、そのバイナリは提供されていません。これは私たちの管理外ですので、将来的に修正されたら提供する予定です。
v2.18.0 の時点では、単一のファイルで提供される XOR エンコードされたルールと、単一のファイルに結合されたすべての構成ファイル (hayabusa-encoded-rules リポジトリでホストされている) を使用する特別な Windows パッケージが提供されています。名前にlive-response
を含む zip パッケージをダウンロードするだけです。 zip ファイルには、Hayabusa バイナリ、XOR エンコードされたルール ファイル、構成ファイルの 3 つのファイルのみが含まれています。これらのライブ応答パッケージの目的は、クライアント エンドポイントで Hayabusa を実行するときに、Windows Defender などのウイルス対策スキャナーが.yml
ルール ファイルで誤検知をしないようにすることです。また、USN Journal などのフォレンジック成果物が上書きされないように、システムに書き込まれるファイルの量を最小限に抑えたいと考えています。
次のコマンドを使用してリポジトリをgit clone
、ソース コードからバイナリをコンパイルできます。
警告:リポジトリのメイン ブランチは開発目的であるため、まだ正式にリリースされていない新機能にアクセスできる場合がありますが、バグがある可能性があるため、不安定であると考えてください。
git clone https://github.com/Yamato-Security/hayabusa.git --recursive
注: --recursive オプションの使用を忘れた場合、git サブモジュールとして管理される
rules
フォルダーは複製されません。
rules
フォルダーを同期して、 git pull --recurse-submodules
を使用して最新の Hayabusa ルールを取得するか、次のコマンドを使用できます。
hayabusa.exe update-rules
更新に失敗した場合は、 rules
フォルダーの名前を変更して再試行する必要がある場合があります。
注意: 更新すると、
rules
フォルダー内のルールと設定ファイルは、hayabusa-rules リポジトリ内の最新のルールと設定ファイルに置き換えられます。既存のファイルに加えた変更は上書きされるため、更新する前に編集したファイルのバックアップを作成することをお勧めします。level-tuning
を使用してレベル チューニングを実行している場合は、更新のたびにルール ファイルを再調整してください。rules
フォルダー内に新しいルールを追加した場合、更新時にルールが上書きされたり削除されたりすることはありません。
Rust がインストールされている場合は、次のコマンドを使用してソースからコンパイルできます。
注: コンパイルするには、通常、最新バージョンの Rust が必要です。
cargo build --release
最新の不安定バージョンはメイン ブランチから、または最新の安定バージョンはリリース ページからダウンロードできます。
Rust を次のもので定期的に更新してください。
rustup update stable
コンパイルされたバイナリは./target/release
フォルダーに出力されます。
コンパイルする前に、最新の Rust クレートに更新できます。
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
警告: Rust の新しい安定バージョンが存在する場合は必ず
rustup install stable-i686-pc-windows-msvc
を実行してください。rustuprustup update stable
ではクロスコンパイル用のコンパイラーが更新されず、ビルドエラーが発生する可能性があります。
openssl に関するコンパイル エラーが発生した場合は、Homebrew をインストールしてから、次のパッケージをインストールする必要があります。
brew install pkg-config
brew install openssl
openssl に関するコンパイル エラーが発生した場合は、次のパッケージをインストールする必要があります。
Ubuntu ベースのディストリビューション:
sudo apt install libssl-dev
Fedora ベースのディストリビューション:
sudo yum install openssl-devel
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
警告: Rust の新しい安定バージョンが存在する場合は常に
rustup install stable-x86_64-unknown-linux-musl
を実行してくださいrustup update stable
ではクロスコンパイル用のコンパイラが更新されず、ビルドエラーが発生する可能性があります。
MUSL バイナリは./target/x86_64-unknown-linux-musl/release/
ディレクトリに作成されます。 MUSL バイナリは GNU バイナリよりも約 15% 遅いですが、Linux のさまざまなバージョンやディストリビューション間での移植性が高くなります。
hayabusa を実行しようとしたとき、または検出シグネチャにmimikatz
や疑わしい PowerShell コマンドなどのキーワードが含まれるため、 .yml
ルールをダウンロードしたときでも、ウイルス対策製品や EDR 製品からアラートを受け取ることがあります。これらは誤検知であるため、hayabusa の実行を許可するにはセキュリティ製品で除外を構成する必要があります。マルウェアやサプライチェーン攻撃が心配な場合は、hayabusa のソースコードを確認し、バイナリをご自身でコンパイルしてください。
Windows Defender のリアルタイム保護により、特に再起動後の最初の実行時に実行時間が遅くなることがあります。これを回避するには、リアルタイム保護を一時的にオフにするか、hayabusa ランタイム ディレクトリに除外を追加します。 (これらを実行する前に、セキュリティ上のリスクを考慮してください。)
コマンド/PowerShell プロンプトまたは Windows ターミナルで、適切な 32 ビットまたは 64 ビット Windows バイナリを実行するだけです。
Windows で組み込みのコマンドまたは PowerShell プロンプトを使用する場合、ファイルまたはディレクトリ パスにスペースがあると、Hayabusa が .evtx ファイルをロードできなかったというエラーが表示されることがあります。 .evtx ファイルを適切にロードするには、必ず次の手順を実行してください。
まずバイナリを実行可能ファイルにする必要があります。
chmod +x ./hayabusa
次に、Hayabusa ルート ディレクトリから実行します。
./hayabusa
ターミナルまたは iTerm2 から、まずバイナリを実行可能ファイルにする必要があります。
chmod +x ./hayabusa
次に、Hayabusa ルート ディレクトリから実行してみます。
./hayabusa
最新バージョンの macOS を実行しようとすると、次のセキュリティ エラーが発生する場合があります。
「キャンセル」をクリックし、システム環境設定から「セキュリティとプライバシー」を開き、「全般」タブから「許可」をクリックします。
その後、再度実行してみてください。
./hayabusa
以下の警告が表示されますので、「開く」をクリックしてください。
これで、hayabusa を実行できるようになります。
computer-metrics
: コンピューター名に基づいてイベントの数を出力します。eid-metrics
: イベント ID に基づいてイベントの数と割合を出力します。logon-summary
: ログオン イベントの概要を出力します。pivot-keywords-list
: ピボットする疑わしいキーワードのリストを出力します。search
: キーワードまたは正規表現ですべてのイベントを検索しますcsv-timeline
: タイムラインをCSV形式で保存します。json-timeline
: タイムラインを JSON/JSONL 形式で保存します。level-tuning
: アラートのlevel
をカスタム調整します。list-profiles
: 利用可能な出力プロファイルをリストします。set-default-profile
: デフォルトのプロファイルを変更します。update-rules
: ルールを hayabusa-rules GitHub リポジトリの最新ルールに同期します。 help
: このメッセージまたは指定されたサブコマンドのヘルプを出力します。list-contributors
: 貢献者のリストを出力します。computer-metrics
コマンドcomputer-metrics
コマンドを使用すると、
フィールドで定義された各コンピューターに応じて存在するイベントの数を確認できます。元のコンピュータによってイベントを分離する場合、 Computer
フィールドに完全に依存することはできないことに注意してください。 Windows 11 では、イベント ログに保存するときにまったく異なるComputer
名が使用されることがあります。また、Windows 10 ではComputer
名がすべて小文字で記録されることがあります。このコマンドは検出ルールを使用しないため、すべてのイベントを分析します。これは、どのコンピュータに最も多くのログがあるかをすぐに確認するために実行するのに適したコマンドです。この情報を使用すると、タイムラインの作成時に--include-computer
または--exclude-computer
オプションを使用して、コンピュータに応じて複数のタイムラインを作成したり、特定のコンピュータからイベントを除外したりすることで、タイムラインの生成をより効率的に行うことができます。
Usage: computer-metrics [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
Output:
-o, --output Save the results in CSV format (ex: computer-metrics.csv)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
computer-metrics
コマンドの例hayabusa.exe computer-metrics -d ../logs
hayabusa.exe computer-metrics -d ../logs -o computer-metrics.csv
computer-metrics
スクリーンショットeid-metrics
コマンドeid-metrics
コマンドを使用すると、チャネルごとに区切られたイベント ID (
フィールド) の合計数と割合を出力できます。このコマンドは検出ルールを使用しないため、すべてのイベントをスキャンします。
Usage: eid-metrics [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
Output:
-o, --output Save the Metrics in CSV format (ex: metrics.csv)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
eid-metrics
コマンドの例hayabusa.exe eid-metrics -f Security.evtx
hayabusa.exe eid-metrics -d ../logs
hayabusa.exe eid-metrics -f Security.evtx -o eid-metrics.csv
eid-metrics
コマンド構成ファイルイベントのチャネル、イベント ID、およびタイトルはrules/config/channel_eid_info.txt
で定義されます。
例:
Channel,EventID,EventTitle
Microsoft-Windows-Sysmon/Operational,1,Process Creation.
Microsoft-Windows-Sysmon/Operational,2,File Creation Timestamp Changed. (Possible Timestomping)
Microsoft-Windows-Sysmon/Operational,3,Network Connection.
Microsoft-Windows-Sysmon/Operational,4,Sysmon Service State Changed.
eid-metrics
スクリーンショットlogon-summary
コマンドlogon-summary
コマンドを使用すると、ログオン情報の概要 (ログオン ユーザー名、ログオンの成功数と失敗数) を出力できます。 -f
使用すると 1 つの evtx ファイルのログオン情報を表示でき、 -d
オプションを使用すると複数の evtx ファイルのログオン情報を表示できます。
Usage: logon-summary [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-o, --output Save the logon summary to two CSV files (ex: -o logon-summary)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
logon-summary
コマンドの例hayabusa.exe logon-summary -f Security.evtx
hayabusa.exe logon-summary -d ../logs -o logon-summary.csv
logon-summary
スクリーンショットpivot-keywords-list
コマンドpivot-keywords-list
コマンドを使用すると、一意のピボット キーワードのリストを作成し、異常なユーザー、ホスト名、プロセスなどを迅速に特定したり、イベントを関連付けたりできます。
重要: デフォルトでは、hayabusa はすべてのイベント (情報イベントおよびそれ以上のイベント) からの結果を返すため、 pivot-keywords-list
コマンドと-m, --min-level
オプションを組み合わせることを強くお勧めします。たとえば、 -m critical
を使用してcritical
アラートからキーワードのみを作成することから始めて、次に-m high
、 -m medium
などと続けます...結果には、多くの通常のイベントに一致する共通のキーワードが含まれる可能性が高くなります。したがって、結果を手動で確認し、単一のファイル内に一意のキーワードのリストを作成した後、 grep -f keywords.txt timeline.csv
のようなコマンドを使用して、不審なアクティビティの絞り込んだタイムラインを作成できます。
Usage: pivot-keywords-list [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag Do not load rules with specific tags (ex: sysmon)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level Minimum level for rules to load (default: informational)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-o, --output Save pivot words to separate files (ex: PivotKeywords)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
pivot-keywords-list
コマンドの例hayabusa.exe pivot-keywords-list -d ../logs -m critical
keywords-Ip Addresses.txt
、 keywords-Users.txt
などに保存されます): hayabusa.exe pivot-keywords-list -d ../logs -m critical -o keywords`
pivot-keywords-list
設定ファイル./rules/config/pivot_keywords.txt
を編集して、検索するキーワードをカスタマイズできます。このページはデフォルト設定です。
形式はKeywordName.FieldName
です。たとえば、 Users
のリストを作成するとき、 hayabusa はSubjectUserName
、 TargetUserName
、およびUser
フィールドのすべての値をリストします。
search
コマンドsearch
コマンドを使用すると、すべてのイベントをキーワード検索できます。 (はやぶさの検出結果だけではありません。)これは、はやぶさによって検出されなかった事象に何らかの証拠があるかどうかを判断するのに役立ちます。
Usage: hayabusa.exe search <--keywords "" OR --regex ""> [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
Filtering:
-a, --and-logic Search keywords with AND logic (default: OR)
-F, --filter Filter by specific field(s)
-i, --ignore-case Case-insensitive keyword search
-k, --keyword Search by keyword(s)
-r, --regex Search by regular expression
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
Output:
-J, --JSON-output Save the search results in JSON format (ex: -J -o results.json)
-L, --JSONL-output Save the search results in JSONL format (ex: -L -o results.jsonl)
-M, --multiline Output event field information in multiple rows for CSV output
-o, --output Save the search results in CSV format (ex: search.csv)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
search
コマンドの例../hayabusa-sample-evtx
ディレクトリでキーワードmimikatz
を検索します。 hayabusa.exe search -d ../hayabusa-sample-evtx -k "mimikatz"
注: データ内のどこかに
mimikatz
が見つかった場合、キーワードは一致します。完全に一致するわけではありません。
../hayabusa-sample-evtx
ディレクトリでキーワードmimikatz
またはkali
を検索します。 hayabusa.exe search -d ../hayabusa-sample-evtx -k "mimikatz" -k "kali"
../hayabusa-sample-evtx
ディレクトリでキーワードmimikatz
を検索し、大文字と小文字は無視します。 hayabusa.exe search -d ../hayabusa-sample-evtx -k "mimikatz" -i
../hayabusa-sample-evtx
sample-evtx ディレクトリで IP アドレスを検索します。 hayabusa.exe search -d ../hayabusa-sample-evtx -r "(?:[0-9]{1,3}.){3}[0-9]{1,3}"
../hayabusa-sample-evtx
ディレクトリを検索し、 WorkstationName
フィールドがkali
であるすべてのイベントを表示します。 hayabusa.exe search -d ../hayabusa-sample-evtx -r ".*" -F WorkstationName:"kali"
注:
.*
、すべてのイベントで一致する正規表現です。
search
./rules/config/channel_abbreviations.txt
: チャンネル名とその略語のマッピング。
csv-timeline
およびjson-timeline
コマンドでは、スキャン ウィザードがデフォルトで有効になりました。これは、ユーザーがニーズや好みに応じて有効にする検出ルールを簡単に選択できるようにすることを目的としています。ロードする検出ルールのセットは、Sigma プロジェクトの公式リストに基づいています。詳細はこのブログ投稿で説明されています。 -w, --no-wizard
オプションを追加すると、ウィザードを簡単にオフにして従来の方法で Hayabusa を使用できます。
core
ルール セットは、 test
またはstable
、レベルがhigh
またはcritical
のルールを有効にします。これらは信頼性と関連性が高い高品質のルールであり、多くの誤検知は発生しないはずです。ルールのステータスはtest
またはstable
。これは、6 か月以上誤検知が報告されていないことを意味します。ルールは、攻撃者のテクニック、一般的な不審なアクティビティ、または悪意のある動作に一致します。これは--exclude-status deprecated,unsupported,experimental --min-level high
オプションを使用するのと同じです。
core+
ルール セットでは、ステータスがtest
またはstable
、レベルがmedium
以上のルールが有効になります。 medium
ルールでは、特定のアプリケーション、正当なユーザーの動作、または組織のスクリプトが一致する可能性があるため、ほとんどの場合、追加の調整が必要です。これは--exclude-status deprecated,unsupported,experimental --min-level medium
オプションを使用するのと同じです。
core++
ルール セットは、 experimental
、 test
、またはstable
ステータスとmedium
以上のレベルを持つルールを有効にします。これらのルールは最先端のものです。これらは、SigmaHQ プロジェクトで入手可能なベースライン evtx ファイルに対して検証され、複数の検出エンジニアによってレビューされます。それ以外は、最初はほとんどテストされていません。誤検知のより高いしきい値を管理することを犠牲にして、脅威をできるだけ早く検出できるようにしたい場合は、これらを使用します。これは--exclude-status deprecated,unsupported --min-level medium
オプションを使用するのと同じです。
Emerging Threats (ET)
ルール セットは、 detection.emerging_threats
のタグを持つルールを有効にします。これらのルールは特定の脅威をターゲットにしており、まだあまり情報が入手できない現在の脅威に対して特に役立ちます。これらのルールには多くの誤検知があってはなりませんが、時間の経過とともに関連性は低下します。これらのルールが有効になっていない場合は、 --exclude-tag detection.emerging_threats
オプションを使用するのと同じです。従来通りウィザードを使用せずに Hayabusa を実行する場合、これらのルールはデフォルトで含まれます。
Threat Hunting (TH)
ルール セットは、 detection.threat_hunting
のタグを持つルールを有効にします。これらのルールは未知の悪意のあるアクティビティを検出する可能性がありますが、通常は誤検知が多くなります。これらのルールが有効になっていない場合、 --exclude-tag detection.threat_hunting
オプションを使用するのと同じです。従来通りウィザードを使用せずに Hayabusa を実行する場合、これらのルールはデフォルトで含まれます。
Hayabusa v2.16.0 では、 .evtx
ファイルと.yml
ルールをロードするときにチャネルベースのフィルターが有効になります。目的は、必要なものだけをロードすることで、スキャンをできるだけ効率的に行うことです。 1 つのイベント ログに複数のプロバイダーが存在する可能性はありますが、1 つの evtx ファイル内に複数のチャネルが存在することは一般的ではありません。 (これを確認したのは、誰かがサンプル evtx プロジェクト用に 2 つの異なる evtx ファイルを人為的にマージしたときだけです。) まず、指定されたすべての.evtx
ファイルの最初のレコードにあるChannel
フィールドをチェックすることで、これを有利に利用できます。スキャンされる。また、どの.yml
ルールが、ルールのChannel
フィールドで指定されたどのチャネルを使用するかを確認します。これら 2 つのリストでは、 .evtx
ファイル内に実際に存在するチャネルを使用するルールのみをロードします。
したがって、たとえば、ユーザーがSecurity.evtx
スキャンしたい場合、 Channel: Security
を指定するルールのみが使用されます。 Application
ログ内のイベントのみを検索するルールなど、他の検出ルールをロードしても意味がありません。チャネル フィールド (例: Channel: Security
) は、元の Sigma ルール内で明示的に定義されていないことに注意してください。シグマ ルールの場合、チャネル ID フィールドとイベント ID フィールドは、 logsource
の下のservice
とcategory
フィールドを使用して暗黙的に定義されます。 (例: service: security
) hayabusa-rules リポジトリで Sigma ルールをキュレートするとき、 logsource
フィールドを抽象化解除し、チャネルとイベント ID フィールドを明示的に定義します。ここでは、これを行う方法と理由について詳しく説明します。
現在、 Channel
定義されておらず、すべての.evtx
ファイルをスキャンすることを目的とした検出ルールは次の 2 つだけです。
これら 2 つのルールを使用し、ロードされた.evtx
ファイルに対してすべてのルールをスキャンする場合は、 csv-timeline
およびjson-timeline
コマンドに-A, --enable-all-rules
オプションを追加する必要があります。私たちのベンチマークでは、ルール フィルタリングにより、スキャンされるファイルに応じて通常 20% ~ 10 倍の速度向上が得られ、もちろんメモリ使用量も少なくなります。
チャネル フィルタリングは、 .evtx
ファイルをロードするときにも使用されます。たとえば、 Security
のチャネルを持つイベントを検索するルールを指定した場合、 Security
ログからではない.evtx
ファイルをロードしても意味がありません。私たちのベンチマークでは、通常のスキャンでは約 10% の速度向上が得られ、単一ルールでのスキャンでは最大 60% 以上のパフォーマンスの向上が得られます。単一の.evtx
ファイル内で複数のチャネルが使用されていることが確実な場合 (たとえば、誰かが複数の.evtx
ファイルをマージするツールを使用した場合など)、 -a, --scan-all-evtx-files
を使用してこのフィルタリングを無効にします。 csv-timeline
およびjson-timeline
コマンドのオプション。
注: チャネル フィルタリングは
.evtx
ファイルでのみ機能し、-J, --json-input
を使用して JSON ファイルからイベント ログをロードし、-A
または-a
も指定すると、エラーが発生します。
csv-timeline
コマンドcsv-timeline
コマンドは、CSV 形式でイベントのフォレンジック タイムラインを作成します。
Usage: csv-timeline [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-s, --sort-events Sort events before saving the file. (warning: this uses much more memory!)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-r, --rules Specify a custom rule directory or file (default: ./rules)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-category Do not load rules with specified logsource categories (ex: process_creation,pipe_created)
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag Do not load rules with specific tags (ex: sysmon)
--include-category Only load rules with specified logsource categories (ex: process_creation,pipe_created)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level Minimum level for rules to load (default: informational)
-P, --proven-rules Scan with only proven rules for faster speed (./rules/config/proven_rules.txt)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-G, --GeoIP Add GeoIP (ASN, city, country) info to IP addresses
-H, --HTML-report Save Results Summary details to an HTML report (ex: results.html)
-M, --multiline Output event field information in multiple rows
-F, --no-field-data-mapping Disable field data mapping
--no-pwsh-field-extraction Disable field extraction of PowerShell classic logs
-o, --output Save the timeline in CSV format (ex: results.csv)
-p, --profile Specify output profile
-R, --remove-duplicate-data Duplicate field data will be replaced with "DUP"
-X, --remove-duplicate-detections Remove duplicate detections (default: disabled)
Display Settings:
--no-color Disable color output
-N, --no-summary Do not display Results Summary for faster speed
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
-T, --visualize-timeline Output event frequency timeline (terminal needs to support unicode)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
csv-timeline
コマンドの例standard
プロファイルを使用して 1 つの Windows イベント ログ ファイルに対して hayabusa を実行します。 hayabusa.exe csv-timeline -f eventlog.evtx
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -p verbose
super-verbose
プロファイルを使用すると、ファイルの出力サイズが大幅に大きくなります!)。 hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -o results.csv -p super-verbose
注: EID フィルターを有効にすると、テストでは分析が約 10 ~ 15% 高速化されますが、アラートが見逃される可能性があります。
hayabusa.exe csv-timeline -E -d .hayabusa-sample-evtx -o results.csv
-r .rules
内のすべてのルールが実行されます)。 hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusa -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusabuiltin -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusasysmon -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .rulessigma -o results.csv -w
status
がdeprecated
としてマークされているルール) とノイズの多いルール (ルール ID が.rulesconfignoisy_rules.txt
にリストされているルール) を有効にします。注: 最近、非推奨のルールは sigma リポジトリの別のディレクトリに配置されるようになったため、Hayabusa にはデフォルトで含まれなくなりました。したがって、おそらく、非推奨のルールを有効にする必要はありません。
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx --enable-noisy-rules --enable-deprecated-rules -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusabuiltinSecurityLogonLogoffLogon -U -o results.csv -w
hayabusa.exe csv-timeline -l -m low
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -v
読み込みルール:
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_susp_run_folder.yml
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_execution_mssql_xp_cmdshell_stored_procedure.yml
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_susp_squirrel_lolbin.yml
Loaded rule: rules/sigma/builtin/win_alert_mimikatz_keywords.yml
スキャン中のエラー:
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Rdms-UI%4Operational.evtx
Error: Failed to parse record number 58471
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Rdms-UI%4Operational.evtx
Error: Failed to parse record number 58470
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Windows-AppxPackaging%4Operational.evtx
Error: An error occurred while trying to serialize binary xml to output.
hayabusa.exe csv-timeline -d ../hayabusa-sample-evtx --RFC-3339 -o timesketch-import.csv -p timesketch -U
-Q
を追加してください。 無料の GeoLite2 地理位置情報データを使用して、GeoIP (ASN 組織、都市、国) 情報を SrcIP (ソース IP) フィールドと TgtIP (ターゲット IP) フィールドに追加できます。
手順:
.mmdb
ファイルをダウンロードし、ディレクトリに保存します。ファイル名はGeoLite2-ASN.mmdb
、 GeoLite2-City.mmdb
、およびGeoLite2-Country.mmdb
という名前にする必要があります。csv-timeline
またはjson-timeline
コマンドを実行するときは、 -G
オプションの後に MaxMind データベースのあるディレクトリを追加します。 csv-timeline
を使用すると、 SrcASN
、 SrcCity
、 SrcCountry
、 TgtASN
、 TgtCity
、 TgtCountry
の 6 つの列が追加で出力されます。
json-timeline
が使用される場合、同じSrcASN
、 SrcCity
、 SrcCountry
、 TgtASN
、 TgtCity
、 TgtCountry
フィールドがDetails
オブジェクトに追加されますが、これはそれらのフィールドに情報が含まれている場合に限られます。
SrcIP
またはTgtIP
が localhost ( 127.0.0.1
、 ::1
など) の場合、 SrcASN
またはTgtASN
Local
として出力されます。
SrcIP
またはTgtIP
がプライベート IP アドレス ( 10.0.0.0/8
、 fe80::/10
など) の場合、 SrcASN
またはTgtASN
Private
として出力されます。
GeoIP データベースで検索されるソースおよびターゲット IP アドレスを含むフィールド名はrules/config/geoip_field_mapping.yaml
で定義されます。必要に応じて、このリストに追加できます。このファイルには、IPアドレス情報を抽出するイベントを決定するフィルターセクションもあります。
Maxmind Geoipデータベースは2週間ごとに更新されます。これらのデータベースを自動的に更新するために、Maxmind geoipupdate
ツールをここにインストールできます。
macosのステップ:
brew install geoipupdate
/usr/local/etc/GeoIP.conf
Webサイトにログインした後に作成したAccountID
とLicenseKey
を入れます。 EditionIDs
LineがEditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
と言っていることを確認してください。geoipupdate
を実行します。-G /usr/local/var/GeoIP
を追加します。Windowsのステップ:
geoipupdate_4.10.0_windows_amd64.zip
)をダウンロードしてください。ProgramDataMaxMind/GeoIPUpdateGeoIP.conf
:Maxmind Webサイトにログインした後に作成したAccountID
とLicenseKey
を入れます。 EditionIDs
LineがEditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
と言っていることを確認してください。geoipupdate
実行可能ファイルを実行します。 csv-timeline
コマンドConfigファイル./rules/config/channel_abbreviations.txt
:チャンネル名とその略語のマッピング。
./rules/config/default_details.txt
:デフォルトのフィールド情報( %Details%
フィールド)の構成ファイルは、 details:
行がルールで指定されています。これは、プロバイダー名とイベントIDに基づいています。
./rules/config/eventkey_alias.txt
:このファイルには、フィールドと元の長いフィールド名の短い名前エイリアスのマッピングがあります。
例:
InstanceID,Event.UserData.UMDFHostDeviceArrivalBegin.InstanceId
IntegrityLevel,Event.EventData.IntegrityLevel
IpAddress,Event.EventData.IpAddress
ここでフィールドが定義されていない場合、hayabusaはEvent.EventData
の下で自動的にフィールドをチェックします。
./rules/config/exclude_rules.txt
:このファイルには、使用から除外されるルールIDのリストがあります。通常、これは、あるルールが別のルールを置き換えたか、最初にルールを使用できないためです。ファイアウォールやIDSと同様に、署名ベースのツールは、環境に適合するために何らかのチューニングが必要なため、特定のルールを永続的または一時的に除外する必要があります。ルールID(例: 4fe151c2-ecf9-4fae-95ae-b88ec9c2fca6
./rules/config/exclude_rules.txt
追加できます。
./rules/config/noisy_rules.txt
:このファイルは、デフォルトで無効になっているが、 -n, --enable-noisy-rules
オプションを使用してノイズの多いルールを有効にすることで有効にできるルールIDのリストをファイルします。これらのルールは、通常、本質的に騒々しく、または誤検知のために騒々しくなります。
./rules/config/target_event_IDs.txt
フィルターが有効になっている場合、このファイルで指定されたイベントIDのみがスキャンされます。デフォルトでは、Hayabusaはすべてのイベントをスキャンしますが、パフォーマンスを改善したい場合は、 -E, --EID-filter
オプションを使用してください。これにより、通常、10〜25%の速度が向上します。
json-timeline
コマンドjson-timeline
コマンドは、JSONまたはJSONL形式のイベントのフォレンジックタイムラインを作成します。 JSONLへの出力は、JSONよりもファイルサイズが高く、小さいため、結果をElastic Stackなどの別のツールにインポートするだけでいいです。 JSONは、テキストエディターで結果を手動で分析する場合に優れています。 CSV出力は、小さなタイムライン(通常は2GB未満)をLibreofficeやTimeline Explorerなどのツールにインポートするのに適しています。 JSONは、 Details
フィールドを分離して分析するために分離されているため、 jq
などのツールを使用したデータのより詳細な分析(大規模な結果ファイルを含む)に最適です。 (CSV出力では、すべてのイベントログフィールドが1つの大きなDetails
列にあり、データなどのソートを作成します...より困難です。)
Usage: json-timeline [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-s, --sort-events Sort events before saving the file. (warning: this uses much more memory!)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-r, --rules Specify a custom rule directory or file (default: ./rules)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-category Do not load rules with specified logsource categories (ex: process_creation,pipe_created)
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag Do not load rules with specific tags (ex: sysmon)
--include-category Only load rules with specified logsource categories (ex: process_creation,pipe_created)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level Minimum level for rules to load (default: informational)
-P, --proven-rules Scan with only proven rules for faster speed (./rules/config/proven_rules.txt)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-G, --GeoIP Add GeoIP (ASN, city, country) info to IP addresses
-H, --HTML-report Save Results Summary details to an HTML report (ex: results.html)
-L, --JSONL-output Save the timeline in JSONL format (ex: -L -o results.jsonl)
-F, --no-field-data-mapping Disable field data mapping
--no-pwsh-field-extraction Disable field extraction of PowerShell classic logs
-o, --output Save the timeline in JSON format (ex: results.json)
-p, --profile Specify output profile
-R, --remove-duplicate-data Duplicate field data will be replaced with "DUP"
-X, --remove-duplicate-detections Remove duplicate detections (default: disabled)
Display Settings:
--no-color Disable color output
-N, --no-summary Do not display Results Summary for faster speed
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
-T, --visualize-timeline Output event frequency timeline (terminal needs to support unicode)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
json-timeline
コマンドの例と構成ファイルjson-timeline
のオプションと構成ファイルは、 csv-timeline
と同じですが、JSONL形式に出力するための1つの追加オプション-L, --JSONL-output
。
level-tuning
コマンドlevel-tuning
コマンドにより、環境に応じてリスクレベルを引き上げたり減らしたりすることで、ルールのアラートレベルを調整できます。
Usage: level-tuning [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-f, --file Tune alert levels (default: ./rules/config/level_tuning.txt)
level-tuning
コマンドの例hayabusa.exe level-tuning
hayabusa.exe level-tuning -f my_level_tuning.txt
level-tuning
構成ファイルHayabusaとSigmaのルール著者は、ルールを書くときにアラートのリスクレベルを決定します。ただし、実際のリスクレベルは環境に応じて異なる場合があります。ルールのリスクレベルを./rules/config/level_tuning.txt
に追加し、ルールファイルのlevel
行を更新するhayabusa.exe level-tuning
を実行することができます。ルールファイルは直接更新されることに注意してください。
警告:
update-rules
実行すると、元のアラートレベルが変更された設定を上書きするため、レベルを変更する場合はupdate-rules
実行するたびにlevel-tuning
コマンドを実行する必要があります。
./rules/config/level_tuning.txt
サンプルライン:
id,new_level
00000000-0000-0000-0000-000000000000,informational # sample level tuning line
この場合、ルールディレクトリの00000000-0000-0000-0000-000000000000
のid
を使用したルールのリスクレベルは、そのlevel
informational
に書き換えられます。設定する可能性のあるレベルは、 critical
、 high
、 medium
、 low
、 informational
です。
list-profiles
コマンド Usage: list-profiles [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
set-default-profile
コマンド Usage: set-default-profile [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-p, --profile Specify output profile
set-default-profile
コマンドの例minimal
に設定: hayabusa.exe set-default-profile minimal
super-verbose
に設定: hayabusa.exe set-default-profile super-verbose
update-rules
コマンドupdate-rules
コマンドは、 rules
フォルダーをHayabusa Rules GitHubリポジトリと同期し、ルールと構成ファイルを更新します。
Usage: update-rules [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-r, --rules Specify a custom rule directory or file (default: ./rules)
update-rules
コマンドの例通常、これを実行するだけです: hayabusa.exe update-rules
Hayabusaには、 config/profiles.yaml
で使用できる5つの事前定義された出力プロファイルがあります。
minimal
standard
(デフォルト)verbose
all-field-info
all-field-info-verbose
super-verbose
timesketch-minimal
timesketch-verbose
このファイルを編集して、独自のプロファイルを簡単にカスタマイズまたは追加できます。また、 set-default-profile --profile
でデフォルトのプロファイルを簡単に変更することもできます。 list-profiles
コマンドを使用して、利用可能なプロファイルとそのフィールド情報を表示します。
minimal
プロファイル出力%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %Details%
standard
プロファイル出力%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %Details%, %ExtraFieldInfo%
verbose
プロファイル出力%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %Details%, %ExtraFieldInfo%, %RuleFile%, %EvtxFile%
all-field-info
プロファイル出力最小限のdetails
情報を出力する代わりに、 EventData
およびUserData
セクションのすべてのフィールド情報は、元のフィールド名とともに出力されます。
%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%
all-field-info-verbose
プロファイル出力%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%
super-verbose
プロファイル出力%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RuleTitle%, %RuleAuthor%, %RuleModifiedDate%, %Status%, %RecordID%, %Details%, %ExtraFieldInfo%, %MitreTactics%, %MitreTags%, %OtherTags%, %Provider%, %RuleCreationDate%, %RuleFile%, %EvtxFile%
timesketch-minimal
プロファイル出力Timesketchへのインポートと互換性のある形式への出力。
%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %RuleFile%, %EvtxFile%
timesketch-verbose
プロファイル出力%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %ExtraFieldInfo%, %RuleFile%, %EvtxFile%
次のベンチマークは、3GBのEVTXデータと3891ルールが有効になっている2018 Lenovo P51(Xeon 4 Core CPU / 64GB RAM)で実施されました。 (2023/06/01)
プロフィール | 処理時間 | 出力ファイルサイズ | Filesizeの増加 |
---|---|---|---|
最小限の | 8分50秒 | 770 MB | -30% |
標準(デフォルト) | 9分00秒 | 1.1 GB | なし |
冗長な | 9分10秒 | 1.3GB | +20% |
All-Field-INFO | 9分3秒 | 1.2 GB | +10% |
All-field-info-verbose | 9分10秒 | 1.3GB | +20% |
超verbose | 9分12秒 | 1.5GB | +35% |
以下の情報は、組み込みの出力プロファイルで出力できます。
エイリアス名 | Hayabusa出力情報 |
---|---|
%allfieldinfo% | すべてのフィールド情報。 |
%チャネル% | ログの名前。 フィールド。 |
%コンピューター% | フィールド。 |
%詳細% | ただし、YML検出ルールのdetails フィールドは、Hayabusaルールのみがこのフィールドを持っています。このフィールドは、アラートまたはイベントに関する追加の情報を提供し、イベントログのフィールドから有用なデータを抽出できます。たとえば、ユーザー名、コマンドライン情報、プロセス情報など...プレースホルダーが存在しないフィールドを指している場合、または誤ったエイリアスマッピングがある場合、 n/a として出力されます(利用できません)。 details フィールドが指定されていない場合(つまり、sigmaルール)、デフォルトのdetails メッセージ./rules/config/default_details.txt で定義されたフィールドを抽出します。 default_details.txt に出力するProvider Name 、 EventID 、およびdetails メッセージを追加することにより、デフォルトのdetails メッセージを追加できます。 details フィールドがルールまたはdefault_details.txt で定義されていない場合、すべてのフィールドはdetails 列に出力されます。 |
%extrafieldinfo% | %詳細%で出力されなかったフィールド情報を印刷します。 |
%eventID% | フィールド。 |
%evtxfile% | アラートまたはイベントを引き起こしたEVTXファイル名。 |
%レベル% | YML検出ルールのlevel フィールド。 ( informational 、 low 、 medium 、 high 、 critical ) |
%mitretactics% | Miter att&ck戦術(例:初期アクセス、横方向の動きなど...)。 |
%mitretags% | Miter ATT&CKグループID、手法ID、ソフトウェアID。 |
%othertags% | MitreTactics またはMitreTags に含まれていないYML検出ルールのtags フィールドのキーワード。 |
%プロバイダー% | フィールドのName 属性。 |
%RecordID% | フィールドからのイベントレコードID。 |
%ruleauthor% | YML検出ルールのauthor フィールド。 |
%reooleCreationDate% | YML検出ルールのdate フィールド。 |
%rulefile% | アラートまたはイベントを生成した検出ルールのファイル名。 |
%rulemodifieddate% | YML検出ルールのmodified フィールド。 |
%Ruletitle% | YML検出ルールのtitle フィールド。 |
%状態% | YML検出ルールのstatus フィールド。 |
%タイムスタンプ% | デフォルトはYYYY-MM-DD HH:mm:ss.sss +hh:mm 形式です。 フィールド。デフォルトのタイムゾーンはローカルタイムゾーンですが、 --UTC オプションを使用してタイムゾーンをUTCに変更できます。 |
必要な場合は、これらの追加エイリアスを出力プロファイルに追加することもできます。
エイリアス名 | Hayabusa出力情報 |
---|---|
%renderedMessage% | WEC転送ログの フィールド。 |
%rileid% | YML検出ルールのid フィールド。 |
注:これらは組み込みのプロファイルに含まれていないため、 config/default_profile.yaml
ファイルを手動で編集し、次の行を追加する必要があります。
Message: "%RenderedMessage%"
RuleID: "%RuleID%"
また、イベントキーエイリアスを定義して、他のフィールドを出力することもできます。
スペースを節約するために、アラートlevel
表示するときに次の略語を使用します。
crit
: critical
high
: high
med
: medium
low
: low
info
: informational
スペースを節約するために、Miter ATT&CK TACTICタグを表示するときに、次の略語を使用します。これらの略語を./config/mitre_tactics.txt
構成ファイルで自由に編集できます。
Recon
:偵察ResDev
:リソース開発InitAccess
:初期アクセスExec
:実行Persis
:持続性PrivEsc
:特権エスカレーションEvas
:防衛回避CredAccess
:資格情報アクセスDisc
:発見LatMov
:横方向の動きCollect
:コレクションC2
:コマンドとコントロールExfil
:exfltrationImpact
:影響スペースを節約するために、チャネルを表示するときに次の略語を使用します。これらの略語を./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
次の略語は、出力をできるだけ簡潔にするために、ルールで使用されます。
Acct
> accountAddr
>アドレスAuth
>認証Cli
>クライアントChan
- >チャンネルCmd
>コマンドCnt
> countComp
>コンピューターConn
>接続/接続Creds
- >資格情報Crit
- >クリティカルDisconn
- >切断/切断Dir
>ディレクトリDrv
>ドライバーDst
>宛先EID
>イベントIDErr
>エラーExec
> executionFW
>ファイアウォールGrp
>グループImg
>画像Inj
>噴射Krb
> KerberosLID
- >ログオンIDMed
> MediumNet
- >ネットワークObj
>オブジェクトOp
>操作/操作Proto
> protocolPW
>パスワードReconn
> reconnectionReq
>リクエストRsp
>応答Sess
>セッションSig
>署名Susp
- >疑わしいSrc
>ソースSvc
>サービスSvr
>サーバーTemp
- >一時的Term
- >終端/終了Tkt
>チケットTgt
>ターゲットUnkwn
>不明Usr
>ユーザーPerm
> permanmentPkg
>パッケージPriv
> privilegeProc
>プロセスPID
>プロセスIDPGUID
> ProcessGUID(グローバル一意のID)Ver
>バージョンProgress Barは、複数のEVTXファイルでのみ動作します。分析が終了したEVTXファイルの数とパーセントをリアルタイムで表示します。
アラートは、アラートlevel
に基づいて色で出力されます。 level,(RGB 6-digit ColorHex)
の./config/level_color.txt
の構成ファイルのデフォルトの色を変更できます。色の出力を無効にする場合は、 --no-color
オプションを使用できます。
合計イベント、ヒットのあるイベントの数、データ削減メトリック、合計および一意の検出、最も検出された日付、検出を備えたトップコンピューター、およびスキャンごとにトップアラートが表示されます。
-T, --visualize-timeline
オプションを追加すると、イベント周波数タイムライン機能には、検出されたイベントのスパークライン周波数タイムラインが表示されます。注:5つ以上のイベントが必要です。また、文字はデフォルトのコマンドプロンプトまたはPowerShellプロンプトで正しくレンダリングされないため、Windowsターミナル、ITERM2などのターミナルを使用してください...
Hayabusa検出ルールは、SigmaのようなYML形式で記述されており、 rules
フォルダーにあります。ルールはhttps://github.com/yamato-security/hayabusa-rulesでホストされているため、メインのHayabusaリポジトリの代わりに問題を送信してルールのリクエストをコープアップしてください。
ルール形式とルールの作成方法について理解するには、Hayabusa-Rule Repository ReadMeをお読みください。
Hayabusa-Rulesリポジトリのすべてのルールは、 rules
フォルダーに配置する必要があります。 informational
レベルのルールはevents
と見なされますが、 low
のlevel
を持つものはすべてalerts
と見なされます。
Hayabusaルールディレクトリ構造は、2つのディレクトリに分けられます。
builtin
:Windows内蔵機能によって生成できるログ。sysmon
:Sysmonによって生成されるログ。ルールは、ログタイプ(例:セキュリティ、システムなど)によってディレクトリにさらに分離され、次の形式で名前が付けられます。
新しいものを作成したり、検出ロジックをチェックするために、テンプレートとして使用する現在のルールを確認してください。
Hayabusaは、 logsource
フィールドを内部で処理することを除いて、Sigmaルールをネイティブにサポートしています。誤検知を減らすために、ここで説明されているコンバーターを介してシグマルールを実行する必要があります。これにより、適切なChannel
とEventID
が追加され、 process_creation
などの特定のカテゴリのフィールドマッピングが実行されます。
ほぼすべてのHayabusaルールはSigma形式と互換性があるため、Sigmaルールと同じように使用して他のSIEM形式に変換できます。 Hayabusaルールは、Windowsイベントログ分析のためだけに設計されており、次の利点があります。
details
フィールド。|equalsfield
や|endswithfield
など、Sigmaには見つかりません。私たちの知る限り、Hayabusaは、オープンソースWindowsイベントログ分析ツールからSigmaルールの最大のネイティブサポートを提供します。
Windowsマシンで悪意のあるアクティビティを適切に検出するには、デフォルトのログ設定を改善する必要があります。 https://github.com/yamato-security/enablewindowslogsettingsで適切な設定を自動的に有効にするために、ログ設定を有効にする必要があるものを文書化する別のプロジェクトを作成しました。
また、ガイダンスのために次のサイトをお勧めします。
最もフォレンジックの証拠を作成し、精度が最も高いことを検出するには、Sysmonをインストールする必要があります。次のサイトと構成ファイルをお勧めします。
あらゆる形の貢献が大好きです。プル要求、ルール作成、サンプルEVTXログは最良ですが、機能リクエストはバグなどを通知することも大歓迎です。
少なくとも、あなたが私たちのツールが好きなら、GitHubでスターを教えて、あなたのサポートを示してください!
ここにあるバグを提出してください。このプロジェクトは現在積極的に維持されており、報告されたバグを修正して喜んでいます。
Hayabusaルールで問題(誤検知、バグなど)が見つかった場合は、こちらのHayabusa-Rule Githubの問題ページに報告してください。
Sigmaルールで問題(誤検知、バグなど)が見つかった場合は、上流のSigmahq Githubの問題ページに報告してください。
HayabusaはAgplv3の下でリリースされ、すべてのルールは検出ルールライセンス(DRL)1.1に基づいてリリースされます。
Hayabusaは、https://www.maxmind.comから入手可能なMaxmindが作成したGeolite2データを使用しています。
@securityyamatoでTwitterで私たちをフォローすることにより、Hayabusa、ルールの更新、その他のヤマトセキュリティツールなどに関する最新のニュースを受け取ることができます。