被动收集
不碰目标也能拿到的东西:空间测绘、备案、招聘信息、历史快照,以及它们之间的矛盾。
被动收集的定义很简单:你的流量不落在目标身上。
好处是不留痕,坏处是信息旧。所以它的定位不是「找资产」,是「先建立假设」——后面主动扫描时,你是带着「应该会看到什么」去的,而不是撞运气。
空间测绘
FOFA、Shodan、ZoomEye 这类搜索引擎的价值,是让你在不接触目标的情况下看到它的服务指纹。
几个常用的思路:
domain="example.com" # 主域下的所有资产
cert="example.com" # 按证书反查,能捞到用同一张证书的子域
body="某系统版权信息" # 按页面特征找同款系统
ip="1.2.3.0/24" # 按网段看
按证书反查这条最实用。很多子域没有 DNS 记录指向主域,但证书是同一张,或者同一个 Let’s Encrypt 签发批次。
按页面特征找同款系统,是挖通用漏洞的起点。一个 OA 系统的登录页长这样,全网可能有几千个实例用同一套代码——找到一个漏洞,剩下的都是同一个洞。
备案与 whois
国内站点先查备案。备案主体能告诉你这家公司到底有几块业务、有没有关联公司。关联公司往往就是「同一个后台、不同域名」的那批站。
whois 看三件事:注册时间(新域名可能是测试站)、注册邮箱(反查能捞出同一批域名)、DNS 服务器(同一家托管商的站,常常共享基础设施)。
whois 隐私保护之后,这三条能用的越来越少。但 DNS 服务器和注册时间还是有效的。
招聘信息
这条不太像技术手段,但确实好用。
招聘 JD 里会写技术栈:「熟悉 Spring Cloud、Redis、Kafka」「有 K8s 运维经验」。技术栈决定了哪些漏洞可能有、哪些肯定没有。
更细一点:JD 里写「负责 xx 系统的迭代」,这个系统名就是你要找的目标名。它可能出现在子域、出现在 JS 文件、出现在某个报错页面。
GitHub 与代码托管
搜公司名、搜域名、搜内部系统名。常见的是配置文件被提交上去:数据库连接串、内网地址、测试账号。
搜到之后不要直接用。先确认这个仓库是不是还在维护、里面的配置是不是还有效——很多时候是几年前的历史遗留,用了也白用。
历史快照与第三方
Wayback Machine 能看老版本页面。老版本的目录结构、后台路径、报错信息,经常比现在的版本更有用——因为它没被清理过。
另外别忘了:目标用过什么第三方服务。客服系统、统计代码、CDN、邮件服务商,这些在页面源码里都留了域名。第三方服务本身不在范围内,但它能告诉你目标的技术选型和运维习惯。
什么时候算收集够了
一个可用的判断标准:你能画出「用户请求从外网进来,经过什么,到达什么」这条链路,并且能标出链路上每一跳归谁管。
画不出来,说明还缺东西。画出来了,就可以开始主动探测了。
参考
- 《你真的会信息收集嘛,信息收集 10 大技巧》,公众号 泷羽Sec