第 4 章 · 04 资产发现


文档摘要

第 4 章 · 04 资产发现 本节摘要:大多数测试从一个小种子(一个域名、一个组织名)开始,但真实攻击面远比这大——被遗忘的主机、staging/内部命名的服务、收购来的资产、根本不出现在字典里的基础设施。本节讲透 Strix 的被动资产与攻击面发现方法论:用证书透明度(CT)、TLS 证书 SAN 枢轴、被动 DNS、ASN/IP 枚举这四类被动情报,交叉验证、循环扩展,建一份去重、已探测、已分类的资产清单。核心是「覆盖与枢轴」——每张证书、每条 DNS 记录、每个 IP 都是通向更多资产的线索。本节给出高价值情报源、推荐工具链( / / + + + + )、关键技术与七步测试方法论。 内容来源:原项目文档 ,汉化并套用体系化模板。

第 4 章 · 04 资产发现

本节摘要:大多数测试从一个小种子(一个域名、一个组织名)开始,但真实攻击面远比这大——被遗忘的主机、staging/内部命名的服务、收购来的资产、根本不出现在字典里的基础设施。本节讲透 Strix 的被动资产与攻击面发现方法论:用证书透明度(CT)、TLS 证书 SAN 枢轴、被动 DNS、ASN/IP 枚举这四类被动情报,交叉验证、循环扩展,建一份去重、已探测、已分类的资产清单。核心是「覆盖与枢轴」——每张证书、每条 DNS 记录、每个 IP 都是通向更多资产的线索。本节给出高价值情报源、推荐工具链(subfinder/httpx/naabu+curl+openssl+dig+whois)、关键技术与七步测试方法论。

内容来源:原项目文档 strix/skills/reconnaissance/asset_discovery.md,汉化并套用体系化模板。

⚠️ 仅限授权测试 + 范围前提:本技能仅当目标的所有子域名和相关资产都在授权范围内时使用——被动发现会拉进远超种子的主机。广发现必须先确认范围许可。

学习目标

阅读完本节,你应当能够:

  1. 说清为什么「种子小、攻击面大」,以及被动发现能找到字典爆破找不到的主机。
  2. 列举四类高价值情报源(CT / TLS SAN / 被动 DNS / ASN&IP)及其线索类型。
  3. 掌握四种关键技术(迭代种子扩展、证书指纹枢轴、命名约定推断、IP 优先发现)。
  4. subfinder + httpx + naabu + CT/DNS/cert 查询串联出资产清单
  5. 复述七步测试方法论(种子 → CT → SAN/CN → 被动 DNS → ASN/IP → 主动 TLS → 合并探测)。
  6. 识别四类误报(CDN/edge、共享托管邻居、历史 DNS 残留、通配证隐含名)。

一、为什么需要被动资产发现

字典爆破(子域名字典 + DNS 解析)只能找到「命名规律被猜中」的主机。但真实攻击面里有大量资产不在这个范围内:

  • 有证书但没 DNS 记录的主机:证书透明度日志记录了几乎所有公开信任的证书,很多主机「领了证但没上线 DNS」或「DNS 已下线但服务还在」;
  • 内部/staging/预发布主机名:这些命名常泄露在证书的 SAN 列表里(grafana.internal.example.comk8s-prod.corp);
  • 兄弟公司与收购域名:共享证书、ASN 或 IP 段的资产,可能属于同一组织但域名完全不同;
  • 通配与短命证书:暴露命名约定(*.internal.example.comk8s-*argocd.*);
  • ASN 自有的 IP 段:托管着根本没有 DNS 名的服务;
  • 共享 IP 上的虚拟主机:一个 IP 后面挂多个应用(vhost);
  • 非 HTTP 服务:数据库、消息中间件、管理端口。

被动发现的目标是覆盖与枢轴:把每张证书、每条 DNS、每个 IP 都当成通向更多资产的线索,循环扩展直到资产集收敛,最后产出一份去重、已探测、已分类的攻击面清单。

