工作来源
TMA 2022
工作背景
TLS 正在被更多的犯罪分子所采用,研究人员也开始采用 JARM 进行指纹识别。
工作设计
每个 TLS 服务器都有其特定的行为,取决于 TLS 库、硬件、应用程序实现、功能与配置,这些行为可以被当作指纹进行识别。客户端发起 TLS 握手,服务器对握手请求作出响应。作为指纹的服务器行为不是恒定不变的,需要观察服务器对不同请求的响应。使用多个ClientHello 请求可以增加对服务器行为的了解与覆盖范围。
从TLS 握手中提取特征
从一个给定的 ClientHello 提取特征,包括版本、密码套件、接收到的告警与扩展数据。扩展数据是 ServerHello、Encrypted Extensions、Certificate Request、Hello Retry Request 与 Certificate TLS Message 对应键值对的有序列表,如下所示:
Key Share 仅保留用于 DiffieHellman 密钥交换的部分。组成的指纹示例为:
以一个为例如下所示,完整请见https://github.com/active-tls-fingerprinting/client-hellos。
多个请求的指纹识别
单个响应的精确度不够,多个响应组合起来构建服务器行为的TLS指纹效果更好。请求的数量与不同 ClientHello 的设计是关键,即可最大程度提高收集信息量,又能降低测量成本并兼顾道德与隐私考量。
兼顾道德考量的主动测量
使用 MassDNS2 与 Unbound3 处理域名解析,得到 IP 地址与域名的目标元组。再将目标与ClientHello 的排列组合,交给 Amann 实现的 TLS 扫描器。作者基于Golang 标准库设计了自定义TLS 库,支持定义任意ClientHello 作为每个TLS 连接的输入并提取所需的TLS 握手元数据(https://github.com/tumi8/goscanner)。
MassDNS2
https://github.com/blechschmidt/massdns
Unbound3
https://www.nlnetlabs.nl/projects/unbound
ClintHello的设计
从 TLS 扫描器支持的特征空间与IANA 完整特征空间中,随机生成 5000 个ClientHello。在Alexa 与Majestic 流行的网站中进行测试,每个服务器最多发送 13 个ClientHello。选择性能最好的ClientHello,并对相同目标进行二次测量,通过50 个ClientHello 对目标进行指纹识别。
发送的 ClientHello 越多,可以区分出的也就越细。但当ClientHello 超过10 个时,信息的增益相对降低了。
工作准备
从 2021 年7 月19 日开始,进行了 30 周的扫描:
工作评估
每次测量大概能够看到上周 48% 的服务器,随时间推移如下所示:
CDN 服务器部署
以 CloudFlare、Fastly、Akamai 与Alibaba为例,基于扫描AS 内IP 地址收集CDN 指纹。结果如下所示,TLS 指纹与CDN 有较强的相关性:
CloudFlare 与Fastly 的准确率超过99%,Akamai 与Alibaba 的准确率超过85%。
C&C 服务器部署
根据跟踪,新加入黑名单中的 C&C 服务器95% 与旧的C&C 服务器具有相同的指纹。
不只是使用 TLS 指纹,辅助以HTTP 头数据效果更好。
与JARM 的比较
效果总是要比 JARM 好的,对C&C 服务器来说增益则更大。
工作思考
作者已将该工具开源到 GitHub,https://active-tls-fingerprinting.github.io/
声明:本文来自威胁棱镜,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。
评论(0)