做进攻性安全这一行,接到一个授权评估任务之后,我最先做的事往往不是打开扫描器,而是先把侦察和情报收集这一步做透。回头看这些年参与的评估项目,凡是前期侦察做得扎实的,后面漏洞挖掘和利用几乎是水到渠成;凡是草草拿工具扫一轮就开工的,大概率会在中途发现目标资产跟想象中完全不一样,再回头补数据,浪费时间不说,还容易漏掉真正关键的攻击面。“侦察和情报收集的进攻性安全工具”这句话,听起来像是某个工具仓库的一句话简介,但它背后涵盖的其实是整个渗透测试流程里最考验耐心、也最体现功力的阶段。这篇文章就围绕这个主题,把我自己日常在授权测试中常用的侦察思路、工具组合、情报收集维度以及踩过的坑系统梳理一遍,给准备往红队方向走的朋友,或者需要完善防御体系的蓝队同学一个可直接参考的路线。
1. 进攻性安全里的侦察,到底在解决什么问题
1.1 侦察在攻击链路中的位置
一次标准的授权渗透测试,流程大致是:范围界定、情报收集、漏洞发现、漏洞利用、内网横向、痕迹清理、报告输出。侦察和情报收集排在第二位,但它不是一次性动作,而是会贯穿后续阶段的持续任务。
很多人对侦察的理解停留在“扫端口、跑目录”这一步,但实际上侦察的核心目的是回答三个问题:目标有哪些资产、这些资产暴露了哪些服务、这些服务背后藏着哪些可利用的信息。这三个问题的答案,直接决定了后续攻击路径的规划。
举个例子,一个看似防护严密的主站,可能跑着WAF、装了主机加固、做了全量补丁。但在侦察阶段如果发现某个老旧的子域绑定在一个已被遗忘的测试服务器上,而这个子域还能解析到内网IP段,那这条路径的价值往往比硬刚主站高得多。这就是为什么说,侦察不是体力活,而是整个攻击链里最需要动脑子的部分。
1.2 被动侦察与主动侦察的分工
侦察手段通常分成被动和主动两类,我习惯把这两者理解成不同阶段的组合拳。
被动侦察是指不直接向目标系统发探测包,而是利用公开信息、第三方平台、历史数据来勾勒目标画像。比如证书透明性日志查询子域、通过搜索引擎和网盘搜索找文档、在代码托管平台搜索目标相关的泄露代码片段、通过DNS历史记录看曾经的解析记录。被动侦察的优势是隐蔽、不容易触发目标侧的告警,也适合在正式测试开始前做一轮摸底。
主动侦察则是直接与目标系统交互,比如端口扫描、服务识别、目录爆破、Web指纹识别。这些操作会产生大量访问日志,所以一定要在拿到授权、且明确测试时间窗口之后再做。主动侦察的数据更准确,但也更容易暴露身份和意图,需要控制节奏和频率。
两类的顺序也值得讲究。我通常先把被动侦察能拿到的信息全部落地,形成一份初步的资产表;然后基于这份资产表做主动验证,避免盲扫浪费时间和流量。
1.3 为什么侦察质量决定项目成败
有句话说得好:比别人更早找到目标在互联网上的每一个脚跟,你就已经赢了一半。进攻性安全的核心优势从来不在于某一个0day,而在于信息差。目标自己都不记得的资产,恰好是我们最容易突破的地方。
侦察阶段收集到的每一条信息,都是后续工具的输入。子域清单是目录爆破和指纹识别的起点,端口和服务版本决定了漏洞利用方向,Web技术的指纹决定了要挂哪些漏扫插件和利用EXP,人员信息则可能成为钓鱼测试的素材。这些数据一环扣一环,某一环缺失,整个链条就可能断掉。
我见过不少项目,漏洞扫描器跑得轰轰烈烈,结果输出的报告里一半资产是CDN节点的IP、三分之一是测试环境的星星点点、真正生产环境的有效资产反而被淹没在噪声里。这种问题几乎都是前期侦察图省事埋下的雷。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 侦察工具箱:常用的工具与选型逻辑
2.1 资产枚举三件套:Amass、Subfinder、OneForAll
子域名收集是侦察阶段的第一项硬任务。市面上工具很多,我常用的三个是Amass、Subfinder和OneForAll,它们各有侧重。
Amass是一款老牌工具,集成了大量被动数据源和主动枚举能力。它的优势在于数据源丰富、支持自定义API、输出格式规范。缺点是比较吃配置,如果数据源API key填得少,效果会打折扣。实际使用中,我一般先跑被动模式,再根据目标重要程度决定要不要跑主动枚举:
bash复制# 子域名被动收集
amass enum -passive -d example.com -config config.ini -o sub_passive.txt
# 子域名主动暴力枚举(配合字典)
amass enum -active -d example.com -wordlist subdomains_top5000.txt -o sub_active.txt
Subfinder则更加轻量,启动快、依赖少,尤其适合在信息收集初期快速拿到一张子域列表。它同样支持多数据源,配合API
