Skip to content

Latest commit

 

History

History
1304 lines (873 loc) · 52 KB

README-Japanese.md

File metadata and controls

1304 lines (873 loc) · 52 KB

Takajo Logō

[ English ] | [ 日本語 ]

Takajoについて

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使用, 不審プロセス, タスクなどのタイムラインを作成します。
  • その他、たくさん!

ダウンロード

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

Gitクローン

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

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

git clone https://github.com/Yamato-Security/takajo.git

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

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

> nimble update
> nimble build -d:release --threads:on

コマンド一覧

Automationコマンド

  • automagic: 多くのコマンドを自動的に実行し、結果を新しいフォルダーに出力する

Extractコマンド

  • extract-scriptblocks: PowerShell EID 4104 スクリプトブロックログからPowerShellスクリプトを抽出して再構築する

Listコマンド

  • 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コマンド

  • split-csv-timeline: コンピューター名に基づき、大きなCSVタイムラインを小さなCSVタイムラインに分割する
  • split-json-timeline: コンピューター名に基づき、大きなJSONLタイムラインを小さなJSONLタイムラインに分割する

Stackコマンド

  • 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コマンド

  • sysmon-process-tree: プロセスツリーを出力する

Timelineコマンド

  • timeline-logon: ログオンイベントのCSVタイムラインを作成する
  • timeline-suspicious-processes: 不審なプロセスのCSVタイムラインを作成する
  • timeline-partition-diagnostic: partition diagnosticイベントのCSVタイムラインを作成する
  • timeline-tasks: スケジュールタスクのCSVタイムラインを作成する

TTP Commands

  • ttp-summary: コンピュータ毎に検知されたTTPsの要約を出力する
  • ttp-visualize: TTPs を抽出し、MITRE ATT&CK Navigator で視覚化するためのJSONファイルを作成する
  • ttp-visualize-sigma: TTPs をSigmaルールから抽出し、MITRE ATT&CK Navigator で視覚化するためのJSONファイルを作成する

VirusTotalコマンド

  • vt-domain-lookup: VirusTotalでドメインのリストを検索し、悪意のあるドメインをレポートする
  • vt-hash-lookup: VirusTotalでハッシュのリストを検索し、悪意のあるハッシュ値をレポートする
  • vt-ip-lookup: VirusTotalでIPアドレスのリストを検索し、悪意のあるIPアドレスをレポートする

コマンド使用方法

Automationコマンド

automagicコマンド

多くのコマンドを自動的に実行し、結果を新しいフォルダーに出力する

注意: すべてのコマンドを使用するには、verboseまたはsuper-verboseプロファイルを使用する必要があります。

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose 以外すべて
  • 出力: すべての結果ファイルが出力されたフォルダー

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -d, --displayTable: テーブル結果をターミナルに出力する (default: false)
  • -l, --level: 最小のアラートレベルを指定 (デフォルト: informational)
  • -o, --output: 出力ディレクトリ (デフォルト: case-1)
  • -q, --quiet: ロゴを出力しない (デフォルト: false)
  • -s, --skipProgressBar: プログレスバーを出力しない (デフォルト: false)

automagicコマンドの使用例

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

Extractコマンド

extract-scriptblocksコマンド

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)

extract-scriptblocksコマンドの使用例

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

extract-scriptblocksスクリーンショット

extract-scriptblocks

Listコマンド

list-domainsコマンド

vt-domain-lookup で使用する重複のないドメインのリストを作成します。 現在は、Sysmon EID 22ログでクエリが記録されたドメインのみをチェックしますが、ビルトインのWindows DNSクライアント・サーバーログも今後サポート予定です。

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose 以外すべて
  • 出力: テキストファイル

必須オプション:

  • -o, --output <TXT-FILE>: 結果を保存するテキストファイル
  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -s, --includeSubdomains: サブドメインを含めるか (デフォルト: false)
  • -w, --includeWorkstations: ローカルワークステーション名を含めるか (デフォルト: false)
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

list-domainsコマンドの使用例

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

list-hashesコマンド

