信息收集

外网信息收集

域名信息

whois 查询 通过 whois 协议查询域名的注册信息,可获得注册商、注册人/组织、联系邮箱、电话、注册/到期时间、DNS 服务器等。常用渠道:

  • 命令行:whois example.com(Linux 自带,Windows 可用 Sysinternals whois)
  • 在线:站长工具(whois.chinaz.com)、爱站、VirusTotal

拿到注册邮箱或注册人后可以做 whois 反查,找出同一人/组织名下的其他域名,扩大资产面。

ICP 备案查询 国内站点可通过工信部备案系统(beian.miit.gov.cn)或第三方(icp.chinaz.com)查询备案主体,往往能直接定位到目标公司全称,进而通过企业信用信息公示系统、天眼查/企查查挖掘子公司、分支机构的更多资产。

子域名收集

枚举工具

1
2
3
4
5
6
7
8
# OneForAll(集成证书透明度、DNS 数据集、爆破等多种方式)
python3 oneforall.py --target example.com run

# subfinder(被动数据源枚举,速度快)
subfinder -d example.com -o subs.txt

# ksubdomain(无状态爆破,适合大字典)
ksubdomain e -d example.com -f subnames.txt

实际使用建议多个工具结合,结果去重后再验证存活(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.comssl:"example.com"http.favicon.hash:xxx
ZoomEye site:example.comssl:"example.com"

测绘平台能发现直接搜不到的资产:按证书、icon_hash、favicon 哈希搜索经常有意想不到的收获。

端口与服务扫描

1
2
3
4
5
# masscan 快速扫全端口(速率可调,注意不要打挂目标)
masscan -p1-65535 1.2.3.4 --rate=1000 -oL mass.txt

# 对 masscan 发现的端口用 nmap 精扫服务与版本
nmap -sV -sC -p 22,80,443,3389 1.2.3.4 -oA target

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
2
3
4
5
6
7
8
# dirsearch(自带字典,支持递归)
dirsearch -u https://target.com -e php,html,js --recursive

# gobuster(配合 SecLists 字典)
gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt -x php,txt,bak

# ffuf(速度快,支持灵活过滤)
ffuf -u https://target.com/FUZZ -w common.txt -mc 200,301,302 -fc 404

重点关注的敏感文件/目录:

路径 说明
/.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:loginsite:example.com filetype:xlsx intext:手机(找泄露的通讯录表格)。

GitHub 泄露

在 GitHub 搜索目标域名/公司名配合敏感关键字,经常有运维误传配置文件:

1
2
3
4
"example.com" password
"example.com" smtp
"example.com" accesskey
"example.com" JDBC

也可用自动化工具(GitDorker 等)批量跑字典。

人员与社工信息

  • theHarvester:theHarvester -d example.com -b baidu,bing,从搜索引擎收集邮箱、子域名
  • 收集到的邮箱前缀即潜在用户名,可用于后续爆破或钓鱼(需授权)
  • LinkedIn、脉脉等职场平台可摸清目标组织架构和关键岗位人员

内网信息收集

进入内网后的第一件事仍然是信息收集:搞清楚”我是谁、这台机器是什么、周围有什么、域在哪里”。

本机信息收集

Windows

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
:: 系统信息(版本、补丁、域成员身份)
systeminfo

:: 网络配置(注意 DNS 后缀,域成员机器通常带域后缀)
ipconfig /all

:: 本地用户与管理员组
net user
net localgroup administrators

:: 当前登录的会话
query user

:: 进程与服务(找杀软、找高权限进程)
tasklist /svc
sc query state= all

:: 网络连接与监听端口
netstat -ano

:: ARP 表与路由表(相邻网段线索)
arp -a
route print

Linux

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 内核与发行版
uname -a
cat /etc/*-release

# 当前用户与权限
id
sudo -l

# 网络配置与连接
ip a
ip route
ss -tunlp
arp -n

# 历史命令中的敏感信息
cat ~/.bash_history

更详细的 Linux 提权向信息收集命令见《提权技术》一文的信息收集一节,此处不再重复。

网络与拓扑发现

存活主机探测

1
2
3
4
5
# nmap 禁端口扫描,只做主机发现
nmap -sn 192.168.1.0/24

# Linux 下无 nmap 时用 ping 扫 C 段
for i in $(seq 1 254); do ping -c 1 -W 1 192.168.1.$i | grep "from" & done
1
2
:: Windows cmd 下扫 C 段
for /L %i in (1,1,255) do @ping -n 1 -w 200 192.168.1.%i | findstr "TTL"

内网扫描优先用 ARP/ICMP,动静小。拿到存活主机后,结合本机的 ARP 表、路由表、DNS 缓存(ipconfig /displaydns)分析网段划分,推测办公网、服务器网段的位置,再对服务器网段做端口扫描。

域信息收集

判断是否在域内

满足以下任意一条基本可判定为域成员机器:

  • systeminfo 输出中”域”字段不是 WORKGROUP
  • ipconfig /all 的主 DNS 后缀是域名
  • net time /domain 能返回域控时间

域基础枚举

1
2
3
4
5
6
7
8
9
10
11
12
13
:: 查看域列表与域内主机
net view /domain
net view /domain:域名

:: 查询域控
net group "Domain Controllers" /domain
nltest /dsgetdc:域名

:: 域管理员
net group "Domain Admins" /domain

:: 查看指定域用户信息
net user 用户名 /domain

更系统的域信息收集一般用 BloodHound:用 SharpHound 在目标机器上采集域数据(用户、组、会话、ACL 等),导入 Neo4j 画图,自动算出到 Domain Admin 的最短攻击路径。

凭据搜集

1
2
3
4
5
6
:: 查看保存的凭据
cmdkey /l

:: WiFi 密码(需要曾连接过的配置文件)
netsh wlan show profiles
netsh wlan show profile name="WiFi名称" key=clear

此外浏览器保存的密码(Chrome Login Data)、各类客户端配置文件(Xshell、Navicat、mstsc 的 RDP 凭据)都是常见来源;内存凭据抓取交给 mimikatz 类工具,使用时注意免杀(见《免杀技术》一文)。


信息收集是渗透测试中耗时最长也最值得投入的环节——收集得越全,攻击面就越大。最后提醒:以上所有手段仅可用于获得授权的测试目标,对未授权目标进行扫描、探测属于违法行为。