概念&应用
JA3,是针对TLS握手过程中,clienthello报文的特征,生成指纹的一种方法。生成了指纹后,可以和在线指纹数据库(或者自己维护的数据信息)进行比对,识别、区分不同的TLS客户端。进而达到识别是否是恶意软件、是否是已知的攻击者、是否是异常行为(和自己当前常见的流量比对)。所以JA3并不是直接用来攻击的,而是对于服务端,增加了一种防范的手段。如果一定要说JA3是否可以应用在攻击中,可以这样来用----就是攻击者通过JA3工具对被攻击目标的报文进行分析,收集到他们常用的TLS客户端信息,模拟这些客户端信息发起请求,和服务器建立连接,达到攻击目的。
依据什么生成指纹
JA3 指纹生成过程涉及从 TLS 客户端握手信息中提取并哈希化以下字段:
- TLS 版本:客户端支持的 TLS 版本。
- 加密套件列表:客户端支持的加密套件(Cipher Suites)。
- 扩展列表:客户端支持的 TLS 扩展(Extensions)。
- 支持的椭圆曲线列表:客户端支持的椭圆曲线(Elliptic Curves)。
- 支持的椭圆曲线点格式:客户端支持的椭圆曲线点格式(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 版本
- 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(数据包),即有上面截图的内容。
标签:TLS,椭圆,JA3,指纹,生成,整理,客户端 From: https://www.cnblogs.com/1234roro/p/18294489