3. 信息收集实战:域名信息收集、子域名枚举、端口与服务探测、指纹识别

信息收集,说白了就是“踩点”。你连目标的门朝哪开、墙有多厚都不知道,怎么制定攻击方案?反过来,防守方也一样——你得知道自己暴露了多少信息。

我个人习惯把信息收集分成四个维度:域名信息、子域名、端口与服务、指纹识别。这四步走完,目标的攻击面基本就浮出水面了。

核心观点:信息收集的深度,直接决定后续漏洞挖掘的效率。别急着拿扫描器乱扫,先把信息摸透。

信息收集实战知识体系 信息收集实战知识体系 信息收集 域名信息 子域名枚举 端口与服务 指纹识别 Whois DNS 记录 Sublist3r/Amass Nmap/Masscan WhatWeb/Wappalyzer 实战要点 • 域名信息:Whois 查注册人、DNS 查解析记录 • 子域名:扩大攻击面,发现隐藏资产 • 端口服务:确定开放端口与运行服务版本 • 指纹识别:识别 Web 框架、CMS、中间件

3.1 域名信息收集:Whois 与 DNS

拿到一个域名,我第一件事就是查 Whois。为什么?因为注册信息里经常藏着“惊喜”。

举个例子,我在一次项目中查某个企业的 Whois,发现注册邮箱是 admin@xxx.com,而这个邮箱居然在其他泄露数据库里出现过。顺着这个邮箱,我又找到了该企业的其他域名和内部系统。你看,一个 Whois 查询,可能就打开了突破口。

Whois 查询实战

常用的 Whois 查询工具有:

  • whois 命令行(Linux/Mac 自带,Windows 需安装)
  • 在线 Whois 查询(如 whois.com、站长工具)
  • Python 脚本(使用 python-whois 库批量查询)

命令行示例:

whois example.com

输出中重点关注:

字段 说明 安全价值
Registrant Name 注册人姓名 可能泄露真实身份
Registrant Email 注册邮箱 可用于社工或关联查询
Name Server DNS 服务器 判断是否使用第三方 DNS
Creation Date 注册时间 判断域名新旧程度

注意:很多域名开启了 Whois 隐私保护,注册信息会被隐藏。这时候别灰心,试试历史 Whois 记录查询,说不定能挖到旧数据。

DNS 记录收集

DNS 记录能告诉你域名背后的基础设施。我个人习惯收集以下几类记录:

  • A 记录:域名指向的 IPv4 地址
  • AAAA 记录:IPv6 地址
  • MX 记录:邮件服务器地址
  • NS 记录:域名服务器
  • CNAME 记录:别名记录,可能暴露内部域名
  • TXT 记录:经常包含 SPF、DKIM 等安全配置信息

查询命令:

# 查询 A 记录
nslookup example.com

# 查询 MX 记录
nslookup -type=mx example.com

# 查询所有记录(使用 dig)
dig example.com any

小技巧:我曾经通过 TXT 记录里的 SPF 配置,推断出目标使用了某个云邮件服务,然后针对该服务的历史漏洞进行测试,成功找到了一个配置不当的接口。

3.2 子域名枚举:扩大攻击面

主域名通常防护严密,但子域名呢?很多企业把测试环境、后台管理、API 接口放在子域名上,防护却弱得多。子域名枚举,就是帮你找到这些“后门”。

常用的枚举方法有三种:

  1. 字典爆破:使用常见子域名列表(如 admin、test、dev、api)进行 DNS 查询
  2. 搜索引擎:利用 Google dork 语法,如 site:example.com -www
  3. 证书透明度(CT)日志:从 SSL/TLS 证书中提取子域名

我推荐的工具:

工具 方法 速度 适用场景
Sublist3r 搜索引擎 + DNS 中等 快速收集常见子域名
Amass CT 日志 + DNS + 搜索引擎 较慢 深度枚举,覆盖面广
Subfinder 多源聚合 快 被动收集,不产生流量
dnsrecon DNS 爆破 + 区域传输 中等 检测 DNS 区域传输漏洞

