尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

网络安全实战:子域名枚举工具链——Subfinder、Amass 与证书透明度的艺术

网络安全实战:子域名枚举工具链——Subfinder、Amass 与证书透明度的艺术 前言被遗忘的后门与隐形资产在无数次的红队渗透与蓝队护网实战中我见证过这样一个现象防御者往往把城墙筑得高高的主域名不仅部署了昂贵的 WAF还接入了全天候的态势感知系统。只要你在主站www.target.com上有一点风吹草动防御者的电话立马就会响个不停。然而胜利往往不发生在正面战场。真正的突破口常常隐藏在那些不起眼的角落——一个为了测试功能临时开通的子域名test-api.target.com一个被遗忘的旧系统legacy.target.com或者一个开发人员为了方便私自搭建的代码仓库gitlab.target.com。这些资产往往没有纳入统一的防守体系它们就像城堡侧墙上的一扇虚掩的小门一旦被推开整个防线便瞬间崩塌。子域名枚举就是寻找这扇小门的艺术。它不仅仅是敲开几个键盘、跑几个工具那么简单。它是一场关于资产发现、信息拼图与情报聚合的战役。在这篇文章中我们将深入探讨现代子域名枚举的“黄金三角”开源情报工具 Subfinder、网络测绘巨兽 Amass以及那个最诚实的数据源——证书透明度日志。这不仅仅是工具的使用说明书更是一条经过千锤百炼的实战工具链。第一章 资产的冰山理论为什么要“枚举”很多人将子域名枚举视为“资产收集”的一个小分支但在实战中我更愿意将其称为“攻击面的绘制”。1.1 攻击面的广度决定渗透的深度试想一下你面对的是一个拥有数千名员工的大型互联网企业。主站target.com可能只有两个 IP 地址但这只是冰山一角。在冰山之下可能潜藏着业务扩展为了新业务线开辟的new-project.target.com。运维便利为了远程办公或内部管理开放的vpn.target.com、jenkins.target.com。历史遗留业务下线了但 DNS 记录没删的old-crm.target.com。第三方服务指向 SaaS 平台的help.target.com。每一个子域名都代表着一种可能性。它可能运行着不同的中间件版本可能有着不同的代码逻辑甚至可能直接暴露了管理后台。我们的任务就是把这些“可能性”全部挖出来。1.2 枚举的两条路径主动与被动在工具链的选择上我们面临着两种截然不同的路径主动枚举通过字典爆破发送大量的 DNS 查询请求。这种方式效果好能发现从未被记录的子域名但动静大容易被 DNS 服务商拉黑或触发安全报警。被动枚举利用现有的数据源如搜索引擎、证书库、DNS 历史记录。这种方式静默、隐蔽能够快速获取大量公开资产。本文聚焦的 Subfinder 和 Amass正是被动枚举领域的王者。但这并不意味着它们不能进行主动探测Amass 的强大之处正是在于它融合了两者。而在实战中“被动优先主动兜底”才是生存之道。第二章 证书透明度无法撒谎的日志在介绍工具之前我们需要先理解它们的数据源头。在现代 HTTPS 普及的背景下没有任何数据源比证书透明度日志更诚实、更全面。2.1 什么是证书透明度过去CA 机构证书颁发机构可以悄悄地给任何域名签发证书甚至包括黑客伪造的证书。为了解决信任危机Google 推出了证书透明度计划。它要求 CA 机构在签发证书时必须将证书信息写入一个公开的、不可篡改的日志库中。这就意味着只要企业申请了 HTTPS 证书这个动作就会被记录下来。而由于一张证书往往可以保护多个域名SAN 字段这给了我们一个巨大的机会。2.2 从一张证书挖出一棵树实战案例假设我们关注目标target.com。在 CT 日志中我们发现了一张证书其 SAN 字段包含www.target.comapi.target.comadmin.target.comtest.target.com这就不仅仅是发现了几个子域名而是发现了一个业务拓扑。攻击者甚至不需要发一个数据包给目标服务器就已经拿到了这张“网络地图”。2.3 CT 日志的局限性虽然 CT 日志强大但它不是万能的。滞后性证书签发后可能需要几小时甚至几天才会出现在日志中。非 HTTPS 资产如果目标使用 HTTP 或者纯 TCP 服务如 SSH、MySQLCT 日志是盲区。通配符证书如果企业使用了*.target.com的通配符证书我们在 CT 日志里只能看到*.target.com而无法看到具体的子域名。这也是为什么我们需要 Subfinder 和 Amass 这样的工具来聚合多源数据。第三章 Subfinder极速先锋的“快准狠”如果在渗透测试的初期我只有几分钟时间来快速评估目标的资产规模Subfinder 是我的首选。它由 ProjectDiscovery 团队开发以 Go 语言编写专为一个字快。3.1 为什么是 SubfinderSubfinder 的设计哲学是“被动、快速、模块化”。它不直接与目标的 DNS 服务器交互而是去查询几十个数据源如 VirusTotal、Shodan、Censys、PassiveTotal 等把分散在各处的记录聚合起来。实战优势速度极快并发查询多个 API几秒钟内就能跑出成百上千个子域名。静默不接触目标服务器隐蔽性极高。API 生态支持配置大量第三方 API 密钥数据质量取决于你的“钥匙”有多少。3.2 实战配置给你的枪上膛Subfinder 装好只是第一步配置 API 密钥才是灵魂。很多新手抱怨“跑出来的结果少”往往是因为没配密钥。配置文件通常位于~/.config/subfinder/provider-config.yaml。实战建议优先配置以下高频且高质量的源VirusTotal杀软厂商的 DNS 记录库数据量大。Shodan网络空间测绘引擎能发现很多被爬虫抓取到的资产。Censys专注于互联网扫描数据精度高。GitHub如果你有 GitHub Token它还能帮你搜代码仓库里的泄露。3.3 Subfinder 的极限操作虽然 Subfinder 主打被动但我们可以通过管道将其与其他工具结合发挥最大效能。基础命令subfinder-dtarget.com-silent-osubs.txt进阶链式操作# 枚举子域名 - 去重 - 存活探测 - 指纹识别subfinder-dtarget.com-silent|httpx-silent|nuclei-tagscve这条命令体现了现代安全工具链的魅力Subfinder 负责找人httpx 负责确认人还在不在nuclei 负责查这人有没有病。3.4 避坑指南Subfinder 虽好但也有坑。速率限制部分 API 源有每日调用次数限制跑大目标时容易耗尽额度。建议在配置文件中合理设置rate-limit。误报某些数据源可能包含过期的 DNS 记录。Subfinder 默认不做 DNS 验证所以它给的结果只是一个“可能性列表”。必须配合 DNS 解析工具如dnsx进行清洗。第四章 Amass网络测绘的核武器如果说 Subfinder 是一把精准的狙击枪那么 OWASP Amass 就是一门重炮。它的功能之强、覆盖面之广让它成为了子域名枚举领域的“瑞士军刀”。4.1 Amass 的三驾马车Amass 不仅仅是一个子域名枚举工具它是一个情报分析框架。它由三个子模块组成Amass Intel用于收集域名、公司和联系人的开源情报。Amass Enum核心模块用于子域名枚举。Amass Vis可视化模块生成拓扑图虽然实战中大家更看重数据。4.2 为什么它是红队的首选Amass 的核心竞争力在于它的混合模式。它不仅像 Subfinder 一样查询 API支持超过 60 个数据源还会进行反向 DNS 查询、DNS 字典爆破如果开启主动模式、以及基于 ASN自治系统号的网段探测。实战场景当你遇到一个防御严密的目标普通的字典爆破无效CT 日志也查不到新东西。这时候Amass 的ASN 探测功能就成了奇兵。通过查询目标公司注册的 ASN我们可以找到该组织名下所有的 IP 段。然后Amass 会扫描这些 IP 段的反向 DNS 记录把那些绑定在 IP 上的域名全部揪出来。这招对于发现“未解析到主域名”的独立 IP 资产特别有效。4.3 配置与调优Amass 的配置文件config.yaml极其复杂但也极具价值。实战技巧API 密钥矩阵Amass 支持的 API 比 Subfinder 更多填满它就像在堆砌你的弹药库。递归深度Amass 支持递归枚举。发现a.target.com后继续枚举*.a.target.com。对于大型跨国企业开启递归往往能发现深藏在业务树底层的资产。amass enum-dtarget.com-recursive-oresult.txt暴力破解的平衡Amass 虽然支持主动爆破但在实战中我通常不推荐直接开启。因为默认的字典太大动静太大。如果必须开启建议使用精简字典如namelist.txt并严格限制速率。4.4 Amass 的“重型”代价Amass 的强大伴随着代价速度慢为了追求全面性Amass 会进行多轮查询耗时往往是 Subfinder 的数倍。资源占用高在扫描大规模资产时Amass 对内存和 CPU 的消耗不容小觑。因此在我的 SOP标准作业程序中Amass 通常是在 Subfinder 跑完一遍、觉得数据量不够时作为“第二梯队”投入战场的。第五章 实战工具链构建从数据到情报有了工具不代表能打胜仗。如何将它们串联成一条高效的生产线才是渗透测试工程师的核心竞争力。5.1 黄金流水线架构我习惯将子域名枚举分为三个阶段广度发现 - 数据清洗 - 深度验证。第一阶段被动侦察静默期目标尽可能多地发现域名不惊动目标。步骤 1运行 Subfinder。快速拉取 API 数据。subfinder-dtarget.com-all-silent-osubfinder_subs.txt步骤 2运行 Amass被动模式。amass enum-passive-dtarget.com-oamass_subs.txt步骤 3查询 CT 日志使用 crt.sh 或 Censys。第二阶段数据清洗去噪期目标合并数据去除泛解析和无效域名。步骤 1合并去重。catsubfinder_subs.txt amass_subs.txt|sort-uall_subs.txt步骤 2DNS 解析验证。使用dnsx进行大规模解析。catall_subs.txt|dnsx-silent-a-cname-respvalid_subs.txt这一步非常关键。dnsx会告诉我们哪些域名是活的IP 是多少CNAME 指向哪里。如果是泛解析dnsx通常能识别出所有请求都返回同一个 IP 的异常模式。第三阶段深度情报增值期目标把域名变成可攻击的资产。步骤 1端口扫描。将解析出的 IP 提取出来扔给Nmap或Masscan。步骤 2指纹识别。使用httpx或Wappalyzer批量访问域名识别 Web 服务类型。步骤 3子域名接管检测。检查 CNAME 记录是否指向已废弃的云服务如 GitHub Pages, Heroku。工具推荐subzy或nuclei的 takeover 模板。5.2 对抗泛解析的实战技巧泛解析是子域名枚举中最大的“噪音源”。当 DNS 服务器配置为*.target.com都解析到同一个 IP 时工具会误以为发现了成千上万个资产。实战解法利用“多级验证法”。第一步找到一个肯定不存在的随机子域名如this-is-a-fake-test-12345.target.com。第二步解析该域名记录返回的 IP假 IP。第三步在清洗阶段编写脚本过滤掉所有解析结果为“假 IP”的域名。但这种方法有缺陷。有些聪明的防御者会把泛解析的结果做成轮询 IP让你误以为是真的。进阶解法利用“端口存活差异”。泛解析返回的 IP 通常只开放了 80/443 端口且页面内容高度一致。真实的业务子域名往往开放着非标准端口如 8080, 8888, 3000或者有着不同的 HTML Title。通过httpx探测存活和提取 Title我们可以轻易区分出真假。第六章 高阶技巧当工具失效时工具是死的人是活的。在对抗高等级防御目标时常规工具链往往会失效。6.1 利用 DNS 记录的历史“尸体”很多企业因为业务调整会修改 DNS 记录甚至删除子域名。但互联网是有记忆的。利用SecurityTrails或ViewDNS.info等平台我们可以查询 DNS 的历史解析记录。实战价值曾有一个案例目标的gitlab.target.com现在已经无法解析了。但我查询历史记录发现它半年前解析到123.123.123.123。直接访问这个 IP发现 Gitlab 服务依然跑着只是域名被删除了。这就是“幽灵资产”。6.2 基于组织的 OSINT 搜索Amass 提供了一个非常强大的功能intel。它不搜域名而是搜“公司”。amass intel-orgTarget Corp这会返回该组织注册的所有 ASN 和网段。对于跨国企业或拥有多个品牌的公司这招极其有效。例如目标公司收购了一家小公司但小公司的资产还没并入主域名体系。通过组织架构搜索我们就能发现这些“影子公司”的资产。6.3 搜索引擎的黑魔法不要忽略 Google 和 Shodan 的语法。Google Dorksite:target.com -www。这能快速发现主站以外的子域名。Shodanssl:target.com。搜索所有证书里包含目标域名的 IP。这能发现那些即使没有配置 DNS 解析但依然挂着证书的服务器比如内部测试环境泄露到公网。第七章 结语信息收集的哲学子域名枚举看起来是技术活其实是耐心活更是细心活。Subfinder 和 Amass 提供了强大的算力但它们只是挖掘机。真正的矿工需要懂得如何设计挖掘路径如何筛选矿石如何从沙砾中发现金子。在实战中切记以下三条铁律不要迷信自动化工具跑出的结果必须经过人工研判。一个泛解析域名如果不清洗会拖慢整个扫描节奏。保护好 API你的 API Key 就是你的子弹。不要在公网泄露不要在 GitHub 上提交。隐蔽即安全能用被动枚举解决的问题绝不要主动爆破。保留你的 IP 信誉为了那最后的一击。
返回列表