一、资产收集在渗透测试中的核心价值
资产收集是渗透测试的”地基工程”,其质量直接影响后续漏洞挖掘的深度与广度。据某安全研究机构统计,60%的渗透测试突破口源于未被充分发现的边缘资产,如测试环境接口、历史版本应用、未授权云服务等。完整的资产收集需实现三个目标:
- 资产全景可视化:构建包含IP、域名、端口、服务、组件的资产清单
- 暴露面精准定位:识别可被外部访问的攻击入口点
- 业务逻辑关联:建立资产与业务系统的映射关系
二、网络层资产收集方法论
2.1 被动信息收集技术
通过非侵入式手段获取目标组织的基础信息:
- WHOIS查询:获取域名注册信息、DNS服务器、注册人联系方式(示例命令:
whois example.com) - DNS枚举:
# 子域名爆破(使用某常见CLI工具)dnsrecon -d example.com -t subdomains# 历史DNS记录查询dig +trace example.com
- CDN探测:通过HTTP头(X-Cache-Lookup)、TTL值差异、IP地理位置分析识别CDN节点
- 证书透明度日志:查询
crt.sh等公开日志获取关联域名
2.2 主动扫描技术
采用渐进式扫描策略平衡效率与隐蔽性:
- 端口扫描:
- 基础扫描:
nmap -sS -p 1-10000 example.com - 全端口扫描:结合
masscan进行快速初步探测
- 基础扫描:
- 服务识别:
- 版本检测:
nmap -sV --version-intensity 9 example.com - 指纹库匹配:结合自定义YARA规则识别非标准服务
- 版本检测:
- 网络拓扑映射:
- 路由追踪:
traceroute -I example.com - ASN信息查询:通过
whois -h whois.radb.net -- '-i origin AS12345'获取网络自治域信息
- 路由追踪:
三、应用层资产深度挖掘
3.1 Web应用发现
-
爬虫技术:
# 简易爬虫示例(需遵守robots.txt)import requestsfrom bs4 import BeautifulSoupdef crawl(url):response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')for link in soup.find_all('a'):print(link.get('href'))
- 目录爆破:使用
dirsearch等工具结合自定义字典(建议包含常见管理后台路径如/admin.php、/wp-login.php) - JS文件分析:通过正则表达式提取API端点:
// 示例:从JS中提取API路径const apiPatterns = [/api\/\w+/g, /\/v\d+\/\w+/g];
3.2 移动应用逆向
- APK分析:
- 使用
jadx反编译获取后端API地址 - 解析
AndroidManifest.xml获取深链接(Deep Link)
- 使用
- iOS分析:
- 通过
otool查看动态库依赖 - 使用
frida-trace动态跟踪网络请求
- 通过
3.3 API资产发现
- 流量镜像分析:在测试环境部署流量捕获工具(如
tcpdump) - Swagger接口探测:通过
/v2/api-docs等常见路径获取API文档 - GraphQL接口识别:发送
{__schema{types{name}}}查询检测GraphQL端点
四、数据资产价值评估
4.1 敏感数据暴露面
- Git泄露检测:
# 使用某常见CLI工具搜索.git目录git-hound --urls https://example.com --threads 10
- 备份文件扫描:搜索
.bak、.swp、.db.bak等扩展名 - 配置文件泄露:检测
config.php、database.yml等常见配置文件
4.2 云环境资产发现
- 对象存储扫描:
- 枚举常见存储服务路径(如
/s3/、/oss/) - 检测未授权访问的Bucket(通过
HEAD请求验证权限)
- 枚举常见存储服务路径(如
- 容器环境探测:
- 识别Kubernetes API Server(默认端口6443)
- 检测Docker Remote API(默认端口2375)
五、自动化资产收集框架
5.1 工具链整合方案
推荐组合使用以下工具构建自动化流水线:
- 信息收集层:
Sublist3r+Amass+ShodanAPI - 扫描层:
Nmap+Masscan+ZAP - 分析层:
Maltego+BloodHound(针对AD环境) - 存储层:
Elasticsearch+Kibana构建资产知识库
5.2 持续监控机制
建立资产变更检测流程:
graph TDA[初始资产收集] --> B[定期扫描]B --> C{资产变更?}C -->|是| D[更新资产库]C -->|否| E[保持现状]D --> F[触发重新测试]
六、合规与伦理考量
- 授权范围确认:严格限定在测试授权书明确的IP范围内
- 速率限制:对目标系统实施合理的请求间隔(建议≥1秒/请求)
- 数据脱敏:收集到的敏感信息(如API密钥)需立即加密存储
- 报告规范:资产清单需区分公开信息与内部信息
七、实战案例分析
某金融企业渗透测试中,通过以下步骤发现隐藏资产:
- 通过证书透明度日志获取已废弃的
dev.example.com域名 - 对该域名进行历史DNS查询,发现1年前使用的IP段
- 对该IP段进行端口扫描,发现未在文档中记录的Jenkins服务(端口8080)
- 利用Jenkins未授权访问漏洞获取内部SVN仓库地址
- 在SVN历史提交中发现数据库配置文件,包含生产环境凭证
该案例表明,系统化的资产收集能发现传统测试方法遗漏的攻击路径,显著提升渗透测试价值。安全团队应将资产收集作为持续进行的过程,而非一次性任务,通过建立自动化机制实现资产信息的动态更新与风险预警。