Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
jarm — 主动式TLS服务器指纹识别工具,通过发送精心构造的Client Hello数据包来生成唯一的JARM哈希,用于识别服务器配置、对基础设施进行分组以及检测恶意服务器。 | Kitploit
工具/GitHubGitHub/salesforce/jarm
侦察信息收集网络安全威胁情报
GitHubsalesforce/jarm

jarm

主动式TLS服务器指纹识别工具,通过发送精心构造的Client Hello数据包来生成唯一的JARM哈希,用于识别服务器配置、对基础设施进行分组以及检测恶意服务器。

查看仓库
1.3k151326天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

JARM

请阅读最初的 JARM 博客文章 了解更多信息。

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

JARM 指纹可用于:

  • 快速验证一组服务器是否具有相同的 TLS 配置。
  • 按配置对互联网上不同的服务器进行分组,例如识别出某个服务器属于 Google、Salesforce 还是 Apple。
  • 识别默认应用程序或基础设施。
  • 识别互联网上的恶意软件命令与控制基础设施及其他恶意服务器。

JARM 支持已被或正在被添加到: SecurityTrails
Shodan
BinaryEdge
RiskIQ
Palo Alto Networks
Censys
360

运行 JARM

python3 jarm.py [-h] [-i INPUT] [-p PORT] [-v] [-V] [-o OUTPUT] [-j] [-P PROXY] [domain/IP]
示例:
% python3 jarm.py www.salesforce.com
Domain: www.salesforce.com
Resolved IP: 23.50.225.123
JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5

若使用 Python 2,你需要安装 ipaddress 模块:

pip install -r requirements.txt

批量快速运行 JARM 处理大量列表

./jarm.sh <list> <output_file>
示例:
% ./jarm.sh alexa500.txt jarm_alexa_500.csv

输出示例

JARM 工作原理

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

TLS 服务器根据收到的 TLS Client Hello 数据包中的细节来构建其 Server Hello 数据包。对于给定的 Client Hello,Server Hello 的构建方式可能因应用程序或服务器的构建方式而异,包括:

  • 操作系统
  • 操作系统版本
  • 使用的库
  • 这些库的版本
  • 库的调用顺序
  • 自定义配置

所有这些因素都会导致每个 TLS 服务器以独特的方式响应。这些因素的组合使得不同组织部署的服务器不太可能具有相同的响应。

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

这不是我们第一次处理 TLS 指纹识别。2017 年,我们开发了 JA3/S,一种被动 TLS 客户端/服务器指纹识别方法,现在大多数网络安全工具中都能找到。但 JA3/S 是被动的,通过监听网络流量来识别客户端和服务器;而 JARM 是一种主动的服务器指纹识别扫描器。你可以在这里了解 TLS 协商和 JA3/S 被动指纹识别的更多信息: here。

JARM 中的 10 个 TLS Client Hello 数据包经过特殊设计,以提取 TLS 服务器的独特响应。JARM 发送不同的 TLS 版本、密码套件和扩展,并以不同顺序排列,以收集独特响应。服务器是否支持 TLS 1.3?它会使用 1.2 密码套件协商 TLS 1.3 吗?如果我们按从弱到强的顺序排列密码套件,它会选择哪一个?这些就是 JARM 向服务器提出的异常问题类型,以引出最独特的响应。然后将这 10 个响应哈希处理,生成 JARM 指纹。

JARM 指纹哈希是一种混合模糊哈希,它结合了可逆和不可逆哈希算法,生成一个 62 字符的指纹。前 30 个字符由服务器为每个发送的 Client Hello 选择的密码套件和 TLS 版本组成。"000" 表示服务器拒绝与该 Client Hello 协商。其余 32 个字符是服务器发送的累积扩展的截断 SHA256 哈希,忽略 x509 证书数据。比较 JARM 指纹时,如果前 30 个字符相同但后 32 个不同,这意味着服务器具有非常相似的配置,接受相同的版本和密码套件,但扩展不同,因此并非完全相同。

收到每个 TLS Server Hello 消息后,JARM 通过 FIN 优雅地关闭连接,以免保持套接字打开。

需要注意的是,JARM 是一个高性能的指纹函数,不应被视为或混淆为安全的加密函数。我们将 JARM 指纹设计为既适合机器处理也适合人工阅读。这意味着它足够小,可以肉眼查看、分享和发布推文,同时留有足够的空间用于上下文细节。

如何使用 JARM 识别恶意服务器

恶意软件命令与控制(C2)和恶意服务器由其创建者像其他服务器一样配置,然后部署到整个服务器群中。因此,它们往往会产生独特的 JARM 指纹。以下是常见恶意软件和攻击工具的示例,以及它们与 Alexa 前 100 万网站的 JARM 重叠情况(截至 2020 年 10 月):

由于与 Alexa 前 100 万网站的几乎无重叠,组织内的主机访问具有这些 JARM 指纹的服务器应该是小概率事件。

JARM 团队

John Althouse - 原始想法、概念和项目负责人
Andrew Smart - 概念和测试
RJ Nunnally - 编程和测试
Mike Brady - 编程和测试

由 Caleb Yu 为实际使用重写为 Python 版本。

下载工具
域名JARM
salesforce.com2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
force.com2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
google.com27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d
youtube.com27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d
gmail.com27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d
facebook.com27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9
instagram.com27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9
oculus.com29d29d20d29d29d21c41d43d00041d741011a7be03d7498e0df05581db08a9
恶意服务器 C2JARM 指纹与 Alexa 前 100 万重叠数
Trickbot22b22b09b22b22b22b22b22b22b22b352842cd5d6b0278445702035e06875c0
AsyncRAT1dd40d40d00040d1dc1dd40d1dd40d3df2d6a0c2caaa0dc59908f0d36029430
Metasploit07d14d16d21d21d00042d43d000000aa99ce74e2c6d013c745aa52b5cc042d0
Cobalt Strike07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb10
Merlin C229d21b20d29d29d21c41d21b21b41d494e0df9532e75299f15ba73156cee38303