实战命令:

# 使用 Sublist3r
sublist3r -d example.com

# 使用 Amass(被动模式)
amass enum -passive -d example.com

# 使用 Subfinder
subfinder -d example.com

避坑指南:我曾经用 Amass 跑一个大型目标,结果跑了整整一天,生成了几千个子域名。但其中很多是泛解析(wildcard DNS)产生的假阳性。所以,枚举完一定要做去重和存活验证,用 httpx 或 httprobe 检查哪些子域名真的能访问。

3.3 端口与服务探测

子域名找到了,接下来要看这些服务器上跑了哪些服务。端口扫描是这一步的核心。

你想想看,一个开放的 3306 端口意味着什么?MySQL 数据库。如果这个端口暴露在公网,而且用的是弱密码,那基本就等于把数据送人了。

Nmap 实战

Nmap 是端口扫描的“瑞士军刀”。我常用的扫描策略:

  • 快速扫描:nmap -T4 -F target(扫描前 100 个常用端口)
  • 全端口扫描:nmap -p- target(扫描 1-65535 端口,但很慢)
  • 服务版本探测:nmap -sV target(识别服务版本)
  • 操作系统识别:nmap -O target(需要 root 权限)

综合命令示例:

nmap -sS -sV -O -T4 -p 1-10000 target.com

输出解读:

端口 状态 服务 版本 潜在风险
22/tcp open SSH OpenSSH 7.4 已知漏洞 CVE-2018-15473
80/tcp open HTTP Apache 2.4.29 目录遍历、信息泄露
3306/tcp open MySQL 5.7.25 弱密码、未授权访问
8080/tcp open HTTP-Proxy Tomcat 8.5 管理后台暴露

注意:大规模端口扫描可能触发目标的安全告警。我建议先用 Masscan 做快速探测(每秒可发百万级数据包),再用 Nmap 做精细扫描。另外,扫描前确认你的行为已获得授权,否则可能违法。

3.4 指纹识别:知道对手是谁

端口扫描告诉你开了哪些服务,但没告诉你这些服务的具体“身份”。指纹识别就是干这个的——识别 Web 框架、CMS、中间件、前端库等。

举个例子,你发现目标用了 WordPress,那就可以直接搜索 WordPress 的历史漏洞。如果发现用了某个特定版本的 jQuery,那可能就有已知的 XSS 漏洞。

常用指纹识别工具

工具 方式 特点
WhatWeb 命令行 识别 1800+ 种 Web 技术
Wappalyzer 浏览器插件 实时显示当前网站技术栈
BuiltWith 在线服务 提供详细的技术栈报告
FingerprintJS JS 库 浏览器指纹识别(用于反爬)

WhatWeb 使用示例:

whatweb example.com

# 输出示例
# http://example.com [200 OK] Apache[2.4.29], PHP[7.3.11], HTML5, 
#   WordPress[5.3.2], jQuery[1.12.4], MetaGenerator[WordPress 5.3.2]

个人经验:有一次我扫描一个目标,WhatWeb 识别出它用了 Drupal 7。我立刻想到 Drupal 7 有个著名的 SQL 注入漏洞(CVE-2018-7600)。验证后,果然存在。你看,指纹识别直接帮你锁定了攻击方向。

3.5 信息收集流程总结

把上面四步串起来,就是一个完整的信息收集流程:

  1. 域名信息:Whois 查注册信息,DNS 查解析记录
  2. 子域名枚举:扩大攻击面,找到隐藏资产
  3. 端口与服务探测:确定开放端口和运行服务
  4. 指纹识别:识别具体技术栈,定位已知漏洞

这四步走完,你手里应该有一份详细的“目标画像”了。接下来,就可以针对性地进行漏洞挖掘了。

最后提醒一句:信息收集不是一次性工作。目标的服务会变、子域名会新增、指纹会更新。我建议定期(比如每周)做一次信息收集,保持对目标攻击面的持续监控。