vt-hash-lookupで使用するプロセスハッシュ値のリストを作成します (入力: JSONL, プロファイル: standard)

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose以外すべて
  • 出力: テキストファイル

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ
  • -o, --output <BASE-NAME>: 結果を保存するベースファイル名

任意オプション:

  • -l, --level: 最小のアラートレベルを指定 (デフォルト: high)
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

list-hashesコマンドの使用例

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

たとえば、MD5SHA1IMPHASH がSysmonログに保存されている場合、 次のファルが作成されます: case-1-MD5-hashes.txt, case-1-SHA1-hashes.txt, case-1-ImportHashes.txt

list-ip-addressesコマンド

vt-ip-lookupで使用する重複のない送信先/送信先IPアドレスのリストを作成します。すべての結果から送信先IPアドレスのTgtIPフィールドと送信元IPアドレスの SrcIPフィールドが抽出され、重複のないIPアドレスをテキストファイルに出力します。

  • 入力: JSONL
  • プロファイル: all-field-infoall-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)

list-ip-addressesコマンドの使用例

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

list-undetected-evtxコマンド

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)

list-undetected-evtxコマンドの使用例

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

list-unused-rulesコマンド

何も検出されなかったすべての.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)

list-unused-rulesコマンドの使用例

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

Splitコマンド

split-csv-timelineコマンド

コンピューター名に基づき、大きなCSVタイムラインを小さなCSVタイムラインに分割します。

  • 入力: 複数行モード(-M)でないCSV
  • プロファイル: すべて
  • 出力: 複数のCSV

必須オプション:

  • -t, --timeline <CSV-FILE>: HayabusaのCSVタイムライン

任意オプション:

  • -m, --makeMultiline: フィールドを複数行で出力する (デフォルト: false)
  • -o, --output <DIR>: CSVを保存するディレクトリ (デフォルト: output)
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

split-csv-timelineコマンドの使用例

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

split-json-timelineコマンド

コンピューター名に基づき、大きなJSONLタイムラインを小さなJSONLタイムラインに分割します。

  • 入力: JSONL
  • プロファイル: すべて
  • 出力: 複数のJSONL

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -o, --output <DIR>: JSONLを保存するディレクトリ (デフォルト: output)
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

split-json-timelineコマンドの使用例

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

Stackコマンド

stack-cmdlinesコマンド

Sysmon 1 と Security 4688 イベントから実行されたコマンドラインを抽出し、集計します。

  • 入力: JSONL
  • プロファイル: all-field-infoall-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)

stack-cmdlinesコマンドの使用例

ターミナルに出力する:

takajo.exe stack-cmdlines -t ../hayabusa/timeline.jsonl

CSVに保存する:

takajo.exe stack-cmdlines -t ../hayabusa/timeline.jsonl -o stack-cmdlines.csv

stack-computersコマンド

Computerフィールドに従い、コンピュータ名を集計します。

  • 入力: JSONL
  • プロファイル: all-field-infoall-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)

stack-computersコマンドの使用例

ターミナルに出力する:

takajo.exe stack-computers -t ../hayabusa/timeline.jsonl

CSVに保存する:

takajo.exe stack-computers -t ../hayabusa/timeline.jsonl -o stack-computers.csv

stack-dnsコマンド

Sysmon 22 イベントからDNSクエリとレスポンスを抽出し、集計します。

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose以外すべて
  • 出力: ターミナル または CSV

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -l, --level <LEVEL>: 最小のアラートレベルを指定 (デフォルト: informational)
  • -o, --output <CSV-FILE>: 結果を保存するCSVファイル
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

stack-dnsコマンドの使用例

ターミナルに出力する:

takajo.exe stack-dns -t ../hayabusa/timeline.jsonl

CSVに保存する:

takajo.exe stack-dns -t ../hayabusa/timeline.jsonl -o stack-dns.csv

stack-ip-addressesコマンド

ターゲットIP (TgtIP field) またはソースIP (SrcIP field)を集計する

  • 入力: JSONL
  • プロファイル: all-field-infoall-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)

stack-ip-addressesコマンドの使用例

ターミナルに出力する:

