渗透测试信息收集步骤与工具详解
我们来详细解析渗透测试中最为关键的第一步:信息收集。这个过程也被称为“踩点”或“侦查”,其核心在于在不触发目标防御系统的情况下,尽可能多地收集关于目标的信息。
信息收集做得越充分,后续渗透测试的成功率就越高。它就像战争前的侦察,知己知彼,方能百战不殆。
信息收集通常分为两个阶段:被动信息收集和主动信息收集。
一、被动信息收集
定义:不直接与目标系统交互,而是通过第三方渠道获取信息。这种方式隐蔽性极高,几乎不会被目标察觉。
目标:获取目标的IP地址段、域名、子域名、邮箱、员工信息、技术架构(使用的技术栈)、公开文件等。
主要步骤与工具详解:
域名信息收集
Whois查询:获取域名注册信息,如注册人、联系方式、邮箱、DNS服务器、注册日期和过期日期等。
工具:
在线网站:
whois.domaintools.com
,whois.icann.org
系统命令:
whois example.com
(Linux/Windows)
DNS信息查询:
记录类型:
A记录:域名对应的IP地址。
MX记录:邮件服务器地址。
CNAME记录:域名别名。
TXT记录:文本记录,常用于SPF(反垃圾邮件)或验证域名所有权。
工具:
dig
(命令行):dig example.com ANY @8.8.8.8
(向DNS服务器8.8.8.8查询任何记录)nslookup
(命令行):nslookup -type=ANY example.com
在线工具:
viewdns.info
,mxtoolbox.com
子域名发现
重要性:主站防御严密,但其子域名(如
test.example.com
,admin.example.com
)可能防护薄弱,是很好的突破口。工具:
被动枚举:
VirusTotal:提供子域名关联数据。
Censys / Shodan:搜索引擎,可查找同一证书或同一IP段的子域名。
证书透明度日志:证书颁发机构会公开SSL/TLS证书日志,其中常包含子域名。工具:
crt.sh
,censys.io
字典爆破:使用字典暴力猜解可能的子域名。
工具:
subfinder
,amass
(功能强大),Sublist3r
,oneforall
字典:强大的字典是关键,如
subbrute
、fierce
自带的字典。
公司信息与员工邮箱收集
目的:为社会工程学攻击(如钓鱼邮件)做准备。
方法:
公司官网:“关于我们”、“团队介绍”等板块。
LinkedIn:搜索目标公司员工。
搜索引擎:使用Google Hacking语法,如
site:example.com email
。工具:
theHarvester
:可从Google, Bing, LinkedIn等多个公开源收集邮箱、子域名、主机名。命令:
theHarvester -d example.com -l 500 -b google
搜索引擎利用(Google Hacking)
定义:使用Google等搜索引擎的高级语法来查找敏感文件、目录或信息。
常用语法:
site:example.com
:只搜索指定网站。filetype:pdf
:搜索指定文件类型。intitle:"index of"
:查找目录遍历漏洞。inurl:/admin/login.php
:查找后台登录页面。ext:php | ext:bak
:查找备份文件。
工具:Google 本身是最佳工具。也可以使用自动化脚本集合如
GHDB
(Google Hacking Database)。
二、主动信息收集
定义:直接与目标系统交互,从而获取信息。这种方式会产生流量记录,有被检测到的风险。
目标:获取目标的真实IP(绕过CDN)、开放端口、运行的服务、操作系统版本、网络拓扑结构等。
主要步骤与工具详解:
网络拓扑发现(绕过CDN)
目的:找到网站的真实IP地址,而不是CDN节点的IP。
方法:
查询历史DNS记录:网站可能之前没有使用CDN。工具:
viewdns.info
查询全球DNS:不同地区解析的IP可能不同。工具:
whatsmydns.net
SSL证书匹配:通过
censys.io
或shodan.io
搜索目标的SSL证书,可能找到使用相同证书的真实IP。子域名查询:很多子域名可能没有接入CDN,直接指向真实IP。
端口扫描
重要性:了解目标开放了哪些通往外部世界的“大门”,以及门后运行着什么服务。
神器:
Nmap
(Network Mapper)基本扫描:
nmap -sS -sV -O -A <target_ip>
-sS
:TCP SYN扫描(半开扫描,速度快且隐蔽)。-sV
:版本探测,识别服务版本。-O
:操作系统探测。-A
:全面扫描,包含版本、OS、脚本扫描等信息。
全端口扫描:
nmap -p 1-65535 <target_ip>
(默认只扫描1000个常用端口)脚本扫描:
nmap --script=<script_name> <target_ip>
,Nmap拥有强大的脚本引擎(NSE),可用于漏洞检测、漏洞利用等。
其他工具:
Masscan
(速度极快,适合大范围扫描),Zenmap
(Nmap的图形化界面)。
服务识别与漏洞探测
目的:确定端口上运行服务的具体版本,并寻找已知漏洞。
工具:
Nmap
:如上所述,-sV
参数可以有效地识别服务。Banner抓取:使用
Netcat
或Telnet
手动连接端口,查看服务返回的Banner信息。命令:
nc -nv <target_ip> 80
,然后输入HEAD / HTTP/1.0
专用扫描器:
Nessus
,OpenVAS
(开源)是专业的漏洞扫描器,能自动识别服务并匹配CVE漏洞。
网站目录与文件发现
目的:寻找隐藏的目录、敏感文件(如备份文件、配置文件、管理员后台等)。
工具:
字典爆破:
DirBuster
(图形化,老牌)Dirsearch
(命令行,速度快)gobuster
(命令行,用Go编写,高效)命令:
gobuster dir -u http://example.com -w /path/to/wordlist.txt
爬虫:
Burp Suite
的爬虫功能可以很好地映射应用程序的内容和功能。
WAF识别
目的:判断目标是否受到WAF(Web应用防火墙)的保护。如果存在,后续的Web攻击测试需要调整策略以绕过WAF。
工具:
WAFW00F
:命令行工具,专门用于检测和识别WAF。命令:
wafw00f http://example.com
手动检测:发送恶意请求(如
../../etc/passwd
),观察响应是否被WAF拦截。
总结:信息收集流程与工具选择建议
阶段 | 目标 | 推荐工具 |
---|---|---|
被动收集 | 域名、子域名、邮箱、公司架构 | whois , dig , theHarvester , subfinder , Amass , Google Hacking |
主动收集 | 真实IP、开放端口、服务版本 | Nmap , Masscan , Netcat |
Web侦查 | 目录结构、敏感文件、WAF、技术栈 | gobuster , Dirsearch , WAFW00F , WhatWeb , Burp Suite |
流程建议:
明确范围:确认测试的目标域名、IP段。
被动先行:首先进行全面的被动信息收集,绘制目标外部轮廓。
主动验证:利用主动收集技术,验证被动收集到的信息(如子域名是否存活,IP是否正确),并探测更深层次的信息(如端口、服务)。
重点深入:对发现的关键资产(如官网、邮件系统、对外开放的服务)进行重点深入的扫描和分析。
持续整理:使用笔记工具(如
KeepNote
,OneNote
,Obsidian
)或协作平台及时整理和归档信息,形成清晰的情报报告,为后续的漏洞分析和渗透攻击阶段打下坚实基础。
记住,信息收集不是一次性的任务,而是一个在整个渗透测试过程中都需要持续进行的活动。