hernannh/rocket

GitHub: hernannh/rocket

蓝队轻量级日志分析工具包,单文件零依赖,支持 11 种日志格式自动解析并集成 Sigma 检测、IOC 提取、GeoIP 解析与多源时间线构建。

Stars: 0 | Forks: 0

# Rocket [![Go](https://img.shields.io/badge/Go-1.22+-00ADD8?style=flat&logo=go&logoColor=white)](https://go.dev) [![平台](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-blue?style=flat)](https://github.com/hernannh/rocket/releases) [![许可证](https://img.shields.io/badge/License-Apache%202.0-blue?style=flat)](LICENSE) [![静态二进制](https://img.shields.io/badge/Binary-Static%20%7C%204.5MB-green?style=flat)](https://github.com/hernannh/rocket/releases) [![日志格式](https://img.shields.io/badge/Log%20Formats-11-00d4ff?style=flat)](#supported-log-formats) [![Sigma 规则](https://img.shields.io/badge/Sigma-Rules%20Engine-blueviolet?style=flat)](#sigma) [![GeoIP](https://img.shields.io/badge/GeoIP-MaxMind%20GeoLite2-orange?style=flat)](#geoip) **蓝队日志分析工具包** — 几秒钟内将任何日志格式转换为结构化的 CSV 或 JSON。一个单一的静态二进制文件,可以解析、过滤、关联和丰富来自防火墙、SIEM、Windows EVTX、syslog、DNS 等的日志。 Rocket 专为 SOC 分析师、事件响应人员和取证调查人员打造,满足他们在任何机器上无需安装依赖项即可快速处理日志的需求。 ### SSH 暴力破解分析 ![Rocket SSH 分析](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/7d5f2dca34165809.gif) ### FortiGate IPS 分析 ![Rocket FortiGate 分析](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fbd89d5dc9165812.gif) ### Nginx Web 服务器分析 ![Rocket Nginx 分析](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3984915694165817.gif) ## 为什么选择 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事件日志, 单文件静态二进制, 失陷标示提取, 威胁检测, 安全分析与运营, 安全取证, 安全工程, 安全编程, 库, 应急响应, 数字取证, 数据富化, 日志审计, 日志格式转换, 日志清洗, 日志解析器, 时间轴构建, 漏洞发现, 目标导入, 程序破解, 结构化数据, 自动化分析, 自动化脚本, 跨站脚本, 防火墙日志, 零依赖