☰
Decepticon 被动 OSINT 技能目录解析:零接触侦察的 Playbook 体系、工作流与网络策略强制
2026/10/14 15:55:35 网站建设 项目流程

【免费下载链接】Decepticon

Autonomous Hacking Agent for Red Team

项目地址:https://gitcode.com/gh_mirrors/de/Decepticon
点击查看免费下载

导读

本文围绕 Decepticon 开源仓库中的 OSINT-Only Operator Skill Catalog 展开,系统讲解这套**纯被动开源情报(OSINT)**技能目录的设计思路:它列出 11 类侦察技术(domain-pivots、CT 日志、Shodan/Censys 指纹、GitHub 代码搜索、Wayback 归档、泄露数据、员工画像、ASN/BGP、Maltego、加密货币链分析、地理空间情报),定义了从 Seed 到 Synthesis 的七步工作流,并用outbound-only 网络策略在结构上杜绝向目标基础设施发包。读完本文,你将掌握该目录的 Playbook 全貌、执行顺序、沙箱网络策略的落地机制,以及它在 Decepticon 中与 Recon 侦察 Agent 的分工边界与源码级实现。

一、技能目录的定位:纯被动、零接触的侦察通道

该目录对应的技能名为osint-overview,其 front matter 明确定义了适用场景与约束:

name: osint-overview description: > Use when the engagement requires passive reconnaissance only — no packets to the target's authoritative infrastructure. Splits off from the Recon agent so bug-bounty and pre-engagement work can run with outbound-only network policy. Maltego, Shodan, Censys, Hunter.io, breach-data lookups, GitHub code search, Wayback Machine archives, certificate transparency, BGP/ASN mapping. metadata: subdomain: osint when_to_use: "osint passive reconnaissance maltego shodan censys hunter breach data github code search wayback machine certificate transparency bgp asn outbound only bug bounty" tags: osint, passive-recon, shodan, censys, breach-data, ct-logs, bgp mitre_attack: T1589, T1590, T1591, T1593, T1594, T1596 network_policy: outbound-only

要点拆解:

  • 零接触承诺:目录本身明确声明 "This catalog ispassive. No packets reach the target."。所有数据都来自第三方索引与公开档案(Shodan、Censys、Hunter、GitHub API、crt.sh、Wayback 等),而不是目标自己的服务器。
  • MITRE ATT&CK 映射:mitre_attack字段覆盖了 ATT&CK Reconnaissance 战术下的 T1589(收集受害者身份信息)、T1590(收集受害者网络信息)、T1591(收集受害者组织信息)、T1593(收集受害者主机信息)、T1594(搜索受害者自有网站)、T1596(搜索开放技术数据库)。这六个技术 ID 正是纯被动情报的标准落点,说明该目录在技能层就被设计为 ATT&CK 感知的。
  • 触发词体系:when_to_use提供了一组可供 Agent 匹配的关键词,包括工具名(maltego、shodan、censys、hunter)与动作(osint、passive reconnaissance、breach data、github code search、wayback machine、certificate transparency、bgp、asn、outbound only、bug bounty)。中间件层(middleware/skills.py)正是靠这类 trigger 关键词决定何时调用load_skill()加载对应 SKILL.md。
  • 网络策略声明:network_policy: outbound-only是本文第五部分要展开的核心约束——沙箱只允许出站到白名单 OSINT 端点,任何指向目标的出站尝试都会被拒绝。

二、Playbook 总览:11 类内联技术参考

该目录的一个重要设计决策是:内联技术参考,而不是可单独加载的子技能。目录开头的说明框写得很明确:

Inline technique reference — not separately loadable skills.The entries below are summarized here for direct use; there is no separateSKILL.mdto open for each. Do NOT call the skill loader on them — apply the technique with your tools using this summary and the Workflow in this file.

也就是说,这 11 项技术只是浓缩在目录中的速查参考,Agent 应直接配合工作流用工具执行,不要对它们调用技能加载器。完整清单如下:

