攻击面中每项资产的分类实践指南
TLDR:本文详述了从业者可用于分类攻击面中每个Web应用和资产的方法与工具(从DNS记录、IP地址到HTTP分析和HTML内容)。您将学习从攻击者视角审视资产,不仅能识别资产存在,还能精确判断其性质。
资产分类的必要性
“无法保护未知存在的资产"是网络安全领域的常见箴言。但现实更为复杂:仅知道某物存在并不足够。要有效保护资产,必须了解每个资产的实质。没有正确分类,安全措施和工具的应用将变成猜谜游戏。
Detectify研究表明,普通企业平均会漏测90%可能成为攻击目标的复杂Web应用。关键在于:攻击者只关心实际可访问的资产,而非您认为暴露的内容。
外部视角的数据采集方法
本指南假设采用由外至内的黑盒分析视角(非基于内部网络数据或源代码),按典型连接流顺序介绍分类方法:
握手阶段分析
-
DNS:
- 托管位置
- 指针类型(A/CNAME/MX等记录)
- TXT记录信息(如SPF/DKIM/DMARC)
-
IP:
- 地理位置
- 自治系统号(ASN)归属
- 独立IP或地址段归属
-
端口:
- 开放/关闭状态
- 防火墙行为特征(TCP/UDP处理差异)
-
协议:
- 端口响应协议(HTTP/FTP/SSH等)
- 嵌套协议(如HTTP over TLS)
-
SSL/TLS:
- 证书颁发机构(CA)
- JARM指纹数据
- 主题备用名称(SANs)
HTTP深度分析
重点解析Web应用核心协议HTTP的关键数据点:
- 响应代码:200 OK/30X重定向/50X服务器错误
- 响应头:X-自定义头/Cookie/安全头信息
- 文件签名:响应体前几字节的二进制特征
- 内容类型与长度:JSON/XML/HTML等格式识别
HTML层解析
当响应为HTML时可获取更丰富信息:
- Favicon哈希:快速识别已知软件
- URL模式:如/wp-admin/等特征路径
- Meta标签:generator等属性暴露CMS信息
- 表单结构:登录表单字段揭示系统类型
- 代码特征:JS/HTML/CSS中的框架指纹
- 第三方资源:引用的外部脚本/API来源
工具与技术实现
DNS分析
- 小规模:
dig
命令+人工模式识别 - 大规模:MassDNS等开源工具
IP/端口扫描
- 精准扫描:Nmap(支持服务检测)
- 大规模扫描:Zmap/MASSCAN(速度优先)
- ASN查询:Whois命令行/在线工具
协议识别
- 标准工具:Nmap
- 高级指纹:JA4T(TLS指纹)/fingerprintx
SSL/TLS解析
- JARM主动探测工具
- 证书透明度日志(如crt.sh)
HTTP特征提取
- 状态码分析:
- 30X重定向暴露服务器类型(如nginx)
- 40X/50X错误触发特定系统响应
- 响应头检测:
- Server/X-Powered-By等显性标记
- CSP策略分析依赖资源(如Salesforce)
- 内容检测:
file
/xxd
命令分析文件签名- Content-Type+Length组合识别应用类型
HTML指纹库
- Favicon哈希:Shodan等平台预置库
- 路径爆破:ffuf/dirsearch等工具配合字典
- 元标签抓取:
1
<meta name="generator" content="WordPress 6.2.2">
- 代码语法树分析:
- Tree-sitter解析JavaScript AST
- ANTLR处理GraphQL等复杂语法
综合分类实践
通过组合多维度数据点可回答关键安全问题:
- DNS端点是否过时?
- 是否遵守内部证书颁发策略?
- 重定向配置是否正确?
- CMDB是否与实际暴露面一致?
系统化的资产分类使安全团队超越简单发现,实现深度理解和测试。部分工具可自动化分类过程,并智能推荐需重点测试的高风险资产。