首页 > 其他分享 >JARM指纹识别

JARM指纹识别

时间:2023-02-04 17:32:39浏览次数:63  
标签:TLS JARM 指纹识别 ff01 000b 服务器 Hello

免责声明:希望大家以遵守《网络安全法》相关法律,本团队发表此文章仅用于研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本团队无关。

介绍:JARM 是一个活动的传输层安全 (TLS)服务器指纹识别工具。

使用 JARM 进行扫描提供了识别和分组 Internet 上的恶意服务器的能力。

JARM 指纹可用于:

 快速验证组中的所有服务器是否具有相同的 TLS 配置。

通过配置对 Internet 上的不同服务器进行分组,例如,识别服务器可能属于 Google、Salesforce 和Apple。

识别默认应用程序或基础架构。

识别 Internet 上的恶意软件命令和控制基础设施以及其他恶意服务器。

JARM 的工作原理

[zhy@zhy jarm]$ python ​​jarm.py​​ -V

JARM version 1.0

[zhy@zhy jarm]$ python jarm.py -h

usage: jarm.py [-h] [-i INPUT] [-p PORT] [-v] [-V] [-o OUTPUT] [-j] [-P PROXY] [scan] (参数详解略)

###

在学习 JARM 的工作原理之前,了解 TLS 的工作原理很重要。TLS及其前身SSL用于加密常见应用程序(如Internet浏览器)的通信,以确保数据安全,也用于加密恶意软件,因此它可以进行隐藏在噪声中。要启动 TLS 会话,客户端将在 TCP 三次握手之后发送 TLS Client Hello 消息。此数据包及其生成方式取决于构建客户端应用程序时使用的包和方法。服务器如果接受 TLS 连接,将使用 TLS Server Hello 数据包进行响应。

JARM指纹识别_信息收集

TLS 服务器根据在 TLS 客户端 Hello 数据包中接收到的详细信息制定其服务器 Hello 数据包。根据应用程序或服务器的构建方式,服务器回复 Hello 的方式可能会有所不同,包括: 操作系统、操作系统版本、使用的库、使用的这些库的版本、调用库的顺序

自定义配置所有这些因素导致每个 TLS 服务器以独特的方式响应。各种因素的组合使得不同组织部署的服务器不太可能有相同的响应。

下面是在Wireshark[1]中查看的 TLS 客户端 Hello 和服务器Hello 的示例。

JARM指纹识别_指纹识别_02

JARM指纹识别_信息收集_03

JARM 通过主动向目标 TLS 服务器发送 10 个 TLS 客户端 Hello 数据包并捕获 TLS 服务器 Hello 响应的特定属性来工作。然后以特定方式对聚合的 TLS 服务器响应进行哈希处理以生成 JARM 指纹。

JARM 中的 10 个 TLS 客户端 Hello 数据包经过特殊设计,可在 TLS 服务器中提取唯一响应。JARM 以不同的顺序发送不同的 TLS 版本、密码和扩展,以收集唯一的响应。服务器是否支持 TLS 1.3?它会与 1.2 密码协商 TLS 1.3 吗?如果我们将密码从最弱到最强排序,它会选择哪个密码?这些是 JARM本质上要求服务器提取最独特的响应的不寻常问题的类型。然后对 10 个响应进行哈希处理以生成 JARM 指纹。

[zhy@zhy-f0 jarm]$ python jarm.py -v baidu.com
Domain: baidu.com
Resolved IP: 220.181.38.251
JARM: 29d29d00029d29d1fc29d29d29d29d881e59db99b9f67f908be168829ecef9
Scan 1: c02f|0303|http/1.1|ff01-000b-0023-0010,
Scan 2: c02f|0303|http/1.1|ff01-000b-0023-0010,
Scan 3: |||,
Scan 4: c02f|0303||ff01-000b-0023,
Scan 5: c02f|0303||ff01-000b-0023,
Scan 6: c011|0302|http/1.1|ff01-000b-0023-0010,
Scan 7: c02f|0303|http/1.1|ff01-000b-0023-0010,
Scan 8: c02f|0303|http/1.1|ff01-000b-0023-0010,
Scan 9: c02f|0303|http/1.1|ff01-000b-0023-0010,
Scan 10: c02f|0303|http/1.1|ff01-000b-0023-0010

JARM指纹识别_信息收集_04JARM指纹识别_JARM_05

在收到每个 TLS 服务器问候消息后,JARM 会使用 FIN 优雅地关闭连接,以免套接字打开。

JARM 示例:

Domain

JARM

salesforce.com

2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5

force.com

2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5

google.com

27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d

facebook.com

27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d

instagram.com

27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9

oculus.com

27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9

需要注意的是,JARM 是一种高性能指纹功能,不应将其视为或与安全加密功能混淆。



References

​[1]​​ Wireshark: ​​https://wireshark.com/​

标签:TLS,JARM,指纹识别,ff01,000b,服务器,Hello
From: https://blog.51cto.com/u_15945480/6037215

相关文章