第二章:信息收集与侦察——被动信息收集与主动扫描
各位同学,欢迎来到实战环节的第二站。信息收集,说白了就是渗透测试的“侦察兵”阶段。你想想看,连目标长什么样、开了哪些门都不知道,你怎么可能攻进去?
我个人习惯把信息收集分成两块:被动信息收集和主动扫描。前者是“偷偷看”,后者是“直接摸”。今天我们就来聊聊这两招怎么用,以及我在真实项目中踩过的坑。
2.1 被动信息收集:不碰目标,先摸清底细
被动信息收集,就是你不直接访问目标系统,而是利用公开的第三方资源来获取情报。这样做的好处是——不会留下任何痕迹。目标根本不知道有人在查它。
2.1.1 Shodan:互联网的“黑暗搜索引擎”
Shodan 是什么?你可以把它理解成“针对联网设备的 Google”。它扫描全球的 IP 段,把开放端口、服务 banner、甚至设备型号都索引起来。你只要搜一下,就能知道某个 IP 上跑了什么服务。
我记得有一次做金融系统的渗透测试,客户只给了一个域名。我直接用 Shodan 搜这个域名的关联 IP,结果发现一台暴露在公网的 Redis 服务器,端口 6379 直接开放,连密码都没设。嗯,这就是典型的“影子资产”问题。
Shodan 常用搜索语法:
port:443 country:CN—— 搜索中国地区开放 443 端口的设备org:"Target Company"—— 搜索目标公司名下的所有资产ssl.cert.subject.CN:"example.com"—— 通过 SSL 证书搜索域名product:Apache—— 搜索运行 Apache 的服务器
我的小技巧: 在 Shodan 里搜 http.title:"login" 可以快速找到暴露的登录页面。很多内网系统就是这么被发现的。
2.1.2 Google Hacking:用搜索引擎挖信息
Google Hacking 不是黑科技,而是利用 Google 的高级搜索语法来找到敏感信息。你想想看,很多公司会把配置文件、备份文件、甚至密码文件不小心上传到公网,Google 会把这些内容索引起来。
我曾经帮一家支付公司做安全审计,用 filetype:sql password 这个语法,居然找到了他们一个废弃数据库的备份文件,里面明文存储了上千条信用卡测试数据。这要是被黑产拿到,后果不堪设想。
常用 Google Hacking 语法:
site:example.com filetype:pdf—— 搜索目标域名下的 PDF 文件intitle:"index of" /—— 寻找目录遍历漏洞inurl:admin—— 搜索后台登录页面filetype:env DB_PASSWORD—— 搜索环境变量配置文件
注意: Google Hacking 虽然强大,但不要过度依赖。很多敏感信息已经被 Google 清理了。而且,如果你搜到了不该看的内容,请立即停止并报告,不要下载或传播。
2.2 主动扫描:直接上手摸目标
被动信息收集做完,你大概知道目标有哪些资产了。接下来就是主动扫描——直接向目标发送探测包,看看它到底开了哪些端口、跑了哪些服务。
主动扫描的风险在于:你会留下日志。目标的安全设备(比如 IPS、WAF)可能会记录你的扫描行为。所以,我建议你在扫描前先确认好授权范围,别越界。
2.2.1 Nmap:端口扫描的瑞士军刀
Nmap 是我用得最多的工具,没有之一。它功能强大,从简单的 TCP 连接扫描到复杂的操作系统指纹识别,都能搞定。
常用 Nmap 扫描命令:
# 快速扫描常见端口
nmap -sT -p 1-10000 192.168.1.1
# SYN 半开扫描(速度快,但需要 root 权限)
nmap -sS -p 1-65535 192.168.1.1
# 服务版本探测
nmap -sV 192.168.1.1
# 操作系统指纹识别
nmap -O 192.168.1.1
# 全面扫描(端口+服务+OS)
nmap -A 192.168.1.1
我个人习惯先用 -sS 做一次全端口扫描,找出所有开放端口。然后再用 -sV 对开放端口做服务版本探测。这样效率最高,不会浪费太多时间。
避坑指南: 我曾经在扫描一个金融系统时,直接用 -A 参数做全面扫描,结果触发了对方的 IPS 告警,导致我的 IP 被临时封禁。后来我学乖了,先做轻量扫描,再逐步深入。
2.2.2 Masscan:极速扫描利器
Masscan 号称“最快的端口扫描器”。它能在几分钟内扫描整个互联网的某个端口。为什么这么快?因为它采用了异步传输模式,不等待每个包的回复。
Masscan 常用命令:
# 扫描 10.0.0.0/8 网段的 80 端口
masscan 10.0.0.0/8 -p80
# 扫描指定端口范围,并输出结果
masscan 192.168.1.0/24 -p1-65535 --rate=1000 -oJ results.json
# 排除某些 IP
masscan 10.0.0.0/8 -p443 --exclude 10.0.0.1
Masscan 的缺点也很明显:它只告诉你端口是否开放,不提供服务版本信息。所以,我通常用 Masscan 做“地毯式”扫描,找出所有开放端口,然后再用 Nmap 做精细化探测。
警告: Masscan 的扫描速度非常快,很容易被目标的安全设备检测到。如果你在实战中使用,建议控制扫描速率(--rate 参数),别太猛。
2.3 目标指纹识别:知道对方是谁
端口扫描只是第一步。你还需要知道目标上跑的是什么操作系统、什么 Web 服务器、什么中间件。这就是指纹识别要做的事。
指纹识别的方法:
- Banner 抓取: 直接连接目标端口,读取返回的 banner 信息。比如 SSH 服务通常会返回版本号。
- HTTP 响应头分析: 查看
Server、X-Powered-By等字段。 - 行为特征分析: 比如 Nmap 的
-O参数就是通过分析 TCP/IP 协议栈的细微差异来判断操作系统。
常用指纹识别工具:
| 工具 | 用途 | 特点 |
|---|---|---|
| Nmap | OS 识别 + 服务版本 | 准确率高,但速度慢 |
| WhatWeb | Web 应用指纹 | 能识别 CMS、框架、JS 库 |
| Wappalyzer | 浏览器插件 | 方便快捷,适合快速查看 |
| Banner Grabbing | 手动抓取 | 简单直接,但容易被伪装 |
我记得有一次,Nmap 识别出一个目标运行的是 Apache 2.4.49,我立刻想到这个版本存在路径遍历漏洞(CVE-2021-41773)。结果一试,果然直接读到了 /etc/passwd。这就是指纹识别的价值——知道版本,就能找到对应的漏洞。
2.4 本章知识体系总览
下面这张图是我自己整理的,把信息收集与侦察的核心逻辑串起来了。你可以把它当成一个“作战地图”。
这张图的核心逻辑很简单:先做被动收集,摸清目标的大致轮廓;再做主动扫描,确认具体的端口和服务;最后做指纹识别,锁定版本信息。这三步走完,你对目标的了解就已经相当深入了。
本章核心要点:
- 被动信息收集不留下痕迹,适合前期侦察
- Shodan 和 Google Hacking 是两大被动收集利器
- 主动扫描会留下日志,务必确认授权
- Nmap 适合精细化扫描,Masscan 适合大规模快速扫描
- 指纹识别是连接“信息收集”和“漏洞利用”的关键桥梁
好了,这一章的内容就到这里。信息收集是渗透测试的基石,你花的时间越多,后面的攻击就越顺利。下一章我们会聊漏洞扫描与利用,到时候见。
公众号:蓝海资料掘金营,微信deep3321