二、四类高价值情报源

2.1 证书透明度(CT)

CT 日志记录了几乎所有公开信任的证书。可按域名(匹配 SAN/CN)和按组织名查询。

  • crt.sh(免费、无需 key):
    • 按域名(含子域):curl -s 'https://crt.sh/?q=%25.example.com&output=json' | jq -r '.[].name_value' | sed 's/^\*\.//' | sort -u
    • 按组织:https://crt.sh/?O=Example+Inc&output=json
  • Censys / Shodan / Fofa(需 API key):按 parsed.namesparsed.subject.organization 或特定 fingerprint_sha256 搜证书,再枢轴到每个服务该证书的主机。
  • 交叉核对多个索引(certspotter、Google CT、chaos)——没有任何单一日志是完整的。
  • 通配符(*.corp.example.com)即使个别主机私有解析,也揭示内部命名方案;据此做定向猜测(grafana.corpci.corpvault.corp)。

💡 crt.sh 是最便宜的高收益源:无需 API key,一行 curl + jq 就能拉到一个域的所有 CT 记录。Censys/Shodan 在有 key 时补充证书指纹枢轴与 vhost 枢轴。

2.2 TLS 证书 SAN/CN

一张证书往往列了很多主机名(营销 + API + admin + 内部)——要提取每一个 SAN,而不只是被查询的那个名。

  • SAN 扩展:一张证书常列出 marketing + api + admin + internal 多个名;
  • 共享证书枢轴:同一证书指纹在多个 IP 上服务,把分散资产系到同一所有者;
  • 签发者/组织枢轴:共享 subject.organization / organizationalUnit 的证书常属同一目标;
  • 主动读取抓取从未提交到公开 CT 的名字:echo | openssl s_client -connect HOST:443 -servername HOST 2>/dev/null | openssl x509 -noout -text | grep -A1 'Subject Alternative Name';
  • 内部泄露信号:SAN 里出现 localhost*.internal*.svc.cluster.local*.local,或公网证书上出现 RFC1918 风格的名字,暴露内部命名甚至内部服务。

2.3 被动 DNS

  • 对每个名做正向解析(A/AAAA/CNAME),保留 CNAME 链——它们揭示第三方 provider 和 CDN;
  • 对已发现 IP 做反向 DNS(PTR),浮现同址主机名;
  • 历史/被动 DNS(SecurityTrails、VirusTotal、chaos、passivedns provider)恢复已不再解析但可能仍前置活基础设施的名字。

2.4 ASN 与 IP 段

  • 把已知 IP 映射到其 ASN 与网段:whois -h whois.cymru.com " -v <IP>" 或 BGP/ASN 查询;
  • 若组织运营自己的 ASN,枚举所有宣告前缀,把它们当候选资产;
  • 云托管目标的 IP 属于 provider 而非组织——此时通过证书/vhost 枢轴,而非网段。

三、推荐工具链

这些工具都在沙箱里,且对流水线友好(JSON 输出):

工具 用途 典型命令
subfinder 跨多源(含 CT)的被动子域名聚合 subfinder -d example.com -all -recursive -silent -oJ -o subs.jsonl
httpx 一次性存活探测 + 证书/SAN 抓取 httpx -l hosts.txt -tls-grab -json
naabu 非 HTTP 服务的端口扫 naabu -list hosts.txt -top-ports 100 -verify -silent
curl + jq 直接查 crt.sh JSON(无需 key)与其他索引 API curl -s 'https://crt.sh/?q=%25.example.com&output=json' | jq ...
openssl s_client 主动读取存活主机证书,提取 SAN/CN echo | openssl s_client -connect HOST:443 ... | openssl x509 -noout -text | grep -A1 'Subject Alternative Name'
dig / nslookup 正向/反向(PTR)解析与 CNAME 链 dignslookup
whois ASN/网段查询 whois -h whois.cymru.com " -v <IP>"

