渗透测试信息收集详解
我们来详细解析一下渗透测试中信息收集(Information Gathering)的完整内容、步骤及工具方法。信息收集是整个渗透测试的基石,其深度和广度直接决定了后续测试的成功率,因此有“渗透测试成功与否,90%取决于信息收集”的说法。
一、信息收集的核心目标
-
绘制攻击面:尽可能全面地发现与目标相关的所有资产(域名、IP、子域名、端口、服务、人员等)。
-
缩小攻击范围:从海量信息中识别出关键、脆弱、易受攻击的点,为后续深度测试提供方向。
-
建立目标画像:了解目标的技术栈、组织结构、安全态势,甚至员工习惯,以便发起更具针对性的攻击(如钓鱼攻击)。
二、信息收集的分类与步骤
信息收集通常分为两大类:被动信息收集和主动信息收集。标准的流程是先进行被动收集,再进行主动收集,以避免过早触发目标的入侵检测系统(IDS/IPS)。
步骤一:被动信息收集(Passive Reconnaissance)
-
定义:在不与目标系统直接交互的情况下,通过第三方渠道获取信息。目标无法感知到你的探测行为,因此非常隐蔽。
-
核心原则:所有信息都来自公开渠道或第三方数据库,不向目标发送任何数据包。
步骤二:主动信息收集(Active Reconnaissance)
-
定义:直接与目标资产进行交互,以获取更详细、更准确的信息。这种行为会被目标的监控设备(如防火墙、IDS)日志记录,存在被发现的风险。
-
核心原则:在获得授权的前提下进行,并且通常是在被动信息收集之后,用于验证和深化已知信息。
三、信息收集的详细内容与方法
下面我们按照从外围到核心的顺序,详解信息收集的具体内容和所用工具方法。
1. 初始信息收集(Initial Discovery)
-
内容:明确测试范围。如果目标是公司,首先要确定其官方域名、子公司、收购公司等。
-
方法:
-
公司官网:了解业务、产品、新闻(如使用了新的CMS系统)。
-
搜索引擎(Google Hacking):使用Google高级搜索语法(如
site:target.com filetype:pdf
,inurl:admin
,intitle:"index of /"
)查找敏感文件、目录、错误信息等。 -
社交媒体(LinkedIn, GitHub):在LinkedIn上寻找员工技术栈信息;在GitHub上搜索员工误上传的代码、配置文件、API密钥等敏感信息。
-
第三方商情平台(如天眼查、企查查):了解组织架构、子公司、投资关系,从而扩大目标范围。
-
2. 域名系统(DNS)信息收集
-
内容:获取所有关联的域名和子域名,以及对应的IP地址。
-
方法与工具:
-
WHOIS查询:获取域名注册信息(注册人、邮箱、电话、DNS服务器)。
-
工具:
whois
命令、在线WHOIS网站(如 whois.domaintools.com)。
-
-
子域名枚举(Subdomain Enumeration):这是最关键的一步,旨在发现主域名下的所有子域名(如
dev.target.com
,api.target.com
)。-
工具:
-
被动枚举:
Sublist3r
,Amass
,Subfinder
(通过搜索引擎、证书透明度日志、DNS聚合商等第三方数据源获取)。 -
字典爆破:
gobuster
,ffuf
,dnsrecon
(使用强大的字典进行暴力猜解)。 -
证书透明度(CT)日志:
crt.sh
网站是宝藏,可以查询到为某个域名签发的所有SSL证书,从而发现子域名。
-
-
-
DNS记录查询:获取A, AAAA, MX(邮件服务器), TXT, SPF, DMARC, CNAME等记录。
-
工具:
dig
,nslookup
,dnsrecon
。 -
在线工具:DNSDumpster。
-
-
3. 网络拓扑与IP发现
-
内容:确定目标的IP地址段、网络架构(CDN?云服务器?)、真实的服务器IP(绕过CDN)。
-
方法与工具:
-
判断CDN:通过多地Ping(如
www.boce.com
)查看IP是否一致。 -
查找真实IP:
-
查询历史DNS记录(如 SecurityTrails, ViewDNS)。
-
查询子域名的IP(很多子域名可能直接解析到真实IP)。
-
通过邮件服务器源头(发送一封邮件,查看邮件头中的服务器IP)。
-
利用SSL证书信息(
censys.io
,shodan.io
)。
-
-
IP段查询:通过
arin.net
(北美)或apnic.net
(亚太)等RIR查询目标拥有的ASN(自治系统号)和IP地址段。
-
4. 端口扫描(Port Scanning)
-
内容:发现目标IP开放了哪些端口,从而判断运行了哪些服务。
-
方法与工具:
-
全连接扫描:
nmap -sT <target_ip>
(准确但易被记录)。 -
半开扫描(SYN扫描):
nmap -sS <target_ip>
(默认方式,更快更隐蔽)。 -
服务与版本探测:
nmap -sV <target_ip>
(尝试识别端口上运行服务的具体版本)。 -
操作系统探测:
nmap -O <target_ip>
(通过指纹识别目标OS)。 -
详细脚本扫描:
nmap -A <target_ip>
(综合扫描,包含版本、OS、脚本等)或使用NSE脚本nmap --script=<script-name>
。 -
Masscan:最快的端口扫描器,适用于大范围IP段扫描。
-
5. 服务指纹识别与漏洞枚举
-
内容:准确识别开放端口上运行的服务、应用、版本号,并查找已知的漏洞或错误配置。
-
方法与工具:
-
Banner Grabbing:使用
netcat
或telnet
直接连接端口获取服务横幅信息。-
nc -nv <target_ip> 80
,然后输入HEAD / HTTP/1.0
。
-
-
漏洞扫描器:
Nessus
,OpenVAS
(自动化程度高,但噪音大,需谨慎使用)。 -
专项工具:
-
Web服务器:
WhatWeb
,Wappalyzer
(浏览器插件,识别Web技术栈)。 -
SMB共享:
enum4linux
,smbclient
。 -
SNMP服务:
snmpwalk
,onesixtyone
。
-
-
6. Web应用信息收集(如果存在Web服务)
-
内容:这是针对Web渗透测试的重点,收集一切与Web相关的信息。
-
方法与工具:
-
目录与文件发现:使用字典爆破隐藏的目录和文件(如后台、备份文件、配置文件)。
-
工具:
gobuster
,dirb
,dirsearch
,ffuf
。 -
字典:
SecLists
项目提供了优秀的字典集合。
-
-
爬取网站:
OWASP ZAP
,Burp Suite
的蜘蛛功能。 -
分析技术栈:
Wappalyzer
识别前端框架、Web服务器、编程语言等。 -
查找参数:从JavaScript文件中挖掘API接口、隐藏参数。
-
检查安全头:如
X-Frame-Options
,CSP
,HSTS
等是否存在缺失或错误配置。 -
虚拟主机扫描:
gobuster vhost
。
-
7. 其他信息收集
-
人员信息:为社工钓鱼做准备,收集邮箱(
theHarvester
)、姓名、职位、社交动态。 -
公开漏洞情报:在 Exploit-DB, GitHub, NVD 等平台搜索已公开的目标相关组件的漏洞和EXP。
四、工具总结清单
类别 | 工具名称 | 主要用途 |
---|---|---|
子域名枚举 | Sublist3r, Amass, Subfinder, Assetfinder | 被动子域名发现 |
Gobuster, ffuf, dnsrecon | 暴力破解子域名 | |
crt.sh | 证书透明度日志查询 | |
DNS查询 | dig, nslookup, dnsrecon | 各类DNS记录查询 |
端口扫描 | Nmap (王者) | 综合端口扫描、版本探测、OS识别 |
Masscan | 高速端口扫描 | |
Netcat (nc) | 网络瑞士军刀,手动Banner抓取 | |
Web应用扫描 | Burp Suite (Professional) | 代理、爬虫、漏洞扫描(全能) |
OWASP ZAP | Burp的免费替代品,功能强大 | |
Gobuster, dirsearch, ffuf | 目录/文件/子域名/VHost爆破 | |
WhatWeb, Wappalyzer | Web应用指纹识别 | |
浏览器开发者工具 | 手动分析请求、响应、JS文件 | |
综合情报平台 | Shodan | 搜索引擎 for 物联网设备 |
Censys | 类似Shodan | |
FOFA | 国内的网络空间测绘引擎 | |
ZoomEye | 知道创宇的网络空间测绘引擎 | |
其他 | theHarvester | 搜索邮箱、主机名、子域名 |
Metasploit (辅助模块) | 集成了多种信息收集功能 | |
SearchSploit | 搜索Exploit-DB中的漏洞利用代码 | |
SecLists | 伟大的字典集合,不是工具但至关重要 |
五、最佳实践与注意事项
-
授权第一:始终在获得书面授权的前提下进行测试,明确测试范围(哪些IP/域名可以测,哪些绝对不能碰)。
-
先被动,后主动:最大程度减少对目标的影响和被发现的风险。
-
记录一切:使用工具(如
KeepNote
,Dradis
)或笔记详细记录每一步的发现,这些信息在后续阶段和报告编写中至关重要。 -
自动化与手动结合:自动化工具提高效率,但手动分析才能发现逻辑更深层的漏洞和关键信息。不要完全依赖工具。
-
持续进行:信息收集并非一次性阶段,在整个渗透测试过程中,根据新发现可能需要不断回头进行更深入的信息收集。
信息收集是一个需要耐心、创造力和细致心态的过程。掌握得越熟练,你就越能像攻击者一样思考,从而更好地帮助客户防御真正的威胁。