SSL指纹介绍

SSL指纹主要可以设置密码套件的个数和顺序,这样能可以对抗一些使用JA3方法检测SSL指纹的网站 。一般每个浏览器有相对固定的SSL 指纹,在做多帐号或防关联项目时,可能SSL指纹的改变,会起到一定的权重作用。但是如果你不是很了解是什么SSL指纹,那么建议,还是不要乱设,因为可能会起反作用。

一般建议点击Chrome SSL 按钮,这样就可以设置为 Chrome 一致的指纹,对待有些网站使用SSL检测的,使用Chrome官方版本指纹比较友好。


JA3是一种用于创建SSL / TLS客户端指纹的方法,该指纹应该易于在任何平台上生成,并且可以轻松共享以用于威胁情报。

SSL指纹是什么呢,可以说每款浏览器一般都会有一个固定的SSL指纹。

JA3方法用于收集客户端Hello数据包中以下字段的字节的十进制值:版本,接受的密码,扩展名列表,椭圆曲线和椭圆曲线格式。然后,使用“,”分隔每个字段,使用“-”分隔每个字段中的值,按顺序将这些值连接在一起。


在Wireshark中查看的示例客户端Hello数据包

字段顺序如下:

TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats

例:769,47–53–5–10–49161–49162–49171–49172–50–56–19–4,0–10–11,23–24–25,0

如果客户端Hello中没有TLS扩展,则这些字段将保留为空。

769,4–5–10–9–100–98–3–6–19–18–99,,,

然后,对这些字符串进行MD5哈希处理,以生成易于使用和共享的32个字符的指纹。这是JA3 TLS客户端指纹:

769,47–53–5–10–49161–49162–49171–49172–50–56–19–4,0–10–11,23–24–25,0 → ada70206e40642a3e4461f35503241d5

769,4–5–10–9–100–98–3–6–19–18–99,,, → de350869b8c85de67a350c8d186f11e6

我们还需要引入一些代码来解释Google的GREASE(Generate Random Extensions And Sustain Extensibility),如这里所述。实际上,Google会使用这个机制来防止TLS生态系统中的可扩展性出现故障。不过,JA3会完全忽略这些值,以确保使用GREASE的程序仍然可以用单个JA3哈希值来完成指纹识别。

可以用于SSL指纹测试的网站:https://browserleaks.com/ssl


小结

JA3和JA3S是一种基于TLS指纹的安全分析方法。JA3指纹能够指示客户端应用程序通过TLS通信的方式,而JA3指纹能够指示服务器响应。如果两者结合起来,实质上就生成了客户端和服务器之间的加密协商的指纹。虽然基于TLS的检测方法不一定是灵丹妙药,也不一定能保证映射到客户端应用程序,但它们始终是安全分析的轴心所在。

VMLogin设计SSL自定义方法,主要是为了改变自本浏览器的JA3指纹,算不上全面,但是也非常的简单高效。希望能帮助一些追求完美主义的用户。同时也希望能给我们提供更好的建议和帮助。