外网信息收集
域名信息
whois 查询 通过 whois 协议查询域名的注册信息,可获得注册商、注册人/组织、联系邮箱、电话、注册/到期时间、DNS 服务器等。常用渠道:
- 命令行:
whois example.com(Linux 自带,Windows 可用 Sysinternals whois) - 在线:站长工具(whois.chinaz.com)、爱站、VirusTotal
拿到注册邮箱或注册人后可以做 whois 反查,找出同一人/组织名下的其他域名,扩大资产面。
ICP 备案查询 国内站点可通过工信部备案系统(beian.miit.gov.cn)或第三方(icp.chinaz.com)查询备案主体,往往能直接定位到目标公司全称,进而通过企业信用信息公示系统、天眼查/企查查挖掘子公司、分支机构的更多资产。
子域名收集
枚举工具
1 | # OneForAll(集成证书透明度、DNS 数据集、爆破等多种方式) |
实际使用建议多个工具结合,结果去重后再验证存活(ksubdomain 的 verify 模式或 massdns)。
证书透明度(CT Log)
证书透明度日志记录了 CA 签发的所有证书,是被动收集子域名的高质量来源:
- crt.sh:
https://crt.sh/?q=%25.example.com&output=json(%25 即通配符 %) - censys.io:直接搜索证书中的域名
网络空间测绘
| 平台 | 常用语法示例 |
|---|---|
| FOFA | domain="example.com"、cert="example.com"、icon_hash="..." |
| Quake | domain:"example.com"、favicon:"..." |
| Hunter | domain="example.com"、web.title="..." |
| Shodan | hostname:example.com、ssl:"example.com"、http.favicon.hash:xxx |
| ZoomEye | site:example.com、ssl:"example.com" |
测绘平台能发现直接搜不到的资产:按证书、icon_hash、favicon 哈希搜索经常有意想不到的收获。
端口与服务扫描
1 | # masscan 快速扫全端口(速率可调,注意不要打挂目标) |
nmap 常用参数:
| 参数 | 作用 |
|---|---|
| -sS | SYN 半开扫描(默认,快且相对隐蔽) |
| -sV | 探测服务版本 |
| -O | 探测操作系统(需 root) |
| -sC | 调用 default 脚本(相当于 –script=default) |
| -p- | 扫描全部 65535 端口 |
| -Pn | 跳过主机存活探测(目标禁 ping 时用) |
| -sU | UDP 扫描(常见端口:53、123、161、500) |
| –script=vuln | 调用漏洞检测脚本 |
| -oA | 同时输出三种格式结果文件 |
Web 指纹识别
CMS、框架与中间件
识别目标使用的 CMS(WordPress、织梦、Discuz 等)、开发框架(ThinkPHP、Spring、Shiro 等)和中间件(Nginx、Apache、Tomcat),直接决定了后续的漏洞利用方向。
- 工具:
whatweb https://target.com、浏览器插件 Wappalyzer - 在线指纹库:云悉指纹、潮汐指纹
- 手工判断:favicon 哈希(mmh3 计算后去 FOFA 搜)、robots.txt、报错页面、响应头(Server、X-Powered-By)、特有文件路径
WAF 识别
1 | wafw00f https://target.com |
也可以在请求中插入常见攻击载荷(如 ' or 1=1--)观察是否被拦截及拦截页面特征。识别出 WAF 后,后续的扫描和攻击都需要考虑绕过策略。
CDN 判断与真实 IP 发现
判断是否使用 CDN:用多个地区的节点 ping 或解析域名,若返回不同 IP 则大概率使用了 CDN。
- 超级 ping:ping.chinaz.com、itdog.cn
nslookup example.com 8.8.8.8,与本地 DNS 解析结果对比
找真实 IP 的常用思路:
- 历史 DNS 记录:ip138、SecurityTrails、微步在线,查域名上 CDN 之前的解析记录
- 子域名往往没上 CDN,解析出真实 IP 后验证与主站的证书/内容是否一致
- SSL 证书匹配:在 censys/FOFA 中搜索证书特征,找使用同一证书的真实 IP
- 邮件头:让目标服务器给自己发邮件(注册、找回密码),邮件头 Received 字段可能暴露真实出口 IP
目录与敏感文件扫描
1 | # dirsearch(自带字典,支持递归) |
重点关注的敏感文件/目录:
| 路径 | 说明 |
|---|---|
| /.git/ | Git 源码泄露,可用 GitHack 还原整个仓库 |
| /.svn/entries | SVN 源码泄露 |
| /.DS_Store | macOS 目录结构泄露 |
| /www.zip、/backup.rar、/1.tar.gz | 运维留下的整站备份 |
| /phpinfo.php | 泄露绝对路径、环境变量 |
| /robots.txt | 常有后台、接口路径线索 |
敏感信息泄露
Google Hacking
| 语法 | 作用 | 示例 |
|---|---|---|
| site: | 限定域名 | site:example.com |
| inurl: | URL 包含关键字 | inurl:admin site:example.com |
| intitle: | 标题包含关键字 | intitle:"后台登录" |
| intext: | 正文包含关键字 | intext:"powered by dedecms" |
| filetype: | 限定文件类型 | filetype:sql site:example.com |
| cache: | 查看网页快照 | cache:example.com |
组合示例:site:example.com inurl:login、site:example.com filetype:xlsx intext:手机(找泄露的通讯录表格)。
GitHub 泄露
在 GitHub 搜索目标域名/公司名配合敏感关键字,经常有运维误传配置文件:
1 | "example.com" password |
也可用自动化工具(GitDorker 等)批量跑字典。
人员与社工信息
- theHarvester:
theHarvester -d example.com -b baidu,bing,从搜索引擎收集邮箱、子域名 - 收集到的邮箱前缀即潜在用户名,可用于后续爆破或钓鱼(需授权)
- LinkedIn、脉脉等职场平台可摸清目标组织架构和关键岗位人员
内网信息收集
进入内网后的第一件事仍然是信息收集:搞清楚”我是谁、这台机器是什么、周围有什么、域在哪里”。
本机信息收集
Windows
1 | :: 系统信息(版本、补丁、域成员身份) |
Linux
1 | # 内核与发行版 |
更详细的 Linux 提权向信息收集命令见《提权技术》一文的信息收集一节,此处不再重复。
网络与拓扑发现
存活主机探测
1 | # nmap 禁端口扫描,只做主机发现 |
1 | :: Windows cmd 下扫 C 段 |
内网扫描优先用 ARP/ICMP,动静小。拿到存活主机后,结合本机的 ARP 表、路由表、DNS 缓存(ipconfig /displaydns)分析网段划分,推测办公网、服务器网段的位置,再对服务器网段做端口扫描。
域信息收集
判断是否在域内
满足以下任意一条基本可判定为域成员机器:
systeminfo输出中”域”字段不是 WORKGROUPipconfig /all的主 DNS 后缀是域名net time /domain能返回域控时间
域基础枚举
1 | :: 查看域列表与域内主机 |
更系统的域信息收集一般用 BloodHound:用 SharpHound 在目标机器上采集域数据(用户、组、会话、ACL 等),导入 Neo4j 画图,自动算出到 Domain Admin 的最短攻击路径。
凭据搜集
1 | :: 查看保存的凭据 |
此外浏览器保存的密码(Chrome Login Data)、各类客户端配置文件(Xshell、Navicat、mstsc 的 RDP 凭据)都是常见来源;内存凭据抓取交给 mimikatz 类工具,使用时注意免杀(见《免杀技术》一文)。
信息收集是渗透测试中耗时最长也最值得投入的环节——收集得越全,攻击面就越大。最后提醒:以上所有手段仅可用于获得授权的测试目标,对未授权目标进行扫描、探测属于违法行为。