第二章:信息收集与侦察——被动信息收集与主动扫描

各位同学,欢迎来到实战环节的第二站。信息收集,说白了就是渗透测试的“侦察兵”阶段。你想想看,连目标长什么样、开了哪些门都不知道,你怎么可能攻进去?

我个人习惯把信息收集分成两块:被动信息收集主动扫描。前者是“偷偷看”,后者是“直接摸”。今天我们就来聊聊这两招怎么用,以及我在真实项目中踩过的坑。

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 响应头分析: 查看 ServerX-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 目标指纹识别 Banner 抓取 HTTP 响应头分析 行为特征分析

这张图的核心逻辑很简单:先做被动收集,摸清目标的大致轮廓;再做主动扫描,确认具体的端口和服务;最后做指纹识别,锁定版本信息。这三步走完,你对目标的了解就已经相当深入了。

本章核心要点:

  • 被动信息收集不留下痕迹,适合前期侦察
  • Shodan 和 Google Hacking 是两大被动收集利器
  • 主动扫描会留下日志,务必确认授权
  • Nmap 适合精细化扫描,Masscan 适合大规模快速扫描
  • 指纹识别是连接“信息收集”和“漏洞利用”的关键桥梁

好了,这一章的内容就到这里。信息收集是渗透测试的基石,你花的时间越多,后面的攻击就越顺利。下一章我们会聊漏洞扫描与利用,到时候见。


公众号:蓝海资料掘金营,微信deep3321