信息收集基础:域名、IP、子域名与搜索引擎语法

各位同学,欢迎来到第二章。上一章我们聊了漏洞排查的整体思路,今天要讲的是整个渗透测试流程里最容易被新手忽略、但老手最重视的一步——信息收集。

我经常跟团队里的人说一句话:你收集了多少信息,决定了你能走多远。很多新手上来就扫端口、跑漏洞,结果碰一鼻子灰。为什么?因为你连目标的基本轮廓都没摸清楚。

这一章,我们聚焦四个核心方向:域名信息(Whois/DNS)、IP信息、子域名枚举、Google Hacking。每个点我都会结合实战经验来讲,该避的坑一个不落。

核心认知:信息收集不是一次性工作,而是贯穿整个渗透过程的循环。每获得一个新线索,都可能需要回溯到信息收集阶段重新挖掘。

信息收集核心知识体系 信息收集 域名信息 IP 信息 子域名枚举 Google Hacking Whois 查询 DNS 解析 C段扫描 CDN 识别 字典爆破 DNS 记录 文件类型 实战要点 • 信息收集是循环过程,不是一次性任务 • 每个新线索都可能触发新一轮收集 • 工具只是辅助,思路和逻辑才是核心

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?我常用的方法:

  1. 子域名枚举:有些子域名没挂 CDN,直接解析到真实 IP
  2. 历史 DNS 记录:用 SecurityTrails、Censys 查历史解析
  3. 邮件头分析:查看邮件原文的 Received 字段
  4. 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 不是过时技术,关键看你会不会组合语法