一、为什么信息收集是渗透测试的 "地基"
1.1 它决定了攻击的上限
没有充分的信息收集,后续的漏洞发现就像盲人摸象—— 你甚至不知道目标是什么,怎么可能找到它的弱点?信息越充分,攻击面越大,成功概率越高。
1.2 它是攻击路径的 "地图"
信息收集帮助你建立目标系统的完整画像:
plaintext
域名 → IP段 → 开放端口 → 服务版本 → 技术栈 → 员工信息 → 代码泄露 ↓ ↓ └──────────── 组合成一张"攻击地图" ────────────────┘1.3 它是新手和高手的分水岭
同样一个目标:
- 新手:扫了 80 端口,看看首页,结束
- 高手:被动收集找子域名 → 搜索引擎找泄露源码 → GitHub 挖账号密码 → 社工库查员工信息
信息收集的能力,直接决定了渗透测试的深度和广度。
二、核心原则:先被动,后主动
⚠️永远先做被动收集,再做主动收集。
表格
| 阶段 | 特点 | 风险 | 优先级 |
|---|---|---|---|
| 被动收集(OSINT) | 不直接接触目标,通过公开渠道获取情报 | 安全无痕,不会触发告警 | 第一选择 |
| 主动收集 | 直接与目标系统交互 | 会留下访问痕迹,必须授权 | 第二阶段 |
三、被动信息收集(OSINT)四大模块
3.1 模块一:域名与子域名收集
3.1.1 主域名信息(WHOIS)
WHOIS 查询可以获取域名的注册信息,包括注册人、注册商、联系方式、注册时间等。
常用工具:
表格
| 工具 / 网站 | 特点 | 适用场景 |
|---|---|---|
| Whois.com | 国际通用,信息全 | 海外域名 |
| 爱站网 / 站长工具 | 国内常用,中文界面 | 国内域名 |
| SecurityTrails | 查看历史 DNS 记录 | 域名变更追踪 |
💡 实战技巧:通过 WHOIS 信息反查注册人持有的其他域名,往往能发现关联资产。
3.1.2 子域名收集(突破口)
子域名往往是渗透测试的薄弱环节 —— 测试环境、开发版系统、后台管理通常部署在子域名上,安全性远低于主站。
四大收集方法:
表格
| 方法 | 原理 | 代表工具 |
|---|---|---|
| DNS 枚举 | 字典爆破子域名 | SubDomainsBrute, Sublist3r, OneForAll |
| 搜索引擎 | site:*.target.com语法 | Google, Bing, 百度 |
| 证书透明度 | 从 SSL 证书中提取子域名 | crt.sh, censys |
| 空间搜索引擎 | 网络空间测绘 | FOFA, 360Quake, Hunter |
常用命令:
bash
# SubDomainsBrute 枚举子域名 python subdomainsbrute.py target.com # Sublist3r 多引擎收集 sublist3r -d target.com -o subdomains.txt # OneForAll 全功能收集(推荐) python3 oneforall.py --target target.com run3.1.3 DNS 记录分析
通过 DNS 记录,可以发现目标的 IP 地址、邮件服务器、CDN 等关键信息。
bash
# 查询A记录(IP地址) dig target.com A nslookup target.com # 查询MX记录(邮件服务器) dig target.com MX # 查询NS记录(域名服务器) dig target.com NS # 查询所有记录 dig target.com ANY # 反向查询(PTR记录) dig -x 1.2.3.43.2 模块二:公司与人员信息收集
3.2.1 公司基础信息
了解目标公司的基本情况,有助于判断攻击面和防护水平:
表格
| 信息维度 | 来源 | 价值 |
|---|---|---|
| 工商信息、股权结构 | 企查查 / 天眼查 | 发现子公司、关联资产 |
| 业务方向、产品线 | 公司官网 | 推测技术栈和系统类型 |
| 技术栈信息 | Boss 直聘 / 猎聘 | 从招聘 JD 反推技术架构 |
| 融资情况、规模 | IT 桔子 / 36 氪 | 估算安全投入水平 |
3.2.2 人员信息
员工信息是社工攻击的入口,也是密码喷洒的基础。
常用来源:
- LinkedIn / 脉脉:员工职位、履历
- 微博 / 知乎:个人信息、习惯
- GitHub / Gitee:开发人员账号、代码风格
⚠️合规提醒:人员信息收集仅用于授权安全测试中的身份识别,严禁用于任何违法用途。
3.3 模块三:代码与文档泄露收集
3.3.1 GitHub 信息泄露(高价值)
开发人员经常将代码上传到 GitHub,有时会不小心包含敏感信息:
- 数据库密码、API 密钥、Access Token
- 配置文件(.env、config.yml)
- 内部文档、部署脚本
GitHub Dorks 搜索语法:
plaintext
# 搜索目标公司的组织 org:target-company # 搜索敏感关键词 "target.com" password "target.com" api_key "target.com" secret "target.com" access_token "target.com" db_password # 搜索特定文件 filename:.env "target.com" filename:config.php "database" extension:yaml password自动化工具:
- GitLeaks:自动化检测 GitHub 仓库中的敏感信息
- TruffleHog:查找提交历史中的密钥
- Gitrob:扫描组织成员的公开仓库
bash
# gitleaks 扫描仓库 gitleaks detect --repo-url=https://github.com/target/repo # trufflehog 扫描 trufflehog github --org=target-company3.3.2 云盘 / 网盘泄露
员工可能将内部文档上传到云盘,导致敏感信息泄露。
搜索关键词:
plaintext
"target.com" 密码 "target" 内部文档 "target" 项目方案 "target" 运维手册常用工具:凌风云搜索、盘多多、百度网盘搜索引擎
3.4 模块四:历史漏洞与公开情报
3.4.1 历史漏洞查询
目标系统历史上是否出现过安全漏洞?这些信息可以帮助你了解目标的安全状况和薄弱环节。
表格
| 平台 | 特点 |
|---|---|
| 漏洞盒子 / 补天平台 | 国内漏洞报告平台,中文漏洞详情 |
| CNVD / CNNVD | 中国国家漏洞数据库 |
| CVE Details | CVE 漏洞编号查询 |
| Exploit-DB | 漏洞利用代码数据库 |
| NVD | 美国国家漏洞数据库 |
3.4.2 网络空间搜索引擎(神器级)
利用网络空间搜索引擎,搜索目标公司暴露在公网上的所有资产。
表格
| 工具 | 特点 | 适用场景 |
|---|---|---|
| FOFA | 国内最全,查询语法强大 | 国内资产检索首选 |
| 360Quake | 国内空间测绘,数据量大 | 国内资产补充 |
| Hunter | 奇安信旗下,功能丰富 | 综合资产检索 |
| Shodan | 国际版,物联网设备为主 | 全球设备检索 |
| Censys | 国际版,证书数据丰富 | SSL/TLS 证书查询 |
FOFA 常用语法速查:
bash
# 基础查询 domain="target.com" # 查询主域名下所有资产 host="target.com" # 查询特定主机 ip="1.2.3.4" # 查询指定IP ip="1.2.3.0/24" # 查询C段 # 组合查询 title="后台管理" && domain="target.com" # 找目标的管理后台 body="Powered by ThinkPHP" && domain="target.com" # 找特定CMS cert="target.com" # 通过证书找关联域名 port="8080" && domain="target.com" # 找特定端口的资产 # 服务识别 banner="Tomcat" && domain="target.com" protocol="redis" && ip="1.2.3.0/24"四、主动信息收集四大模块
⚠️重要提醒:主动收集会留下明显的访问痕迹,必须在获得书面授权后进行。
4.1 模块一:端口扫描
端口扫描是主动信息收集的第一件事 —— 通过扫描目标 IP 的端口,了解开放了哪些服务。
核心工具:Nmap
bash
# ========== 基础扫描 ========== # SYN半开扫描(最常用,相对隐蔽) nmap -sS target.com # 扫描所有端口(1-65535) nmap -sS -p- target.com # 扫描指定端口范围 nmap -sS -p 1-10000 target.com # 快速扫描常用端口 nmap -sS -p 22,80,443,8080,3306,6379 target.com # ========== 深度扫描 ========== # 服务版本识别 nmap -sV -p 80,443 target.com # 操作系统识别 nmap -O target.com # 综合扫描(版本+OS+脚本) nmap -sV -O -sC target.com # ========== 漏洞扫描 ========== # 使用漏洞检测脚本 nmap --script=vuln target.com # 使用特定脚本 nmap --script=http-enum target.com nmap --script=ssl-enum-ciphers target.com # ========== 性能优化 ========== # 快速扫描(T4级别,牺牲一点隐蔽性) nmap -sS -T4 -p- target.com # 只显示开放端口 nmap -sS --open target.com # 输出到文件 nmap -sS -p- target.com -oN nmap_result.txt其他端口扫描工具:
- Masscan:极速端口扫描,号称 5 分钟扫完全互联网
- RustScan:Rust 编写,速度极快,兼容 Nmap
- Naabu:Go 语言编写,快速端口扫描
bash
# Masscan 快速扫描C段 masscan 192.168.1.0/24 -p80,443,8080 --rate=10000 # RustScan 快速扫描 rustscan -a target.com -- -sV4.2 模块二:服务指纹识别
端口扫描完成后,需要识别端口上运行的是什么服务以及版本号 —— 不同版本的服务可能存在不同的已知漏洞。
4.2.1 Web 技术栈识别
表格
| 工具 | 类型 | 特点 |
|---|---|---|
| WhatWeb | 命令行 | 识别速度快,插件丰富 |
| Wappalyzer | 浏览器插件 | 直观方便,日常浏览可用 |
| BuiltWith | 在线工具 | 信息全面,支持批量 |
| EHole | 命令行 | 国产工具,CMS 指纹识别强 |
WhatWeb 常用命令:
bash
# 基本扫描 whatweb http://target.com # 扫描多个URL whatweb http://target.com http://target2.com # 从文件读取URL列表 whatweb -i urls.txt # 详细输出 whatweb -v http://target.com # 隐身模式(随机UA,延迟请求) whatweb -a 1 http://target.com4.2.2 识别内容清单
plaintext
Web服务器: Apache / Nginx / IIS / Tomcat / Jetty 操作系统: Windows / Linux / BSD 开发语言: PHP / Java / Python / Ruby / .NET / Go CMS框架: WordPress / Drupal / ThinkPHP / SpringBoot 前端框架: React / Vue / Angular / jQuery 数据库: MySQL / SQL Server / Oracle / PostgreSQL / Redis 中间件: Nginx / Apache / Tomcat / JBoss / WebLogic4.3 模块三:目录与文件扫描
Web 服务器上往往存在隐藏的目录、管理后台、备份文件、配置文件等,这些都可能成为突破点。
4.3.1 常用工具对比
表格
| 工具 | 语言 | 特点 | 推荐指数 |
|---|---|---|---|
| ffuf | Go | 快速灵活,模糊测试功能强 | ⭐⭐⭐⭐⭐ |
| gobuster | Go | 高性能,支持 DNS / 目录 / 虚拟主机 | ⭐⭐⭐⭐ |
| dirsearch | Python | 功能全面,国内常用 | ⭐⭐⭐⭐ |
| Dirb | C | 经典工具,简单直接 | ⭐⭐⭐ |
| 御剑 | - | 国产,中文界面 | ⭐⭐⭐ |
4.3.2 常用命令
bash
# ========== ffuf ========== # 基础目录扫描 ffuf -u http://target.com/FUZZ -w /path/to/dict.txt # 指定线程和延迟 ffuf -u http://target.com/FUZZ -w dict.txt -t 50 -p 0.1 # 过滤状态码 ffuf -u http://target.com/FUZZ -w dict.txt -fc 404 # 递归扫描 ffuf -u http://target.com/FUZZ -w dict.txt -recursion # 模糊测试(参数fuzz) ffuf -u http://target.com/page?id=FUZZ -w dict.txt # ========== gobuster ========== # 目录扫描 gobuster dir -u http://target.com -w dict.txt -t 50 # 输出到文件 gobuster dir -u http://target.com -w dict.txt -o result.txt # 扫描常见扩展名 gobuster dir -u http://target.com -w dict.txt -x php,txt,html,bak # ========== dirsearch ========== # 基础扫描 python3 dirsearch.py -u http://target.com # 指定字典 python3 dirsearch.py -u http://target.com -w dict.txt # 指定扩展名 python3 dirsearch.py -u http://target.com -e php,html,txt4.3.3 常见敏感目录 / 文件速查
plaintext
# 管理后台 /admin、/manage、/login、/system、/admin.php、/manager # 备份文件 /backup、/bak、/back、/www.zip、/backup.sql、/database.sql # 临时文件 /tmp、/temp、/test、/test.php、/info.php、/phpinfo.php # 版本控制 /.git、/.svn、/.idea、/.DS_Store、/WEB-INF # 配置文件 /.env、/config.php、/config.inc.php、/web.config、/application.yml # 其他 /robots.txt、/sitemap.xml、/crossdomain.xml、/phpmyadmin4.4 模块四:漏洞初步探测
在完成信息收集后,可以对目标进行初步的漏洞探测,验证已知漏洞是否存在。
表格
| 工具 | 类型 | 特点 |
|---|---|---|
| Nmap NSE | 端口级 | 自带漏洞检测脚本,轻量 |
| Xray | Web 扫描 | 国产神器,被动扫描 + 主动扫描 |
| AWVS | Web 扫描 | 商业级,误报率低 |
| Goby | 综合评估 | 集成信息收集和漏洞探测 |
| Nuclei | 模板化 | YAML 模板,社区驱动 |
bash
# Nmap 漏洞脚本扫描 nmap --script=vuln target.com # Nuclei 模板化扫描 nuclei -u http://target.com -t /path/to/templates/ # Nuclei 扫描特定漏洞类型 nuclei -u http://target.com -tags cve,sqli,xss五、新手实战建议
5.1 建立标准化流程
不要想到什么做什么。建议建立一套标准化的信息收集流程,每次拿到目标后都按流程执行,避免遗漏。
plaintext
信息收集标准流程 ├── 1. 目标确认 → 确定测试范围和授权边界 ├── 2. 被动收集 │ ├── WHOIS查询 → 基础注册信息 │ ├── 子域名枚举 → 发现隐藏资产 │ ├── DNS分析 → IP和解析记录 │ ├── 空间搜索引擎 → FOFA/Shodan │ ├── GitHub泄露 → 代码和密钥 │ └── 历史漏洞 → CNVD/CVE ├── 3. 主动收集 │ ├── 端口扫描 → 开放服务 │ ├── 指纹识别 → 技术栈 │ ├── 目录扫描 → 隐藏路径 │ └── 漏洞初探 → 已知漏洞验证 └── 4. 信息整理 → 结构化输出报告5.2 投入时间学 FOFA
FOFA 这类空间搜索引擎是信息收集的神器。投入时间学会它的搜索语法,能极大提升效率。
bash
# 进阶语法示例 # 找目标公司所有开放的Redis服务 protocol="redis" && domain="target.com" # 找使用了某CMS的目标 body="ThinkPHP" && domain="target.com" # 通过图标哈希找关联资产 icon_hash="123456789" # 找开放了特定端口的C段 port="8080" && ip="1.2.3.0/24"5.3 不要跳过被动收集
很多新手直接跳到端口扫描,忽略了被动收集。但被动收集往往能发现主动收集看不到的信息 —— 比如被遗忘的子域名、泄露的代码、员工信息等。
被动收集的优势:
- ✅ 不触发告警,安全无痕
- ✅ 信息量大,覆盖面广
- ✅ 零成本,免费工具多
- ✅ 可以发现 "暗资产"(目标自己都忘了的系统)
5.4 做好信息整理
信息收集会产生大量数据,建议使用结构化方式整理:
推荐工具:
- 思维导图:XMind / MindMaster → 梳理整体结构
- 表格:Excel / 飞书表格 → 记录 IP、端口、服务详情
- 笔记:Obsidian / Notion → 分类整理发现
整理模板:
plaintext
目标:target.com ├── 域名信息 │ ├── 主域名:target.com │ ├── 子域名:[列表] │ └── WHOIS:[摘要] ├── IP资产 │ ├── IP段:[C段/B段] │ └── 开放端口:[表格] ├── 技术栈 │ ├── Web服务器:Nginx 1.18 │ ├── 开发语言:PHP 7.4 │ └── CMS:ThinkPHP 5.0 ├── 敏感信息 │ ├── GitHub泄露:[列表] │ └── 历史漏洞:[列表] └── 初步攻击面 ├── 高危端口:[列表] ├── 已知CVE:[列表] └── 可疑目录:[列表]5.5 牢记合规底线
⚠️红线提醒:信息收集中的很多行为(端口扫描、目录爆破)会留下明显的访问痕迹,必须在获得书面授权后进行。
未经授权的信息收集,即使你只是 "看看",也可能触发法律风险。渗透测试必须在合法授权范围内进行。
六、总结:一张图记住全流程
plaintext
┌─────────────────────┐ │ 目标确认 & 授权 │ └──────────┬──────────┘ │ ┌──────────▼──────────┐ │ 被动信息收集OSINT │ └──────────┬──────────┘ │ ┌────────────────────┼────────────────────┐ │ │ │ ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐ │ 域名/子域名 │ │ 公司/人员 │ │ 代码/漏洞 │ │ WHOIS/DNS │ │ 企查查/招聘 │ │ GitHub/FOFA │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ └────────────────────┼────────────────────┘ │ ┌──────────▼──────────┐ │ 主动信息收集 │ └──────────┬──────────┘ │ ┌────────────────────┼────────────────────┐ │ │ │ ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐ │ 端口扫描 │ │ 指纹识别 │ │ 目录扫描 │ │ Nmap/Masscan│ │ WhatWeb │ │ ffuf/御剑 │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ └────────────────────┼────────────────────┘ │ ┌──────────▼──────────┐ │ 漏洞初步探测 │ │ Xray / Nuclei │ └──────────┬──────────┘ │ ┌──────────▼──────────┐ │ 信息整理 & 报告 │ └─────────────────────┘