diff --git a/README-2.6.0-English.pdf b/README-2.6.0-English.pdf deleted file mode 100644 index e1da0c65e..000000000 Binary files a/README-2.6.0-English.pdf and /dev/null differ diff --git a/README-2.6.0-Japanese.pdf b/README-2.6.0-Japanese.pdf deleted file mode 100644 index 4f926b920..000000000 Binary files a/README-2.6.0-Japanese.pdf and /dev/null differ diff --git a/README-Japanese.md b/README-Japanese.md index 1aaadfd17..4ec73ead7 100644 --- a/README-Japanese.md +++ b/README-Japanese.md @@ -76,11 +76,13 @@ Hayabusaは、日本の[Yamato Security](https://yamatosecurity.connpass.com/) - [汎用コマンド:](#汎用コマンド) - [コマンド使用方法](#コマンド使用方法) - [分析コマンド](#分析コマンド-1) + - [`computer-metrics`コマンド](#computer-metricsコマンド) + - [`computer-metrics`コマンドの使用例](#computer-metricsコマンドの使用例) + - [`eid-metrics`コマンド](#eid-metricsコマンド) + - [`eid-metrics`コマンドの使用例](#eid-metricsコマンドの使用例) + - [`eid-metrics`コマンドの設定ファイル](#eid-metricsコマンドの設定ファイル) - [`logon-summary`コマンド](#logon-summaryコマンド) - [`logon-summary`コマンドの使用例](#logon-summaryコマンドの使用例) - - [`metrics`コマンド](#metricsコマンド) - - [`metrics`コマンドの使用例](#metricsコマンドの使用例) - - [`metrics`コマンドの設定ファイル](#metricsコマンドの設定ファイル) - [`pivot-keywords-list`コマンド](#pivot-keywords-listコマンド) - [`pivot-keywords-list`コマンドの使用例](#pivot-keywords-listコマンドの使用例) - [`pivot-keywords-list`の設定ファイル](#pivot-keywords-listの設定ファイル) @@ -101,6 +103,7 @@ Hayabusaは、日本の[Yamato Security](https://yamatosecurity.connpass.com/) - [`level-tuning`の設定ファイル](#level-tuningの設定ファイル) - [`list-profiles`コマンド](#list-profilesコマンド) - [`set-default-profile`コマンド](#set-default-profileコマンド) + - [`set-default-profile`コマンドの使用例](#set-default-profileコマンドの使用例) - [`update-rules`コマンド](#update-rulesコマンド) - [`update-rules`コマンドの使用例](#update-rulesコマンドの使用例) - [タイムライン出力](#タイムライン出力) @@ -114,7 +117,8 @@ Hayabusaは、日本の[Yamato Security](https://yamatosecurity.connpass.com/) - [7. `timesketch-minimal`プロファイルの出力](#7-timesketch-minimalプロファイルの出力) - [8. `timesketch-verbose`プロファイルの出力](#8-timesketch-verboseプロファイルの出力) - [プロファイルの比較](#プロファイルの比較) - - [Profile Field Aliases](#profile-field-aliases) + - [プロファイルのフィールドエイリアス](#プロファイルのフィールドエイリアス) + - [その他のプロファイルのフィールドエイリアス](#その他のプロファイルのフィールドエイリアス) - [Levelの省略](#levelの省略) - [MITRE ATT\&CK戦術の省略](#mitre-attck戦術の省略) - [Channel情報の省略](#channel情報の省略) @@ -140,7 +144,7 @@ Hayabusaは、日本の[Yamato Security](https://yamatosecurity.connpass.com/) ### スレット(脅威)ハンティングと企業向けの広範囲なDFIR -Hayabusaには現在、3250以上のSigmaルールと約150のHayabusa検知ルールがあり、定期的にルールが追加されています。 +Hayabusaには現在、2500以上のSigmaルールと150以上のHayabusa検知ルールがあり、定期的にルールが追加されています。 [Velociraptor](https://docs.velociraptor.app/)の[Hayabusa artifact](https://docs.velociraptor.app/exchange/artifacts/pages/windows.eventlogs.hayabusa/)を用いることで企業向けの広範囲なスレットハンティングだけでなくDFIR(デジタルフォレンジックとインシデントレスポンス)にも無料で利用することが可能です。 この2つのオープンソースを組み合わせることで、SIEMが設定されていない環境でも実質的に遡及してSIEMを再現することができます。 具体的な方法は[Eric Capuano](https://twitter.com/eric_capuano)の[こちら](https://www.youtube.com/watch?v=Q1IoGX--814)の動画で学ぶことができます。 @@ -226,6 +230,7 @@ JSON形式の結果を`jq`で解析する方法については、[こちら](/do * 読みやすい/作成/編集可能なYMLベースのHayabusaルールで作成されたIoCシグネチャに基づくスレット。 * SigmaルールをHayabusaルールに変換するためのSigmaルールのサポートがされています。 * 現在、他の類似ツールに比べ最も多くのSigmaルールをサポートしており、カウントルール、新しい機能の`|equalsfield`や`|endswithfield`等にも対応しています。 +* コンピュータ名の統計。(イベントの多い特定のコンピュータをフィルタリングするのに便利です。) * イベントログの統計。(どのような種類のイベントがあるのかを把握し、ログ設定のチューニングに有効です。) * 不良ルールやノイズの多いルールを除外するルールチューニング設定が可能です。 * MITRE ATT&CKとのマッピング (CSVの出力ファイルのみ)。 @@ -240,6 +245,7 @@ JSON形式の結果を`jq`で解析する方法については、[こちら](/do * ログフィールドの正規化 * IPアドレスにGeoIP(ASN、都市、国)情報を付加することによるログエンリッチメント。 * キーワードや正規表現で全イベントの検索。 +* フィールドデータのマッピング (例: `0xc0000234` -> `ACCOUNT LOCKED`) # ダウンロード @@ -424,8 +430,9 @@ macOSの環境設定から「セキュリティとプライバシー」を開き # コマンド一覧 ## 分析コマンド: +* `computer-metrics`: コンピュータ名に基づくイベントの合計を出力する。 +* `eid-metrics`: イベントIDに基づくイベントの合計と割合の集計を出力する。 * `logon-summary`: ログオンイベントのサマリを出力する。 -* `metrics`: イベントIDに基づくイベントの合計と割合の集計を出力する。 * `pivot-keywords-list`: ピボットする不審なキーワードのリストを作成する。 * `search`: キーワードや正規表現で全イベントの検索。 @@ -441,18 +448,16 @@ macOSの環境設定から「セキュリティとプライバシー」を開き * `help`: このメッセージまたは指定されたコマンドのヘルプを表示する。 * `list-contributors`: コントリビュータ一覧の表示 - # コマンド使用方法 ## 分析コマンド -### `logon-summary`コマンド +### `computer-metrics`コマンド -`logon-summary`コマンドを使うことでログオン情報の要約(ユーザ名、ログイン成功数、ログイン失敗数)の画面出力ができます。 -単体のevtxファイルを解析したい場合は`-f`オプションを利用してください。複数のevtxファイルを対象としたい場合は`-d`オプションを合わせて使うことでevtxファイルごとのログイン情報の要約を出力できます。 +`computer-metrics`コマンドを使用すると、イベントIDの総数や割合をチャンネルごとに分けて表示することができます。 ``` -Usage: logon-summary [OPTIONS] +Usage: computer-metrics [OPTIONS] Input: -d, --directory .evtxファイルを持つディレクトリのパス @@ -461,32 +466,33 @@ Input: -J, --JSON-input .evtxファイルの代わりにJSON形式のログファイル(.jsonまたは.jsonl)をスキャンする Output: - -o, --output ログオンサマリをCSV形式で保存する (例: logon-summary.csv) + -o, --output イベントIDに基づくイベントの合計と割合の集計を出力する (例: computer-metrics.csv) Display Settings: - --no-color カラーで出力しない - -q, --quiet Quietモード: 起動バナーを表示しない - -v, --verbose 詳細な情報を出力する + --no-color カラーで出力しない + -q, --quiet Quietモード: 起動バナーを表示しない + -v, --verbose 詳細な情報を出力する General Options: -C, --clobber 結果ファイルを上書きする -Q, --quiet-errors Quiet errorsモード: エラーログを保存しない -c, --rules-config ルールフォルダのコンフィグディレクトリ (デフォルト: ./rules/config) - --target-file-ext evtx以外の拡張子を解析対象に追加する (例1: evtx_data 例2:evtx1,evtx2) + --target-file-ext evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2: evtx1,evtx2) -t, --threads スレッド数 (デフォルト: パフォーマンスに最適な数値) ``` -#### `logon-summary`コマンドの使用例 +#### `computer-metrics`コマンドの使用例 + +* ディレクトリに対してイベントIDの統計情報を出力する: `hayabusa.exe computer-metrics -d ../logs` +* 結果をCSVファイルに保存する: `hayabusa.exe computer-metrics -d ../logs -o computer-metrics.csv` -* ログオンサマリの出力: `hayabusa.exe logon-summary -f Security.evtx` -* ログオンサマリ結果を保存する: `hayabusa.exe logon-summary -d ../logs -o logon-summary.csv` -### `metrics`コマンド +### `eid-metrics`コマンド -`metrics`コマンドを使用すると、イベントIDの総数や割合をチャンネルごとに分けて表示することができます。 +`eid-metrics`コマンドを使用すると、イベントIDの総数や割合をチャンネルごとに分けて表示することができます。 ``` -Usage: metrics [OPTIONS] +Usage: eid-metrics [OPTIONS] Input: -d, --directory .evtxファイルを持つディレクトリのパス @@ -495,7 +501,7 @@ Input: -J, --JSON-input .evtxファイルの代わりにJSON形式のログファイル(.jsonまたは.jsonl)をスキャンする Output: - -o, --output イベントIDに基づくイベントの合計と割合の集計を出力する (例: metrics.csv) + -o, --output イベントIDに基づくイベントの合計と割合の集計を出力する (例: eid-metrics.csv) Display Settings: --no-color カラーで出力しない @@ -506,19 +512,30 @@ General Options: -C, --clobber 結果ファイルを上書きする -Q, --quiet-errors Quiet errorsモード: エラーログを保存しない -c, --rules-config ルールフォルダのコンフィグディレクトリ (デフォルト: ./rules/config) - --target-file-ext evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2: evtx1,evtx2) + --target-file-ext evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2: evtx1,evtx2) -t, --threads スレッド数 (デフォルト: パフォーマンスに最適な数値) -``` -#### `metrics`コマンドの使用例 +Filtering: + --exclude-computer 特定のコンピュータ名をスキャンしない (例: ComputerA) (例: ComputerA,ComputerB) + --include-computer 特定のコンピュータ名のみをスキャンする (例: ComputerA) (例: ComputerA,ComputerB) -* 一つのファイルに対してイベントIDの統計情報を出力する: `hayabusa.exe metrics -f Security.evtx` +Time Format: + --European-time ヨーロッパ形式で日付と時刻を出力する (例: 22-02-2022 22:00:00.123 +02:00) + --ISO-8601 ISO-8601形式で日付と時刻を出力する (例: 2022-02-22T10:10:10.1234567Z) (UTC時刻) + --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形式で日付と時刻を出力する (デフォルト: 現地時間) +``` -* ディレクトリに対してイベントIDの統計情報を出力する: `hayabusa.exe metrics -d ../logs` +#### `eid-metrics`コマンドの使用例 -* 結果をCSVファイルに保存する: `hayabusa.exe metrics -f Security.evtx -o metrics.csv` +* 一つのファイルに対してイベントIDの統計情報を出力する: `hayabusa.exe eid-metrics -f Security.evtx` +* ディレクトリに対してイベントIDの統計情報を出力する: `hayabusa.exe eid-metrics -d ../logs` +* 結果をCSVファイルに保存する: `hayabusa.exe eid-metrics -f Security.evtx -o eid-metrics.csv` -#### `metrics`コマンドの設定ファイル +#### `eid-metrics`コマンドの設定ファイル チャンネル名、イベントID、イベントのタイトルは、`rules/config/channel_eid_info.txt`で定義されています。 @@ -531,6 +548,55 @@ Microsoft-Windows-Sysmon/Operational,3,Network Connection. Microsoft-Windows-Sysmon/Operational,4,Sysmon Service State Changed. ``` +### `logon-summary`コマンド + +`logon-summary`コマンドを使うことでログオン情報の要約(ユーザ名、ログイン成功数、ログイン失敗数)の画面出力ができます。 +単体のevtxファイルを解析したい場合は`-f`オプションを利用してください。複数のevtxファイルを対象としたい場合は`-d`オプションを合わせて使うことでevtxファイルごとのログイン情報の要約を出力できます。 + +``` +Usage: logon-summary [OPTIONS] + +Input: + -d, --directory .evtxファイルを持つディレクトリのパス + -f, --file 1つの.evtxファイルに対して解析を行う + -l, --live-analysis ローカル端末のC:\Windows\System32\winevt\Logsフォルダを解析する + -J, --JSON-input .evtxファイルの代わりにJSON形式のログファイル(.jsonまたは.jsonl)をスキャンする + +Output: + -o, --output ログオンサマリをCSV形式で保存する (例: logon-summary.csv) + +Display Settings: + --no-color カラーで出力しない + -q, --quiet Quietモード: 起動バナーを表示しない + -v, --verbose 詳細な情報を出力する + +General Options: + -C, --clobber 結果ファイルを上書きする + -Q, --quiet-errors Quiet errorsモード: エラーログを保存しない + -c, --rules-config ルールフォルダのコンフィグディレクトリ (デフォルト: ./rules/config) + --target-file-ext evtx以外の拡張子を解析対象に追加する (例1: evtx_data 例2:evtx1,evtx2) + -t, --threads スレッド数 (デフォルト: パフォーマンスに最適な数値) + +Filtering: + --exclude-computer 特定のコンピュータ名をスキャンしない (例: ComputerA) (例: ComputerA,ComputerB) + --include-computer 特定のコンピュータ名のみをスキャンする (例: ComputerA) (例: ComputerA,ComputerB) + +Time Format: + --European-time ヨーロッパ形式で日付と時刻を出力する (例: 22-02-2022 22:00:00.123 +02:00) + --ISO-8601 ISO-8601形式で日付と時刻を出力する (例: 2022-02-22T10:10:10.1234567Z) (UTC時刻) + --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形式で日付と時刻を出力する (デフォルト: 現地時間) +``` + +#### `logon-summary`コマンドの使用例 + +* ログオンサマリの出力: `hayabusa.exe logon-summary -f Security.evtx` +* ログオンサマリ結果を保存する: `hayabusa.exe logon-summary -d ../logs -o logon-summary.csv` + + ### `pivot-keywords-list`コマンド `pivot-keywords-list`コマンドを使用すると、異常なユーザ、ホスト名、プロセスなどを迅速に特定し、イベントを関連付けるための固有のピボットキーワードのリストを作成することができます。 @@ -557,25 +623,31 @@ Display Settings: -v, --verbose 詳細な情報を出力する Filtering: - -E, --EID-filter 速度を上げるため主なEIDだけスキャンする (コンフィグファイル: ./rules/config/target_event_IDs.txt) - -D, --enable-deprecated-rules ステータスがdeprecatedのルールを有効にする - -n, --enable-noisy-rules Noisyルールを有効にする - -u, --enable-unsupported-rules ステータスがunsupportedのルールを有効にする - -e, --exact-level 特定のレベルだけスキャンする (informational, low, medium, high, critical) - --exclude-status 読み込み対象外とするルール内でのステータス (ex: experimental) (ex: stable,test) - -m, --min-level 結果出力をするルールの最低レベル (デフォルト: informational) - --timeline-end 解析対象とするイベントログの終了時刻 (例: "2022-02-22 23:59:59 +09:00") - --timeline-start 解析対象とするイベントログの開始時刻 (例: "2020-02-22 00:00:00 +09:00") + -E, --EID-filter 速度を上げるため主なEIDだけスキャンする (コンフィグファイル: ./rules/config/target_event_IDs.txt) + -D, --enable-deprecated-rules ステータスがdeprecatedのルールを有効にする + -n, --enable-noisy-rules Noisyルールを有効にする + -u, --enable-unsupported-rules ステータスがunsupportedのルールを有効にする + -e, --exact-level 特定のレベルだけスキャンする (informational, low, medium, high, critical) + --exclude-computer 特定のコンピュータ名をスキャンしない (例: ComputerA) (例: ComputerA,ComputerB) + --exclude-eid 高速化のために特定のEIDをスキャンしない (例: 1) (例: 1,4688) + --exclude-status 読み込み対象外とするルール内でのステータス (例1: experimental) (例2: stable,test) + --include-computer 特定のコンピュータ名のみをスキャンする (例: ComputerA) (例: ComputerA,ComputerB) + --include-eid 指定したEIDのみをスキャンして高速化する (例 1) (例: 1,4688) + -m, --min-level 結果出力をするルールの最低レベル (デフォルト: informational) + --timeline-end 解析対象とするイベントログの終了時刻 (例: "2022-02-22 23:59:59 +09:00") + --timeline-start 解析対象とするイベントログの開始時刻 (例: "2020-02-22 00:00:00 +09:00") General Options: + -C, --clobber 結果ファイルを上書きする -Q, --quiet-errors Quiet errorsモード: エラーログを保存しない -c, --rules-config ルールフォルダのコンフィグディレクトリ (デフォルト: ./rules/config) + --target-file-ext evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2: evtx1,evtx2) -t, --threads スレッド数 (デフォルト: パフォーマンスに最適な数値) - --target-file-ext evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2: evtx1,evtx2) ``` #### `pivot-keywords-list`コマンドの使用例 +* ピボットキーワードを画面に出力します: `hayabusa.exe pivot-keywords-list -d ../logs -m critical` * 重要なアラートからピボットキーワードのリストを作成し、その結果を保存します。(結果は、`keywords-Ip Addresses.txt`、`keywords-Users.txt`等に保存されます): ``` @@ -610,12 +682,14 @@ Input: -l, --live-analysis ローカル端末のC:\Windows\System32\winevt\Logsフォルダを解析する Filtering: - -F, --filter 特定のフィールドでフィルタする - -i, --ignore-case 大文字と小文字を区別しない - -k, --keywords キーワードでの検索 - -r, --regex 正規表現での検索 + -F, --filter 特定のフィールドでフィルタする + -i, --ignore-case 大文字と小文字を区別しない + -k, --keywords キーワードでの検索 + -r, --regex 正規表現での検索 Output: + -J, --JSON-output JSON形式で検索結果を保存する (例: -J -o results.json) + -L, --JSONL-output JSONL形式で検索結果を保存 (例: -L -o results.jsonl) -M, --multiline イベントフィールド情報を複数の行に出力する -o, --output ログオンサマリをCSV形式で保存する (例: search.csv) @@ -623,7 +697,7 @@ General Options: -C, --clobber 結果ファイルを上書きする -Q, --quiet-errors Quiet errorsモード: エラーログを保存しない -c, --rules-config ルールフォルダのコンフィグディレクトリ (デフォルト: ./rules/config) - --target-file-ext evtx以外の拡張子を解析対象に追加する (例1: evtx_data 例2:evtx1,evtx2) + --target-file-ext evtx以外の拡張子を解析対象に追加する (例1: evtx_data 例2:evtx1,evtx2) -t, --threads スレッド数 (デフォルト: パフォーマンスに最適な数値) ``` @@ -667,6 +741,7 @@ hayabusa.exe search -d ../hayabusa-sample-evtx -r ".*" -F WorkstationName:"kali" `./rules/config/channel_abbreviations.txt`: チャンネル名とその略称のマッピング。 + ## DFIRタイムラインコマンド ### `csv-timeline`コマンド @@ -686,8 +761,10 @@ Output: -G, --GeoIP IPアドレスのGeoIP(ASN、都市、国)情報を追加する -H, --HTML-report HTML形式で詳細な結果を出力する (例: results.html) -M, --multiline イベントフィールド情報を複数の行に出力する + -F, --no-field-data-mapping フィールドデータのマッピングを無効にする -o, --output タイムラインを保存する (例: results.csv) -p, --profile 利用する出力プロファイル名を指定する + -R, --remove-duplicate-data 重複したフィールドデータは「DUP」に置き換えられる (ファイルサイズが約10〜15%削減される) Display Settings: --no-color カラーで出力しない @@ -697,27 +774,36 @@ Display Settings: -T, --visualize-timeline 検知頻度タイムラインを出力する(ターミナルはUnicodeに対応する必要がある) Filtering: - -E, --EID-filter 速度を上げるため主なEIDだけスキャンする (コンフィグファイル: ./rules/config/target_event_IDs.txt) - -D, --enable-deprecated-rules ステータスがdeprecatedのルールを有効にする - -n, --enable-noisy-rules Noisyルールを有効にする - -u, --enable-unsupported-rules ステータスがunsupportedのルールを有効にする - -e, --exact-level 特定のレベルだけスキャンする (informational, low, medium, high, critical) - --exclude-status 読み込み対象外とするルール内でのステータス (ex: experimental) (ex: stable,test) - -m, --min-level 結果出力をするルールの最低レベル (デフォルト: informational) - --timeline-end 解析対象とするイベントログの終了時刻 (例: "2022-02-22 23:59:59 +09:00") - --timeline-start 解析対象とするイベントログの開始時刻 (例: "2020-02-22 00:00:00 +09:00") + -E, --EID-filter 速度を上げるため主なEIDだけスキャンする (コンフィグファイル: ./rules/config/target_event_IDs.txt) + -D, --enable-deprecated-rules ステータスがdeprecatedのルールを有効にする + -n, --enable-noisy-rules Noisyルールを有効にする + -u, --enable-unsupported-rules ステータスがunsupportedのルールを有効にする + -e, --exact-level 特定のレベルだけスキャンする (informational, low, medium, high, critical) + --exclude-category 特定のlogsourceカテゴリを持つルールをロードしない (例: process_creation,pipe_created) + --exclude-computer 特定のコンピュータ名をスキャンしない (例: ComputerA) (例: ComputerA,ComputerB) + --exclude-eid 高速化のために特定のEIDをスキャンしない (例: 1) (例: 1,4688) + --exclude-status 読み込み対象外とするルール内でのステータス (例1: experimental) (例2: stable,test) + --exclude-tag 特定のタグを持つルールをロードしない (例: sysmon) + --include-category 特定のlogsourceカテゴリを持つルールのみをロードする (例: process_creation,pipe_created) + --include-computer 特定のコンピュータ名のみをスキャンする (例: ComputerA) (例: ComputerA,ComputerB) + --include-eid 指定したEIDのみをスキャンして高速化する (例: 1) (例: 1,4688) + --include-tag 特定のタグを持つルールのみをロードする (例1: attack.execution,attack.discovery) (例2: wmi) + -m, --min-level 結果出力をするルールの最低レベル (デフォルト: informational) + -P, --proven-rules 実績のあるルールだけでスキャンし、高速化する (./rules/config/proven_rules.txt) + --timeline-end 解析対象とするイベントログの終了時刻 (例: "2022-02-22 23:59:59 +09:00") + --timeline-start 解析対象とするイベントログの開始時刻 (例: "2020-02-22 00:00:00 +09:00") General Options: -C, --clobber 結果ファイルを上書きする -Q, --quiet-errors Quiet errorsモード: エラーログを保存しない -r, --rules ルールファイルまたはルールファイルを持つディレクトリ (デフォルト: ./rules) -c, --rules-config ルールフォルダのコンフィグディレクトリ (デフォルト: ./rules/config) - --target-file-ext evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2:evtx1,evtx2) + --target-file-ext evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2: evtx1,evtx2) -t, --threads スレッド数 (デフォルト: パフォーマンスに最適な数値) Time Format: --European-time ヨーロッパ形式で日付と時刻を出力する (例: 22-02-2022 22:00:00.123 +02:00) - --ISO-8601 ISO-8601形式で日付と時刻を出力する (ex: 2022-02-22T10:10:10.1234567Z) (いつもUTC) + --ISO-8601 ISO-8601形式で日付と時刻を出力する (例: 2022-02-22T10:10:10.1234567Z) (UTC時刻) --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) @@ -896,6 +982,7 @@ IpAddress,Event.EventData.IpAddress デフォルトでは、Hayabusaはすべてのイベントをスキャンしますが、パフォーマンスを向上させたい場合は、`-E, --EID-filter`オプションを使用してください。 これにより、通常10〜25%の速度向上があります。 + ### `json-timeline`コマンド `json-timeline`コマンドは、JSONまたはJSONL形式でイベントのフォレンジックタイムラインを作成します。 @@ -918,8 +1005,10 @@ Output: -G, --GeoIP IPアドレスのGeoIP(ASN、都市、国)情報を追加する -H, --HTML-report HTML形式で詳細な結果を出力する (例: results.html) -L, --JSONL-output タイムラインをJSONL形式で保存する (例: -L -o results.jsonl) + -F, --no-field-data-mapping フィールドデータのマッピングを無効にする -o, --output タイムラインを保存する (例: results.csv) -p, --profile 利用する出力プロファイル名を指定する + -R, --remove-duplicate-data 重複したフィールドデータは「DUP」に置き換えられる (ファイルサイズが約10〜15%削減される) Display Settings: --no-color カラーで出力しない @@ -929,27 +1018,36 @@ Display Settings: -T, --visualize-timeline 検知頻度タイムラインを出力する(ターミナルはUnicodeに対応する必要がある) Filtering: - -E, --EID-filter 速度を上げるため主なEIDだけスキャンする (コンフィグファイル: ./rules/config/target_event_IDs.txt) - -D, --enable-deprecated-rules ステータスがdeprecatedのルールを有効にする - -n, --enable-noisy-rules Noisyルールを有効にする - -u, --enable-unsupported-rules ステータスがunsupportedのルールを有効にする - -e, --exact-level 特定のレベルだけスキャンする (informational, low, medium, high, critical) - --exclude-status 読み込み対象外とするルール内でのステータス (ex: experimental) (ex: stable,test) - -m, --min-level 結果出力をするルールの最低レベル (デフォルト: informational) - --timeline-end 解析対象とするイベントログの終了時刻 (例: "2022-02-22 23:59:59 +09:00") - --timeline-start 解析対象とするイベントログの開始時刻 (例: "2020-02-22 00:00:00 +09:00") + -E, --EID-filter 速度を上げるため主なEIDだけスキャンする (コンフィグファイル: ./rules/config/target_event_IDs.txt) + -D, --enable-deprecated-rules ステータスがdeprecatedのルールを有効にする + -n, --enable-noisy-rules Noisyルールを有効にする + -u, --enable-unsupported-rules ステータスがunsupportedのルールを有効にする + -e, --exact-level 特定のレベルだけスキャンする (informational, low, medium, high, critical) + --exclude-category 特定のlogsourceカテゴリを持つルールをロードしない (例: process_creation,pipe_created) + --exclude-computer 特定のコンピュータ名をスキャンしない (例: ComputerA) (例: ComputerA,ComputerB) + --exclude-eid 高速化のために特定のEIDをスキャンしない (例: 1) (例: 1,4688) + --exclude-status 読み込み対象外とするルール内でのステータス (例1: experimental) (例2: stable,test) + --exclude-tag 特定のタグを持つルールをロードしない (例: sysmon) + --include-category 特定のlogsourceカテゴリを持つルールのみをロードする (例: process_creation,pipe_created) + --include-computer 特定のコンピュータ名のみをスキャンする (例: ComputerA) (例: ComputerA,ComputerB) + --include-eid 指定したEIDのみをスキャンして高速化する (例: 1) (例: 1,4688) + --include-tag 特定のタグを持つルールのみをロードする (例1: attack.execution,attack.discovery) (例2: wmi) + -m, --min-level 結果出力をするルールの最低レベル (デフォルト: informational) + -P, --proven-rules 実績のあるルールだけでスキャンし、高速化する (./rules/config/proven_rules.txt) + --timeline-end 解析対象とするイベントログの終了時刻 (例: "2022-02-22 23:59:59 +09:00") + --timeline-start 解析対象とするイベントログの開始時刻 (例: "2020-02-22 00:00:00 +09:00") General Options: -C, --clobber 結果ファイルを上書きする -Q, --quiet-errors Quiet errorsモード: エラーログを保存しない -r, --rules ルールファイルまたはルールファイルを持つディレクトリ (デフォルト: ./rules) -c, --rules-config ルールフォルダのコンフィグディレクトリ (デフォルト: ./rules/config) - --target-file-ext evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2:evtx1,evtx2) + --target-file-ext evtx以外の拡張子を解析対象に追加する。 (例1: evtx_data 例2:evtx1,evtx2) -t, --threads スレッド数 (デフォルト: パフォーマンスに最適な数値) Time Format: --European-time ヨーロッパ形式で日付と時刻を出力する (例: 22-02-2022 22:00:00.123 +02:00) - --ISO-8601 ISO-8601形式で日付と時刻を出力する (ex: 2022-02-22T10:10:10.1234567Z) (いつもUTC) + --ISO-8601 ISO-8601形式で日付と時刻を出力する (例: 2022-02-22T10:10:10.1234567Z) (UTC時刻) --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) @@ -979,7 +1077,6 @@ General Options: #### `level-tuning`コマンドの使用例 * 通常使用: `hayabusa.exe level-tuning` - * カスタム設定ファイルに基づくルールのアラートレベルの調整: `hayabusa.exe level-tuning -f my_level_tuning.txt` #### `level-tuning`の設定ファイル @@ -1024,6 +1121,11 @@ General Options: -p, --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ルールのGitHubリポジトリ](https://github.com/Yamato-Security/hayabusa-rules)と同期し、ルールと設定ファイルを更新します。 @@ -1111,34 +1213,50 @@ Hayabusaの`config/profiles.yaml`設定ファイルでは、5つのプロフ | all-field-info-verbose | 9分10秒 | 1.3 GB | +20% | | super-verbose | 9分12秒 | 1.5 GB | +35% | -### Profile Field Aliases +### プロファイルのフィールドエイリアス + +ビルトインの出力プロファイルで出力できる情報は以下の通り: | エイリアス名 | Hayabusaの出力情報 | | :--- | :--- | -|%Timestamp% | デフォルトでは`YYYY-MM-DD HH:mm:ss.sss +hh:mm`形式になっている。イベントログの``フィールドから来ている。デフォルトのタイムゾーンはローカルのタイムゾーンになるが、`--UTC`オプションでUTCに変更することができる。 | -|%Computer% | イベントログの``フィールド。 | +|%AllFieldInfo% | すべてのフィールド情報。 | |%Channel% | ログ名。イベントログの``フィールド。 | +|%Computer% | イベントログの``フィールド。 | +|%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検知ルールに対応するルールが記載されていない場合はすべてのフィールド情報を出力します。 | +|%ExtraFieldInfo% | %Details%で出力されなかったフィールドデータを出力する。 | |%EventID% | イベントログの``フィールド。 | +|%EvtxFile% | アラートまたはイベントを起こしたevtxファイルへのパス。 | |%Level% | YML検知ルールの`level`フィールド。(例:`informational`、`low`、`medium`、`high`、`critical`) | |%MitreTactics% | MITRE ATT&CKの[戦術](https://attack.mitre.org/tactics/enterprise/) (例: Initial Access、Lateral Movement等々) | |%MitreTags% | MITRE ATT&CKの戦術以外の情報。attack.g(グループ)、attack.t(技術)、attack.s(ソフトウェア)の情報を出力する。 | |%OtherTags% | YML検知ルールの`tags`フィールドから`MitreTactics`、`MitreTags`以外のキーワードを出力する。| +|%Provider% | `` フィールド内の`Name`属性。 | |%RecordID% | ``フィールドのイベントレコードID。 | -|%RuleTitle% | YML検知ルールの`title`フィールド。 | -|%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検知ルールに対応するルールが記載されていない場合はすべてのフィールド情報を出力します。 | -|%ExtraFieldInfo% | %Details%で出力されなかったフィールドデータを出力する。 | -|%AllFieldInfo% | すべてのフィールド情報。 | -|%RuleFile% | アラートまたはイベントを生成した検知ルールのファイル名。 | -|%EvtxFile% | アラートまたはイベントを起こしたevtxファイルへのパス。 | |%RuleAuthor% | YML検知ルールの `author` フィールド。 | |%RuleCreationDate% | YML検知ルールの `date` フィールド。 | +|%RuleFile% | アラートまたはイベントを生成した検知ルールのファイル名。 | |%RuleModifiedDate% | YML検知ルールの `modified` フィールド。 | +|%RuleTitle% | YML検知ルールの`title`フィールド。 | |%Status% | YML検知ルールの `status` フィールド。 | -|%RuleID% | YML検知ルールの `id` フィールド。 | -|%Provider% | `` フィールド内の`Name`属性。 | +|%Timestamp% | デフォルトでは`YYYY-MM-DD HH:mm:ss.sss +hh:mm`形式になっている。イベントログの``フィールドから来ている。デフォルトのタイムゾーンはローカルのタイムゾーンになるが、`--UTC`オプションでUTCに変更することができる。 | + +#### その他のプロファイルのフィールドエイリアス + +必要であれば、これらのエイリアスを出力プロファイルに追加することもできます: + +| エイリアス名 | Hayabusaの出力情報 | +| :--- | :--- | |%RenderedMessage% | WEC機能で転送されたイベントログの``フィールド。 | +|%RuleID% | YML検知ルールの`id`フィールド。 | + +注意: これらはビルトインプロファイルには**含まれていない**ので、手動で`config/default_profile.yaml`ファイルを編集し、以下の行を追加する必要があります: + +``` +Message: "%RenderedMessage%" +RuleID: "%RuleID%" +``` -これらのエイリアスは、出力プロファイルで使用することができます。また、他の[イベントキーエイリアス](https://github.com/Yamato-Security/hayabusa-rules/blob/main/README-Japanese.md#%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%AD%E3%83%BC%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9)を定義し、他のフィールドを出力することもできます。 +また、[イベントキーエイリアス](https://github.com/Yamato-Security/hayabusa-rules/blob/main/README-Japanese.md#%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%AD%E3%83%BC%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9)を定義し、出力することもできます。 ## Levelの省略 @@ -1369,16 +1487,17 @@ Windows機での悪性な活動を検知する為には、デフォルトのロ ## 英語 -* 2023/03/14 [Hayabusa開発者向けRustパフォーマンスガイド](doc/RustPerformance-English.md) by Fukusuke Takahashi -* 2022/06/19 [VelociraptorチュートリアルとHayabusaの統合方法](https://www.youtube.com/watch?v=Q1IoGX--814) by [Eric Capuano](https://twitter.com/eric_capuano) -* 2022/01/24 [Hayabusa結果をneo4jで可視化する方法](https://www.youtube.com/watch?v=7sQqz2ek-ko) by Matthew Seyer ([@forensic_matt](https://twitter.com/forensic_matt)) +* 2023/03/21 [Eric Capuano](https://twitter.com/eric_capuano)氏による[Find Threats in Event Logs with Hayabusa](https://blog.ecapuano.com/p/find-threats-in-event-logs-with-hayabusa) +* 2023/03/14 Fukusuke Takahashi氏による[Hayabusa開発者向けRustパフォーマンスガイド](doc/RustPerformance-English.md) +* 2022/06/19 [Eric Capuano](https://twitter.com/eric_capuano)氏による[VelociraptorチュートリアルとHayabusaの統合方法](https://www.youtube.com/watch?v=Q1IoGX--814) +* 2022/01/24 Matthew Seyer ([@forensic_matt](https://twitter.com/forensic_matt))氏による[Hayabusa結果をneo4jで可視化する方法](https://www.youtube.com/watch?v=7sQqz2ek-ko) ## 日本語 -* 2023/03/14 [Hayabusa開発者向けRustパフォーマンスガイド](doc/RustPerformance-Japanese.md) by Fukusuke Takahashi -* 2022/01/22 [Hayabusa結果をElastic Stackで可視化する方法](https://qiita.com/kzzzzo2/items/ead8ccc77b7609143749) by [@kzzzzo2](https://qiita.com/kzzzzo2) -* 2021/12/31 [Windowsイベントログ解析ツール「Hayabusa」を使ってみる](https://itib.hatenablog.com/entry/2021/12/31/222946) by itiB ([@itiB_S144](https://twitter.com/itiB_S144)) -* 2021/12/27 [Hayabusaの中身](https://kazuminkun.hatenablog.com/entry/2021/12/27/190535) by Kazuminn ([@k47_um1n](https://twitter.com/k47_um1n)) +* 2023/03/14 Fukusuke Takahashi氏による[Hayabusa開発者向けRustパフォーマンスガイド](doc/RustPerformance-Japanese.md) +* 2022/01/22 [@kzzzzo2](https://qiita.com/kzzzzo2)氏による[Hayabusa結果をElastic Stackで可視化する方法](https://qiita.com/kzzzzo2/items/ead8ccc77b7609143749) +* 2021/12/31 itiB ([@itiB_S144](https://twitter.com/itiB_S144))氏による[Windowsイベントログ解析ツール「Hayabusa」を使ってみる](https://itib.hatenablog.com/entry/2021/12/31/222946) +* 2021/12/27 Kazuminn ([@k47_um1n](https://twitter.com/k47_um1n))氏による[Hayabusaの中身](https://kazuminkun.hatenablog.com/entry/2021/12/27/190535) # 貢献 diff --git a/README.md b/README.md index e2d28c9ac..b4b9717cf 100644 --- a/README.md +++ b/README.md @@ -76,13 +76,15 @@ Hayabusa is a **Windows event log fast forensics timeline generator** and **thre - [General Commands:](#general-commands) - [Command Usage](#command-usage) - [Analysis Commands](#analysis-commands-1) + - [`computer-metrics` command](#computer-metrics-command) + - [`computer-metrics` command examples](#computer-metrics-command-examples) + - [`eid-metrics` command](#eid-metrics-command) + - [`eid-metrics` command examples](#eid-metrics-command-examples) + - [`eid-metrics` command config file](#eid-metrics-command-config-file) - [`logon-summary` command](#logon-summary-command) - - [`logon-summary` command example](#logon-summary-command-example) - - [`metrics` command](#metrics-command) - - [`metrics` command examples](#metrics-command-examples) - - [`metrics` command config file](#metrics-command-config-file) + - [`logon-summary` command examples](#logon-summary-command-examples) - [`pivot-keywords-list` command](#pivot-keywords-list-command) - - [`pivot-keywords-list` command example](#pivot-keywords-list-command-example) + - [`pivot-keywords-list` command examples](#pivot-keywords-list-command-examples) - [`pivot-keywords-list` config file](#pivot-keywords-list-config-file) - [`search` command](#search-command) - [`search` command examples](#search-command-examples) @@ -101,6 +103,7 @@ Hayabusa is a **Windows event log fast forensics timeline generator** and **thre - [`level-tuning` config file](#level-tuning-config-file) - [`list-profiles` command](#list-profiles-command) - [`set-default-profile` command](#set-default-profile-command) + - [`set-default-profile` command examples](#set-default-profile-command-examples) - [`update-rules` command](#update-rules-command) - [`update-rules` command example](#update-rules-command-example) - [Timeline Output](#timeline-output) @@ -115,6 +118,7 @@ Hayabusa is a **Windows event log fast forensics timeline generator** and **thre - [8. `timesketch-verbose` profile output](#8-timesketch-verbose-profile-output) - [Profile Comparison](#profile-comparison) - [Profile Field Aliases](#profile-field-aliases) + - [Extra Profile Field Aliases](#extra-profile-field-aliases) - [Level Abbrevations](#level-abbrevations) - [MITRE ATT\&CK Tactics Abbreviations](#mitre-attck-tactics-abbreviations) - [Channel Abbreviations](#channel-abbreviations) @@ -140,7 +144,7 @@ Hayabusa is a **Windows event log fast forensics timeline generator** and **thre ### Threat Hunting and Enterprise-wide DFIR -Hayabusa currently has over 3250 Sigma rules and around 150 Hayabusa built-in detection rules with more rules being added regularly. +Hayabusa currently has over 2500 Sigma rules and over 150 Hayabusa built-in detection rules with more rules being added regularly. It can be used for enterprise-wide proactive threat hunting as well as DFIR (Digital Forensics and Incident Response) for free with [Velociraptor](https://docs.velociraptor.app/)'s [Hayabusa artifact](https://docs.velociraptor.app/exchange/artifacts/pages/windows.eventlogs.hayabusa/). By combining these two open-source tools, you can essentially retroactively reproduce a SIEM when there is no SIEM setup in the environment. You can learn about how to do this by watching [Eric Capuano](https://twitter.com/eric_capuano)'s Velociraptor walkthrough [here](https://www.youtube.com/watch?v=Q1IoGX--814). @@ -220,12 +224,13 @@ You can learn how to analyze JSON-formatted results with `jq` [here](doc/Analysi # Features * Cross-platform support: Windows, Linux, macOS. -* Developed in Rust to be memory safe and faster than a hayabusa falcon! +* Developed in Rust to be memory safe and fast. * Multi-thread support delivering up to a 5x speed improvement. -* Creates a single easy-to-analyze CSV timeline for forensic investigations and incident response. +* Creates single easy-to-analyze timelines for forensic investigations and incident response. * Threat hunting based on IoC signatures written in easy to read/create/edit YML based hayabusa rules. * Sigma rule support to convert sigma rules to hayabusa rules. * Currently it supports the most sigma rules compared to other similar tools and even supports count rules and new aggregators such as `|equalsfield` and `|endswithfield`. +* Computer metrics. (Useful for filtering on/out certain computers with a large amount of events.) * Event ID metrics. (Useful for getting a picture of what types of events there are and for tuning your log settings.) * Rule tuning configuration by excluding unneeded or noisy rules. * MITRE ATT&CK mapping of tactics. @@ -240,6 +245,7 @@ You can learn how to analyze JSON-formatted results with `jq` [here](doc/Analysi * Log field normalization. (Converting multiple fields with different naming conventions into the same field name.) * Log enrichment by adding GeoIP (ASN, city, country) information to IP addresses. * Search all events for keywords or regular expressions. +* Field data mapping. (Ex: `0xc0000234` -> `ACCOUNT LOCKED`) # Downloads @@ -424,8 +430,9 @@ You should now be able to run hayabusa. # Command List ## Analysis Commands: +* `computer-metrics`: Print the number of events based on computer names. +* `eid-metrics`: Print the number and percentage of events based on Event ID. * `logon-summary`: Print a summary of logon events. -* `metrics`: Print metrics of the number and percentage of events based on Event ID. * `pivot-keywords-list`: Print a list of suspicious keywords to pivot on. * `search`: Search all events by keyword(s) or regular expressions @@ -445,13 +452,12 @@ You should now be able to run hayabusa. ## Analysis Commands -### `logon-summary` command +### `computer-metrics` command -You can use the `logon-summary` command to output logon information summary (logon usernames and successful and failed logon count). -You can display the logon information for one evtx file with `-f` or multiple evtx files with the `-d` option. +You can use the `computer-metrics` command to print out the total number and percentage of Event IDs seperated by Channels. ``` -Usage: logon-summary [OPTIONS] +Usage: computer-metrics [OPTIONS] Input: -d, --directory Directory of multiple .evtx files @@ -460,7 +466,7 @@ Input: -J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl) Output: - -o, --output Save the Logon summary in CSV format (ex: logon-summary.csv) + -o, --output Save the results in CSV format (ex: computer-metrics.csv) Display Settings: --no-color Disable color output @@ -468,24 +474,25 @@ Display Settings: -v, --verbose Output verbose information General Options: - -C, --clobber Overwrite results files - -Q, --quiet-errors Quiet errors mode: do not save error logs - -c, --rules-config Specify custom rule config directory (default: ./rules/config) - --target-file-ext Specify additional file extensions (ex: evtx_data) (ex: evtx1,evtx2) - -t, --threads Number of threads (default: optimal number for performance) + -C, --clobber Overwrite files when saving + -Q, --quiet-errors Quiet errors mode: do not save error logs + -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) ``` -#### `logon-summary` command example +#### `computer-metrics` command examples + +* Print computer name metrics from a directory: `hayabusa.exe computer-metrics -d ../logs` +* Save results to a CSV file: `hayabusa.exe computer-metrics -d ../logs -o computer-metrics.csv` -* Print logon summary: `hayabusa.exe logon-summary -f Security.evtx` -* Save logon summary results: `hayabusa.exe logon-summary -d ../logs -o logon-summary.csv` -### `metrics` command +### `eid-metrics` command -You can use the `metrics` command to print out the total number and percentage of Event IDs seperated by Channels. +You can use the `eid-metrics` command to print out the total number and percentage of Event IDs seperated by Channels. ``` -Usage: metrics [OPTIONS] +Usage: eid-metrics [OPTIONS] Input: -d, --directory Directory of multiple .evtx files @@ -502,22 +509,33 @@ Display Settings: -v, --verbose Output verbose information General Options: - -C, --clobber Overwrite results files - -Q, --quiet-errors Quiet errors mode: do not save error logs - -c, --rules-config Specify custom rule config directory (default: ./rules/config) - --target-file-ext Specify additional file extensions (ex: evtx_data) (ex: evtx1,evtx2) - -t, --threads Number of threads (default: optimal number for performance) -``` + -C, --clobber Overwrite files when saving + -Q, --quiet-errors Quiet errors mode: do not save error logs + -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) -#### `metrics` command examples +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) -* Print Event ID metrics from a single file: `hayabusa.exe metrics -f Security.evtx` +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) +``` -* Print Event ID metrics from a directory: `hayabusa.exe metrics -d ../logs` +#### `eid-metrics` command examples -* Save results to a CSV file: `hayabusa.exe metrics -f Security.evtx -o metrics.csv` +* Print Event ID metrics from a single file: `hayabusa.exe eid-metrics -f Security.evtx` +* Print Event ID metrics from a directory: `hayabusa.exe eid-metrics -d ../logs` +* Save results to a CSV file: `hayabusa.exe eid-metrics -f Security.evtx -o eid-metrics.csv` -#### `metrics` command config file +#### `eid-metrics` command config file The channel, event IDs and titles of the events are defined in `rules/config/channel_eid_info.txt`. @@ -530,6 +548,55 @@ Microsoft-Windows-Sysmon/Operational,3,Network Connection. Microsoft-Windows-Sysmon/Operational,4,Sysmon Service State Changed. ``` + +### `logon-summary` command + +You can use the `logon-summary` command to output logon information summary (logon usernames and successful and failed logon count). +You can display the logon information for one evtx file with `-f` or multiple evtx files with the `-d` option. + +``` +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:\Windows\System32\winevt\Logs folder + -J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl) + +Output: + -o, --output Save the logon summary to 2 CSV files. Specify the base filename. (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 + +General Options: + -C, --clobber Overwrite files when saving + -Q, --quiet-errors Quiet errors mode: do not save error logs + -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) + +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` command examples + +* Print logon summary: `hayabusa.exe logon-summary -f Security.evtx` +* Save logon summary results: `hayabusa.exe logon-summary -d ../logs -o logon-summary.csv` + ### `pivot-keywords-list` command You can use the `pivot-keywords-list` command to create a list of unique pivot keywords to quickly identify abnormal users, hostnames, processes, etc... as well as correlate events. @@ -556,29 +623,35 @@ Display Settings: -v, --verbose Output verbose information Filtering: - -E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt) - -D, --enable-deprecated-rules Enable rules with status of deprecated - -n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt) - -u, --enable-unsupported-rules Enable rules with status of unsupported - -e, --exact-level Scan for only specific levels (informational, low, medium, high, critical) - --exclude-status Ignore rules according to status (ex: experimental) (ex: stable,test) - -m, --min-level Minimum level for rules (default: informational) - --timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00") - --timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00") + -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) + --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) + -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-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00") General Options: - -Q, --quiet-errors Quiet errors mode: do not save error logs - -c, --rules-config Specify custom rule config directory (default: ./rules/config) - --target-file-ext Specify additional file extensions (ex: evtx_data) (ex: evtx1,evtx2) - -t, --threads Number of threads (default: optimal number for performance) + -C, --clobber Overwrite files when saving + -Q, --quiet-errors Quiet errors mode: do not save error logs + -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) ``` -#### `pivot-keywords-list` command example +#### `pivot-keywords-list` command examples +* Output pivot keywords to screen: `hayabusa.exe pivot-keywords-list -d ../logs -m critical` * Create a list of pivot keywords from critical alerts and save the results. (Results will be saved to `keywords-Ip Addresses.txt`, `keywords-Users.txt`, etc...): ``` -hayabusa.exe pivot-keywords-list -d ../logs -m critical -o keywords +hayabusa.exe pivot-keywords-list -d ../logs -m critical -o keywords` ``` #### `pivot-keywords-list` config file @@ -609,21 +682,32 @@ Input: -l, --live-analysis Analyze the local C:\Windows\System32\winevt\Logs folder Filtering: - -F, --filter Filter by specific field(s) - -i, --ignore-case Ignore case - -k, --keywords Search by keyword(s) - -r, --regex Search by regular expression + -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 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 -o, --output Save the search results in CSV format (ex: search.csv) General Options: - -C, --clobber Overwrite results files - -Q, --quiet-errors Quiet errors mode: do not save error logs - -c, --rules-config Specify custom rule config directory (default: ./rules/config) - --target-file-ext Specify additional file extensions (ex: evtx_data) (ex: evtx1,evtx2) - -t, --threads Number of threads (default: optimal number for performance) + -C, --clobber Overwrite files when saving + -Q, --quiet-errors Quiet errors mode: do not save error logs + -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) + +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` command examples @@ -666,6 +750,7 @@ hayabusa.exe search -d ../hayabusa-sample-evtx -r ".*" -F WorkstationName:"kali" `./rules/config/channel_abbreviations.txt`: Mappings of channel names and their abbreviations. + ## DFIR Timeline Commands ### `csv-timeline` command @@ -685,34 +770,45 @@ 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 -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" Display Settings: --no-color Disable color output - -N, --no-summary Do not display Results Summary (slightly faster speed) + -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) Filtering: - -E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt) - -D, --enable-deprecated-rules Enable rules with status of deprecated - -n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt) - -u, --enable-unsupported-rules Enable rules with status of unsupported - -e, --exact-level Scan for only specific levels (informational, low, medium, high, critical) - --exclude-status Ignore rules according to status (ex: experimental) (ex: stable,test) - -m, --min-level Minimum level for rules (default: informational) - --timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00") - --timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00") + -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-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-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00") General Options: - -C, --clobber Overwrite results files - -Q, --quiet-errors Quiet errors mode: do not save error logs - -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 file extensions (ex: evtx_data) (ex: evtx1,evtx2) - -t, --threads Number of threads (default: optimal number for performance) + -C, --clobber Overwrite files when saving + -Q, --quiet-errors Quiet errors mode: do not save error logs + -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) Time Format: --European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00) @@ -895,6 +991,7 @@ These rules are usually noisy by nature or due to false positives. By default, Hayabusa will scan all events, but if you want to improve performance, please use the `-E, --EID-filter` option. This usually results in a 10~25% speed improvement. + ### `json-timeline` command The `json-timeline` command will create a forensics timeline of events in JSON or JSONL format. @@ -917,34 +1014,45 @@ 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 -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" Display Settings: --no-color Disable color output - -N, --no-summary Do not display Results Summary (slightly faster speed) + -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) Filtering: - -E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt) - -D, --enable-deprecated-rules Enable rules with status of deprecated - -n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt) - -u, --enable-unsupported-rules Enable rules with status of unsupported - -e, --exact-level Scan for only specific levels (informational, low, medium, high, critical) - --exclude-status Ignore rules according to status (ex: experimental) (ex: stable,test) - -m, --min-level Minimum level for rules (default: informational) - --timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00") - --timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00") + -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-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-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00") General Options: - -C, --clobber Overwrite results files - -Q, --quiet-errors Quiet errors mode: do not save error logs - -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 file extensions (ex: evtx_data) (ex: evtx1,evtx2) - -t, --threads Number of threads (default: optimal number for performance) + -C, --clobber Overwrite files when saving + -Q, --quiet-errors Quiet errors mode: do not save error logs + -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) Time Format: --European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00) @@ -978,7 +1086,6 @@ General Options: #### `level-tuning` command examples * Normal usage: `hayabusa.exe level-tuning` - * Tune rule alert levels based on your custom config file: `hayabusa.exe level-tuning -f my_level_tuning.txt` #### `level-tuning` config file @@ -1023,6 +1130,11 @@ General Options: -p, --profile Specify output profile ``` +#### `set-default-profile` command examples + +* Set the default profile to `minimal`: `hayabusa.exe set-default-profile minimal` +* Set the default profile to `super-verbose`: `hayabusa.exe set-default-profile super-verbose` + ### `update-rules` command The `update-rules` command will sync the `rules` folder with the [Hayabusa rules github repository](https://github.com/Yamato-Security/hayabusa-rules), updating the rules and config files. @@ -1112,32 +1224,48 @@ The following benchmarks were conducted on a 2018 Lenovo P51 (Xeon 4 Core CPU / ### Profile Field Aliases +The following information can be outputted with built-in output profiles: + | Alias name | Hayabusa output information| | :--- | :--- | -|%Timestamp% | Default is `YYYY-MM-DD HH:mm:ss.sss +hh:mm` format. `` field in the event log. The default timezone will be the local timezone but you can change the timezone to UTC with the `--UTC` option. | -|%Computer% | The `` field. | +|%AllFieldInfo% | All field information. | |%Channel% | The name of log. `` field. | +|%Computer% | The `` field. | +|%Details% | The `details` field in the YML detection rule, however, only hayabusa rules have this field. This field gives extra information about the alert or event and can extract useful data from the fields in event logs. For example, usernames, command line information, process information, etc... When a placeholder points to a field that does not exist or there is an incorrect alias mapping, it will be outputted as `n/a` (not available). If the `details` field is not specified (i.e. sigma rules), default `details` messages to extract fields defined in `./rules/config/default_details.txt` will be outputted. You can add more default `details` messages by adding the `Provider Name`, `EventID` and `details` message you want to output in `default_details.txt`. When no `details` field is defined in a rule nor in `default_details.txt`, all fields will be outputted to the `details` column. | +|%ExtraFieldInfo% | Print the field information that was not outputted in %Details%. | |%EventID% | The `` field. | +|%EvtxFile% | The evtx filename that caused the alert or event. | |%Level% | The `level` field in the YML detection rule. (`informational`, `low`, `medium`, `high`, `critical`) | |%MitreTactics% | MITRE ATT&CK [tactics](https://attack.mitre.org/tactics/enterprise/) (Ex: Initial Access, Lateral Movement, etc...). | |%MitreTags% | MITRE ATT&CK Group ID, Technique ID and Software ID. | |%OtherTags% | Any keyword in the `tags` field in a YML detection rule which is not included in `MitreTactics` or `MitreTags`. | +|%Provider% | The `Name` attribute in `` field. | |%RecordID% | The Event Record ID from `` field. | -|%RuleTitle% | The `title` field in the YML detection rule. | -|%Details% | The `details` field in the YML detection rule, however, only hayabusa rules have this field. This field gives extra information about the alert or event and can extract useful data from the fields in event logs. For example, usernames, command line information, process information, etc... When a placeholder points to a field that does not exist or there is an incorrect alias mapping, it will be outputted as `n/a` (not available). If the `details` field is not specified (i.e. sigma rules), default `details` messages to extract fields defined in `./rules/config/default_details.txt` will be outputted. You can add more default `details` messages by adding the `Provider Name`, `EventID` and `details` message you want to output in `default_details.txt`. When no `details` field is defined in a rule nor in `default_details.txt`, all fields will be outputted to the `details` column. | -|%ExtraFieldInfo% | Print the field information that was not outputted in %Details%. | -|%AllFieldInfo% | All field information. | -|%RuleFile% | The filename of the detection rule that generated the alert or event. | -|%EvtxFile% | The evtx filename that caused the alert or event. | |%RuleAuthor% | The `author` field in the YML detection rule. | |%RuleCreationDate% | The `date` field in the YML detection rule. | +|%RuleFile% | The filename of the detection rule that generated the alert or event. | |%RuleModifiedDate% | The `modified` field in the YML detection rule. | +|%RuleTitle% | The `title` field in the YML detection rule. | |%Status% | The `status` field in the YML detection rule. | -|%RuleID% | The `id` field in the YML detection rule. | -|%Provider% | The `Name` attribute in `` field. | +|%Timestamp% | Default is `YYYY-MM-DD HH:mm:ss.sss +hh:mm` format. `` field in the event log. The default timezone will be the local timezone but you can change the timezone to UTC with the `--UTC` option. | + +#### Extra Profile Field Aliases + +You can also add these extra aliases to your output profile if you need them: + +| Alias name | Hayabusa output information| +| :--- | :--- | |%RenderedMessage% | The `` field in WEC forwarded logs. | +|%RuleID% | The `id` field in the YML detection rule. | + +Note: these are **not** included in any built in profiles so you will need to manually edit the `config/default_profile.yaml` file and add the following lines: + +``` +Message: "%RenderedMessage%" +RuleID: "%RuleID%" +``` -You can use these aliases in your output profiles, as well as define other [event key alises](https://github.com/Yamato-Security/hayabusa-rules/blob/main/README.md#eventkey-aliases) to output other fields. +You can also define [event key aliases](https://github.com/Yamato-Security/hayabusa-rules/blob/main/README.md#eventkey-aliases) to output other fields. ## Level Abbrevations diff --git a/doc/DFIR-TimelineCreation-EN.png b/doc/DFIR-TimelineCreation-EN.png index 178dfab5b..fdbabec84 100644 Binary files a/doc/DFIR-TimelineCreation-EN.png and b/doc/DFIR-TimelineCreation-EN.png differ diff --git a/doc/DFIR-TimelineCreation-JP.png b/doc/DFIR-TimelineCreation-JP.png index 3f40b1b9b..64dea10c8 100644 Binary files a/doc/DFIR-TimelineCreation-JP.png and b/doc/DFIR-TimelineCreation-JP.png differ