一. JARM简介
JARM是一个TLS服务器指纹识别工具,使用JARM扫描可以识别和分组Internet上的恶意服务器。
JARM指纹用途
-
快速验证组中的所有服务器都具有相同的TLS配置。
-
根据配置对互联网上的不同服务器进行分组,例如,标识服务器可能属于谷歌(Google)、Salesforce和苹果(Apple)。
-
识别默认的应用程序或基础结构。
-
识别Internet上的恶意软件命令和控制基础结构以及其他恶意服务器。
TLS服务器工作原理
TLS服务器根据TLS客户端Hello数据包中收到的详细信息来制定其Server Hello数据包。根据给定客户端Hello的构建方式,为任何给定的Client Hello配制Server Hello的方式可能会有所不同,包括:
-
操作系统
-
操作系统版本
-
使用哪些库
-
使用的库的版本
-
调用库的顺序
-
自定义配置
所有这些因素导致每个TLS服务器以独特的方式进行响应。因素的组合使得不同组织部署的服务器不太可能具有相同的响应。
JARM工作原理
JARM通过主动向目标TLS服务器发送10个TLS客户端Hello数据包并捕获TLS Server Hello响应的特定属性来工作。
然后,以特定方式对聚合的TLS服务器响应进行哈希处理,以生成JARM指纹。
JARM指纹哈希是一种混合模糊哈希,它结合使用可逆和不可逆哈希算法来生成62个字符的指纹。
前30个字符由服务器为发送的10个客户端问候中的每一个选择的密码和TLS版本组成。“000”表示服务器拒绝与该客户端问好协商。剩下的32个字符是服务器发送的累积扩展名的截断SHA256哈希,忽略了x509证书数据。
比较JARM指纹时,如果前30个字符相同,但后32个字符不同,则这意味着服务器具有非常相似的配置,接受相同的版本和密码,但是由于扩展名不同而并非完全相同。
二. Tor中继节点远程识别
Tor是实现匿名通信的自由软件,其名源于“The Onion Router”(洋葱路由器)的英语缩写。用户可透过Tor接达由全球志愿者免费提供,包含7000多个中继节点的覆盖网络,从而实现隐藏用户真实地址、避免网络监控及流量分析的目的。
均运行相同TLS配置的一组应用程序服务器应具有相同的JARM指纹。可以定期使用JARM扫描机群,以确认它们是否相同。
如果机群中的服务器产生的JARM指纹不同于其他服务器,则说明该服务器未运行相同的配置。
因此,我们可以利用服务器的jarm指纹发现是否存在运行TLS实现的非标准中继,通过jarm指纹匹配发现新的Tor中继节点。对某个Tor中继节点扫描得到jarm指纹结果如下所示:
我们使用jarm对dan.me.uk/tornodes上的8863个Tor节点进行了扫描,有2473个节点没有相应,数量前5位的jarm哈希如下所示:
Jarm hash | 数量 |
2ad2ad16d2ad2ad00042d42d000000332dc9cd7d90589195193c8bb05d84fa | 2219 |
2ad2ad16d2ad2ad22c42d42d000000d342d5966a57139eeaff9f8bc4841b25 | 1982 |
2ad2ad16d2ad2ad22c2ad2ad2ad2adce2e4c8c53174ecbf5529ce7584d5518 | 862 |
2ad2ad0002ad2ad00042d42d000000020120996177a65431cde640fa58d2e8 | 680 |
2ad2ad16d2ad2ad22c2ad2ad2ad2ad930c599f185259cdd20fafb488f63f34 | 350 |
可以看到这些Tor中继节点中存在大量jarm指纹相同的节点。
虽然jarm本身还不足以识别Tor节点,但是可以使用jarm快速地筛选整个互联网范围的扫描主机,然后应用其余的检查来确定给定主机成为Tor节点的可能性。
参考链接
https://engineering.salesforce.com/easily-identify-malicious-servers-on-the-internet-with-jarm-e095edac525a
https://chaos.institute/fingeprinting-tor-relays-with-jarm/
来源:freebuf.com 2021-04-15 14:43:40 by: 星河工业安全
请登录后发表评论
注册