信息收集基础:域名、IP、子域名与搜索引擎语法
各位同学,欢迎来到第二章。上一章我们聊了漏洞排查的整体思路,今天要讲的是整个渗透测试流程里最容易被新手忽略、但老手最重视的一步——信息收集。
我经常跟团队里的人说一句话:你收集了多少信息,决定了你能走多远。很多新手上来就扫端口、跑漏洞,结果碰一鼻子灰。为什么?因为你连目标的基本轮廓都没摸清楚。
这一章,我们聚焦四个核心方向:域名信息(Whois/DNS)、IP信息、子域名枚举、Google Hacking。每个点我都会结合实战经验来讲,该避的坑一个不落。
核心认知:信息收集不是一次性工作,而是贯穿整个渗透过程的循环。每获得一个新线索,都可能需要回溯到信息收集阶段重新挖掘。
1. 域名信息收集:Whois 与 DNS
域名信息收集,说白了就是搞清楚这个域名背后是谁、用了什么服务。我见过太多人直接拿域名去扫端口,结果扫了半天发现是个 CDN 节点——白费功夫。
Whois 查询
Whois 能告诉你域名的注册人、注册商、注册日期、过期时间、DNS 服务器等信息。这些信息有时候会直接暴露目标的管理员邮箱、电话甚至真实姓名。
我的习惯:拿到一个目标域名,第一件事就是查 Whois。如果注册人信息没隐藏,直接去搜这个邮箱,往往能关联出其他域名或社交账号。
常用的 Whois 查询方式:
- 在线工具:whois.com、站长工具、微步在线
- 命令行:
whois example.com(Linux/Mac 自带) - Python 脚本:使用
python-whois库批量查询
# 命令行查询示例
$ whois baidu.com
Domain Name: BAIDU.COM
Registry Domain ID: 11181110_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.markmonitor.com
Registrar: MarkMonitor, Inc.
Registrar IANA ID: 292
Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
Registrar Abuse Contact Phone: +1.2083895740
Name Server: NS1.BAIDU.COM
Name Server: NS2.BAIDU.COM
Name Server: NS3.BAIDU.COM
Name Server: NS4.BAIDU.COM
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
注意:现在很多域名开启了隐私保护,Whois 信息会被隐藏。这时候别死磕,换个思路——查历史 Whois 记录,有些网站会存档历史数据。
DNS 解析信息
DNS 记录能告诉你这个域名背后有哪些服务。我个人最关注的是 A 记录、CNAME 记录和 MX 记录。
| 记录类型 | 作用 | 渗透价值 |
|---|---|---|
| A / AAAA | 域名 → IP 地址 | 直接获取目标服务器 IP |
| CNAME | 别名解析 | 暴露 CDN 或云服务商 |
| MX | 邮件服务器 | 获取邮件服务商,可尝试钓鱼 |
| NS | 域名服务器 | 判断 DNS 服务商,寻找漏洞 |
| TXT | 文本记录 | 可能泄露 SPF、DKIM 等配置 |
# 使用 dig 命令查询 DNS 记录
$ dig baidu.com A
$ dig baidu.com MX
$ dig baidu.com NS
$ dig baidu.com TXT
# 使用 nslookup(Windows 也支持)
$ nslookup -type=any baidu.com
我曾经在一个项目中,通过 MX 记录发现目标用的是自建邮件服务器,然后顺着这个线索找到了一个未修补的 Exchange 漏洞——直接拿下了内网权限。你想想看,如果当时我只盯着 Web 应用,可能到现在还在打转。
2. IP 信息收集
拿到 IP 之后,别急着扫端口。先搞清楚这个 IP 属于谁、在哪个机房、有没有 CDN。
CDN 识别与绕过
很多目标用了 CDN,你扫到的 IP 其实是 CDN 节点,不是真实服务器。怎么判断?
- Ping 域名,看返回的 IP 是否多地不同
- 用
nslookup看是否返回多个 IP - 查 CNAME 记录,看是否指向 CDN 厂商
如果确认有 CDN,怎么找真实 IP?我常用的方法:
- 子域名枚举:有些子域名没挂 CDN,直接解析到真实 IP
- 历史 DNS 记录:用 SecurityTrails、Censys 查历史解析
- 邮件头分析:查看邮件原文的 Received 字段
- SSL 证书:用证书透明度日志找 IP
实战案例:有一次目标用了 Cloudflare,我通过枚举子域名发现了一个 dev 环境,那个子域名没挂 CDN,直接解析到了真实 IP。然后顺着这个 IP 扫到了 3389 端口——弱口令,直接拿下。
C 段扫描
拿到一个 IP 之后,别只看这一个。同一个 C 段(/24 网段)里可能还有其他目标资产。我习惯用 nmap 扫一下整个 C 段,看看有没有意外收获。
# 扫描 C 段存活主机
$ nmap -sn 192.168.1.0/24
# 扫描 C 段开放端口
$ nmap -sS -p 80,443,22,3389 192.168.1.0/24
嗯,这里要注意:C 段扫描动静比较大,容易触发告警。如果是红队项目,建议用 masscan 或者 zmap 这种高速扫描器,减少停留时间。
3. 子域名枚举
子域名枚举是我个人认为信息收集里性价比最高的环节。为什么?因为主站通常防护严密,但子域名往往被忽略——测试环境、后台管理、API 接口,都可能暴露在子域名上。
常用工具
| 工具 | 原理 | 特点 |
|---|---|---|
| Sublist3r | 搜索引擎 + DNS | 速度快,适合初步枚举 |
| Amass | 被动 + 主动收集 | 功能全面,结果最全 |
| Subfinder | 被动收集 | 轻量级,API 接口丰富 |
| dnsrecon | DNS 爆破 | 支持多种枚举方式 |
# Sublist3r 使用示例
$ python sublist3r.py -d example.com
# Amass 被动收集
$ amass enum -passive -d example.com
# Subfinder
$ subfinder -d example.com -o subdomains.txt
字典爆破
工具只能帮你找到公开的子域名,真正的宝藏藏在字典爆破里。我维护了一个 10 万级别的子域名字典,里面包含了各种常见的命名模式。
# 使用 dnsrecon 进行字典爆破
$ dnsrecon -d example.com -D subdomains.txt -t brt
# 使用 ffuf 进行子域名爆破
$ ffuf -w subdomains.txt -u https://FUZZ.example.com -fc 404
我的经验:字典质量决定爆破效果。别只拿网上现成的字典,要结合目标行业特点自己整理。比如金融行业常见 "pay"、"risk"、"settle";电商常见 "api"、"m"、"wap"、"seller"。
4. 搜索引擎语法(Google Hacking)
Google Hacking 说白了就是利用搜索引擎的语法来精准定位敏感信息。很多新手觉得这玩意儿过时了,其实不然——信息一直都在,只是藏得更深了。
核心语法
| 语法 | 作用 | 示例 |
|---|---|---|
| site: | 限定搜索域名 | site:example.com |
| intitle: | 搜索标题 | intitle:"index of" |
| inurl: | 搜索 URL | inurl:admin |
| filetype: | 搜索文件类型 | filetype:sql |
| intext: | 搜索页面正文 | intext:"password" |
常用搜索组合
# 找目录遍历漏洞
intitle:"index of" site:example.com
# 找配置文件泄露
filetype:env site:example.com
filetype:config site:example.com
# 找数据库备份
filetype:sql intext:"INSERT INTO" site:example.com
# 找后台登录页面
inurl:admin site:example.com
inurl:login site:example.com
# 找敏感文件
filetype:xls intext:"password" site:example.com
filetype:pdf intext:"机密" site:example.com
避坑指南:我曾经在项目里用 Google Hacking 找到了一个目标的数据库备份文件,直接下载下来。但后来发现那是蜜罐——文件是假的,但我的 IP 已经被记录了。所以,不要直接用真实 IP 去访问搜到的敏感文件,先通过代理或者换个环境验证。
高级技巧:缓存与快照
有时候目标已经删除了敏感信息,但搜索引擎的快照里还留着。用 cache: 语法可以查看 Google 缓存的页面。
# 查看缓存页面
cache:example.com/admin
# 结合 site 和 cache
site:example.com cache:example.com
还有一个技巧:用 related: 语法找相似站点,有时候能发现目标的关联域名。
# 找相似站点
related:example.com
本章小结
信息收集不是简单的跑几个工具就完事了。它考验的是你的思路和耐心。我见过太多人花 10 分钟收集信息,然后花 10 小时打不进去;而老手会花 10 小时收集信息,10 分钟解决问题。
记住几个关键点:
- Whois 和 DNS 是起点,别跳过
- CDN 识别是必修课,不然你打的可能是别人的服务器
- 子域名枚举要字典 + 工具结合,别只依赖一种方式
- Google Hacking 不是过时技术,关键看你会不会组合语法