TechniqueUse for
domain-pivotsWhois 历史、反向 IP、关联域名枚举
ct-logscrt.sh / Censys 证书搜索,用于子域名枚举
shodan-fingerprintShodan 主机搜索;服务 / banner / ssl.cn 关联跳转
censys-pivotsCensys 证书/主机/服务关联跳转
github-code-searchGitHub 代码搜索,查找组织的泄露密钥 / 配置
wayback-archivesWayback Machine API;已下线的端点、被删除的文档
breach-dataHIBP / DeHashed(仅 RoE 允许时);凭据复用路径
employee-profilingLinkedIn 搜索(Sales Nav / 手动)、邮箱格式推断
asn-bgpASN 归属、BGP 表快照、RIR 记录
maltegoMaltego CLI 图谱投影;transform 链
cryptocurrency面向加密币相关目标的链分析(Etherscan / Mempool.space / Arkham)
geospatial图片地理定位、EXIF 挖掘、卫星/街景交叉引用

值得注意的是,这些技术覆盖了"技术面 + 人员面 + 资产面"三个维度:domain-pivots、ct-logs、asn-bgp解决"目标有哪些域名与网络资产";shodan-fingerprint、censys-pivots解决"资产暴露了什么服务";github-code-search、breach-data解决"是否已有泄露的密钥与凭据";employee-profiling、geospatial则转向"人"和"物理位置"。

仓库中另有两份同类技能文档可作为互补参考:recon/passive-recon/SKILL.md(WHOIS、DNS、子域名、CT 日志、httpx 指纹等基础设施侧被动侦察)与 recon/osint/SKILL.md(邮箱收割、员工枚举、GitHub 密钥扫描等人员/组织侧 OSINT 知识库,含大量可复制命令)。前者在文末明确做了边界声明:基础设施侧被动侦察完成后,将域名等成果移交给后者继续做人员与组织情报。

三、七步工作流:从 Seed 到 Synthesis 的完整链路

目录定义了一个标准执行顺序,从种子信息一路推进到可交接的攻击面地图:

  1. Seed(种子):从交战目标出发——域名、公司名、品牌。
  2. Domain layer(域名层):whois、反向 IP、CT 日志 → 枚举出每一个子域名与相邻域名。
  3. Service layer(服务层):对发现的 IP 执行 Shodan + Censys 查询 → 形成服务清单(禁止主动探测,只消费缓存的扫描数据)。
  4. Code layer(代码层):针对目标的组织名、域名、内部包名、AWS 账号 ID 做 GitHub 代码搜索。
  5. People layer(人员层):通过 LinkedIn 枚举员工;推断邮箱格式;用 HaveIBeenPwned 检查凭据复用。
  6. Infrastructure layer(基础设施层):BGP + ASN 归属;Wayback 已下线端点;SSL/TLS 证书历史。
  7. Synthesis(综合):将图谱投影到 Neo4j 形成交战前地图;仅当 RoE 允许时,移交给 Recon Agent 做主动确认。

这里有几个值得注意的分层逻辑:

  • 先域名后服务再代码:先确定"有哪些资产",再确定"资产暴露什么",最后才去第三方平台上找"是否有已泄露的敏感信息",避免在未确定资产清单前盲目搜索。
  • 服务层明确"NO probing":Shodan/Censys 本身是持续扫描的第三方索引,Agent 只是查询这些索引的缓存结果,这与技能目录"no packets to the target"的基调完全一致。
  • 合成环节落到知识图谱:成果不是零散文本,而是投影进 Neo4j 的"交战前地图"(pre-engagement map),供后续 Recon/Exploit 直接继承。

这个七步流程在 Agent 提示词 agents/prompts/standard/osint_operator.md 中得到了呼应——OsintOperator 的循环被描述为:读取 OPPLAN 目标 → 加载该 OSINT 目录挑选技术 → 仅从公开来源收集 → 把每个发现记入知识图谱(主机=Host 节点、邮箱=Identity 节点、泄露密钥=Credential 节点、暴露服务=Service 节点,全部关联到交战的 Organization 节点)→ 汇总攻击面与高价值线索移交 Recon 主动验证。

四、与 Recon 的边界:为什么必须从 Recon 中拆分