💡 交叉源胜过单一源:CT + 被动 DNS + subfinder 三者合起来,胜过任何单一来源。如果需要的工具没装,可在运行时装进沙箱。

四、四种关键技术

4.1 迭代种子扩展

每个新名字、PTR 结果、CNAME 目标、证书 SAN 都成为新鲜种子。循环 CT → SAN 提取 → 被动 DNS → ASN/段扩展,直到资产集停止增长。这是被动发现的引擎——不循环就只看到第一层。

4.2 证书指纹枢轴

用一张证书的 fingerprint_sha256 在 Censys/Shodan 搜索,找到所有其他呈现同一证书的主机——这是把收购资产和影子基础设施系到目标身上的最强跨资产链接

4.3 命名约定推断

通配 SAN 与观察到的主机名暴露组织的命名方案;据此生成定向候选(<service>.<env>.example.com),而非盲目爆破。比如看到 api-staging.example.comapi-prod.example.com,就能猜 admin-stagingadmin-prod

4.4 IP 优先发现

对 ASN 自有的段,直接用 naabu/httpx 扫 IP,并读取服务的证书(httpx -tls-grabopenssl s_client),找到根本没有 DNS 名的服务。

五、进阶技巧

  • 跨整段的主动 SAN 收割:用 httpx -tls-grab(或 openssl s_client)在整段 IP 上抓 SAN,恢复从未记入公开 CT 的内部主机名;
  • favicon 与响应哈希:httpx -favicon,在 Shodan 用哈希枢轴,跨不相关主机名聚类同一应用的多个实例;
  • vhost 差分:用多个 Host: 值探测单个 IP,揭穿同址后端的多个应用;
  • 历史 CT/DNS diff:高亮近期签发的证书与新出现的主机——对新鲜或配置错误的部署是高信号。

⚠️ vhost 差分的前提:一个 IP 后挂多个应用时,默认请求(不带特定 Host:)只返回默认站点。要揭穿其他 vhost,必须主动用不同 Host: 值探测——这是发现共享托管下隐藏应用的关键手法。

六、七步测试方法论

1. 种子 域名、组织/法人名、已知 IP、邮箱域名、代码托管组织 2. 证书透明度 按种子域名与组织名拉所有已记证书(crt.sh、Censys/Shodan) 3. SAN/CN 提取 用 httpx -tls-grab(或 openssl s_client)解析每个 CN 与 SAN; 每个新名是新种子 4. 被动 DNS 用 dig 做正向与反向解析;收割历史记录 5. ASN/IP 映射 whois 查网段/ASN 扩展自有段,再扫存活主机 6. 主动 TLS 枢轴 对存活 IP/端口跑 httpx -tls-grab 抓公开 CT 缺失的 SAN 7. 合并 & 探测 去重、httpx 探测、分类,并路由给专家技能

七、合并、探测与分类

第七步展开为五步:

  1. 去重:把名字与 IP 合并进一份清单,每个资产记录来源以标置信度;
  2. 存活探测:用 httpx 一次性抓状态/标题/技术/服务器与证书 SAN——每个抓到的 SAN 回喂为新种子:
    httpx -l hosts.txt -sc -title -server -td -tls-grab -json -o assets.jsonl;
  3. 分类:按标题/技术/路径信号把资产按功能分类(应用、API、营销、认证、CI/CD、可观测性、存储、管理、VCS、邮件),按角色聚类而非按具体产品名;
  4. 端口扫:用 naabu 对感兴趣的主机扫非 HTTP 服务(数据库、缓存、消息中间件、管理端口);
  5. 按价值排优先级,把每个发现交给对的专家技能:
    • 暴露的仪表盘/调试/可观测性/元数据泄露 → information_disclosure
    • 默认或弱口令的登录/管理面板 → weak_password_detection
    • 悬空 DNS/未认领的 provider 资源 → subdomain_takeover
    • 云控制台/元数据面 → aws / gcp / kubernetes

