渗透测试的成功率,80%取决于信息收集做得好不好
一、为什么信息收集是第一课?
先讲一个真实的渗透测试案例。
有一次,团队接到一个授权测试项目,目标是一个中型企业的对外网站。团队里一个新人上来就掏出扫描器对着目标IP一顿狂扫,结果扫了半天,只发现一个Nginx默认页面和一个不疼不痒的敏感信息泄露。
"这个目标太硬了吧,感觉没什么搞头。"他说。
带他的老同事接手过来,花了两个小时做信息收集:
子域名枚举 → 发现了一个
test-admin.xxxx.com的子域名反向IP查询 → 发现目标服务器上还托管着另外一个公司的站点
GitHub搜索 → 发现某个开发人员把数据库配置文件传到了公开仓库
历史DNS记录 → 找到了服务器之前绑定的老域名
结果:通过这个test-admin子域名,发现了一个使用弱密码的后台管理系统。系统里还找到了另一套业务系统的接口文档,顺藤摸瓜,最终拿到了核心业务的数据权限。
同样一个目标,信息收集的深度不同,结果天差地别。
在网络安全领域,有一个共识:渗透测试的成功率,80%取决于信息收集做得好不好。工具大家都在用,经验也差不多,拉开差距的,就是谁能挖到更多"看似无关的信息"并串联起来。
二、信息收集的"侦察思维"
在动手操作之前,先建立一个核心认知:信息收集不是"用工具跑一遍",而是"像侦探一样去侦察"。
侦察思维的三个核心原则
| 原则 | 含义 | 渗透测试中的应用 |
|---|---|---|
| 尽可能收集 | 不要预设"这个信息没用" | 一个邮箱地址、一个子域名、一个接口路径,都可能成为突破口 |
| 交叉验证 | 单一来源的信息可能不准确 | 多个数据源对比,确认信息的真实性 |
| 关联分析 | 孤立的碎片没有价值,连接起来才是情报 | 开发人员的GitHub账号 → 邮箱 → 公司内网架构 → 可能的突破口 |
信息收集的"三环模型"
把所有信息分为三个圈层,从外到内逐层深入:
text
【第一环:公开信息】 ↓ 搜索引擎、社交媒体、备案信息 【第二环:网络层信息】 ↓ 域名、IP、端口、服务指纹 【第三环:应用层信息】 ↓ 目录结构、接口、版本、参数
原则:从外到内,逐层深入。每层都能发现潜在的攻击面。
三、信息收集的六大模块(实战拆解)
我把信息收集分为六个模块,每个模块都有明确的目标、工具和手法。
📍 模块一:域名与子域名收集
目标:获取目标的所有域名和子域名,扩大攻击面
为什么重要:一个主站可能防御很严,但一个被遗忘的test.xxxx.com或old.xxxx.com可能漏洞百出。
核心手法:
| 手法 | 工具/平台 | 说明 |
|---|---|---|
| DNS爆破 | dnsrecon、sublist3r、OneForAll | 通过爆破常用子域名字典来发现子域名 |
| DNS历史记录 | SecurityTrails、DNSDB、VirusTotal | 查询一个域名曾经绑定的子域名 |
| 证书透明度日志 | crt.sh、Censys | 从SSL证书中提取域名信息,非常可靠 |
| 搜索引擎搜索 | Google/Baidu使用site:语法 | 直接搜索site:xxxx.com看有无子域名暴露 |
| ASN查询 | bgp.he.net | 查询目标ASN下的所有IP段和域名 |
实操任务:
选一个你喜欢的网站(自己的或开源的靶场域名)
用
crt.sh查询它的证书透明度记录,看看能找到多少个子域名用
sublist3r或OneForAll跑一遍,对比结果把收集到的子域名分类:
*.xxxx.com中哪些是"主站类"、哪些是"测试类"、哪些是"第三方服务"
达标标准:
✅ 能独立完成一个域名的子域名收集,输出子域名列表
✅ 知道证书透明度记录是"可靠度最高"的子域名来源
📍 模块二:IP与网络层信息收集
目标:定位目标的真实IP、开放端口、服务类型和操作系统
核心手法:
| 手法 | 工具/平台 | 说明 |
|---|---|---|
| IP反查 | SecurityTrails、ViewDNS | 输入IP,查出该IP上托管了哪些域名 |
| 端口扫描 | Nmap、Masscan | 发现开放的端口和服务 |
| 服务指纹识别 | Nmap -sV、WhatWeb、Wappalyzer | 识别Web服务器的具体版本和框架 |
| CDN绕过 | 多地Ping、历史DNS、源站IP查找 | 如果目标用了CDN,需要绕过才能定位真实IP |
| C段扫描 | Nmap扫描xxx.xxx.xxx.0/24 | 同一网段内其他服务器的服务可能有连带风险 |
CDN绕过技巧(重点):
查询历史DNS记录,可能在启用CDN之前记录了真实IP
使用
Censys或Shodan搜索域名关联的IP如果目标的邮件服务器是自建的,邮件服务器的IP通常是真实IP
实操任务:
对一个目标域名进行IP解析,检查是否使用了CDN
使用Nmap对目标进行端口扫描,输出开放端口列表
使用
WhatWeb或Wappalyzer识别目标网站的技术栈尝试用历史DNS记录寻找目标的真实IP
达标标准:
✅ 能判断目标是否使用了CDN
✅ 能输出一份完整的端口和服务列表,标注高危服务
✅ 能用至少两种方法尝试绕过CDN
📍 模块三:Web应用指纹识别
目标:识别Web应用使用的框架、CMS、中间件和版本信息
为什么重要:知道了版本,就能查已知漏洞;知道了CMS,就能找对应的利用EXP。
核心手法:
| 手法 | 工具/平台 | 说明 |
|---|---|---|
| HTTP响应头分析 | 浏览器开发者工具、curl -I | Server头、X-Powered-By等字段常暴露信息 |
| Favicon哈希匹配 | shodan的favicon搜索 | 网站的图标哈希值可以用来识别同类站点 |
| 路径特征识别 | 手动探测常见路径 | 如/wp-admin、/dede、/admin等CMS特征路径 |
| 自动化指纹识别 | WhatWeb、Wappalyzer、Ehole | 自动匹配数千种CMS/框架的指纹库 |
实操任务:
访问一个常见的CMS站点(如WordPress博客)
用
WhatWeb识别技术栈,对比手动从HTTP头中发现的信息查看页面的源代码和JS文件,从中找到版本号或其他特征
达标标准:
✅ 能独立识别一个未知站点的技术栈(后端语言、Web服务器、前端框架至少各一个)
📍 模块四:目录与敏感文件探测
目标:发现未授权的目录、备份文件、敏感配置文件等
核心手法:
| 手法 | 工具/平台 | 说明 |
|---|---|---|
| 目录爆破 | dirsearch、gobuster、ffuf | 通过字典枚举隐藏目录和文件 |
| 备份文件探测 | 常见备份后缀字典 | .bak、.swp、.old、~结尾的文件 |
| 敏感文件探测 | 常见敏感文件路径字典 | .git/、.svn/、/env、/.aws/、phpinfo.php |
| Google Dorking | 搜索引擎高级语法 | site:xxxx.com filetype:log、site:xxxx.com intitle:index of |
目录爆破的字典选择:
小型快速:
common.txt(约500-2000条)全面扫描:
directory-list-2.3-medium.txt(约数万条)漏洞探测:特定CMS的专用字典(如WordPress、Drupal)
实操任务:
在DVWA或Pikachu靶场上运行
dirsearch,观察发现了哪些隐藏路径使用Google Dorking搜索一个公开站点的敏感文件
分析扫描结果,识别哪些是"高价值"路径(后台、API、备份文件)
达标标准:
✅ 能在靶场中发现至少3个隐藏目录或敏感文件
✅ 能区分"正常页面"和"敏感路径"
📍 模块五:搜索引擎与公开情报收集(OSINT)
目标:利用公开信息来源收集目标的情报
核心手法:
| 手法 | 工具/平台 | 说明 |
|---|---|---|
| Google Dorking | Google高级搜索语法 | 找敏感文件、后台、错误信息 |
| GitHub搜索 | GitHub代码搜索 | 搜索含密码/密钥/配置的公开仓库 |
| 社交媒体 | 微博、知乎、LinkedIn | 找员工信息、内部系统截图、技术栈讨论 |
| 网盘搜索 | 网盘搜索引擎 | 找泄露的内部文档 |
| 备案信息查询 | 工信部ICP备案查询 | 查企业主体和关联域名 |
| 企业信息查询 | 天眼查、企查查 | 查子公司、关联公司、法人信息 |
GitHub搜索的关键语法:
text
# 搜索数据库连接信息 "DB_PASSWORD" language:php # 搜索密钥文件 filename:.env filename:.aws/credentials # 搜索特定公司的代码泄露 "xxxx.com" "password" extension:sql
Google Dorking常用语法:
text
site:xxxx.com intitle:"index of" # 目录列表 site:xxxx.com filetype:log # 日志文件 site:xxxx.com inurl:admin # 后台路径 site:xxxx.com "PHP Parse error" # 错误信息 site:xxxx.com "powered by" "version" # CMS版本
实操任务:
用Google搜索
site:github.com "xxxx.com" "password"格式练习在GitHub上搜索一个开源的配置文件,分析泄露了什么信息
使用ICP备案查询查找一个公司的关联域名
达标标准:
✅ 能独立使用至少3种搜索引擎语法进行信息检索
✅ 知道GitHub搜索是"最高价值"的OSINT信息来源之一
📍 模块六:人员信息与社工情报
目标:收集目标组织的人员信息,为后续攻击提供线索
核心手法:
| 手法 | 说明 | 价值 |
|---|---|---|
| 员工邮箱挖掘 | 通过社交网络、邮件组、Whois信息获取 | 可用于钓鱼或爆破(配合弱密码) |
| 技术栈讨论挖掘 | 员工在技术社区讨论中透露的技术细节 | 了解内部技术架构 |
| 组织结构分析 | 通过LinkedIn等平台了解公司部门设置 | 了解潜在入侵路径 |
⚠️重要提醒:人员信息收集在授权渗透测试中属于"社会工程学"范畴,仅适用于有明确授权的项目。在任何情况下,禁止对未经授权的个人进行骚扰、威胁或任何形式的侵犯。本节内容仅供了解攻击者可能的路径,以增强防御意识。
实操任务:仅限在授权场景中执行,或练习时使用公开的、无害的信息(如查询一个开源项目的贡献者信息)。
四、信息收集的"工作流":从零到完整情报
把以上六个模块串联起来,形成一个可复制的工作流:
text
【第一步:域名级收集】 crt.sh → 子域名列表 → 整理分类 【第二步:IP级收集】 子域名 → 解析IP → 判断CDN → 如果CDN则尝试绕过 → 获得真实IP 【第三步:网络级收集】 IP → Namp端口扫描 → 服务指纹识别 → 发现开放高危端口/服务 【第四步:Web级收集】 网站 → WhatWeb指纹识别 → CMS/框架/版本 → 查找已知漏洞 【第五步:纵深收集】 网站 → Dirsearch目录爆破 → 发现隐藏路径/敏感文件 【第六步:情报收集】 目标信息 → GitHub搜索 → Google Dorking → 社交媒体挖掘 → 扩展信息 【第七步:整合输出】 所有收集的信息 → 整理成文档 → 标记高价值攻击面
总耗时:对于一个中等复杂度的目标,完整的信息收集流程大约需要2-4小时。
五、信息收集的"武器库"
命令行工具
| 工具 | 用途 | 一句话评价 |
|---|---|---|
sublist3r | 子域名枚举 | 简单快速,适合快速扫描 |
OneForAll | 综合子域名收集 | 2026年综合能力最强的工具之一 |
nmap | 端口扫描+指纹识别 | 必会,没有替代品 |
masscan | 大规模快速端口扫描 | 扫C段极快,但结果需要Nmap验证 |
dirsearch | 目录爆破 | 稳定、字典丰富、输出友好 |
ffuf | 高性能模糊测试 | 速度极快,可做多种测试 |
whatweb | Web指纹识别 | 轻量、准确、命令行友好 |
Web平台
| 平台 | 用途 | 说明 |
|---|---|---|
crt.sh | 证书透明度日志 | 最可靠的子域名来源 |
SecurityTrails | 域名/IP历史数据 | 功能丰富,免费额度够用 |
VirusTotal | 多引擎扫描+域名情报 | 查域名是否被标记恶意 |
Censys/Shodan | 互联网资产搜索引擎 | 搜索全网暴露的服务 |
GitHub | 代码泄露搜索 | 最有价值的OSINT来源 |
六、常见误区与避坑
❌ 误区1:信息收集只做一次
后果:目标可能上线了新服务、开启了新端口,而你用的是两周前的信息。
正确做法:每次渗透测试开始前,重新做信息收集。上次的结果只做参考,不能直接使用。
❌ 误区2:只依赖自动化工具
后果:工具扫不到的就漏掉了。比如一些隐藏的子域名、绑定在特定User-Agent上的服务。
正确做法:自动化工具扫描 → 手动补充 → 交叉验证。工具负责"广度",人负责"深度"。
❌ 误区3:忽略历史信息
后果:只看了当前状态,错过了历史DNS记录、老版本快照等宝贵信息。
正确做法:查看历史DNS记录、历史网页快照(Wayback Machine)、历史SSL证书。
❌ 误区4:不整理收集到的信息
后果:收集了一堆数据,但杂乱无章,关键信息被淹没。
正确做法:每次信息收集都输出一份结构化文档,按域名、IP、端口、漏洞等分类整理。
七、实战练习方案
阶段一(1周):工具熟练期
每天熟悉1-2个信息收集工具
在自己搭建的靶场环境中练习
记录每个工具的输出格式和常用参数
阶段二(2周):综合应用期
选择一个开源的漏洞靶场(如Vulhub搭建的环境)
执行完整的信息收集流程(6个模块全部走一遍)
输出一份信息收集报告
阶段三(持续):真实场景模拟
选择自己搭建的有授权测试环境
盲测模式:不参考任何资料,独立完成信息收集
对比结果和"正确解法"的差异
八、写在最后
信息收集看起来"不酷"。它不像漏洞利用那样有直接的成就感,不像内网渗透那样充满对抗的快感。
但它是一切的基础。
一个顶尖的渗透测试工程师和一个普通的渗透测试工程师,在使用同样工具、面对同样目标时,区别就在于——前者能从一个子域名、一个邮箱地址、一个暴露的端口上,敏锐地嗅到"这里可能有突破口"。
这种嗅觉怎么来的?不是天赋,是大量信息收集训练积累出来的直觉。
今天的文章给了你所有的方法、工具和流程。从今天开始,每次打开一个目标,不要急着跑漏洞扫描器。先静下心来,认真地、系统地、耐心地做一次信息收集。
你会发现,信息收集本身就是一种渗透。你收集得越深,你的攻击路径就越清晰,你离目标就越近。
💬 互动:你用过最好用的信息收集工具是什么?有没有哪个信息收集技巧让你"眼前一亮"?评论区分享一下,互相学习。
觉得有用?点个收藏,做渗透测试前翻出来对照流程。也欢迎转发给正在做渗透的小伙伴。