Skip to content

Commit

Permalink
Merge pull request #61 from Yamato-Security/finalize-2.1.0
Browse files Browse the repository at this point in the history
finalize 2.1.0
  • Loading branch information
YamatoSecurity authored Nov 1, 2023
2 parents f725b38 + 0704491 commit 82f8346
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 26 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG-Japanese.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 変更点

## x.x.x [xxxx/xx/xx]
## 2.1.0 [2023/10/31] - Halloween Release

**新機能:**

Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changes

## x.x.x [xxxx/xx/xx]
## 2.1.0 [2023/10/31] - Halloween Release

**New Features:**

Expand Down
65 changes: 54 additions & 11 deletions README-Japanese.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,17 @@ Takajōは、日本語で["鷹狩りのスキルに優れた人"](https://en.wik
- [Gitクローン](#gitクローン)
- [アドバンス: ソースコードからのコンパイル(任意)](#アドバンス-ソースコードからのコンパイル任意)
- [コマンド一覧](#コマンド一覧)
- [Extractコマンド](#extractコマンド)
- [Listコマンド](#listコマンド)
- [Splitコマンド](#splitコマンド)
- [Stackコマンド](#stackコマンド)
- [Sysmonコマンド](#sysmonコマンド)
- [Timelineコマンド](#timelineコマンド)
- [VirusTotalコマンド](#virustotalコマンド)
- [コマンド使用方法](#コマンド使用方法)
- [Extractコマンド](#extractコマンド-1)
- [`extract-scriptblocks`コマンド](#extract-scriptblocksコマンド)
- [`extract-scriptblocks`コマンドの使用例](#extract-scriptblocksコマンドの使用例)
- [Listコマンド](#listコマンド-1)
- [`list-domains`コマンド](#list-domainsコマンド)
- [`list-domains`コマンドの使用例](#list-domainsコマンドの使用例)
Expand Down Expand Up @@ -113,11 +117,14 @@ Nimがインストールされている場合、以下のコマンドでソー

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

# コマンド一覧

## Extractコマンド
* `extract-scriptblocks`: PowerShell EID 4104 スクリプトブロックログからPowerShellスクリプトを抽出して再構築する

## Listコマンド
* `list-domains`: `vt-domain-lookup`コマンドで使用する、重複のないドメインのリストを作成する
* `list-hashes`: `vt-hash-lookup` で使用するプロセスのハッシュ値のリストを作成する
Expand Down Expand Up @@ -146,6 +153,42 @@ Nimがインストールされている場合、以下のコマンドでソー

# コマンド使用方法

## Extractコマンド

### `extract-scriptblocks`コマンド

PowerShell EID 4104 スクリプトブロックログからPowerShellスクリプトを抽出して再構築します。

> 注意: PowerShellスクリプトは、コード構文が強調表示された「.ps1」ファイルとして開くのが最適ですが、悪意のあるコードが誤って実行されるのを防ぐために「.txt」拡張子を使用します。
* 入力: `JSONL`
* プロファイル: `すべて`
* 出力: `PowerShellスクリプト`

必須オプション:

- `-t, --timeline <JSONL-FILE>`: 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
```

## Listコマンド

### `list-domains`コマンド
Expand Down Expand Up @@ -174,7 +217,7 @@ Nimがインストールされている場合、以下のコマンドでソー
HayabusaでJSONLタイムラインを出力する:

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

結果をテキストファイルに保存する:
Expand Down Expand Up @@ -212,7 +255,7 @@ takajo.exe list-domains -t ../hayabusa/timeline.jsonl -o domains.txt -s
HayabusaでJSONLタイムラインを作成する:

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

ハッシュタイプ毎に異なるファイルに結果を保存する:
Expand Down Expand Up @@ -249,7 +292,7 @@ takajo.exe list-hashes -t ../hayabusa/timeline.jsonl -o case-1
HayabusaでJSONLタイムラインを作成する:

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

結果をテキストファイルに保存する:
Expand Down Expand Up @@ -295,7 +338,7 @@ Hayabusaで検知するルールがなかったすべての`.evtx`ファイル
HayabusaでCSVタイムラインを出力する:

```
hayabusa.exe -d <EVTX-DIR> -p verbose -o timeline.csv
hayabusa.exe -d <EVTX-DIR> -p verbose -o timeline.csv -w
```

結果を標準出力に表示する:
Expand Down Expand Up @@ -336,7 +379,7 @@ takajo.exe list-undetected-evtx -t ../hayabusa/timeline.csv -e <EVTX-DIR> -o und
HayabusaでCSVタイムラインを出力する:

```
hayabusa.exe csv-timeline -d <EVTX-DIR> -p verbose -o timeline.csv
hayabusa.exe csv-timeline -d <EVTX-DIR> -p verbose -o timeline.csv -w
```

結果を標準出力に表示する:
Expand Down Expand Up @@ -376,7 +419,7 @@ takajo.exe list-unused-rules -t ../hayabusa/timeline.csv -r ../hayabusa/rules -o
HayabusaでCSVタイムラインを出力する:

```
hayabusa.exe csv-timeline -d <EVTX-DIR> -o timeline.csv
hayabusa.exe csv-timeline -d <EVTX-DIR> -o timeline.csv -w
```

1つのCSVタイムラインを複数のCSVタイムラインに分割して `output` ディレクトリに出力:
Expand Down Expand Up @@ -413,7 +456,7 @@ takajo.exe split-csv-timeline -t ../hayabusa/timeline.csv -m -o case-1-csv
HayabusaでJSONLタイムラインを作成する:

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

1つのJSONLタイムラインを複数のJSONLタイムラインに分割して `output` ディレクトリに出力:
Expand Down Expand Up @@ -466,7 +509,7 @@ takajo.exe stack-remote-logons -t ../hayabusa/timeline.jsonl
HayabusaでJSONLタイムラインを作成する:

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

結果をテキストファイルに保存する:
Expand Down Expand Up @@ -511,7 +554,7 @@ takajo.exe sysmon-process-tree -t ../hayabusa/timeline.jsonl -p "365ABB72-3D4A-5
HayabusaでJSONLタイムラインを作成する:

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

ログオンタイムラインをCSVに保存する:
Expand Down Expand Up @@ -543,7 +586,7 @@ takajo.exe timeline-logon -t ../hayabusa/timeline.jsonl -o logon-timeline.csv
HayabusaでJSONLタイムラインを作成する:

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

アラートレベルが`high`以上のプロセスを検索し、結果を標準出力に表示:
Expand Down
65 changes: 54 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,17 @@ Takajō means ["Falconer"](https://en.wikipedia.org/wiki/Falconry) in Japanese a
- [Git cloning](#git-cloning)
- [Advanced: Compiling From Source (Optional)](#advanced-compiling-from-source-optional)
- [Command List](#command-list)
- [Extract Commands](#extract-commands)
- [List Commands](#list-commands)
- [Split Commands](#split-commands)
- [Stack Commands](#stack-commands)
- [Sysmon Commands](#sysmon-commands)
- [Timeline Commands](#timeline-commands)
- [VirusTotal Commands](#virustotal-commands)
- [Command Usage](#command-usage)
- [Extract Commands](#extract-commands-1)
- [`extract-scriptblocks` command](#extract-scriptblocks-command)
- [`extract-scriptblocks` command example](#extract-scriptblocks-command-example)
- [List Commands](#list-commands-1)
- [`list-domains` command](#list-domains-command)
- [`list-domains` command examples](#list-domains-command-examples)
Expand Down Expand Up @@ -115,11 +119,14 @@ If you have Nim installed, you can compile from source with the following comman

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

# Command List

## Extract Commands
* `extract-scriptblocks`: extract and reassemble PowerShell EID 4104 script block logs

## List Commands
* `list-domains`: create a list of unique domains to be used with `vt-domain-lookup`
* `list-hashes`: create a list of process hashes to be used with `vt-hash-lookup`
Expand Down Expand Up @@ -148,6 +155,42 @@ If you have Nim installed, you can compile from source with the following comman

# Command Usage

## Extract Commands

### `extract-scriptblocks` command

Extracts and reassemles PowerShell EID 4104 script block logs.

> Note: The PowerShell scripts are best opened as `.ps1` files with code syntax highlighting but we use the `.txt` extension in order to prevent any accidental running of malicious code.
* Input: `JSONL`
* Profile: Any
* Output: `PowerShell Scripts`

Required options:

- `-t, --timeline <JSONL-FILE>`: Hayabusa JSONL timeline

Options:

- `-l, --level`: specify the minimum alert level (default: `low`)
- `-o, --output`: output directory (default: `scriptblock-logs`)
- `-q, --quiet`: do not display the launch banner (default: `false`)

#### `extract-scriptblocks` command example

Prepare the JSONL timeline with Hayabusa:

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

Extract PowerShell EID 4104 script block logs to the `scriptblock-logs` directory:

```
takajo.exe extract-scriptblocks -t ../hayabusa/timeline.jsonl
```

## List Commands

### `list-domains` command
Expand Down Expand Up @@ -175,7 +218,7 @@ Options:
Prepare the JSONL timeline with Hayabusa:

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

Save the results to a text file:
Expand Down Expand Up @@ -213,7 +256,7 @@ Options:
Prepare JSONL timeline with Hayabusa:

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

Save the results to a different text file for each hash type:
Expand Down Expand Up @@ -250,7 +293,7 @@ Options:
Prepare the JSONL timeline with Hayabusa:

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

Save the results to a text file:
Expand Down Expand Up @@ -298,7 +341,7 @@ Options:
Prepare the CSV timeline with Hayabusa:

```
hayabusa.exe -d <EVTX-DIR> -p verbose -o timeline.csv
hayabusa.exe -d <EVTX-DIR> -p verbose -o timeline.csv -w
```

Output the results to screen:
Expand Down Expand Up @@ -341,7 +384,7 @@ Options:
Prepare the CSV timeline with Hayabusa:

```
hayabusa.exe csv-timeline -d <EVTX-DIR> -p verbose -o timeline.csv
hayabusa.exe csv-timeline -d <EVTX-DIR> -p verbose -o timeline.csv -w
```

Output the results to screen:
Expand Down Expand Up @@ -381,7 +424,7 @@ Options:
Prepare the CSV timeline with Hayabusa:

```
hayabusa.exe csv-timeline -d <EVTX-DIR> -o timeline.csv
hayabusa.exe csv-timeline -d <EVTX-DIR> -o timeline.csv -w
```

Split the single CSV timeline into multiple CSV timelines in the default `output` directory:
Expand Down Expand Up @@ -418,7 +461,7 @@ Options:
Prepare the JSONL timeline with Hayabusa:

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

Split the single JSONL timeline into multiple JSONL timelines in the default `output` directory:
Expand Down Expand Up @@ -493,7 +536,7 @@ Options:
Prepare JSONL timeline with Hayabusa:

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

Save the results to a text file:
Expand Down Expand Up @@ -538,7 +581,7 @@ Options:
Prepare JSONL timeline with Hayabusa:

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

Save logon timeline to a CSV file:
Expand Down Expand Up @@ -570,7 +613,7 @@ Options:
Prepare JSONL timeline with Hayabusa:

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

Search for processes that had an alert level of `high` or above and output results to screen:
Expand Down
4 changes: 2 additions & 2 deletions src/takajo.nim
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ include takajopkg/vtIpLookup
include takajopkg/vtHashLookup

when isMainModule:
clCfg.version = "2.1.0-dev"
clCfg.version = "2.1.0"
const examples = "Examples:\p"
const example_extract_scriptblocks = " extract-scriptblocks -t ../hayabusa/timeline.jsonl [--level low] -o scriptblock-logs\p"
const example_list_domains = " list-domains -t ../hayabusa/timeline.jsonl -o domains.txt\p"
Expand All @@ -53,7 +53,7 @@ when isMainModule:
const example_vt_hash_lookup = " vt-hash-lookup -a <API-KEY> --hashList case-1-MD5-hashes.txt -r 1000 -o results.csv --jsonOutput responses.json\p"
const example_vt_ip_lookup = " vt-ip-lookup -a <API-KEY> --ipList ipAddresses.txt -r 1000 -o results.csv --jsonOutput responses.json\p"

clCfg.useMulti = "Version: 2.1.0-dev\pUsage: takajo.exe <COMMAND>\p\pCommands:\p$subcmds\pCommand help: $command help <COMMAND>\p\p" &
clCfg.useMulti = "Version: 2.1.0 Halloween Release\pUsage: takajo.exe <COMMAND>\p\pCommands:\p$subcmds\pCommand help: $command help <COMMAND>\p\p" &
examples & example_extract_scriptblocks & example_list_domains & example_list_hashes & example_list_ip_addresses & example_list_undetected_evtx & example_list_unused_rules &
example_split_csv_timeline & example_split_json_timeline & example_stack_logons & example_sysmon_process_tree &
example_timeline_logon & example_timeline_suspicious_processes &
Expand Down

0 comments on commit 82f8346

Please sign in to comment.