目录专门用一节 "Why split from Recon" 解释了拆分的理由:

  • Recon 默认是主动的:端口扫描、版本探测、目录爆破都是主动行为,会真实触碰目标。
  • Bug bounty 与交战前范围界定工作明令禁止触碰生产环境:这类场景要求绝对的 no-touch 契约。
  • OSINT-only 将"不触碰"契约结构化强制执行,而不是依赖 Agent 提示词去"记住":这是该设计最核心的论点——把合规约束从"提示 Agent 自律"升级为"网络策略强制",后者无法被模型遗忘或绕开。

这种分工在源码层面是可验证的。Decepticon 注册了两个不同的标准 Agent:

  • agents/standard/recon.py 注册recon,priority=10,职责是 "Passive/active recon, OSINT, web/cloud recon"。
  • agents/standard/osint_operator.py 注册osint_operator,priority=12,parent_agents=("decepticon",),其 docstring 明确写道:"This agent is read-only by doctrine: it gathers from public sources and NEVER touches the target's infrastructure directly (that is Recon's job once a scope is confirmed)."

优先级数字(10 vs 12)与父代理配置表明,osint_operator是独立于recon的专用子代理通道;graph_registry.py中"osint_operator": "./decepticon/agents/standard/osint_operator.py:graph"的映射(graph_registry.py)则把它挂接进 LangGraph Platform 的模块级图。同时,recon 工作流 把侦察阶段排序为 passive → OSINT → cloud → active → web,OSINT 被安排在主动侦察之前,且明确要求最多 2 次确认性探测、零 exploit 工具,进一步印证了"被动情报先行、主动验证殿后"的执行纪律。

五、网络策略:outbound-only 白名单与双重强制

目录给出了沙箱网络的策略描述,这是整套设计中最具强制力的部分:

[osint-operator container] → outbound to: shodan.io, api.censys.io, api.hunter.io, api.github.com, crt.sh, archive.org, hibp/api/v3, maltego.com, etherscan.io, ... NO outbound to the engagement target.

配套约束:OSINT 交战的 sandbox-net 策略会固定(pin)这份白名单;任何试图出站到目标 IP/域名的行为都会触发 SafeCommand 拒绝。

该策略在 Decepticon 的中间件与沙箱内核中落地为"解析器 + 网络边界"双层结构,这在 middleware/egress.py 的模块注释中阐述得很清楚:

  1. RoE 解析器层(快速失败 UX 门):middleware/roe.py 中的RoEGuardrailMiddleware解析命令文本,看到明确越界的命令文本就提前拒绝;但它不是权威边界——目标可以藏在变量间接引用、命令替换或带外 DNS 解析后面。
  2. 沙箱网络层(权威强制):compile_egress_policy把同一个roe.json:machine_enforcement块编译成EgressPolicy,由沙箱在网络边缘执行——nftables 连接白名单(出站包只有落在范围内才放行)加上DNS 白名单(沙箱解析器只应答范围内的主机名/通配符)。"一个范围定义、两个强制点":即使命令解析器漏掉了目标,指向范围外主机的包也出不了沙箱。

值得补充的实现细节:osint_egress_hosts()(middleware/egress.py)默认把duckduckgo.com、html.duckduckgo.com这类搜索提供方始终加入允许名单——因为web_search在 RoE 工具层是目标豁免的(它打的是白名单提供方而非目标),否则 enforce 模式下的 nftables/DNS 白名单会把提供方连接也丢掉、导致web_search静默失败。该列表可用环境变量DECEPTICON_OSINT_EGRESS_HOSTS(逗号分隔)扩展,设为空字符串可禁用。这与 tools/web/search.py 中web_search/web_fetch的分工一致:web_search走白名单提供方、纯 OSINT 无需目标范围;web_fetch读取搜索结果中的单页,但 URL 必须在plan/roe.json:scope内、且绝不指向目标自有基础设施。

