hernannh/rocket
GitHub: hernannh/rocket
蓝队轻量级日志分析工具包,单文件零依赖,支持 11 种日志格式自动解析并集成 Sigma 检测、IOC 提取、GeoIP 解析与多源时间线构建。
Stars: 0 | Forks: 0
# Rocket
[](https://go.dev)
[](https://github.com/hernannh/rocket/releases)
[](LICENSE)
[](https://github.com/hernannh/rocket/releases)
[](#supported-log-formats)
[](#sigma)
[](#geoip)
**蓝队日志分析工具包** — 几秒钟内将任何日志格式转换为结构化的 CSV 或 JSON。一个单一的静态二进制文件,可以解析、过滤、关联和丰富来自防火墙、SIEM、Windows EVTX、syslog、DNS 等的日志。
Rocket 专为 SOC 分析师、事件响应人员和取证调查人员打造,满足他们在任何机器上无需安装依赖项即可快速处理日志的需求。
### SSH 暴力破解分析

### FortiGate IPS 分析

### Nginx Web 服务器分析

## 为什么选择 Rocket?
- **CSV 与 JSON 导出** — 将任何日志格式转换为结构化的 CSV(用于 Excel、数据库)或 JSON Lines(用于 jq、Splunk、Elasticsearch)。使用 `--fields` 选择特定字段以减少干扰。这是 Rocket 的核心价值。
- **单一静态二进制文件**(4.5 MB) — 通过 SCP 复制到任何机器即可运行。无需 Python,无需 Java,无需运行时。适用于取证工作站、受损服务器、物理隔离系统。
- **11 种日志格式**并支持自动检测 — keyvalue、json、syslog、cef、leef、apache、w3c、nginx-error、bind9、android 和 Windows EVTX(原生二进制解析)。透明读取 `.gz` 压缩文件。
- **高级过滤** — 文本搜索、排除、正则表达式、日期范围、去重。从标准输入通过管道传入,输出到标准输出。可自由组合过滤器。
- **流式 I/O** — 处理数 GB 的日志文件而无需全部加载到内存中。syslog 处理速度可达 50 万+条记录/秒。支持可配置工作线程的并发处理。
- **内置威胁情报** — IOC 提取、Sigma 规则引擎、GeoIP 解析和时间线构建器集成于单一工具。无需单独的脚本。
## 目录
- [安装说明](#installation)
- [快速入门](#quick-start)
- [支持的日志格式](#supported-log-formats)
- [命令](#commands)
- [parse](#parse) — 将日志转换为 CSV/JSON
- [stats](#stats) — 快速分类与字段分析
- [ioc](#ioc) — 提取入侵指标
- [timeline](#timeline) — 统一时间线
- [sigma](#sigma) — Sigma 检测规则引擎
- [geoip](#geoip) — 使用 GeoLite2 进行 IP 地理定位
- [tail](#tail) — 实时日志监控
- [merge](#merge) — 合并多个 CSV 文件
- [formats](#formats) — 列出支持的格式
- [version](#version) — 构建信息
- [过滤](#filtering)
- [输出格式](#output-formats)
- [用例](#use-cases)
- [性能](#performance)
- [GeoIP 数据库设置](#geoip-database-setup)
- [Sigma 规则](#sigma-rules)
- [平台支持](#platform-support)
## 安装说明
从 [Releases](https://github.com/hernannh/rocket/releases) 页面下载适合您平台的二进制文件。
### Linux (amd64)
```
chmod +x rocket-linux-amd64
sudo mv rocket-linux-amd64 /usr/local/bin/rocket
```
### macOS
```
chmod +x rocket-darwin-arm64
sudo mv rocket-darwin-arm64 /usr/local/bin/rocket
```
### Windows
下载 `rocket-windows-amd64.exe` 并将其添加到您的 PATH,或直接运行。
### 验证安装
```
rocket version
```
## 快速入门
```
# 解析单个日志文件(自动检测格式)
rocket parse access.log
# 递归解析目录并合并所有结果
rocket parse /var/log/ -r --merge -o ./output/
# 快速分类 — 排名靠前的 IP、事件、用户
rocket stats Security.evtx --fields event_id,Event.EventData.TargetUserName --top 15
# 提取 IOC(IP、域名、哈希、URL)
rocket ioc firewall.log --top 20
# 从多个来源构建时间线
rocket timeline Security.evtx syslog firewall.log -o timeline.csv
# 应用 Sigma 检测规则
rocket sigma Security.evtx --rules ./sigma-rules/
# 解析攻击者 IP 的 GeoIP
rocket geoip firewall.log --db ./geodb/ --top 20
# 实时监控日志文件
rocket tail /var/log/syslog -f --filter "fail" --format syslog
```
## 支持的日志格式
| 格式 | 描述 | 自动检测 | 示例 |
|---|---|---|---|
| **keyvalue** | 键值对 | 是 | FortiGate, FortiAnalyzer, Palo Alto, 通用应用日志 |
| **json** | JSON Lines / NDJSON | 是 | Elasticsearch, CloudWatch, Docker, 结构化应用日志 |
| **syslog** | BSD, RFC 5424, RFC 3339 | 是 | Linux syslog, rsyslog, systemd-journal, 网络设备 |
| **cef** | ArcSight 通用事件格式 | 是 | ArcSight, FortiSIEM, CrowdStrike, 任何符合 CEF 的来源 |
| **leef** | IBM QRadar LEEF 1.0/2.0 | 是 | QRadar, IBM 安全产品 |
| **apache** | 组合与通用日志格式 | 是 | Apache, Nginx(使用通用日志格式), HAProxy |
| **w3c** | W3C 扩展日志格式 | 是 | IIS, Microsoft TMG, 某些 CDN 提供商 |
| **nginx-error** | Nginx 错误日志格式 | 是 | 带客户端/服务器提取的 Nginx 错误日志 |
| **bind9** | BIND9 DNS 服务器日志 | 是 | DNS 查询日志和安全日志 |
| **android** | Android logcat (threadtime) | 是 | Android 系统和应用日志 |
| **evtx** | Windows 事件日志 (二进制) | 按扩展名 | Security.evtx, System.evtx, Application.evtx |
### 格式自动检测
Rocket 对每个文件的前 20 行进行采样,并根据所有已注册的解析器对其进行评分。选择置信度分数最高的解析器。对于 EVTX 文件,检测基于 `.evtx` 文件扩展名。
您可以使用 `--format` / `-f` 强制指定格式:
```
rocket parse mixed.log --format syslog
rocket parse data.txt -f keyvalue
```
## 命令
### parse
将一个或多个日志文件转换为 CSV 或 JSON 格式。
```
rocket parse [flags]
```
**标志:**
| 标志 | 简写 | 描述 |
|---|---|---|
| `--output` | `-o` | 输出目录(默认:与输入相同) |
| `--format` | `-f` | 日志格式:auto, keyvalue, json, syslog, cef, leef, apache, w3c, nginx-error, bind9, android, evtx(默认:auto) |
| `--output-format` | | 输出格式:csv, json(默认:csv) |
| `--filter` | | 仅保留包含此文本的行(不区分大小写) |
| `--exclude` | | 排除包含此文本的行(不区分大小写) |
| `--regex` | | 仅保留匹配此正则表达式模式的行 |
| `--fields` | | 包含在输出中的以逗号分隔的字段列表 |
| `--date-range` | | 日期范围过滤器:YYYY-MM-DD:YYYY-MM-DD |
| `--dedup` | | 移除重复记录 |
| `--dedup-fields` | | 用于去重的字段(默认:整行) |
| `--recursive` | `-r` | 递归扫描子目录 |
| `--merge` | | 将所有输出合并到单个文件中 |
| `--workers` | `-w` | 并发工作线程数(默认:4) |
| `--stdout` | | 将输出写入标准输出而不是文件 |
**示例:**
```
# 基本转换
rocket parse access.log
rocket parse /var/log/app/ -r -o ./output/
# 过滤和字段选择
rocket parse firewall.log --filter "blocked" --fields srcip,dstip,action,attack
rocket parse syslog --exclude "CRON" --fields timestamp,program,message
# Regex 过滤
rocket parse firewall.log --regex 'CVE-\d{4}-\d+'
rocket parse auth.log --regex 'Failed password.*from \d+\.\d+'
# 日期范围
rocket parse /var/log/ -r --date-range 2026-03-01:2026-03-31
# JSON 输出通过管道传递给 jq
rocket parse firewall.log --output-format json --stdout | jq '.srcip'
# 去重
rocket parse firewall.log --dedup --dedup-fields srcip,attack
# Windows Event Logs
rocket parse Security.evtx -o ./output/
rocket parse C:\Windows\System32\winevt\Logs\ -r --merge
# DNS 日志
rocket parse query.log -f bind9 --fields client_ip,domain,record_type
# 多输入源
rocket parse server1.log server2.log server3.log -o ./merged/ --merge
# 从 stdin 读取(管道)
cat /var/log/syslog | rocket parse -f syslog --fields program,message -
ssh forensic-server "cat /var/log/auth.log" | rocket parse -f syslog --filter "Failed" -
# 压缩文件 (.gz)
rocket parse /var/log/syslog.2.gz /var/log/syslog.3.gz -o ./output/
# 高性能批处理
rocket parse /evidence/logs/ -r --workers 8 --merge -o ./case-output/
```
**支持的输入类型:**
- 单文件:`rocket parse access.log`
- 多文件:`rocket parse file1.log file2.log file3.log`
- 目录:`rocket parse /var/log/`
- 目录(递归):`rocket parse /var/log/ -r`
- 通配符模式:`rocket parse "*.log"`
- Gzip 压缩文件:`rocket parse syslog.2.gz`
- 标准输入:`cat file | rocket parse -f syslog -`
### stats
快速分类 — 分析日志文件并显示每个字段的热门值,而不生成输出文件。
```
rocket stats [flags]
```
**标志:**
| 标志 | 简写 | 描述 |
|---|---|---|
| `--format` | `-f` | 日志格式(默认:auto) |
| `--fields` | | 要分析的以逗号分隔的字段(默认:所有) |
| `--top` | | 每个字段的热门值数量(默认:10) |
| `--recursive` | `-r` | 扫描子目录 |
**示例:**
```
# 所有字段概览
rocket stats access.log
# 关注特定字段
rocket stats firewall.log --fields srcip,attack,severity,srccountry --top 15
# Windows Event Log 分类
rocket stats Security.evtx --fields event_id,Event.EventData.TargetUserName,Event.EventData.LogonType
# DNS 查询分析
rocket stats query.log --fields domain,record_type,client_ip --top 20
# Syslog 服务分析
rocket stats /var/log/syslog -r --format syslog --fields program,hostname --top 20
```
**示例输出:**
```
=== Summary ===
Total records: 613
Unique fields: 4
--- attack (19 unique values) ---
186 Mirai.Botnet
134 ZGrab.Scanner
75 Nmap.Script.Scanner
33 Apache.HTTP.Server.cgi-bin.Path.Traversal
32 WordPress.REST.API.Username.Enumeration.Information.Disclosure
... and 14 more
--- srcip (351 unique values) ---
18 45.205.1.20
15 172.233.29.203
15 20.43.23.11
... and 346 more
```
### ioc
从日志文件中提取入侵指标。
```
rocket ioc [flags]
```
**支持的 IOC 类型:**
| 类型 | 描述 | 示例 |
|---|---|---|
| `ipv4` | IPv4 地址(仅公共) | `45.205.1.20` |
| `ipv6` | IPv6 地址 | `2001:db8::1` |
| `domain` | 域名 | `evil.example.com` |
| `url` | HTTP/HTTPS URL | `https://malware.site/payload` |
| `email` | 电子邮件地址 | `attacker@evil.com` |
| `md5` | MD5 哈希(32 个十六进制字符) | `d41d8cd98f00b204e9800998ecf8427e` |
| `sha1` | SHA1 哈希(40 个十六进制字符) | `da39a3ee5e6b4b0d3255bfef95601890afd80709` |
| `sha256` | SHA256 哈希(64 个十六进制字符) | `e3b0c44298fc1c149afbf4c8996fb924...` |
私有/保留 IP 范围(10.x, 172.16.x, 192.168.x, 127.x)会被自动排除。
**标志:**
| 标志 | 简写 | 描述 |
|---|---|---|
| `--format` | `-f` | 日志格式(默认:auto) |
| `--types` | | 要提取的以逗号分隔的 IOC 类型(默认:所有) |
| `--output-format` | | 输出:text, json(默认:text) |
| `--top` | | 每种类型的热门 IOC 数量(默认:20) |
| `--recursive` | `-r` | 扫描子目录 |
**示例:**
```
# 提取所有 IOC
rocket ioc firewall.log
# 仅 IP 和域名
rocket ioc access.log --types ipv4,domain --top 30
# 用于与其他工具集成的 JSON 输出
rocket ioc /var/log/ -r --output-format json > iocs.json
# 从 EVTX 提取
rocket ioc Security.evtx --types ipv4,domain
# 从 stdin 提取
cat syslog | rocket ioc - -f syslog --types ipv4
```
### timeline
从多个日志来源构建统一的按时间顺序的时间线。这对于事件重建至关重要。
```
rocket timeline [inputs...] [flags]
```
每个事件都会被丰富以下信息:
- `timeline_ts` — 用于排序的标准化时间戳
- `source` — 原始文件路径
**标志:**
| 标志 | 简写 | 描述 |
|---|---|---|
| `--output` | `-o` | 输出文件路径(默认:timeline.csv) |
| `--format` | `-f` | 日志格式(默认:每个文件自动检测) |
| `--output-format` | | 输出:csv, json(默认:csv) |
| `--fields` | | 包含的以逗号分隔的字段列表 |
| `--filter` | | 仅保留包含此文本的行 |
| `--exclude` | | 排除包含此文本的行 |
| `--recursive` | `-r` | 扫描子目录 |
**示例:**
```
# 合并 Windows + Linux + Firewall 日志
rocket timeline Security.evtx syslog firewall.log -o timeline.csv
# 用于 Elastic/Splunk 导入的 JSON 时间线
rocket timeline /evidence/ -r --output-format json -o timeline.json
# 已过滤的时间线
rocket timeline Security.evtx auth.log --filter "failed" --fields timeline_ts,source,message
```
### sigma
针对已解析的日志记录应用 Sigma 检测规则。Sigma 是网络安全社区使用的 SIEM 检测规则的开放标准。
```
rocket sigma [flags]
```
**标志:**
| 标志 | 简写 | 描述 |
|---|---|---|
| `--rules` | | Sigma 规则目录或单个 .yml 文件的路径 **(必需)** |
| `--format` | `-f` | 日志格式(默认:auto) |
| `--output-format` | | 输出:text, json(默认:text) |
| `--output` | `-o` | 输出文件(默认:标准输出) |
| `--recursive` | `-r` | 扫描子目录 |
**支持的 Sigma 功能:**
| 功能 | 支持 |
|---|---|
| 字段匹配(精确) | 是 |
| 字段修饰符:`contains`, `startswith`, `endswith` | 是 |
| 通配符匹配(`*`) | 是 |
| 条件:`and`, `or`, `not` | 是 |
| 条件:`1 of them`, `all of them` | 是| 条件:`1 of selection_*`, `all of selection_*` | 是 |
| 关键字列表(匹配所有字段) | 是 |
| 条件中的括号 | 是 |
**示例:**
```
# 使用规则目录进行扫描
rocket sigma Security.evtx --rules ./sigma-rules/
# 单条规则
rocket sigma firewall.log --rules mirai_detection.yml
# 用于后续处理的 JSON 输出
rocket sigma /var/log/ -r --rules ./rules/ --output-format json -o detections.json
# 与 syslog 结合
rocket sigma auth.log --rules brute_force.yml --format syslog
```
**示例 Sigma 规则:**
```
title: Mirai Botnet Detection
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
status: stable
level: critical
description: Detects Mirai botnet activity in IPS logs
logsource:
category: ids
product: fortigate
detection:
selection:
attack|contains: Mirai
condition: selection
```
**Windows 的示例 Sigma 规则:**
```
title: Remote Desktop Logon Detected
id: c3d4e5f6-a7b8-9012-cdef-123456789012
status: stable
level: medium
description: Detects RDP logon events (LogonType 10)
logsource:
product: windows
service: security
detection:
selection:
event_id: '4624'
Event.EventData.LogonType: '10'
condition: selection
```
您可以使用来自 [SigmaHQ](https://github.com/SigmaHQ/sigma) 社区仓库的规则。
### geoip
为日志文件中找到的 IP 地址解析地理定位数据(国家、ASN、组织)。
```
rocket geoip [flags]
```
**标志:**
| 标志 | 简写 | 描述 |
|---|---|---|
| `--db` | | mmdb 文件或包含 mmdb 文件的目录路径 **(必需)** |
| `--format` | `-f` | 日志格式(默认:auto) |
| `--fields` | | 扫描 IP 的字段(默认:所有) |
| `--top` | | 显示的热门 IP 数量(默认:20) |
| `--recursive` | `-r` | 扫描子目录 |
**示例:**
```
# 基础地理定位
rocket geoip firewall.log --db ./GeoLite2-Country.mmdb
# 多个数据库(目录)
rocket geoip firewall.log --db ./geodb/ --top 30
# 关注特定 IP 字段
rocket geoip firewall.log --db ./geodb/ --fields srcip,dstip
# EVTX 文件
rocket geoip Security.evtx --db ./geodb/
```
**示例输出:**
```
=== GeoIP Resolution (160 unique public IPs) ===
COUNT IP CC COUNTRY ASN ORGANIZATION
-------- ------------------ --- ---------------------- -------- ------------
43 172.93.48.52 US United States 29802 HIVELOCITY, Inc.
22 87.251.64.141 US United States 200730 ISAEV Igor
20 45.161.237.218 PY Paraguay 61512 GIG@NET SOCIEDAD ANONIMA
15 89.168.34.129 FR France 31898 Oracle Corporation
15 103.76.120.225 ID Indonesia 136052 PT Cloud Hosting Indonesia
=== Events by Country ===
161 United States
106 China
74 Romania
61 Hong Kong
60 Indonesia
```
有关下载说明,请参见 [GeoIP 数据库设置](#geoip-database-setup)。
### tail
通过结构化解析、过滤和格式化实时监控日志文件。类似于 `tail -f`,但更智能。
```
rocket tail [flags]
```
**标志:**
| 标志 | 简写 | 描述 |
|---|---|---|
| `--follow` | `-f` | 跟踪文件的新行(类似 tail -f) |
| `--format` | | 日志格式(默认:auto) |
| `--filter` | | 仅保留包含此文本的行 |
| `--exclude` | | 排除包含此文本的行 |
| `--regex` | | 仅保留匹配此正则表达式的行 |
| `--fields` | | 要显示的以逗号分隔的字段 |
| `--output-format` | | 输出:text, json, csv(默认:text) |
**示例:**
```
# 实时监控
rocket tail /var/log/syslog -f --format syslog
# 过滤失败事件
rocket tail /var/log/auth.log -f --filter "fail" --format syslog
# 显示特定字段
rocket tail /var/log/syslog -f --fields timestamp,program,message --format syslog
# 用于管道传递的 JSON 输出
rocket tail firewall.log -f --output-format json --fields srcip,action
# 排除噪音
rocket tail /var/log/syslog -f --exclude "CRON" --format syslog
```
### merge
将多个 CSV 文件组合成一个统一的 CSV。通过创建所有 headers 的并集来处理具有不同列集的文件。
```
rocket merge [files...] [flags]
```
**标志:**
| 标志 | 简写 | 描述 |
|---|---|---|
| `--output` | `-o` | 输出文件路径(默认:merged_logs.csv) |
**示例:**
```
rocket merge output1.csv output2.csv -o merged.csv
rocket merge *.csv -o all_logs.csv
```
### formats
列出所有支持的日志格式。
```
rocket formats
```
**输出:**
```
FORMAT DESCRIPTION
------ -----------
keyvalue Key=value pairs (e.g., user=admin action=login status="ok")
json JSON lines / NDJSON (one JSON object per line)
syslog Syslog (BSD, RFC 5424, and RFC 3339/rsyslog formats)
cef ArcSight Common Event Format (CEF)
leef IBM QRadar Log Event Extended Format (LEEF 1.0/2.0)
apache Apache access logs (Combined and Common Log Format)
w3c W3C Extended Log File Format (IIS, proxies)
nginx-error Nginx error log format
bind9 BIND9 DNS server logs (query and security)
android Android logcat (threadtime format)
evtx Windows Event Log (.evtx) — Security, System, Application
```
### version
显示构建信息。
```
rocket version
```
```
rocket v1.0.0
commit: a1b2c3d
built: 2026-03-31T00:00:00Z
go: go1.22.0
os/arch: linux/amd64
```
## 过滤
Rocket 提供了多种可组合的过滤机制:
| 过滤器 | 标志 | 描述 |
|---|---|---|
| 文本(包含) | `--filter "ERROR"` | 不区分大小写的子串匹配 |
| 文本(排除) | `--exclude "CRON"` | 不区分大小写的子串排除 |
| 正则表达式 | `--regex 'CVE-\d{4}-\d+'` | 完整的正则表达式模式匹配 |
| 日期范围 | `--date-range 2026-03-01:2026-03-31` | ISO 日期范围(包含) |
| 去重 | `--dedup` | 移除完全重复的行 |
| 按字段去重 | `--dedup --dedup-fields srcip,attack` | 按特定字段组合去重 |
| 字段选择 | `--fields srcip,attack,severity` | 在输出中仅包含这些列 |
**过滤器可以组合使用:**
```
rocket parse firewall.log \
--filter "blocked" \
--exclude "scanner" \
--regex 'srcip=45\.' \
--date-range 2026-03-01:2026-03-31 \
--dedup --dedup-fields srcip,attack \
--fields srcip,attack,severity,srccountry
```
## 输出格式
### CSV(默认)
带表头的标准 CSV。兼容 Excel, Google Sheets, LibreOffice, pandas, 数据库。
```
rocket parse firewall.log -o ./output/
```
### JSON Lines (NDJSON)
每行一个 JSON 对象。兼容 `jq`, Splunk, Elasticsearch, Logstash, 自定义脚本。
```
rocket parse firewall.log --output-format json -o ./output/
```
### 通过管道传给 jq
```
rocket parse firewall.log --output-format json --stdout | jq 'select(.severity == "critical")'
rocket parse firewall.log --output-format json --stdout | jq -r '.srcip' | sort -u
rocket parse Security.evtx --output-format json --stdout | jq 'select(.event_id == "4625")'
```
### 通过管道传给其他工具
```
# 计算唯一 IP 数
rocket parse firewall.log --fields srcip --stdout | tail -n +2 | sort -u | wc -l
# 管道传递给 grep
rocket parse firewall.log --output-format json --stdout | grep "Mirai"
# 导入到 SQLite
rocket parse firewall.log -o output.csv
sqlite3 analysis.db ".import --csv output.csv logs"
```
## 用例
### 事件响应
```
# 1. 从多个来源收集证据
scp target:/var/log/syslog* ./evidence/
scp target:/var/log/auth.log* ./evidence/
# 从 Windows 复制 EVTX(通过 WinSCP、取证镜像等)
# 2. 构建统一时间线
rocket timeline ./evidence/ -r -o timeline.csv
# 3. 快速分类
rocket stats ./evidence/ -r --fields program,hostname,event_id
# 4. 提取 IOC
rocket ioc ./evidence/ -r --output-format json > iocs.json
# 5. 应用 Sigma 检测规则
rocket sigma ./evidence/ -r --rules ./sigma-rules/ --output-format json > detections.json
# 6. 对攻击者 IP 进行 GeoIP 解析
rocket geoip ./evidence/ -r --db ./geodb/ --top 50
```
### 威胁狩猎
```
# 发现横向移动(RDP 会话)
rocket parse Security.evtx --output-format json --stdout | \
jq 'select(.event_id == "4624") | select(.["Event.EventData.LogonType"] == "10")'
# 搜寻路径遍历攻击
rocket parse firewall.log --regex '\.\./|%2e%2e' --fields srcip,url,attack
# 发现暴力破解模式
rocket parse auth.log -f syslog --filter "Failed password" --fields timestamp,message
# 分析 DNS 查询中的可疑域名
rocket stats query.log -f bind9 --fields domain,client_ip --top 20
# 提取所有被利用的 CVE
rocket parse firewall.log --regex 'CVE-\d{4}-\d+' --fields srcip,attack,cve --output-format json --stdout | \
jq -r '.cve' | sort | uniq -c | sort -rn
```
### SOC 日常运营
```
# 早晨分类 — 一夜之间发生了什么
rocket stats /var/log/fortigate.log --fields attack,severity,srcip --top 10
# 事件期间的实时监控
rocket tail /var/log/syslog -f --filter "fail" --format syslog --fields timestamp,program,message
# 处理 FortiAnalyzer 导出
rocket parse ./forti-export/ -r --merge -o ./daily-report/ --workers 8
# 过滤掉已知的误报
rocket parse firewall.log --exclude "scanner" --exclude "monitor" --fields srcip,attack,severity
```
### 取证分析
```
# 处理来自磁盘镜像的 Windows Event Logs
rocket parse /mnt/evidence/Windows/System32/winevt/Logs/ -r -o ./case-42/
# 关注安全相关事件
rocket parse Security.evtx --output-format json --stdout | \
jq 'select(.event_id == "4688")' | \ # Process creation
jq 'select(.["Event.EventData.NewProcessName"] | test("powershell|cmd|wscript"))'
# 解压并处理轮换的日志
rocket parse /mnt/evidence/var/log/syslog* /mnt/evidence/var/log/auth.log* -o ./case-42/
```
## 性能
来自真实世界日志文件的基准测试:
| 来源 | 大小 | 记录数 | 耗时 | 吞吐量 |
|---|---|---|---|---|
| FortiAnalyzer(3 个文件) | 5.5 MB | 5,914 | 0.21s | 28,162 条记录/秒 |
| Linux syslog(5 个文件,3 个 .gz) | 2.9 MB | 61,215 | 0.12s | 510,125 条记录/秒 |
| Windows EVTX(3 个文件) | 51 MB | 113,030 | 5.3s | 21,325 条记录/秒 |
| BIND9 DNS(2 个文件) | 19 MB | 144,089 | 1.2s | 120,074 条记录/秒 |
| Nginx(18 个文件,9 个 .gz) | 4.8 MB | 17,703 | 0.08s | 221,288 条记录/秒 |
| 时间线(EVTX + syslog + FW) | 混合 | 33,245 | 2.1s | 15,831 条记录/秒 |
- 并发处理随可用的 CPU 核心数扩展(可通过 `--workers` 配置)
- Gzip 文件即时解压,零磁盘开销
- 无论文件大小,内存使用量保持不变(流式 I/O)
## GeoIP 数据库设置
Rocket 使用 MaxMind GeoLite2 MMDB 格式的数据库。这些数据库是免费的并会定期更新。
### 下载数据库
```
mkdir -p geodb
wget -O geodb/GeoLite2-Country.mmdb \
"https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-Country.mmdb"
wget -O geodb/GeoLite2-ASN.mmdb \
"https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-ASN.mmdb"
wget -O geodb/GeoLite2-City.mmdb \
"https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb"
```
### 用法
```
# 指向目录(自动检测数据库类型)
rocket geoip firewall.log --db ./geodb/
# 指向单个文件
rocket geoip firewall.log --db ./geodb/GeoLite2-Country.mmdb
```
`--db` 标志接受:
- 包含 `.mmdb` 文件的目录(按文件名自动检测 Country、ASN、City)
- 单个 `.mmdb` 文件
## Sigma 规则
### 什么是 Sigma?
[Sigma](https://github.com/SigmaHQ/sigma) 是一种用于编写可在不同 SIEM 系统之间共享的检测规则的开放标准。Rocket 包含一个内置的 Sigma 引擎,可直接针对已解析的日志记录评估规则。
### 使用社区规则
```
# 克隆 SigmaHQ 仓库
git clone https://github.com/SigmaHQ/sigma.git
# 使用 Windows 规则扫描 Windows 日志
rocket sigma Security.evtx --rules ./sigma/rules/windows/
# 使用 Web 规则扫描 Web 日志
rocket sigma access.log --rules ./sigma/rules/web/
```
### 编写自定义规则
按照 Sigma 规范创建一个 `.yml` 文件:
```
title: Brute Force SSH Detection
id: unique-uuid-here
status: stable
level: high
description: Detects multiple failed SSH login attempts
logsource:
product: linux
service: auth
detection:
selection:
program: sshd
message|contains: "Failed password"
condition: selection
```
```
rocket sigma /var/log/auth.log --rules brute_force_ssh.yml -f syslog
```
## 平台支持
| 平台 | 架构 | 二进制文件 |
|---|---|---|
| Linux | amd64 | `rocket-linux-amd64` |
| Linux | arm64 | `rocket-linux-arm64` |
| Windows | amd64 | `rocket-windows-amd64.exe` |
| macOS | amd64 (Intel) | `rocket-darwin-amd64` |
| macOS | arm64 (Apple Silicon) | `rocket-darwin-arm64` |
所有二进制文件均:
- 静态链接(无共享库依赖)
- 使用 `CGO_ENABLED=0` 编译(纯 Go)
- 已剥离调试符号(`-s -w`)
- 无需安装即可在任何机器上运行
## 许可证
基于 [Apache License 2.0](LICENSE) 授权。您可以自由使用、修改和分发本软件。需保留对原作者的署名。
由 Hernan Herrera - [Sockets AR](https://sockets.ar) 开发
网站:[rocket.sockets.ar](https://rocket.sockets.ar)
标签:AMSI绕过, Apache, DNS日志, EVTX日志, FortiGate, GeoIP解析, Golang, Go语言, IOC提取, IPS日志, IP 地址批量处理, JSON导出, MaxMind GeoLite2, Nginx, PE 加载器, Sigma规则, Sigma规则引擎, SOC工具, SSH暴力破解检测, Syslog, Web服务器日志, Windows事件日志, 单文件静态二进制, 失陷标示提取, 威胁检测, 安全分析与运营, 安全取证, 安全工程, 安全编程, 库, 应急响应, 数字取证, 数据富化, 日志审计, 日志格式转换, 日志清洗, 日志解析器, 时间轴构建, 漏洞发现, 目标导入, 程序破解, 结构化数据, 自动化分析, 自动化脚本, 跨站脚本, 防火墙日志, 零依赖