【技术向】基于jarm的Tor中继节点远程识别

发布者:星河Salaxy
发布于:2021-04-15 14:37

一.  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数量
2ad2ad16d2ad2ad00042d42d000000332dc9cd7d90589195193c8bb05d84fa2219
2ad2ad16d2ad2ad22c42d42d000000d342d5966a57139eeaff9f8bc4841b251982
2ad2ad16d2ad2ad22c2ad2ad2ad2adce2e4c8c53174ecbf5529ce7584d5518862
2ad2ad0002ad2ad00042d42d000000020120996177a65431cde640fa58d2e8680
2ad2ad16d2ad2ad22c2ad2ad2ad2ad930c599f185259cdd20fafb488f63f34350


可以看到这些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/





声明:该文观点仅代表作者本人,转载请注明来自看雪