JA3整理(JA3S类似)
概念&应用
JA3,是针对TLS握手过程中,clienthello报文的特征,生成指纹的一种方法。生成了指纹后,可以和在线指纹数据库(或者自己维护的数据信息)进行比对,识别、区分不同的TLS客户端。进而达到识别是否是恶意软件、是否是已知的攻击者、是否是异常行为(和自己当前常见的流量比对)。所以JA3并不是直接用来攻击的,而是对于服务端,增加了一种防范的手段。如果一定要说JA3是否可以应用在攻击中,可以这样来用----就是攻击者通过JA3工具对被攻击目标的报文进行分析,收集到他们常用的TLS客户端信息,模拟这些客户端信息发起请求,和服务器建立连接,达到攻击目的。
JA3S,是对应的,针对服务器握手过程中serverhello报文的特征,生成指纹的一种方法。使用和理解没有太大区别,以下就只用JA3来进行示例。
依据什么生成指纹
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 版本。这个版本我觉得并没有区分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字节的特征才进行提取和识别,才能保证较低的误杀,应该是一个道理吧。猜的。。
本文来自博客园,作者:1234roro 当你迷惘的时候,开始学习吧!当你目标清晰的时候,开始学习吧!转载请注明原文链接:https://www.cnblogs.com/1234roro/p/18294489
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!