💡导读:在军事行动中,情报错误往往意味着全军覆没。在网络攻防中,这句话同样适用:“不知道目标有什么,你就没法打;知道目标有什么,你就赢了一半。”本期我们将深入渗透测试的第一步——信息收集(Information Gathering),教你如何利用公开资源(OSINT)和技术手段,绘制出一张精准的目标“藏宝图”。
一、 为什么信息收集如此重要?
很多初学者急于寻找漏洞(Exploitation),却忽略了信息收集的重要性。实际上,在一个完整的渗透测试项目中,60% 的时间应该花在信息收集上。
举个例子:
假设你要攻击一个银行。你是直接拿着炸药去炸正门(正面硬刚 WAF),还是先花几天时间去摸清银行的守卫换班时间、监控死角、通风管道结构以及金库管理员的家庭住址(信息收集)?
显然,后者成功率更高,且更安全。在 Web 安全中,一个被遗忘的测试接口(test.example.com)或一个暴露的备份文件(backup.zip),往往比主站更容易攻破。
二、 信息收集的“三路出击”策略
我们可以将信息收集分为三个维度:被动收集、主动收集和社会工程学。本篇重点讲解前两者。
1. 被动信息收集(Passive Recon)
定义:不与目标服务器发生直接交互,通过第三方平台获取数据。
优势:隐蔽性极强,不会被 IDS(入侵检测系统)记录。
信息类型 | 常用工具/平台 | 实战用途 |
|---|---|---|
子域名 | Hunter.io,FOFA,Shodan,SecurityTrails | 寻找主站之外的边缘资产,往往防护薄弱。 |
代码泄露 | GitHub/Gitee | 搜索 |
历史漏洞 | Exploit-DB,CVE Details | 查看目标使用的 CMS 或中间件版本是否存在已知漏洞。 |
网盘/文档 | 百度网盘,Google Dork | 利用搜索引擎语法查找敏感文档。 |
🔍 实战演示:GitHub 信息泄露
很多开发者在上传代码时会不小心把数据库密码写进去。
# 在 GitHub 搜索语法中 filename:config.php DB_PASSWORD org:target-company password解释:这行代码会搜索所有文件名包含config.php且文件内容包含DB_PASSWORD的文件,或者属于某公司的包含密码的代码。
2. 主动信息收集(Active Recon)
定义:直接向目标服务器发送数据包,根据响应判断信息。
风险:会产生流量日志,容易被防火墙(WAF)拦截。
A. 域名与端口扫描
这是最基础的步骤,目的是搞清楚:“对方开了哪些门?”
工具:Nmap(网络扫描界的瑞士军刀)
实战命令:
# 基础扫描:扫描目标 TOP 1000 端口,并识别服务版本 nmap -sV example.com # 全面扫描:扫描所有端口,使用默认脚本,输出详细结果 nmap -p- -A -T4 example.com -oN result.txt-p-:扫描 65535 个端口(很慢但全)。-A:激进模式,包含操作系统检测和脚本扫描。-T4:调整扫描速度(0-5),数字越大越快,但也越容易被封。
📝 解读结果:
如果扫描发现3306端口开放,说明目标大概率使用了 MySQL 数据库;如果发现6379端口开放,可能是 Redis 未授权访问的高危漏洞点。
B. Web 目录与文件扫描
很多时候,网页表面只有几个按钮,但通过扫描目录,你会发现后台入口/admin、备份文件/www.zip或探针文件/phpinfo.php。
工具:Dirsearch,Gobuster
实战命令:
python3 dirsearch.py -u https://example.com -e php,zip,bak,txt -t 50-e:指定后缀名,专门找备份文件和源码包。-t:线程数,太快可能会被 Ban IP。
三、 进阶实战:CDN 绕过与真实 IP 定位
现代企业网站通常会使用 CDN(内容分发网络)来加速访问和隐藏源站 IP。如果你直接攻击 CDN 节点,那是徒劳的。我们需要找到藏在背后的真实服务器 IP。
场景模拟:
假设目标target.com使用了 Cloudflare CDN。
尝试历史 DNS 记录:
网站在上线初期可能没有用 CDN。访问 SecurityTrails或 ViewDNS.info,查询该域名的 A 记录历史。如果运气好,能看到它很久以前绑定的原始 IP。
利用 SSL 证书:
有些 CDN 配置不当,SSL 证书中会包含真实 IP。
# 使用 Censys 搜索 parsed.names: target.com and tags.raw: "cdn"邮件源 IP 泄露:
如果网站有“找回密码”功能并发送邮件,查看邮件原文(Headers),其中的
Received: from字段往往指向真实的服务器 IP。
四、 资产测绘:网络空间搜索引擎
除了传统扫描,现代渗透测试越来越依赖网络空间搜索引擎。它们就像“网络世界的 Google 地图”。
FOFA (国内最强):
语法:
domain="target.com" && port="8080"作用:快速找到属于目标企业的所有 IP 和端口。
Shodan (全球最强):
语法:
org:"Amazon.com" product:"nginx"作用:搜索特定组织使用的特定设备(如摄像头、路由器、服务器)。
五、 实战演练:构建你的第一个“资产清单”
现在,让我们整合上述工具,完成一个小任务。
任务目标:对juice-shop.herokuapp.com(一个公开靶场)进行信息收集。
Who.is 查询:查注册人邮箱、电话(虽然很多是隐私保护,但有时能关联到技术人员)。
子域名爆破:使用
Sublist3r或OneForAll。端口扫描:
nmap -F juice-shop.herokuapp.com(快速扫描)。目录扫描:
dirsearch -u https://juice-shop.herokuapp.com。
最终产出物:你应该得到一张表格,包含 IP、开放端口、Web 技术栈(如 Node.js)、存在的目录路径。
⚠️ 安全警示与法律红线
再次郑重声明:
严禁扫描未授权目标:本篇文章中提到的所有工具和技术(Nmap、Dirsearch、FOFA 语法等),仅限用于你拥有的设备或合法的漏洞赏金计划(SRC)。
控制扫描速率:即使是授权测试,也不要使用过高的线程(如
-t 1000)进行暴力扫描,这可能导致目标服务器资源耗尽(DoS 攻击),造成业务中断。数据隐私:在收集过程中如果意外获取到他人隐私数据(如手机号、身份证号),严禁下载、传播或滥用,应立即停止测试并报告给厂商。
黑客精神在于探索与建设,而非破坏与窃取。请务必在法律框架内进行技术实践。
💬 互动环节
你在信息收集中遇到过最奇葩的事情是什么?有没有通过 JS 文件找到过后台接口?
关于 FOFA 或 Shodan 的高级语法,有哪些你想了解的?欢迎在评论区留言讨论!
👉 下一期预告:【武器库篇】Burp Suite 详解——如何像外科医生一样解剖 HTTP 流量。