Igr1s-red/maltrace

GitHub: Igr1s-red/maltrace

一款面向防御者的 Rust 终端威胁狩猎、分诊与监控工具包,集成约 20 个情报服务并提供 TUI、CLI 和内置告警引擎。

Stars: 0 | Forks: 0

# maltrace 一款面向防御者的终端 **威胁狩猎、分诊与监控** 工具包 (Rust + ratatui) — 一个统一客户端,集成了约 20 个恶意软件情报、沙箱和 基础设施服务,提供 **统一的 TUI**、**完整的 CLI**、**本地文件 分析**,以及由 SQLite 支持的内置 **订阅源监控 + 告警引擎**。 ## 功能 **恶意软件 / 沙箱:** VirusTotal · Hybrid Analysis · MalwareBazaar · ThreatFox · Malshare · Triage · Polyswarm · Malpedia · AlienVault OTX · InQuest · VirusExchange **基础设施 / URL:** IPInfo · BGPView · Shodan · AbuseIPDB · GreyNoise · Whois/RDAP · URLhaus · URLScan.io **漏洞:** NIST NVD · VulnCheck **本地(离线):** md5/sha1/sha256 · PE imphash 与 overlay · IOC 提取 · YARA 扫描 (纯 Rust 编写的 `yara-x`) **交叉分析:** 跨服务哈希关联 · LLM 富化 (Claude / OpenAI / Gemini / Ollama) · Android (adb) 分诊 · 文本/JSON/CSV/HTML/Markdown 输出 **监控 (`mon`):** 多源订阅源 (RSS/Atom · JSON API + JSONPath · 网站 · Tor `.onion`) · 带严重程度的关键词匹配 · 去重告警 · IOC 提取 + 出现历史记录 · 通过相同提供商排队的富化 · webhook/Discord/电子邮件通知 · 调度器 + 监控 daemon · SQLite 持久化 ## 安装 / 构建 需要最新的稳定版 Rust 工具链(内置 SQLite;无需系统库)。 ``` cargo build --release # 位于 target/release/maltrace 的二进制文件 ``` ## 快速开始 ``` maltrace init # scaffold a blank ~/.malwapi.conf (owner-only) maltrace keys # show which API keys are configured maltrace # launch the unified TUI maltrace vt # one-off CLI lookup ``` ## 配置 API 密钥保存在 `~/.malwapi.conf`(Windows: `%USERPROFILE%\.malwapi.conf`)中,这是一个 创建权限为 `0600` 的 INI 文件。每个密钥都是可选的 — 只有当*其对应的*密钥 缺失时,该功能才会报错,而无密钥服务即可开箱即用。监控数据和设置 保存在 `/maltrace/maltrace.db` 处的一个独立 SQLite 数据库中(权限同样 为 `0600`)。 ``` [VIRUSTOTAL] VTAPI = ... [SHODAN] SHODANAPI = ... [LLM] PROVIDER = claude ; claude | openai | gemini | ollama CLAUDE_API_KEY = ... OLLAMA_URL = http://localhost:11434 ``` 部分支持的服务:VIRUSTOTAL, HYBRID-ANALYSIS, MALSHARE, POLYSWARM, ALIENVAULT, MALPEDIA, TRIAGE, INQUEST, VIRUSEXCHANGE, IPINFO, BAZAAR, THREATFOX, VULNCHECK, URLHAUS, SHODAN, ABUSEIPDB, GREYNOISE, URLSCANIO, LLM。 ## 统一的 TUI ``` maltrace # or: maltrace tui / maltrace mon tui ``` 一个集成了标签栏的应用,贯穿 **Hunt**(交互式分诊)和监控 屏幕 — **Dashboard, Feeds, Keywords, Alerts, Articles, Indicators, Queue, Tags, Providers, Notifications**。分诊查询和监控操作在后台 任务中运行,因此 UI 永远不会阻塞。 **全局** | 按键 | 操作 | |-----|--------| | `1`–`9`,`0` · `[` `]` | 跳转到 / 循环切换屏幕 | | `:` · `Ctrl+P` | 命令面板(模糊搜索) | | `/` | 过滤当前列表 | | `R` | 运行完整的监控周期 | | `t` · `?` · `q`/`Ctrl+C` | 切换主题 · 帮助 · 退出 | **Hunt 屏幕** — 输入一个指示器;它会并发地在支持该类型的 每个服务中展开查询,并提供判定摘要和优先标红恶意结果的 颜色编码。 | 按键 | 操作 | |-----|--------| | `Tab`/`i` | 聚焦查询框(`Esc` 离开) | | `Enter` · `o` | 查询所有支持的服务 · 仅查询选定的服务 | | `r` · `y` · `p` · `f` | 原始 JSON · 复制 · 转向已找到的 IOC · URLhaus 订阅源 | | `↑/↓` `j/k` · `PgUp/PgDn` | 选择服务 / 历史记录 · 滚动结果 | **监控屏幕** | 按键 | 操作 | |-----|--------| | `j/k` `↑/↓` | 移动选择 | | `a` · `e` · `d` | 添加 · 编辑(就地)· 删除 | | `space` | 切换启用状态(订阅源/提供商/关键词)· 批量选择(告警) | | `D` · `m` | 删除批量选择的告警 · 标记为已读 | | `Enter` | 打开阅读器/详情 · 发送测试(Notifications) | | `f` · `F` · `e` | 获取订阅源 · 获取全部 · 富化(Indicators/Providers/Queue) | 添加/编辑表单、文章/告警/指示器阅读器和命令面板是 模态覆盖层;`Esc` 可关闭它们。TUI 是一个查看器兼带快速编辑 — 耗时的 获取/富化/运行任务会在后台派发并带有加载动画。 ## CLI — 分诊 ``` maltrace doctor # test each configured key with one live call maltrace vt # VirusTotal (ip/domain/url via --op) maltrace ip 8.8.8.8 # fan out across all IP-intel providers maltrace whois example.com # RDAP (keyless) maltrace nist CVE-2021-44228 # NIST NVD (keyless) maltrace hash ./sample.bin # md5/sha1/sha256 (+ imphash if PE) maltrace extract ./report.txt # pull IOCs from a file … maltrace extract https://x/y # … or a fetched URL (SSRF-guarded, size-capped) maltrace yara ./sample --rules rules.yar maltrace correlate # query every hash-capable service at once maltrace enrich # LLM threat assessment maltrace submit ./f --service vt # explicit upload (never automatic) maltrace download --service bazaar --dest ./samples maltrace android packages --third-party maltrace completions zsh > _maltrace maltrace interactive # line-based REPL ``` 也接受紧凑的单字母标志,并会被重写为现代形式 (例如 `maltrace -b ` → `bazaar`,`maltrace -ip 8.8.8.8` → `ip`)。 全局标志:`--json`, `--csv`, `--html`, `--markdown`, `--proxy `, `--config `, `--timeout `, `--quiet`, `--verbose`, `--no-cache`, `--refresh`, `--cache-ttl `, `--audit `(将每次查询+结果附加为 JSONL)。响应缓存在平台缓存目录下,并带有 TTL(默认为 1 小时)。 ## CLI — 监控 (`mon`) maltrace 可以作为订阅源监控器运行:轮询源、匹配关键词、引发 去重的告警、提取并富化 IOC,以及发送通知 — 所有这些都持久化在 SQLite 中。 ``` # 来源:RSS/Atom、JSON API(+ JSONPath 模板)、网站抓取、Tor onion maltrace mon feed-add "BleepingComputer" https://www.bleepingcomputer.com/feed/ --kind rss maltrace mon feed-add "Ransomfeed" https://api.ransomfeed.it/v1/posts --kind api --template 1 maltrace mon templates # built-in JSONPath templates maltrace mon keyword-add ransomware --criticality critical # text or --regex # Enrichment 复用 maltrace 自身的 providers(默认开启 keyless;keyed 为可选启用) maltrace mon providers maltrace mon provider-enable VirusTotal # 通知(webhook / Discord / 电子邮件;SMTP 密码来自环境变量) maltrace mon notify-add-discord https://discord.com/api/webhooks/... --min high maltrace mon run # one cycle over all feeds maltrace mon watch --tick 30 --retention-days 30 # continuous daemon maltrace mon report --out report.md # export a Markdown report maltrace mon tui # browse it in the TUI ``` 流水线(`获取 → 关键词/告警 → IOC 提取 → 富化 → 通知`)复用了 分诊技术栈:共享的 `HttpClient`(SSRF 防护、重试、主体大小限制)、 `intel::iocs` 提取器,以及所有约 20 个提供商作为富化后端。 ## 报告与输出 任何命令都可以使用 `--json`, `--csv`, `--html` 或 `--markdown`。`--html` 会生成一个 独立的暗色主题文档(可在浏览器中打印为 PDF): ``` maltrace correlate --html > report.html maltrace vt --markdown ``` ## 主题 TUI 使用 [opaline](https://github.com/hyperb1iss/opaline) 引擎进行主题化 (Catppuccin, Nord, Dracula, Tokyo Night, Gruvbox, Solarized, …)。按下 `t` 可在运行时循环切换 主题。 ## 安全态势 - 在每个出站 URL 上都有 **SSRF 防护**:拒绝字面量的私有/回环/链路本地/ULA/ CGNAT 以及 IPv4 映射的 IPv6 地址,并在请求前解析命名主机并 验证其地址。 - **大小受限的** 响应主体(样本和获取的页面)以限制内存占用。 - **密钥清理:** 配置/缓存/审计/DB 文件创建时仅为所有者可读写(`0600`); API 密钥尽可能放入标头中,且必须存在于 URL 中的密钥会 在错误输出中进行脱敏处理。SMTP 密码从环境变量中读取,从不存储。 - **选择性出站:** 外部富化提供商默认禁用;LLM 富化在将指示器发送给第三方之前会发出警告。 - 仅使用 rustls 提供 TLS;不使用 `unsafe`;所有 SQL 均已参数化。 ## 架构 ``` src/ cli/ clap subcommands (triage + `mon`) + compact-flag rewriter config parse ~/.malwapi.conf http shared reqwest client: retry/backoff, 429 handling, SSRF guard, body caps model QueryKind detection + normalized Report + verdict providers one module per service; Provider trait; make()/CATALOG registry intel hashing, pe (imphash/overlay), iocs, yara, correlate llm provider-dispatched enrichment (claude/openai/gemini/ollama) feed monitoring fetchers: api (JSONPath), rss/atom, website, onion monitor keyword engine, alert pipeline, enrichment outbox, scheduler, notify store SQLite persistence (feeds, alerts, indicators, jobs, …) output text / json / csv / html / markdown rendering tui unified ratatui app (Hunt + monitoring screens) + opaline theming ``` 每个提供商都会返回一个规范化的 `Report`(人类可读字段 + 原始 JSON),因此 CLI、TUI、监控和报告导出都共享同一个模型。 ## 测试 ``` cargo test # unit + wiremock HTTP + assert_cmd CLI + TUI render tests cargo clippy --all-targets ``` ## 致谢 主题由 [opaline](https://github.com/hyperb1iss/opaline) 提供;TUI 使用 [ratatui](https://github.com/ratatui/ratatui) 构建。
标签:DAST, IOC提取, Rust, YARA, 云资产可视化, 可视化界面, 威胁情报, 安全工具, 安全运营, 开发者工具, 恶意软件分析, 扫描框架, 终端UI工具, 网络流量审计, 通知系统