Takajō (鷹匠)は 日本のYamato Securityグループによって作られた Hayabusaから得られた結果を解析するツールです。TakajōはNimで作られました。 Takajōは、日本語で"鷹狩りのスキルに優れた人"を意味し、ハヤブサの「獲物」(結果)を分析することから選ばれました。
- EnableWindowsLogSettings - Sigmaベースの脅威ハンティングと、Windowsイベントログのファストフォレンジックタイムライン生成ツール。
- Hayabusa - Windowsイベントログを正しく設定するためのドキュメンテーションとスクリプト。
- Hayabusa Rules - Hayabusaのための検知ルール。
- Hayabusa Sample EVTXs - Hayabusa/Sigma検出ルールをテストするためのサンプルevtxファイル。
- WELA (Windows Event Log Analyzer) - PowerShellで書かれたWindowsイベントログの解析ツール。
- 関連プロジェクト
- ダウンロード
- コマンド一覧
- コマンド使用方法
- Nimで開発され、プログラミングが簡単、メモリ安全、ネイティブCコードと同じくらい高速で、単一のスタンドアロンバイナリとして動作します。
- ログオンイベント、疑わしいプロセスなどさまざまなタイムラインを作成します。
- 不審なプロセスのプロセスツリーを出力します。
- さまざまなスタッキング分析ができます。
- CSVとJSONLのタイムラインを分割します。
- VirusTotalの検索で使用するIPアドレス、ドメイン、ハッシュなどをリストアップします。
- ドメイン、ハッシュ、IPアドレスをVirusTotalで検索します。
- 検知されていない
.evtx
ファイルをリストアップします。 - MITRE ATT&CK NavigatorでTTPを可視化します。
- コマンドライン DNSリクエスト, ログオン, プロセス, サービス, スケジュールタスクなどを集計します。
- ログオン, USB使用, 不審プロセス, タスクなどのタイムラインを作成します。
- HTMLサマリレポート
- その他、たくさん!
ReleasesページからTakajōの安定したバージョンでコンパイルされたバイナリが含まれている最新版もしくはソースコードをダウンロードできます。
※ 64ビットのWindows、IntelおよびArmベースのmacOS用のリリースバイナリを提供していますが、Linux用のMUSLバイナリを提供することは現時点では困難なため、Linuxには提供していません。
以下のgit clone
コマンドでレポジトリをダウンロードし、ソースコードからコンパイルして使用することも可能です:
注意: mainブランチは開発中のバージョンです。まだ正式にリリースされていない新機能が使えるかもしれませんが、バグがある可能性もあるので、テスト版だと思って下さい。
git clone https://github.com/Yamato-Security/takajo.git
まず、choosenimでNimをインストールして下さい。 その後、以下のコマンドでソースコードからコンパイルできます:
> nimble update
> nimble build -d:release --threads:on
automagic
: 多くのコマンドを自動的に実行し、結果を新しいフォルダーに出力する
extract-scriptblocks
: PowerShell EID 4104 スクリプトブロックログからPowerShellスクリプトを抽出して再構築する
html-report
: ルールと検出されたコンピュータのHTMLサマリレポートを作成するhtml-server
: HTMLサマリレポートを確認するために、動的にウェブサーバを立ち上げる
list-domains
:vt-domain-lookup
コマンドで使用する、重複のないドメインのリストを作成するlist-hashes
:vt-hash-lookup
で使用するプロセスのハッシュ値のリストを作成するlist-ip-addresses
:vt-ip-lookup
コマンドで使用する、重複のない送信元/送信先のIPリストを作成するlist-undetected-evtx
: 検知されなかったevtxファイルのリストを作成するlist-unused-rules
: 検知されなかったルールのリストを作成する
split-csv-timeline
: コンピューター名に基づき、大きなCSVタイムラインを小さなCSVタイムラインに分割するsplit-json-timeline
: コンピューター名に基づき、大きなJSONLタイムラインを小さなJSONLタイムラインに分割する
stack-cmdlines
: 実行されたコマンドラインを集計するstack-dns
: DNSクエリとレスポンスを集計するstack-ip-addresses
: ターゲットIP(TgtIP
フィールド) またはソースIP (SrcIP
フィールド)を集計するstack-logons
: ユーザー名、コンピューター名、送信元IPアドレス、送信元コンピューター名など、項目ごとの上位ログオンを出力するstack-processes
: 実行されたプロセスを集計するstack-services
: 作成されたサービス名とプロセスを集計するstack-tasks
: 作成されたスケジュールタスクを集計するstack-users
: ターゲットユーザー(TgtUser
フィールド) またはソースユーザー (SrcUser
フィールド)を集計する
sysmon-process-tree
: プロセスツリーを出力する
timeline-logon
: ログオンイベントのCSVタイムラインを作成するtimeline-suspicious-processes
: 不審なプロセスのCSVタイムラインを作成するtimeline-partition-diagnostic
: partition diagnosticイベントのCSVタイムラインを作成するtimeline-tasks
: スケジュールタスクのCSVタイムラインを作成する
ttp-summary
: コンピュータ毎に検知されたTTPsの要約を出力するttp-visualize
: TTPs を抽出し、MITRE ATT&CK Navigator で視覚化するためのJSONファイルを作成するttp-visualize-sigma
: TTPs をSigmaルールから抽出し、MITRE ATT&CK Navigator で視覚化するためのJSONファイルを作成する
vt-domain-lookup
: VirusTotalでドメインのリストを検索し、悪意のあるドメインをレポートするvt-hash-lookup
: VirusTotalでハッシュのリストを検索し、悪意のあるハッシュ値をレポートするvt-ip-lookup
: VirusTotalでIPアドレスのリストを検索し、悪意のあるIPアドレスをレポートする
多くのコマンドを自動的に実行し、結果を新しいフォルダーに出力する
注意: すべてのコマンドを使用するには、
verbose
またはsuper-verbose
プロファイルを使用する必要があります。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: すべての結果ファイルが出力されたフォルダー
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-d, --displayTable
: テーブル結果をターミナルに出力する (デフォルト:false
)-l, --level
: 最小のアラートレベルを指定 (デフォルト:informational
)-o, --output
: 出力ディレクトリ (デフォルト:case-1
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)-s, --skipProgressBar
: プログレスバーを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを出力する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w -p verbose
できるだけ多くのTakajoコマンドを実行し、結果をcase-1
フォルダーに保存:
takajo.exe automagic -t ../hayabusa/timeline.jsonl -o case-1
できるだけ多くのTakajoコマンドをhayabusa-results
ディレクトリに対して実行し、結果をcase-1
フォルダに保存r:
takajo.exe automagic -t ../hayabusa/hayabusa-results/ -o case-1
PowerShell EID 4104 スクリプトブロックログからPowerShellスクリプトを抽出して再構築します。
注意: PowerShellスクリプトは、コード構文が強調表示された「.ps1」ファイルとして開くのが最適ですが、悪意のあるコードが誤って実行されるのを防ぐために「.txt」拡張子を使用します。
- 入力: JSONL
- プロファイル: すべて
- 出力: ターミナルとPowerShellスクリプトのディレクトリ
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムライン
任意オプション:
-l, --level
: 最小のアラートレベルを指定 (デフォルト:low
)-o, --output
: PowerShellスクリプトを保存するディレクトリ (デフォルト:scriptblock-logs
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを出力する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w
PowerShell EID 4104 スクリプトブロックログから抽出し、scriptblock-logs
ディレクトリに保存します:
takajo.exe extract-scriptblocks -t ../hayabusa/timeline.jsonl
ルールと検出されたコンピュータのHTMLサマリレポートを作成します。 このコマンドは、サマリレポートの作成に必要なデータの高速検索を実行するために、まずインデックス化されたSQLiteデータベースファイルを作成します。
- 入力: JSONL
- プロファイル:
verbose
/super-verbose
プロファイル - 出力: コンピュータ名とメインページの
index.html
に基づいた個別のHTMLサマリレポート
必須オプション:
-o, --output
: htmlレポートのディレクトリ名-r, --rulepath
: Hayabusaルールディレクトリへのパス-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインのファイル名またはディレクトリ名
任意オプション:
-C, --clobber
: 保存時にSQLiteファイルを上書きする (デフォルト:false
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)-s, --skipProgressBar
: プログレスバーを出力しない (デフォルト:false
)-s, --sqliteoutput
: 結果をSQLiteデータベースに保存する (デフォルト:html-report.sqlite
)
HayabusaでJSONLタイムラインを出力する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w -p verbose
または
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w -p super-verbose
HTMLサマリレポートを作成する:
takajo.exe html-report -t ../hayabusa/hayabusa-results.jsonl -o htmlreport -r ../hayabusa/rules
HTMLサマリレポートを確認するために、動的にウェブサーバを立ち上げます。
このコマンドは、サマリレポートの作成に必要なデータの高速検索を実行するために、まずインデックス化されたSQLiteデータベースファイルを作成します。
html-report
コマンドと似ていますが、よりスケーラブルで日付やルールのフィルタリングが可能です。
- 入力: JSONL
- プロファイル:
verbose
/super-verbose
プロファイル - 出力: デフォルトでは、
http://localhost:8823
で待ち受ける
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインのファイル名またはディレクトリ名
任意オプション:
-C, --clobber
: 保存時にSQLiteファイルを上書きする (デフォルト:false
)-p, --port
: ウェブサーバのポート番号-q, --quiet
: ロゴを出力しない (デフォルト:false
)-r, --rulepath
: Hayabusaルールディレクトリへのパス (※必須ではないが、ルールファイルへのリンクを作成するために必要。))-s, --skipProgressBar
: プログレスバーを出力しない (デフォルト:false
)-s, --sqliteoutput
: 結果をSQLiteデータベースに保存する (デフォルト:html-report.sqlite
)
HayabusaでJSONLタイムラインを出力する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w -p verbose
または
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w -p super-verbose
ウェブサーバを起動する:
takajo.exe html-server -t ../hayabusa/hayabusa-results.jsonl -r ../hayabusa/rules
vt-domain-lookup
で使用する重複のないドメインのリストを作成します。
現在は、Sysmon EID 22ログでクエリが記録されたドメインのみをチェックしますが、ビルトインのWindows DNSクライアント・サーバーログも今後サポート予定です。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: テキストファイル
必須オプション:
-o, --output <TXT-FILE>
: 結果を保存するテキストファイル-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-s, --includeSubdomains
: サブドメインを含めるか (デフォルト:false
)-w, --includeWorkstations
: ローカルワークステーション名を含めるか (デフォルト:false
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを出力する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w
結果をテキストファイルに保存する:
takajo.exe list-domains -t ../hayabusa/timeline.jsonl -o domains.txt
サブドメインを含める場合:
takajo.exe list-domains -t ../hayabusa/timeline.jsonl -o domains.txt -s
vt-hash-lookup
で使用するプロセスハッシュ値のリストを作成します (入力: JSONL, プロファイル: standard)
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: テキストファイル
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ-o, --output <BASE-NAME>
: 結果を保存するベースファイル名
任意オプション:
-l, --level
: 最小のアラートレベルを指定 (デフォルト:high
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを作成する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w
ハッシュタイプ毎に異なるファイルに結果を保存する:
takajo.exe list-hashes -t ../hayabusa/timeline.jsonl -o case-1
たとえば、MD5
、SHA1
、IMPHASH
がSysmonログに保存されている場合、 次のファルが作成されます:
case-1-MD5-hashes.txt
, case-1-SHA1-hashes.txt
, case-1-ImportHashes.txt
vt-ip-lookup
で使用する重複のない送信先/送信先IPアドレスのリストを作成します。すべての結果から送信先IPアドレスのTgtIP
フィールドと送信元IPアドレスの SrcIP
フィールドが抽出され、重複のないIPアドレスをテキストファイルに出力します。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: テキストファイル
必須オプション:
-o, --output <TXT-FILE>
: 結果を保存するテキストファイル-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-i, --inbound
: インバウンドトラフィックを含めるか (デフォルト:true
)-O, --outbound
: アウトバウンドトラフィックを含めるか (デフォルト:true
)-p, --privateIp
: プライベートIPアドレスを含めるか (デフォルト:false
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを作成する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w
結果をテキストファイルに保存する:
takajo.exe list-ip-addresses -t ../hayabusa/timeline.jsonl -o ipAddresses.txt
インバウンドトラフィックを除外する:
takajo.exe list-ip-addresses -t ../hayabusa/timeline.jsonl -o ipAddresses.txt -i=false
プライベートIPアドレスを含める:
takajo.exe list-ip-addresses -t ../hayabusa/timeline.jsonl -o ipAddresses.txt -p
Hayabusaで検知するルールがなかったすべての.evtx
ファイルをリストアップします。
これは、hayabusa-sample-evtxリポジトリ内のevtxファイルなど、悪意のあるアクティビティの証拠を含むすべてのevtxファイルをリストアップすることを目的としています
- 入力: CSV
- プロファイル:
verbose
,all-field-info-verbose
,super-verbose
,timesketch-verbose
まず、
%EvtxFile%
を出力するプロファイルを使用し、Hayabusaを実行、結果をCSVタイムラインに保存する必要があります こちらでHayabusaがプロファイルに従って、どのカラムを保存するかを確認できます。 - 出力: ターミナル または テキストファイル
必須オプション:
-e, --evtx-dir <EVTX-DIR>
: Hayabusaでスキャンした.evtx
ファイルのディレクトリ-t, --timeline <CSV-FILE>
: HayabusaのCSVタイムライン
任意オプション:
-c, --column-name <CUSTOM-EVTX-COLUMN>
: evtxのカラム名を指定 (デフォルト: Hayabusaの規定値のEvtxFile
)-o, --output <TXT-FILE>
: 結果を保存するテキストファイル (デフォルト: 標準出力)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでCSVタイムラインを出力する:
hayabusa.exe -d <EVTX-DIR> -p verbose -o timeline.csv -w
結果を標準出力に表示する:
takajo.exe list-undetected-evtx -t ../hayabusa/timeline.csv -e <EVTX-DIR>
結果をテキストファイルに保存する:
takajo.exe list-undetected-evtx -t ../hayabusa/timeline.csv -e <EVTX-DIR> -o undetected-evtx.txt
何も検出されなかったすべての.yml
ルールをリストアップします。
これは、ルールの信頼性を判断するのに役立ちます。
つまり、どのルールが悪意のあるアクティビティを検出するか、またどのルールがまだテストされておらずサンプル.evtx
ファイルが必要かの判断に使えます。
- 入力: CSV
- プロファイル:
verbose
,all-field-info-verbose
,super-verbose
,timesketch-verbose
まず、
%RuleFile%
を出力するプロファイルを使用し、Hayabusaを実行、結果をCSVタイムラインに保存する必要があります こちらでHayabusaがプロファイルに従って、どのカラムを保存するかを確認できます。 - 出力: ターミナル または テキストファイル
必須オプション:
-r, --rules-dir <DIR>
: Hayabusaで使用した.yml
ルールファイルのディレクトリ-t, --timeline <CSV-FILE>
: HayabusaのCSVタイムライン
任意オプション:
-c, --column-name <CUSTOM-RULE-FILE-COLUMN>
: ルールファイルのカラム名を指定 (デフォルト: Hayabusaの規定値のRuleFile
)-o, --output <TXT-FILE>
: 結果を保存するテキストファイル (デフォルト: 標準出力)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでCSVタイムラインを出力する:
hayabusa.exe csv-timeline -d <EVTX-DIR> -p verbose -o timeline.csv -w
結果を標準出力に表示する:
takajo.exe list-unused-rules -t ../hayabusa/timeline.csv -r ../hayabusa/rules
結果をテキストファイルに保存する:
takajo.exe list-unused-rules -t ../hayabusa/timeline.csv -r ../hayabusa/rules -o unused-rules.txt
コンピューター名に基づき、大きなCSVタイムラインを小さなCSVタイムラインに分割します。
- 入力: 複数行モード(-M)でないCSV
- プロファイル: すべて
- 出力: 複数のCSV
必須オプション:
-t, --timeline <CSV-FILE>
: HayabusaのCSVタイムライン
任意オプション:
-m, --makeMultiline
: フィールドを複数行で出力する (デフォルト:false
)-o, --output <DIR>
: CSVを保存するディレクトリ (デフォルト:output
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでCSVタイムラインを出力する:
hayabusa.exe csv-timeline -d <EVTX-DIR> -o timeline.csv -w
1つのCSVタイムラインを複数のCSVタイムラインに分割して output
ディレクトリに出力:
takajo.exe split-csv-timeline -t ../hayabusa/timeline.csv
フィールドを改行文字で区切って複数行のエントリを作成し、case-1-csv
ディレクトリに保存:
takajo.exe split-csv-timeline -t ../hayabusa/timeline.csv -m -o case-1-csv
コンピューター名に基づき、大きなJSONLタイムラインを小さなJSONLタイムラインに分割します。
- 入力: JSONL
- プロファイル: すべて
- 出力: 複数のJSONL
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-o, --output <DIR>
: JSONLを保存するディレクトリ (デフォルト:output
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを作成する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w
1つのJSONLタイムラインを複数のJSONLタイムラインに分割して output
ディレクトリに出力:
takajo.exe split-json-timeline -t ../hayabusa/timeline.jsonl
case-1-jsonl
ディレクトリに保存:
takajo.exe split-json-timeline -t ../hayabusa/timeline.jsonl -o case-1-jsonl
Sysmon 1 と Security 4688 イベントから実行されたコマンドラインを抽出し、集計します。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-l, --level <LEVEL>
: 最小のアラートレベルを指定 (デフォルト:low
)-y, --ignoreSysmon
: Sysmon 1 イベントを除外 (デフォルト:false
)-e, --ignoreSecurity
: Security 4688 イベントを除外 (デフォルト:false
)-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
ターミナルに出力する:
takajo.exe stack-cmdlines -t ../hayabusa/timeline.jsonl
CSVに保存する:
takajo.exe stack-cmdlines -t ../hayabusa/timeline.jsonl -o stack-cmdlines.csv
Computerフィールドに従い、コンピュータ名を集計します。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-l, --level <LEVEL>
: 最小のアラートレベルを指定 (デフォルト:infomational
)-c, --sourceComputers
: ターゲットコンピュータ名の代わりにソースコンピュータ名を集計する (デフォルト: false)-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)-s, --skipProgressBar
: プログレスバーを出力しない (デフォルト:false
)
ターミナルに出力する:
takajo.exe stack-computers -t ../hayabusa/timeline.jsonl
CSVに保存する:
takajo.exe stack-computers -t ../hayabusa/timeline.jsonl -o stack-computers.csv
Sysmon 22 イベントからDNSクエリとレスポンスを抽出し、集計します。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-l, --level <LEVEL>
: 最小のアラートレベルを指定 (デフォルト:informational
)-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
ターミナルに出力する:
takajo.exe stack-dns -t ../hayabusa/timeline.jsonl
CSVに保存する:
takajo.exe stack-dns -t ../hayabusa/timeline.jsonl -o stack-dns.csv
ターゲットIP (TgtIP
field) またはソースIP (SrcIP
field)を集計する
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション::
-l, --level <LEVEL>
: 最小のアラートレベルを指定 (デフォルト:infomational
)-a, --targetIpAddresses
: ソースIPのかわりにターゲットIPを集計する (デフォルト:false
)-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)-s, --skipProgressBar
: プログレスバーを出力しない (デフォルト:false
)
ターミナルに出力する:
takajo.exe stack-ip-addresses -t ../hayabusa/timeline.jsonl
CSVに保存する:
takajo.exe stack-ip-addresses -t ../hayabusa/timeline.jsonl -o stack-ip-addresses.csv
Target User
、Target Computer
、Logon Type
、Source IP Address
、Source Computer
によってログインのリストを作成します。
デフォルトでは、ローカルIPアドレスのソースIPアドレスはフィルタされます。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナルまたはCSVファイル
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-l, --localSrcIpAddresses
: ソースIPアドレスがローカルIPアドレスであっても結果に含む-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
デフォルトの設定で実行する:
takajo.exe stack-logons -t ../hayabusa/timeline.jsonl
ローカルログオンを含む:
takajo.exe stack-logons -t ../hayabusa/timeline.jsonl -l
Sysmon 1 と Security 4688 イベントから実行されたプロセスを抽出し、集計します。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-l, --level <LEVEL>
: 最小のアラートレベルを指定 (デフォルト:low
)-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
ターミナルに出力する:
takajo.exe stack-processes -t ../hayabusa/timeline.jsonl
CSVに保存する:
takajo.exe stack-processes -t ../hayabusa/timeline.jsonl -o stack-processes.csv
System 7040 と Security 4697 イベントからサービス名とパスを抽出し、集計します。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-l, --level <LEVEL>
: 最小のアラートレベルを指定 (デフォルト:infomational
)-y, --ignoreSystem
: System 7040 イベントを除外 (デフォルト:false
)-e, --ignoreSecurity
: Security 4697 イベントを除外 (デフォルト:false
)-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
ターミナルに出力する:
takajo.exe stack-services -t ../hayabusa/timeline.jsonl
CSVに保存する:
takajo.exe stack-services -t ../hayabusa/timeline.jsonl -o stack-services.csv
Security 4698 イベントから作成されたスケジュールタスクを抽出し、集計します。またタスクXMLをパースします。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-l, --level <LEVEL>
: 最小のアラートレベルを指定 (デフォルト:infomational
)-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
ターミナルに出力する:
takajo.exe stack-tasks -t ../hayabusa/timeline.jsonl
CSVに保存する:
takajo.exe stack-tasks -t ../hayabusa/timeline.jsonl -o stack-tasks.csv
ターゲットユーザー (TgtUser
フィールド(デフォルト)) またはソースユーザー (SrcUser
フィールド) を含むイベントからユーザ名を集計し、加えて検知ルール名を出力する
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-s, --sourceUsers
: ターゲットユーザーのかわりにソースユーザーを集計する (デフォルト: false)-c, --filterComputerAccounts
: コンピューターアカウントを除外する (デフォルト: true)-f, --filterSystemAccounts
: システムアカウントを除外する (デフォルト: true)-l, --level <LEVEL>
: 最小のアラートレベルを指定 (デフォルト:infomational
)-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)-s, --skipProgressBar
: プログレスバーを出力しない (デフォルト:false
)
ターミナルに出力する:
takajo.exe stack-users -t ../hayabusa/timeline.jsonl
CSVに保存する:
takajo.exe stack-users -t ../hayabusa/timeline.jsonl -o stack-users.csv
不審なプロセスや悪意のあるプロセスなど、特定のプロセスのプロセスツリーを出力します。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: テキストファイル
必須オプション:
-o, --output <TXT-FILE>
: 結果を保存するテキストファイル-p, --processGuid <Process GUID>
: SysmonのプロセスGUID-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを作成する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w
結果をテキストファイルに保存する:
takajo.exe sysmon-process-tree -t ../hayabusa/timeline.jsonl -p "365ABB72-3D4A-5CEB-0000-0010FA93FD00" -o process-tree.txt
このコマンドは、次のログオンイベントから情報を抽出し、フィールドを正規化し、結果をCSVファイルに保存します:
4624
- ログオン成功4625
- ログオン失敗4634
- アカウントログオフ4647
- ユーザーが開始したログオフ4648
- 明示的なログオン4672
- 特権ログオン
これにより、ラテラルムーブメント、パスワードスプレー、権限昇格などを検出しやすくなります。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: CSV
必須オプション:
-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-c, --calculateElapsedTime
: 成功ログオンの経過時間を計算する (デフォルト:true
)-l, --outputLogoffEvents
: ログオフイベントを別のエントリとして出力する (デフォルト:false
)-a, --outputAdminLogonEvents
: 管理者ログオン イベントを別のエントリとして出力する (デフォルト:false
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを作成する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w
ログオンタイムラインをCSVに保存する:
takajo.exe timeline-logon -t ../hayabusa/timeline.jsonl -o logon-timeline.csv
partition diagnosticイベントのCSVタイムラインを作成します。Windows 10のMicrosoft-Windows-Partition%4Diagnostic.evtx
を解析し、現在および過去に接続されたデバイスのボリュームシリアル番号を出力します。
この処理は Partition-4DiagnosticParserを参考にして作成されました。
- 入力: JSONL
- プロファイル: すべて
- 出力: CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを作成する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w
接続されたデバイスのCSVタイムラインを作成する:
takajo.exe timeline-partition-diagnostic -t ../hayabusa/timeline.jsonl -o partition-diagnostic-timeline.csv
不審なプロセスのCSVタイムラインを作成します。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-l, --level <LEVEL>
: 最小のアラートレベルを指定 (デフォルト:high
)-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを作成する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w
アラートレベルがhigh
以上のプロセスを検索し、結果を標準出力に表示:
takajo.exe timeline-suspicious-process -t ../hayabusa/timeline.jsonl
アラートレベルがlow
以上のプロセスを検索し、結果を標準出力に表示:
takajo.exe timeline-suspicious-process -t ../hayabusa/timeline.jsonl -l low
結果をCSVに保存:
takajo.exe timeline-suspicious-process -t ../hayabusa/timeline.jsonl -o suspicous-processes.csv
Security 4698 イベントからスケジュールタスク作成を抽出し、 タスクXMLをパースします。
- 入力: JSONL
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
ターミナルに出力する:
takajo.exe timeline-tasks -t ../hayabusa/timeline.jsonl
CSVに保存する:
takajo.exe timeline-tasks -t ../hayabusa/timeline.jsonl -o timeline-tasks.csv
このコマンドは、Sigmaルールの「tags」フィールドで定義された MITRE ATT&CK TTP に従って、各コンピュータで見つかった戦術とテクニックの要約を出力します。
- 入力: JSONL
- プロファイル:
%MitreTactics%
と%MitreTags%
フィールドを出力するプロファイル (例:verbose
,all-field-info-verbose
,super-verbose
) - 出力: ターミナル または CSV
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-o, --output <CSV-FILE>
: 結果を保存するCSVファイル-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを作成する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w -p verbose
TTPsの要約を表示する:
takajo.exe ttp-summary -t ../hayabusa/timeline.jsonl
結果をCSVに保存:
takajo.exe ttp-summary -t ../hayabusa/timeline.jsonl -o ttp-summary.csv
TTPsを抽出し、MITRE ATT&CK Navigatorで視覚化するための JSON ファイルを作成します。
- 入力: JSONL
- プロファイル:
%MitreTactics%
と%MitreTags%
フィールドを出力するプロファイル (例:verbose
,all-field-info-verbose
,super-verbose
) - 出力: JSON
必須オプション:
-t, --timeline <JSONL-FILE-OR-DIR>
: HayabusaのJSONLタイムラインまたはディレクトリ
任意オプション:
-o, --output <JSON-FILE>
: 結果を保存するJSONファイル (デフォルト:mitre-ttp-heatmap.json
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
HayabusaでJSONLタイムラインを作成する:
hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w -p verbose
TTPsを抽出し、mitre-ttp-heatmap.json
に保存する:
takajo.exe ttp-visualize -t ../hayabusa/timeline.jsonl
https://mitre-attack.github.io/attack-navigator/を開き、Open Existing Layer
をクリック、JSONファイルをアップロードする。
TTPsをSigmaルールから抽出し、MITRE ATT&CK Navigatorで視覚化するための JSON ファイルを作成します。
- 入力: Sigmaルールディレクトリ
- 出力: JSON
必須オプション:
-r, --ruleDir <SIGMA-DIR>
: Sigmaルールディレクトリ
任意オプション:
-o, --output <JSON-FILE>
: 結果を保存するJSONファイル (デフォルト:sigma-rules-heatmap.json
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
Sigmaリポジトリをクローンします:
git clone https://github.com/SigmaHQ/sigma.git
TTPsを抽出し sigma-rules-heatmap.json
に保存します。:
takajo.exe ttp-visualize-sigma -r ../sigma
VirusTotalでドメインのリストを検索します。
- 入力: テキストファイル
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: CSV
必須オプション:
-a, --apiKey <API-KEY>
: VirusTotalのAPIキー-d, --domainList <TXT-FILE>
: ドメイン一覧のテキストファイル-o, --output <CSV-FILE>
: 結果を保存するCSV
任意オプション:
-j, --jsonOutput <JSON-FILE>
: VirusTotalからのすべてのJSONレスポンスを出力するJSONファイル-r, --rateLimit <NUMBER>
: 1分間に送るリクエスト数レート制限 (デフォルト:4
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
はじめに、list-domains
コマンドでドメイン一覧を作成し、その後
次のコマンドを使用してそれらのドメインを検索します:
takajo.exe vt-domain-lookup -a <API-KEY> -d domains.txt -o vt-domain-lookup.csv -r 1000 -j vt-domain-lookup.json
VirusTotalでハッシュのリストを検索します。
- 入力: テキストファイル
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: CSV
必須オプション:
-a, --apiKey <API-KEY>
: VirusTotalのAPIキー-H, --hashList <HASH-LIST>
: ハッシュ値一覧のテキスト-o, --output <CSV-FILE>
: 結果を保存するCSV
任意オプション:
-j, --jsonOutput <JSON-FILE>
: VirusTotalからのすべてのJSONレスポンスを出力するJSONファイル-r, --rateLimit <NUMBER>
: 1分間に送るリクエスト数レート制限 (デフォルト:4
)-q, --quiet
: ロゴを出力しない (デフォルト:false
)
takajo.exe vt-hash-lookup -a <API-KEY> -H MD5-hashes.txt -o vt-hash-lookup.csv -r 1000 -j vt-hash-lookup.json
VirusTotalでIPアドレスのリストを検索します。
- 入力: テキストファイル
- プロファイル:
all-field-info
とall-field-info-verbose
以外すべて - 出力: CSV
必須オプション:
-a, --apiKey <API-KEY>
: VirusTotalのAPIキー-i, --ipList <IP-ADDRESS-LIST>
: IPアドレスのテキストファイル-o, --output <CSV-FILE>
: 結果を保存するCSV
任意オプション:
-j, --jsonOutput <JSON-FILE>
: VirusTotalからのすべてのJSONレスポンスを出力するJSONファイル-r, --rateLimit <NUMBER>
: 1分間に送るリクエスト数レート制限 (デフォルト:4
)-q, --quiet
: ロゴを表示しない (デフォルト:false
)
takajo.exe vt-ip-lookup -a <API-KEY> -i ipAddresses.txt -o vt-ip-lookup.csv -r 1000 -j vt-ip-lookup.json
どのような形でも構いませんので、ご協力をお願いします。プルリクエスト、ルール作成、evtxログのサンプルなどがベストですが、機能リクエスト、バグの通知なども大歓迎です。
少なくとも、私たちのツールを気に入っていただけたなら、GitHubで星を付けて、あなたのサポートを表明してください。
このプロジェクトは活発なメンテナンスを行っています。 見つけたバグをこちらでご連絡ください。報告されたバグを喜んで修正します!
もし、Hayabusaで何かしらの問題(フォルスポジティブ、 バグ、その他)を見つけましたら、こちら でご連絡ください。
もし、Hayabusaルールで何かしらの問題(フォルスポジティブ、 バグ、その他)を見つけましたら、こちら でご連絡ください。
もし、Sigmaルールで何かしらの問題(フォルスポジティブ、 バグ、その他)を見つけましたら、SigmaHQのこちら でご連絡ください。
TakajōはAGPLv3ライセンスで公開されています。
@SecurityYamatoでTakajō`、 Hayabusa、ルール更新、その他の大和セキュリティツール等々について情報を提供しています。