JA3整理(JA3S类似)

 

概念&应用

JA3,是针对TLS握手过程中,clienthello报文的特征,生成指纹的一种方法。生成了指纹后,可以和在线指纹数据库(或者自己维护的数据信息)进行比对,识别、区分不同的TLS客户端。进而达到识别是否是恶意软件、是否是已知的攻击者、是否是异常行为(和自己当前常见的流量比对)。所以JA3并不是直接用来攻击的,而是对于服务端,增加了一种防范的手段。如果一定要说JA3是否可以应用在攻击中,可以这样来用----就是攻击者通过JA3工具对被攻击目标的报文进行分析,收集到他们常用的TLS客户端信息,模拟这些客户端信息发起请求,和服务器建立连接,达到攻击目的。

JA3S,是对应的,针对服务器握手过程中serverhello报文的特征,生成指纹的一种方法。使用和理解没有太大区别,以下就只用JA3来进行示例。

依据什么生成指纹

JA3 指纹生成过程涉及从 TLS 客户端握手信息中提取并哈希化以下字段:

  1. TLS 版本:客户端支持的 TLS 版本。
  2. 加密套件列表:客户端支持的加密套件(Cipher Suites)。
  3. 扩展列表:客户端支持的 TLS 扩展(Extensions)。
  4. 支持的椭圆曲线列表:客户端支持的椭圆曲线(Elliptic Curves)。
  5. 支持的椭圆曲线点格式:客户端支持的椭圆曲线点格式(Elliptic Curve Point Formats)。

这些字段组合起来形成一个字符串,然后通过 MD5 哈希算法生成一个唯一的指纹。

【示例】

1、打开wireshark抓包,web上随便访问一些网站,生成一些https请求,抓到client hello包,wireshark过滤client hello的条件为“tls.handshake.type == 1”;

 2、使用JA3工具,生成指纹,根据步骤1的这个截图的报文,生成的为红框内的字符串和对应的指纹;

 如果用“-j”参数,可以转为jason格式,展示会更友好一些。

 3、这个指纹的意思如下:

  • 771:TLS 版本。这个版本我觉得并没有区分1.x,因为1.0和1.2的我看都是771,感觉就是识别了为TLS而已。有待更多的资料确定。
  • 49196-49195-49200-49199-49188-49187-49192-49191-49162-49161-49172-49171-157-156-61-60-53-47:加密套件列表
  • 0-5-10-11-13-35-23-65281:扩展列表
  • 29-23-24:支持的椭圆曲线列表
  • 0:支持的椭圆曲线点格式

通过哈希化这个字符串,生成一个 JA3 指纹:258a5a1e95b8a911872bae9081526644。jason格式参数意义较为明显,这里不再一一标记。

本地如何安装JA3&使用(win11)

1、装python及必要的依赖库,如dnspython0、python-dateutil、scapy、pytz,其余需要什么,根据提示再装即可;

2、装git;

3、克隆JA3工具代码库,git clone https://github.com/salesforce/ja3;

4、wireshark抓一些https流;

5、cmd下,进入ja3目录,python ja3.py  -r C:\Users\xxx\Desktop\aaa.pcap(数据包),即有上面截图的内容。

FAQ

实验中,我遇到最大的问题,就是我本地现成的一个https数据包,JA3什么也解析不出来。检查了工具没问题以后,我就多访问了一些网站,抓了更多的、不同的https流。再次使用JA3解析的时候,我发现,使用TLS1.2版本的,都可以解析,TLS1.0的只有一个可以解析。但JA3应该对1.0,1.1,1.2都可以解析。仔细对比所有的client hello,他们是否都包含了TLS 版本、加密套件、扩展、椭圆曲线和椭圆曲线点格式。因为如果 Client Hello 报文中缺少这些字段中的任何一个,就可能无法生成完整的 JA3 指纹。发现,所有报文都是包含的。我只有进一步再比对每个因子的区别,发现主要区别在于套件大小,大于等于18字节的都可以解析,小于的则不能。在我的工具介绍当中没看到有限制,但实际上看,确实小于18字节的无法生成,恐怕是因为太短不适合生成指纹,因为识别度太低吧。类似于DPI设备,至少也应该对大于4字节的特征才进行提取和识别,才能保证较低的误杀,应该是一个道理吧。猜的。。

posted @   1234roro  阅读(198)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
点击右上角即可分享
微信分享提示