takajo.exe stack-ip-addresses -t ../hayabusa/timeline.jsonl

CSVに保存する:

takajo.exe stack-ip-addresses -t ../hayabusa/timeline.jsonl -o stack-ip-addresses.csv

stack-logonsコマンド

Target UserTarget ComputerLogon TypeSource IP AddressSource Computerによってログインのリストを作成します。 デフォルトでは、ローカルIPアドレスのソースIPアドレスはフィルタされます。

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose以外すべて
  • 出力: ターミナルまたはCSVファイル

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -l, --localSrcIpAddresses: ソースIPアドレスがローカルIPアドレスであっても結果に含む
  • -o, --output <CSV-FILE>: 結果を保存するCSVファイル
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

stack-logonsコマンドの使用例

デフォルトの設定で実行する:

takajo.exe stack-logons -t ../hayabusa/timeline.jsonl

ローカルログオンを含む:

takajo.exe stack-logons -t ../hayabusa/timeline.jsonl -l

stack-processesコマンド

Sysmon 1 と Security 4688 イベントから実行されたプロセスを抽出し、集計します。

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose以外すべて
  • 出力: ターミナル または CSV

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -l, --level <LEVEL>: 最小のアラートレベルを指定 (デフォルト: low)
  • -o, --output <CSV-FILE>: 結果を保存するCSVファイル
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

stack-processesコマンドの使用例

ターミナルに出力する:

takajo.exe stack-processes -t ../hayabusa/timeline.jsonl

CSVに保存する:

takajo.exe stack-processes -t ../hayabusa/timeline.jsonl -o stack-processes.csv

stack-servicesコマンド

System 7040 と Security 4697 イベントからサービス名とパスを抽出し、集計します。

  • 入力: JSONL
  • プロファイル: all-field-infoall-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)

stack-servicesコマンドの使用例

ターミナルに出力する:

takajo.exe stack-services -t ../hayabusa/timeline.jsonl

CSVに保存する:

takajo.exe stack-services -t ../hayabusa/timeline.jsonl -o stack-services.csv

stack-tasksコマンド

Security 4698 イベントから作成されたスケジュールタスクを抽出し、集計します。またタスクXMLをパースします。

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose以外すべて
  • 出力: ターミナル または CSV

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -l, --level <LEVEL>: 最小のアラートレベルを指定 (デフォルト: infomational)
  • -o, --output <CSV-FILE>: 結果を保存するCSVファイル
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

stack-tasksコマンドの使用例

ターミナルに出力する:

takajo.exe stack-tasks -t ../hayabusa/timeline.jsonl

CSVに保存する:

takajo.exe stack-tasks -t ../hayabusa/timeline.jsonl -o stack-tasks.csv

stack-usersコマンド

ターゲットユーザー (TgtUserフィールド(デフォルト)) またはソースユーザー (SrcUserフィールド) を含むイベントからユーザ名を集計し、加えて検知ルール名を出力する

  • 入力: JSONL
  • プロファイル: all-field-infoall-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)

stack-usersコマンドの使用例

ターミナルに出力する:

takajo.exe stack-users -t ../hayabusa/timeline.jsonl

CSVに保存する:

takajo.exe stack-users -t ../hayabusa/timeline.jsonl -o stack-users.csv

Sysmonコマンド

sysmon-process-treeコマンド

不審なプロセスや悪意のあるプロセスなど、特定のプロセスのプロセスツリーを出力します。

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose以外すべて
  • 出力: テキストファイル

必須オプション:

  • -o, --output <TXT-FILE>: 結果を保存するテキストファイル
  • -p, --processGuid <Process GUID>: SysmonのプロセスGUID
  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -q, --quiet: ロゴを出力しない (デフォルト: false)

sysmon-process-treeコマンドの使用例

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

sysmon-process-treeスクリーンショット

sysmon-process-tree

Timelineコマンド

timeline-logonコマンド

このコマンドは、次のログオンイベントから情報を抽出し、フィールドを正規化し、結果をCSVファイルに保存します:

  • 4624 - ログオン成功
  • 4625 - ログオン失敗
  • 4634 - アカウントログオフ
  • 4647 - ユーザーが開始したログオフ
  • 4648 - 明示的なログオン
  • 4672 - 特権ログオン

