Zeroska/Ordo
GitHub: Zeroska/Ordo
Ordo 是一个基于 Claude Code 的 OSINT 情报分析工具包,通过提取和关联网站及应用的基础设施标识符,将分散线索聚类归因为同一运营集群并生成调查报告。
Stars: 1 | Forks: 0
# Ordo
**专为 Claude Code 设计的 OSINT 调查工具包。**
从一个网站——或者其推广的应用——入手,追踪诈骗团伙,直抵**整个集群背后的操盘手**。
`WebPivot` · `BinaryPivot` · `IntelAnalysis` · `IntelGraph` · `IntelReport` · `IntelHarness`
Claude Code 技能 · Python 3.8+ · 共享、可移植、无案例数据
repo:
## 一分钟心智模型
你很少会只关注单个域名——你真正关心的是**谁在运营这个网络**,以及那些能暴露他们身份的标识符。本工具包能将一个种子线索转化为最终答案:
1. **收集** — 提取页面(或下载的应用)难以轻易更换的标识符:favicon hash、分析 ID、TLS 证书、后端主机、钱包、WHOIS、签名证书。
2. **摄取** — 每个标识符都会成为共享知识库中的一个**节点**;提供该标识符的主机会与之建立链接。
3. **关联** — 共享节点的域名属于**同一个集群**;分析师层会对归属进行判定并评估置信度。
4. **交付** — 生成网络图和可直接用于报告的 PDF/DOCX。
让这一切顺畅运作的秘诀在于:**网站及其推广的应用会发射出*相同*的 JSON 结构**,因此一条流水线就能自动将它们聚类在一起。
```
flowchart LR
S(["Seedrepo:
intelligence_assist
domain · URL · IP · binary"]) subgraph COLLECT direction TB WP["WebPivot
web page → pivot-JSON"] BP["BinaryPivot
APK / installer → pivot-JSON"] end KB[("Shared KB
graph of shared artifacts")] IA["IntelAnalysis
correlate · attribute · confidence"] OUT{{"Cluster
+ operator"}} IG["IntelGraph
network graph"] IR["IntelReport
PDF · DOCX"] S --> WP & BP WP --> KB BP --> KB KB --> IA --> OUT IA --> IG IA --> IR IA -. "next pivot" .-> COLLECT classDef seed fill:#1d857e22,stroke:#1d857e,color:#0b3b38; classDef store fill:#b07d1e22,stroke:#b07d1e,color:#4a3408; class S seed class KB store ``` ## 工具箱内容 包含六个技能——三个用于**收集**,一个用于**思考**,两个用于**发布**——它们共同构建于同一个共享知识库之上。 | 技能 | 角色 | 功能描述 | |---|---|---| | **WebPivot** | 🔎 Web 收集器 | 从页面中提取溯源特征——favicon hash、追踪/分析 ID、无密钥 RDAP WHOIS、加密钱包、TLS 证书 **+ JARM TLS 堆栈指纹**、CORS 信任的后端源、SaaS/无代码运营者 token、Telegram、页脚地址——并生成可直接运行的溯源查询(Shodan、PublicWWW、crt.sh、urlscan 等)。在每个种子上运行完整的 **Pivot Matrix**,标记应用下载漏斗,并搜寻拼写错误/高度相似的域名。 | | **BinaryPivot** | 📦 文件收集器 | 从诈骗网站提供的二进制文件(APK / `.exe` / `.dmg` / `.msi`)中静态提取 IOC:文件 hash、APK 签名证书、包名、嵌入式后端/C2 主机、Firebase 租户、钱包。生成 **WebPivot 格式的 JSON**,以便将应用与 Web 基础设施聚类在一起。 | | **IntelAnalysis** | 🧠 分析师 | 执行关联、归属判定(同工具包 / 同运营者 / 同黑客组织)、校准置信度,并决定下一步溯源方向。基于知识库进行推理——它**不负责**收集。 | | **IntelGraph** | 📈 可视化工具 | 根据案例数据生成图表、时间轴以及聚类的交互式网络图。 | | **IntelReport** | 📄 发布器 | 将完成的评估报告渲染成精美的 PDF + 可编辑的 DOCX(符合编辑排版规范,支持越南语的字体排印)。 | | **IntelHarness** | 🎛️ 案例驱动器 | 在你的 Claude 订阅中,以对话方式针对一个或多个种子驱动整个 收集 → 关联 → 评估 流水线。 | ### 单一契约实现链式协同 WebPivot **和** BinaryPivot 都会生成相同的 pivot-JSON:一个 `meta` 块、一个 `artifacts` 块(包含找到的每个标识符),以及一个排序过的 `pivots` 数组(可直接复制粘贴的查询语句)。由于下载的 APK 的后端主机与网站的后端主机被存入*同一个*字段中,**只需一个摄取器、一次关联扫描和一份集群报告,就能将网站及其应用整体覆盖。** 无论由哪个收集器发现,共享的 favicon hash、GA4 ID、钱包或签名证书都会成为**同一个知识库节点**——因此应用和网站最终会自然聚拢在一起。 ## 快速开始 ### 1. 安装
前置条件与注册技能(点击展开)
**前置条件:** [Claude Code](https://claude.com/claude-code) (`claude --version`) 和 Python 3.8+。WebPivot 的核心功能仅需 Python 标准库即可运行。 Claude Code 会从 `~/.claude/skills/` 发现技能。将每个文件夹进行符号链接(一处编辑,处处生效): ``` # 从 repo root 开始 for s in WebPivot BinaryPivot IntelAnalysis IntelGraph IntelReport IntelHarness; do ln -s "$PWD/$s" ~/.claude/skills/$s done ``` 重启 Claude Code,然后通过以下命令验证:`/WebPivot`、`/BinaryPivot`、`/IntelAnalysis`、`/IntelGraph`、`/IntelReport`、`/IntelHarness`。使用 `/mcp`(server `intel`)确认共享工具接口。可选依赖项 — 仅安装你用到的部分
``` # WebPivot — 更快的 fetch + post-JS DOM 渲染(hosted-builder funnels / --render 所需) pip install requests playwright && playwright install chromium # BinaryPivot — 零必需 deps (stdlib)。如果存在,可选的 accelerators: # keytool (任意 JDK) → APK signing-cert SHA-256(最强的 same-operator pivot) # openssl → cert fallback · file/strings → typing + 更快的 sweep · requests → 更好的 download # IntelGraph — 图表 + 实体图 pip install matplotlib graphviz # graphviz also needs `dot`: brew install graphviz npm i -g @mermaid-js/mermaid-cli # only for Mermaid flows # render_network.py (交互式图表) 是零 dependency 的 — JS libs 已被 vendored。 # IntelReport — pandoc + 一个 LaTeX engine (xelatex) 用于 PDF;仅用 pandoc 用于 DOCX。 ```为什么每个特征物都能用于溯源
提取的每一个特征物都是经过精心挑选的,因为它们能**抵御网站的改头换面**——操盘手可以在几分钟内更改域名的名称和 Logo,但底层的基础设施和账户级标识符却很难轻易更换: - **Favicon hash** — 不同域名使用相同的图标 = 共享工具包/运营者。根据不同搜索引擎使用正确的算法生成(Shodan/FOFA = mmh3,Censys = md5,Netlas = sha256)。 - **分析 / 运营者 token** — GA4 `G-`、`GTM-`、AdSense `pub-`,以及 SaaS/无代码账户 ID。一个账户 ID 能将操盘手绑定过的所有资产串联起来,甚至是那些已被清洗过痕迹的资产。 - **实时 TLS 证书** — 如果 SANs 出现在*不同*的可注册域名上,这就是一条跨品牌的操盘手关联线索;通过指纹可以找到所有提供该确切证书的主机。 - **JARM TLS 堆栈指纹** — 这是服务器 TLS 堆栈(加密套件/扩展顺序)的*主动* hash,而**不是**叶子证书。它能在域名**和**证书完全轮换后依然存活,因此当操盘手重新签发所有内容后,你依然可以通过 Shodan 的 `ssl.jarm:` 重新锁定其源站。在 `--proxy` 下会被抑制——因为它属于原始套接字探测。 - **CORS 策略** — 主动探测会发送一个外部的 `Origin` 并读取 `Access-Control-Allow-Origin`。一个字面上的允许源会指明一个**受应用信任、但从未出现在页面 HTML 中的后端主机**。 - **重定向链、钱包(包括隐藏在 QR 码中的)、Telegram、WHOIS 注册人** — 每一个都是能追溯至操盘手的独立线索。 WebPivot 会在每个种子上提取**所有**这些信息(即 **Pivot Matrix**,`PivotMatrix.md`),而不是机会主义地随机选取——因为归因结论的可靠性取决于你*最有力*的共享特征物,如果在依赖 WHOIS 进行归因时,却让同样存在于该 DOM 中未被读取的 JARM 或账户 token 关联线索白白浪费,这是报告中典型的薄弱环节。它还可以对种子进行逆向操作:`--hunt-impersonation` 会扫描拼写错误域名、TLD 排列组合以及 crt.sh 的关键词命中,以便在这些仿冒域名**被举报之前**将其挖掘出来。 每次溯源都带有一个**置信度**(高/中/低),反映了其作为识别操盘手依据的唯一性程度。主动与被动模式,以及 OPSEC 意识的数据收集
WebPivot 默认进行实时抓取,但**始终**也会抓取 Wayback CDX 时间轴——因为今天的一个停放页在去年可能就是一个活跃的诈骗漏斗。面对具有敌意或受 Cloudflare 验证保护的目标,它会逐步升级策略(UA 轮换 → `--proxy` 住宅 IP 出口 → `--render` 真实浏览器 → FlareSolverr),如果仍然失败,则退回被动数据源(Wayback 快照、urlscan 存储的 DOM),从而确保冷种子不会在死胡同里悄无声息地结束。当设置了代理时,原始套接字探测(TLS)会被抑制,以防泄露你的真实 IP。成本核算 — 两个独立的计费表
- **Anthropic 模型成本**(用于 agent 的推理)— 由 SDK 运行框架针对每次运行捕获到 `cases/certstream · crtsh · fofa"] KB2[("canonical KB
sightings · clusters")] end subgraph IA["Ordo — brain"] HARNESS["IntelHarness
collect · correlate · assess"] end DET -. "① lead-out (planned)" .-> HARNESS HARNESS == "② write-back (endpoint exists)" ==> KB2 classDef planned stroke-dasharray:5 5; ``` 两条轨道将它们连接起来: | 轨道 | 方向 | 状态 | |---|---|---| | **① 输出线** | working-base 的检测异常 → 本 agent 消耗的种子队列 | 🟡 计划中 | | **② 回写线** | 发现的结果 + 学习到的归属判定 → 回写到 working-base | 🟢 端点已存在 (`webpivot_ingest`) | ## OPSEC — 这是一个共享工具 **仅使用通用占位符:** `site-a.example`、`target.example`、`com.example.app`、`1.1.1.1`、`G-XXXXXXXXXX`、`CASE-0001`。`.example` TLD 是保留域名,永远不会被解析。 你的私人数据会被 git 忽略(`cases/`、`knowledge/`、`knowledge_scratch/`、`MEMORY/`、`.env`)——千万不要 `git add -f` 它们。在推送之前: ``` git ls-files cases/ knowledge/ knowledge_scratch/ # must print NOTHING git diff --cached # eyeball staged docs for real IOCs git grep -nE '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b|\b(bc1|0x[0-9a-f]{40})\b' -- WebPivot BinaryPivot IntelGraph IntelAnalysis IntelHarness ``` ## 添加新工具或技能 — 只需注册一次 根据代码库的 `CLAUDE.md`(规则 2):在 `harness/tools.py` 中使用 `@tool(...)` 包装新的 CLI 工具。只需这一处修改,就能将其暴露给 SDK `orchestrator.py`、stdio `mcp_server.py`(自动发现),**以及**交互式的 Claude Code(通过 `.mcp.json` → server `intel`)。现有工具的新*模式*无需添加新的 `@tool`——只需扩展该工具的描述即可。进行冒烟测试: ``` WebPivot/.venv/bin/python3 harness/mcp_server.py # send a tools/list JSON-RPC; the tool must appear ``` ## 深入探索| 文档 | 涵盖内容 | |---|---| | **`PIPELINE.md`** | 收集 → 关联 → 可视化的分步操作手册、参数备忘单以及实践案例。 | | **`harness/README.md`** | 深入解析 Agent-SDK 驱动器——模型级联、成本控制杠杆、收敛逻辑、并行集群判定、出站流量防护机制。 | | **`WebPivot/INSTALL.md`** | 更深度的 WebPivot 设置——API 密钥管理(密钥串、Linux/Windows)、渲染、代理。 | | **`WebPivot/SKILL.md`** + `references/` | 完整的溯源特征物目录(包括 TLS、JARM、CORS/HTTP)以及各引擎的查询语法。 | | **`WebPivot/references/PivotMatrix.md`** | “在每个种子上运行所有维度扫描”的准则——用于归因排序的特征物强度层级(决定性 → 佐证性)。 | | **`IntelHarness/SKILL.md`** | Claude 内部的案例驱动手册——阶段划分、何时应拒绝执行、何时应停止。 | | 每个 **`SKILL.md`** + `Workflows/` | 针对各技能的专有技术以及操作流程示例。 |
标签:AI 助手, ESC4, OSINT, Python, 反欺诈, 威胁情报, 实时处理, 开发者工具, 情报分析, 无后门, 特征检测, 网络诊断