八、验证与误报

8.1 验证(四步)

  1. 确认每个发现资产确实解析并服务内容(存活 httpx 结果,而非仅被动命中);
  2. 通过匹配证书组织、共享证书指纹、或种子域下 DNS 把资产归因到目标;
  3. 把 vhost 别名与 CDN edge 去重到不同源,避免攻击面虚胖;
  4. 记录溯源(每个资产来自哪个源)以保可复现。

8.2 四类误报

  • CDN/edge 主机名与 provider 默认名:非组织自有;
  • 同 IP 的共享托管邻居:vhost 同址,非目标资产;
  • 历史 DNS 残留条目:指向已重新分配的基础设施;
  • 通配证隐含的主机名:从未真正解析或服务内容。

⚠️ 误报会虚胖攻击面:不做去重与归因,一份被动发现清单可能 80% 是 CDN edge、共享托管邻居、历史残留——既浪费后续测试预算,也可能让你去测了根本不属于目标的资产(越权风险)。验证四步是被动发现的「质量闸」。

九、影响与小结

被动发现——CT + TLS SAN 枢轴 + 被动 DNS + ASN/IP 映射,循环到收敛——找到字典爆破漏掉的资产,尤其是通过证书泄露的内部命名与被遗忘的服务。用 subfinderhttpxnaabu 与 CT/DNS/cert 查询建清单,通用化地探测与分类,再把每个有趣资产路由给对应类别的专家技能。

💡 贯穿全程的纪律:保持 JSON 输出,让各阶段干净串联(subfinderdighttpxnaabu);循环管线直到收敛;始终用 httpx -tls-grab(或 openssl s_client)抓存活主机证书——主动 SAN 能抓到从未发到公开 CT 的内部主机名;内部风格的 SAN(*.internal*.svc.cluster.local、staging 名)是最高信号的线索。

本节要点回顾

  1. 核心动机:种子小、攻击面大;被动发现(CT/TLS SAN/被动 DNS/ASN)找到字典爆破找不到的主机,尤其内部命名与被遗忘服务。
  2. 四类情报源:证书透明度(crt.sh 免费 + Censys/Shodan 带指纹枢轴)、TLS SAN/CN(一张证多名 + 共享指纹系资产)、被动 DNS(正反解 + 历史记录)、ASN/IP 段(whois 扩展自有段,云目标改走证书/vhost)。
  3. 推荐工具链:subfinder(聚合)+ httpx(-tls-grab 探测+抓证)+ naabu(非 HTTP 端口)+ curl/jq(crt.sh)+ openssl s_client(主动 SAN)+ dig/nslookup(DNS)+ whois(ASN)。
  4. 四种关键技术:迭代种子扩展(循环到收敛)、证书指纹枢轴(最强跨资产链接)、命名约定推断(定向猜测非盲爆)、IP 优先发现(扫段读证书找无 DNS 服务)。
  5. 七步方法论:种子 → CT → SAN/CN 提取 → 被动 DNS → ASN/IP 映射 → 主动 TLS 枢轴 → 合并探测分类路由。
  6. 合并探测五步:去重(记溯源)→ httpx 存活探测(SAN 回喂)→ 按功能分类(按角色非产品)→ naabu 扫非 HTTP 端口 → 按价值路由到专家技能。
  7. 验证与误报:验证靠存活探测+归因+去重+溯源;四类误报是 CDN/edge、共享托管邻居、历史 DNS 残留、通配证隐含名——不处理会虚胖攻击面且引发越权风险。

下一节,也是本章最后一节,我们看 Strix 怎么接进 CI/CD 流水线——无头模式 + GitHub Actions / GitLab CI / Jenkins / CircleCI,把安全检查塞进每个 PR。


发布者: 作者: 灏天文库 转发
评论区 (0)
U