另一个可验证的安全边界在 tools/research/osint.py 的osint_enrich工具中:它聚合 Shodan / Censys / ZoomEye 的开放端口、证书、DNS、服务 banner 情报,目标会先经DECEPTICON_OSINT_SCOPE(逗号分隔的 host /*.wildcard模式)校验,越界目标在任何网络出口发生前就被拒绝,且每次调用都会被记录。无凭据时它回退到确定性本地 mock 目录(可用DECEPTICON_OSINT_CATALOG指向 JSON 覆盖),保证离线可开发测试。

六、执行载体:OsintOperator 与它的工具面

目录本身是知识载体,实际执行它的是osint_operator子代理。从 agents/standard/osint_operator.py 的源码看,这个 Agent 通过 bash 工具面聚合了与目录 Playbook 一一对应的收集手段:

  • theHarvester / amass / subfinder → 域名 + 子域名发现(对应 domain-pivots、ct-logs、asn-bgp)
  • hunter.io / holehe → 邮箱枚举(对应 employee-profiling)
  • gitleaks / trufflehog → 代码与密钥泄露发现(对应 github-code-search)
  • shodan / censys CLI → 互联网暴露面映射(对应 shodan-fingerprint、censys-pivots)

同时,它的标准工具面(_STANDARD_TOOLS)还包括知识图谱工具(kg_add_node、kg_add_edge、kg_query、kg_neighbors、kg_stats)、cve_lookup、payload_search、methodology_lookup以及web_search/web_fetch(ADR-0010 开放网络获取),技能源固定为"/skills/standard/osint/"与"/skills/shared/",递归上限 200。这套组合意味着:Agent 既能跑 CLI 收集器,也能用白名单搜索 + RoE 门控抓取补齐线索,并把一切发现沉淀进知识图谱,与目录第七步 Synthesis 的要求无缝衔接。

七、交接协议:结构化输出,供 Recon/Exploit 继承

目录要求合成阶段"project the graph into Neo4j as a pre-engagement map; hand off to the Recon agent for active confirmation"。OsintOperator 提示词(agents/prompts/standard/osint_operator.md)给出了标准交接格式:

{ "objective_id": "<server-issued-objective-id>", "outcome": "complete | partial | blocked", "attack_surface": { "domains": ["acme.com"], "subdomains": ["vpn.acme.com", "jira.acme.com"], "exposed_services": ["vpn.acme.com:443 (Fortinet)"], "identities": ["alice@acme.com"], "leaks": [{"type": "aws-key", "source": "github:acme/infra", "node_id": "cred-..."}] }, "high_value_leads": ["jira.acme.com runs an outdated version (CVE-...)"], "next_objective_suggestion": "Recon: validate vpn.acme.com + jira.acme.com actively." }

这个格式的价值在于:攻击面(域名/子域名/暴露服务/身份/泄露)、高价值线索与下一步建议都是结构化字段,Recon 拿到后可以直接把next_objective_suggestion转成主动验证目标,Exploit 也能从leaks中的node_id反查知识图谱里的 Credential 节点——整条 OSINT → Recon → Exploit 的链路因此是数据驱动的,而不是靠自由文本传递。

八、结语:用结构强制取代提示词约束

Decepticon 的 OSINT-Only Operator Skill Catalog 给出的启示可以概括为一句话:对于"绝不触碰目标"这类红线约束,与其依赖 Agent 记住,不如把它编译进网络策略。目录通过 front matter 的 ATT&CK 映射与触发词实现技能层面的意图匹配,通过内联 Playbook 表压缩 11 类被动技术的知识密度,通过七步工作流保证从资产到人员再到基础设施的系统性覆盖,最后用 outbound-only 白名单 + nftables/DNS 双重强制在结构上兑现 no-touch 契约。对希望在自己的红队自动化框架中实现"被动侦察先行"的读者,这份目录及其配套的osint_operatorAgent、compile_egress_policy中间件,是一个可以直接借鉴的完整范本。

进一步阅读

  • OSINT 技能目录原文
  • OsintOperator Agent 实现
  • OsintOperator 系统提示词(含循环与交接格式)
  • 被动侦察知识库(基础设施侧)
  • OSINT 知识库(人员/组织侧,含可复制命令)
  • 出站策略编译与 OSINT 豁免实现
  • RoE 守卫中间件
  • 被动 OSINT 富化工具(Shodan/Censys/ZoomEye)
  • Recon 工作流(阶段排序与交接纪律)

【免费下载链接】Decepticon

Autonomous Hacking Agent for Red Team

项目地址:https://gitcode.com/gh_mirrors/de/Decepticon
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询