转载自:
前置知识:
Https-TLS相关
在线测试JA3: https://ja3er.com/json
github页:https://github.com/salesforce...
老外的指导:https://github.com/yolossn/JA...
信息
JA3特征值是根据TLS的Client Hello 报文生成的,对于同一台主机对服务器的访问而言,这个值会保持一致
类似的,JA3S的特征值是根据TLS的Server Hello 报文生成的,对于同一台服务器对同一台主机的响应而言,这个值会保持一致
应用的策略相对简单
服务器可以利用 JA3值 用来标识客户端
客户端可以利用 JA3S值 用来标识服务器
利用同主机 JA3值 不变的特点来限制并发访问
利用同 服务器&主机 JA3S值不变的特点,防止渗透/欺骗
流程
获取数据
打开wireshark,捕获数据包
访问 在线测试JA3,得到测试值
{
"ja3_hash":"b32309a26951912be7dba376398abc3b",
"ja3":"771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"
}
这里会拿到两个值 JA3 和 JA3_Hash
JA3 收集 Client Hello 报文 特征信息
第一次握手中,客户端会发送Client Hello 报文
JA3 会收集 Client Hello 报文的以下字段的十进制字节值
Version | CipherSuites | Type List of Extensions | Supported Group | Elliptic Curve Formats |
将这些值串联在一起。同一字段中的各值用-来分隔,不同字段用,来分隔
最终组合成 JA3 值:
771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0
与在测试网页上获取的信息一致
JA3S MD5-Hash-32 收集 Server Hello 报文 信息
第二次握手中,客户端会发送Server Hello 报文
和第一步类似
JA3 会收集 Server Hello 报文的以下字段的十进制字节值
TLSVersion | CipherSuites | Extensions |
也能算出类似的值
然后进行MD5计算即可