信息收集基础:目标资产发现、端口扫描与服务指纹探测

信息收集是整个渗透测试的基石。说白了,你连目标开了哪些门、跑了什么服务都不知道,后面拿什么去撞弱口令?我见过不少新手上来就对着一个 IP 狂扫,结果扫了半天发现是个 CDN 节点——白费力气。

这一章,我们聚焦三件事:目标资产发现(找到真正的主机)、端口扫描(用 Nmap 摸清开放端口)、服务识别与指纹探测(确认服务类型和版本)。这三步走完,你手里就有了一张清晰的攻击面地图。

核心原则:信息收集不是越全越好,而是越准越好。扫到 100 个端口不如确认 3 个真实服务。

2.1 目标资产发现:从域名到 IP

很多人以为目标资产就是给个 IP 段。其实不是。真实项目中,目标往往是一堆域名、子域名、甚至云服务商分配的弹性 IP。我个人习惯先做两步:

  1. DNS 解析:用 dig 或 nslookup 把域名转成 IP。注意 A 记录和 CNAME 记录的区别。
  2. 子域名枚举:用 subfinder 或 amass 跑一遍,很多弱口令入口藏在 admin.target.com 或 dev.target.com 里。

举个例子,我曾经接一个金融客户的项目,主站防护做得滴水不漏。结果子域名枚举发现一个 test.internal.bank.com,直接解析到内网 IP——弱口令一撞就开。嗯,这就是资产发现的威力。

小技巧:用 curl -I 快速判断目标是否存活。返回 200 或 301 的才值得继续扫。

2.2 端口扫描:Nmap 实战

Nmap 是端口扫描的瑞士军刀。但别上来就 nmap -A -T4 192.168.1.1,那样太糙了。我一般分三步走:

2.2.1 快速发现存活主机

先做 Ping 扫描,确认哪些 IP 在线:

nmap -sn 192.168.1.0/24

这个命令只发 ICMP 包和 TCP 80/443 探测,速度很快。扫完你会得到一个存活列表。

2.2.2 端口开放探测

对存活主机做 TCP SYN 扫描(半开扫描),速度快且不易被日志记录:

nmap -sS -p 1-65535 --min-rate 5000 192.168.1.10

这里 -sS 是 SYN 扫描,--min-rate 5000 控制发包速率。为什么用这个?我在内网测试时,默认速率太慢,扫一个 C 段要半小时。调高速率后,5 分钟搞定。

注意:SYN 扫描需要 root 权限。如果你没有,用 -sT(TCP Connect 扫描)代替,但速度会慢一些。

2.2.3 常见端口速查

扫到端口后,你得知道它大概是什么服务。下面是我整理的一张速查表:

端口 服务 弱口令常见场景
21 FTP 匿名登录、admin/admin
22 SSH root/root、test/test
23 Telnet 明文传输,弱口令高发
3306 MySQL root/空密码、root/123456
3389 RDP administrator/空密码
6379 Redis 未授权访问 + 弱口令
8080 HTTP 代理 / Tomcat admin/admin、tomcat/tomcat

你想想看,如果扫到 3306 端口开放,那后面弱口令扫描的重点就是 MySQL 了。这就是端口扫描的意义——缩小攻击范围。

2.3 服务识别与指纹探测

光知道端口号还不够。比如 80 端口,可能是 Nginx、Apache、IIS 甚至是一个 Node.js 应用。不同服务的弱口令字典和利用方式完全不同。

Nmap 的服务识别靠 -sV 参数:

nmap -sV -p 80,443,3306 192.168.1.10

它会尝试连接端口,发送探测包,然后比对指纹库。输出类似这样:

PORT     STATE SERVICE    VERSION
80/tcp   open  http       Apache httpd 2.4.41
443/tcp  open  ssl/http   nginx 1.18.0
3306/tcp open  mysql      MySQL 5.7.32

有了版本号,你就能判断:Apache 2.4.41 有没有已知漏洞?MySQL 5.7.32 的默认密码策略是什么?这些信息直接指导后续的弱口令扫描策略。

进阶技巧:用 -A 参数同时开启 OS 检测和 traceroute。但注意,-A 会增加扫描时间,建议只在关键目标上用。

2.4 本章知识体系

下面这张图把信息收集的流程串起来了。你可以把它当作操作手册:

信息收集流程框架图 信息收集核心流程 资产发现 端口扫描 服务识别与指纹 子步骤 • DNS 解析 (dig/nslookup) • 子域名枚举 (subfinder) • 存活探测 (curl -I) 子步骤 • Ping 扫描 (-sn) • SYN 扫描 (-sS) • 全端口 (-p 1-65535) 子步骤 • 版本探测 (-sV) • OS 检测 (-O) • 指纹比对 输出:攻击面清单 关键输出字段 IP 地址 | 开放端口 | 服务名称 | 版本号 | 操作系统 | 可能的弱口令入口

2.5 避坑指南

信息收集阶段最容易踩的坑,我列几个:

  • 扫到 CDN 节点当真实目标:我曾经扫一个电商站,发现 80 端口开放,服务是 Nginx。结果那是 Cloudflare 的节点。后来用 dig 查源站 IP 才找到真实服务器。
  • 忽略 UDP 端口:很多人只扫 TCP。但 SNMP(161/162)、DNS(53)这些 UDP 服务也经常有弱口令。加个 -sU 参数补一下。
  • 扫描速率太高被封:外网扫描时,--min-rate 10000 可能直接触发 IDS。我一般外网用 --min-rate 1000,内网才敢开高。
法律红线:未经授权扫描他人系统是违法行为。本章所有技术仅用于你拥有合法权限的测试环境或授权渗透项目。

好了,信息收集的基础就这些。你把这些步骤走一遍,手里就有了目标资产的完整画像。下一阶段,我们就要拿着这张画像去撞弱口令了——但那是后面的事。先把扫描练熟,别急着开火。