网络侧典型指纹识别算法
字数 2098 2025-09-01 11:25:54
TCP/IP 与应用层指纹识别技术详解
一、主动型 TCP/IP 层指纹识别技术
1. Queso (已淘汰)
- 原理:通过发送一系列格式异常或不常见的 TCP 数据包(如 SYN 包中包含不常见的 TCP 选项组合)
- 特点:
- 最早期的主动指纹识别工具
- 利用不同操作系统内核 TCP/IP 协议栈对异常数据包的不同响应进行识别
- 已被现代操作系统更新淘汰
2. XProbe2 (已淘汰)
- 探测方式:发送多种探测包,分析返回的 ICMP 错误消息(端口不可达、TTL 超时等)、TCP 响应包及 UDP 端口状态
- 特点:
- 在某些情况下识别效果优于 Nmap
- 多协议探测提高准确性
3. SinFP (已淘汰)
- 原理:仅使用一个精心构造的 SYN 包
- 分析特征:
- 目标返回的 SYN/ACK 包中的 TCP 选项布局
- 窗口大小
- TTL 值
- 优势:
- 单包探测更加隐蔽和快速
- 减少网络流量和被发现风险
二、被动型 TCP/IP 层指纹识别技术
1. p0f
- 工作方式:捕获网络流量,分析数据包特征
- SYN/ACK 包分析项:
- TTL 值
- 窗口大小
- TCP 选项
- MSS(最大段大小)
- 应用:操作系统和客户端软件识别
2. Zardaxt
- 分析参数:
- TTL
- 窗口大小
- TCP 标志位
- TCP 选项
- 特点:
- 指纹格式或匹配逻辑独特
- 核心思想与 p0f 基本一致
3. Satori
- 支持协议:
- TCP
- DHCP
- HTTP
- SMB
- 特点:多协议指纹识别增强准确性
4. MuonFP
- 改进点:
- 更好的匹配算法
- 更全面的指纹库
- 对现代操作系统识别效果更好
- 分析特征:
- TCP 窗口大小
- TCP 选项(有序)
- TCP 最大段长
- TCP 窗口缩放字段
- 实现:使用 Rust 编写,性能优异
三、主动型应用层指纹识别技术
1. JA3 系列指纹
JA3
- 原理:提取 TLS 客户端 Client Hello 数据包中的五个关键字段:
- TLS 版本
- 加密套件
- TLS 扩展列表
- 椭圆曲线
- 椭圆曲线点格式
- 生成方式:拼接字段后计算 MD5 哈希值
- 局限性:Chrome 已将 TLS 扩展顺序随机化,破坏了 JA3 稳定性
JA3S
- 原理:提取 TLS 服务端 Server Hello 数据包中的三个关键字段:
- TLS 版本
- 加密套件
- TLS 扩展列表
- 应用:与 JA3 结合可唯一标识客户端-服务器加密协商过程
JA3n
- 改进:
- 不再计算 MD5 哈希
- 直接使用拼接字符串作为指纹
- 将 TLS 扩展按顺序排列,抵消乱序影响
- 优缺点:
- 可反解客户端参数
- 字符串过长不利于检索
JA4
- 结构:将指纹分解为三部分:
- 协议与版本
- 客户端能力
- 连接特征
- 优势:
- 支持模糊检索与相似度分析
- 更好区分恶意软件模仿行为
JA4+
- 组成:JA4、JA4S、JA4H、JA4X 与 JA4L 组合
- 特点:构成极难伪造的高精度身份标识
2. JARM
- 工作流程:
- 向目标 TLS 服务器发送 10 个精心构造的 Client Hello 包
- 每个包使用不同的 TLS 版本、加密套件和选项
- 提取服务器响应的特征
- 组合特征并进行模糊哈希生成指纹
- 特点:相同 TLS 配置会产生相同 JARM 指纹
四、被动型应用层指纹识别技术
1. HASSH
- 原理:提取 SSH 握手过程中 SSH_MSG_KEXINIT 数据包的关键字段:
- 密钥交换算法
- 加密算法
- 消息认证码算法
- 压缩算法
- 生成方式:拼接字段后计算 MD5 哈希
2. HASSHS
- 原理:提取 SSH 服务器 SSH_MSG_KEXINIT 数据包中支持的算法列表
- 特点:不同版本 OpenSSH 或 SSH 服务器会产生不同指纹
3. Akamai HTTP/2 Fingerprint
- 分析参数:HTTP/2 SETTINGS 帧中的:
- 动态表大小(SETTINGS_HEADER_TABLE_SIZE)
- 最大并发流数量(SETTINGS_MAX_CONCURRENT_STREAMS)
- 初始窗口大小(SETTINGS_INITIAL_WINDOW_SIZE)
4. QUIC 指纹
- 提取特征:QUIC Initial 包中的 Client Hello 消息:
- 传输参数(Transport Parameters)
- 初始数据包大小
- Token 使用情况
- 版本协商细节
5. RDP Cookie Hashing
- 指纹来源:
- 客户端发送的包含"MSTSHASH="的 Cookie
- 安全协议协商(标准 RDP 安全、TLS、NLA)
- 图形渲染能力协商
- 应用:识别开放主机和检测蜜罐
五、技术演进趋势
- 从单一协议到多协议组合:如 JA4+ 组合多个指纹提高准确性
- 从精确匹配到模糊检索:如 JA4 支持相似度分析
- 对抗指纹随机化:如 JA3n 处理 TLS 扩展乱序问题
- 性能优化:如 MuonFP 使用 Rust 实现高性能
- 被动识别发展:减少主动探测带来的被发现风险