跳转至

JA指纹分析

什么是 JA 指纹

JA 指纹是一种对传输层(SSL/TLS)进行指纹识别的方法,由 John Althouse、Jeff Atkinson 和 Josh Atkins 三位安全研究员在 2017 年 6 月首次发布在 Github,JA 系列指纹可以被看作是一种 IOC(通俗一点叫入侵指标)

IOC:是指有助于识别攻击是否已经发生或正在进行的数据,它就像是一件物证,侦探可能会收集物证用于确定谁出现在犯罪现场

像是我们平常使用的海内外威胁情报平台、网空测绘平台、WAF类安全产品都是以 IOC 作为数据支撑的,但是支持 JA 指纹的产品和平台较少,除了在产品侧的应用,JA 指纹也被用在识别 C2、V2ray 这类特殊流量上

如果以传统的 IP 和域名两个维度去检测,会漏掉一些隐匿程度较好的恶意流量,现在大部分 C2 和服务端之间都是使用 TLS 加密的,但如果使用 JA 指纹,哪怕无法解密恶意流量的内容,不能掌握 C2 的 IP 和域名,依然可以识别出恶意流量

但是 JA 指纹也不是万能的,它依然是可以被改变的,但是需要对客户端的 TLS 握手特征进行修改,难度较大,也会变相提升攻击成本,也是因为这个特性,JA 指纹更多被用在黑名单场景上,如果在白名单场景使用就会有误报率过高这样的问题

下面将介绍 JA 指纹的四个分支,这四个分支各有侧重点,被应用在不同的场景中

  • JA3:对 TLS 客户端进行被动识别
  • JA3s:对 TLS 服务端进行被动识别,可以看作是 JA3 的服务端版
  • JAM:对 TLS 服务端进行主动识别,可以看作是 JA3 和 JA3s 的融合
  • JA4+:JA4+是一个指纹合集,包括 JA4、JA4S、JA4H、JA4L、JA4X、JA4SSH,可以对多个检测维度进行指纹识别 ## JA3

上面我们说过,JA3 指纹的计算是在传输层完成的,具体一点说,是在 SSL/TLS 握手过程中的第一阶段完成的,也就是 Client Hello