第 4 章 · 04 资产发现 本节摘要:大多数测试从一个小种子(一个域名、一个组织名)开始,但真实攻击面远比这大——被遗忘的主机、staging/内部命名的服务、收购来的资产、根本不出现在字典里的基础设施。本节讲透 Strix 的被动资产与攻击面发现方法论:用证书透明度(CT)、TLS 证书 SAN 枢轴、被动 DNS、ASN/IP 枚举这四类被动情报,交叉验证、循环扩展,建一份去重、已探测、已分类的资产清单。核心是「覆盖与枢轴」——每张证书、每条 DNS 记录、每个 IP 都是通向更多资产的线索。本节给出高价值情报源、推荐工具链( / / + + + + )、关键技术与七步测试方法论。 内容来源:原项目文档 ,汉化并套用体系化模板。
本节摘要:大多数测试从一个小种子(一个域名、一个组织名)开始,但真实攻击面远比这大——被遗忘的主机、staging/内部命名的服务、收购来的资产、根本不出现在字典里的基础设施。本节讲透 Strix 的被动资产与攻击面发现方法论:用证书透明度(CT)、TLS 证书 SAN 枢轴、被动 DNS、ASN/IP 枚举这四类被动情报,交叉验证、循环扩展,建一份去重、已探测、已分类的资产清单。核心是「覆盖与枢轴」——每张证书、每条 DNS 记录、每个 IP 都是通向更多资产的线索。本节给出高价值情报源、推荐工具链(
subfinder/httpx/naabu+curl+openssl+dig+whois)、关键技术与七步测试方法论。
内容来源:原项目文档
strix/skills/reconnaissance/asset_discovery.md,汉化并套用体系化模板。
⚠️ 仅限授权测试 + 范围前提:本技能仅当目标的所有子域名和相关资产都在授权范围内时使用——被动发现会拉进远超种子的主机。广发现必须先确认范围许可。
阅读完本节,你应当能够:
subfinder + httpx + naabu + CT/DNS/cert 查询串联出资产清单。字典爆破(子域名字典 + DNS 解析)只能找到「命名规律被猜中」的主机。但真实攻击面里有大量资产不在这个范围内:
grafana.internal.example.com、k8s-prod.corp);*.internal.example.com、k8s-*、argocd.*);被动发现的目标是覆盖与枢轴:把每张证书、每条 DNS、每个 IP 都当成通向更多资产的线索,循环扩展直到资产集收敛,最后产出一份去重、已探测、已分类的攻击面清单。
CT 日志记录了几乎所有公开信任的证书。可按域名(匹配 SAN/CN)和按组织名查询。
curl -s 'https://crt.sh/?q=%25.example.com&output=json' | jq -r '.[].name_value' | sed 's/^\*\.//' | sort -uhttps://crt.sh/?O=Example+Inc&output=jsonparsed.names、parsed.subject.organization 或特定 fingerprint_sha256 搜证书,再枢轴到每个服务该证书的主机。certspotter、Google CT、chaos)——没有任何单一日志是完整的。*.corp.example.com)即使个别主机私有解析,也揭示内部命名方案;据此做定向猜测(grafana.corp、ci.corp、vault.corp)。💡 crt.sh 是最便宜的高收益源:无需 API key,一行
curl+jq就能拉到一个域的所有 CT 记录。Censys/Shodan 在有 key 时补充证书指纹枢轴与 vhost 枢轴。
一张证书往往列了很多主机名(营销 + API + admin + 内部)——要提取每一个 SAN,而不只是被查询的那个名。
subject.organization / organizationalUnit 的证书常属同一目标;echo | openssl s_client -connect HOST:443 -servername HOST 2>/dev/null | openssl x509 -noout -text | grep -A1 'Subject Alternative Name';localhost、*.internal、*.svc.cluster.local、*.local,或公网证书上出现 RFC1918 风格的名字,暴露内部命名甚至内部服务。chaos、passivedns provider)恢复已不再解析但可能仍前置活基础设施的名字。whois -h whois.cymru.com " -v <IP>" 或 BGP/ASN 查询;这些工具都在沙箱里,且对流水线友好(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 链 | dig、nslookup |
| whois | ASN/网段查询 | whois -h whois.cymru.com " -v <IP>" |
💡 交叉源胜过单一源:CT + 被动 DNS + subfinder 三者合起来,胜过任何单一来源。如果需要的工具没装,可在运行时装进沙箱。
每个新名字、PTR 结果、CNAME 目标、证书 SAN 都成为新鲜种子。循环 CT → SAN 提取 → 被动 DNS → ASN/段扩展,直到资产集停止增长。这是被动发现的引擎——不循环就只看到第一层。
用一张证书的 fingerprint_sha256 在 Censys/Shodan 搜索,找到所有其他呈现同一证书的主机——这是把收购资产和影子基础设施系到目标身上的最强跨资产链接。
通配 SAN 与观察到的主机名暴露组织的命名方案;据此生成定向候选(<service>.<env>.example.com),而非盲目爆破。比如看到 api-staging.example.com 和 api-prod.example.com,就能猜 admin-staging、admin-prod。
对 ASN 自有的段,直接用 naabu/httpx 扫 IP,并读取服务的证书(httpx -tls-grab 或 openssl s_client),找到根本没有 DNS 名的服务。
httpx -tls-grab(或 openssl s_client)在整段 IP 上抓 SAN,恢复从未记入公开 CT 的内部主机名;httpx -favicon,在 Shodan 用哈希枢轴,跨不相关主机名聚类同一应用的多个实例;Host: 值探测单个 IP,揭穿同址后端的多个应用;⚠️ 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 探测、分类,并路由给专家技能
第七步展开为五步:
httpx 一次性抓状态/标题/技术/服务器与证书 SAN——每个抓到的 SAN 回喂为新种子:httpx -l hosts.txt -sc -title -server -td -tls-grab -json -o assets.jsonl;naabu 对感兴趣的主机扫非 HTTP 服务(数据库、缓存、消息中间件、管理端口);information_disclosureweak_password_detectionsubdomain_takeoveraws / gcp / kuberneteshttpx 结果,而非仅被动命中);⚠️ 误报会虚胖攻击面:不做去重与归因,一份被动发现清单可能 80% 是 CDN edge、共享托管邻居、历史残留——既浪费后续测试预算,也可能让你去测了根本不属于目标的资产(越权风险)。验证四步是被动发现的「质量闸」。
被动发现——CT + TLS SAN 枢轴 + 被动 DNS + ASN/IP 映射,循环到收敛——找到字典爆破漏掉的资产,尤其是通过证书泄露的内部命名与被遗忘的服务。用 subfinder、httpx、naabu 与 CT/DNS/cert 查询建清单,通用化地探测与分类,再把每个有趣资产路由给对应类别的专家技能。
💡 贯穿全程的纪律:保持 JSON 输出,让各阶段干净串联(
subfinder→dig→httpx→naabu);循环管线直到收敛;始终用httpx -tls-grab(或openssl s_client)抓存活主机证书——主动 SAN 能抓到从未发到公开 CT 的内部主机名;内部风格的 SAN(*.internal、*.svc.cluster.local、staging 名)是最高信号的线索。
-tls-grab 探测+抓证)+ naabu(非 HTTP 端口)+ curl/jq(crt.sh)+ openssl s_client(主动 SAN)+ dig/nslookup(DNS)+ whois(ASN)。下一节,也是本章最后一节,我们看 Strix 怎么接进 CI/CD 流水线——无头模式 + GitHub Actions / GitLab CI / Jenkins / CircleCI,把安全检查塞进每个 PR。