これにより、ラテラルムーブメント、パスワードスプレー、権限昇格などを検出しやすくなります。

  • 入力: JSONL
  • プロファイル: all-field-infoall-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)

timeline-logonコマンドの使用例

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

timeline-logonスクリーンショット

timeline-logon

timeline-partition-diagnosticコマンド

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)

timeline-partition-diagnosticコマンドの使用例

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

timeline-suspicious-processesコマンド

不審なプロセスのCSVタイムラインを作成します。

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose以外すべて
  • 出力: CSV

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -l, --level <LEVEL>: 最小のアラートレベルを指定 (デフォルト: high)
  • -o, --output <CSV-FILE>: 結果を保存するCSVファイル
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

timeline-suspicious-processesコマンドの使用例

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

timeline-suspicious-processesスクリーンショット

timeline-suspicious-processes

timeline-tasksコマンド

Security 4698 イベントからスケジュールタスク作成を抽出し、 タスクXMLをパースします。

  • 入力: JSONL
  • プロファイル: all-field-infoall-field-info-verbose以外すべて
  • 出力: ターミナル または CSV

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -o, --output <CSV-FILE>: 結果を保存するCSVファイル
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

timeline-tasksコマンドの使用例

ターミナルに出力する:

takajo.exe timeline-tasks -t ../hayabusa/timeline.jsonl

CSVに保存する:

takajo.exe timeline-tasks -t ../hayabusa/timeline.jsonl -o timeline-tasks.csv

TTPコマンド

ttp-summaryコマンド

このコマンドは、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)

ttp-summaryコマンドの使用例

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

ttp-summaryスクリーンショット

ttp-summary

ttp-visualize-sigmaコマンド

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)

ttp-visualizeコマンドの使用例

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ファイルをアップロードする。

ttp-visualizeスクリーンショット

ttp-visualize

ttp-visualize-sigmaコマンド

TTPsをSigmaルールから抽出し、MITRE ATT&CK Navigatorで視覚化するための JSON ファイルを作成します。

  • 入力: JSONL
  • プロファイル: A profile that outputs %MitreTactics% and %MitreTags% fields. (Ex: verbose, all-field-info-verbose, super-verbose)
  • 出力: ターミナル または CSV

必須オプション:

  • -t, --timeline <JSONL-FILE-OR-DIR>: HayabusaのJSONLタイムラインまたはディレクトリ

任意オプション:

  • -o, --output <JSON-FILE>: the JSON file to save the results to. (デフォルト: sigma-rules-heatmap.json)
  • -q, --quiet: ロゴを出力しない (デフォルト: false)

ttp-visualize-sigmaコマンドの使用例

HayabusaでJSONLタイムラインを作成する:

hayabusa.exe json-timeline -d <EVTX-DIR> -L -o timeline.jsonl -w -p verbose

TTPsを抽出し sigma-rules-heatmap.jsonに保存します。:

takajo.exe ttp-visualize-sigma -t ../hayabusa/timeline.jsonl

VirusTotalコマンド

vt-domain-lookupコマンド

VirusTotalでドメインのリストを検索します。

  • 入力: テキストファイル
  • プロファイル: all-field-infoall-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)

vt-domain-lookupコマンドの使用例

はじめに、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

vt-hash-lookupコマンド

VirusTotalでハッシュのリストを検索します。

  • 入力: テキストファイル
  • プロファイル: all-field-infoall-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)

vt-hash-lookupコマンドの使用例

takajo.exe vt-hash-lookup -a <API-KEY> -H MD5-hashes.txt -o vt-hash-lookup.csv -r 1000 -j vt-hash-lookup.json

vt-ip-lookupコマンド

VirusTotalでIPアドレスのリストを検索します。

  • 入力: テキストファイル
  • プロファイル: all-field-infoall-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)

vt-ip-lookupコマンドの使用例

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ōはGPLv3ライセンスで公開されています。

Twitter

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