TLS检测

5 篇文章 0 订阅
4 篇文章 0 订阅

Thank Zhihao Tao for your hard work. The document spent countless nights and weekends, using his hard work to make it convenient for everyone.
If you have any questions, please send a email to zhihao.tao@outlook.com


1. 概述

TLS/SSL用于加密常见应用程序的通信,以确保数据安全和预防恶意软件,因此它可以隐藏在噪音中。要启动TLS/SSL会话:

  • 客户端将在TCP3次握手后发送TLS/SSL客户端Hello数据包。此数据包及其生成方式取决于构建客户端应用程序时使用的包和方式。
  • 服务器如果接受TLS/SSL连接,将使用基于服务器端库和配置以及Client Hello中的详细信息制定的SSL Server Hello数据包进行响应。

2. 检测方式

2.1 证书检测

  • TLS/SSL证书主题字段
    在这里插入图片描述

  • TLS/SSL证书颁发者字段
    在这里插入图片描述

  • TLS/SSL证书序列号

  • TLS/SSL证书sha-1指纹

  • TLS/SSL证书服务器名称指示字段

  • TLS/SSL证书的notbefore字段

  • TLS/SSL证书的notafter字段

  • TLS/SSL证书有效日期
    在这里插入图片描述

  • TLS/SSL证书链中的证书

  • TLS/SSL版本

2.2 JA3

JA3是一种TLS/SSL指纹识别方法,其灵感来自Lee Brotherston的研究和工作以及他的TLS/SSL指纹识别工具:FingerprinTLS

JA3的创始人
John Althouse
Jeff Atkinson
Josh Atkins

2.2.1 JA3

由于TLS/SSL协商以明文形式传输,因此可以使用SSL Client Hello数据包中的详细信息对客户端应用程序进行指纹识别。

JA3Client Hello数据包中的以下字段收集十进制字节值:

  • TLS/SSL版本
  • 可接受的密码
  • 扩展列表
  • 椭圆曲线和椭圆曲线格式
    然后按顺序将这些值连接在一起,使用","分隔每个字段,使用"-"分隔每个字段中的每个值。

字段顺序如下:

SSLVersion,Cipher,SSLExtension,EllipticCurve,EllipticCurvePointFormat

例子:

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

如果Client Hello中没有TLS/SSL扩展,则字段留空。

例子:

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

然后对这些字符串进行MD5散列以生成易于使用和共享的32个字符指纹。这是JA3``TLS/SSL客户端指纹。

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’s GREASE(生成随机扩展并保持可扩展性)。https://datatracker.ietf.org/doc/html/draft-davidben-tls-grease-01

2.2.2 JA3S

JA3S是用于SSL/TLS通信的服务器端的JA3, 服务器对特定客户机响应的指纹。

同一台服务器会根据Client Hello消息及其内容以不同的方式创建其Server Hello消息。因此,这里不能像客户端和JA3那样,仅仅根据服务器的Hello消息来对其进行指纹识别。尽管服务器对不同客户端的响应不同,但它们对同一客户端的响应总是一致的。

JA3S使用以下字段顺序:

SSLVersion,Cipher,SSLExtension

通过结合JA3 + JA3S对客户端与其服务器之间的整个加密协商进行指纹识别。那是因为服务器会对不同的客户端做出不同的响应,但对同一个客户端的响应总是相同的。

对于 Trickbot 示例:

JA3 = 6734f37431670b3ab4292b8f60f29984 ( Fingerprint of Trickbot )
JA3S = 623de93db17d313345d7ea481e7443cf ( Fingerprint of Command and Control Server Response )

对于 Emotet 示例:

JA3 = 4d7a28d6f2263ed61de88ca66eb011e3 ( Fingerprint of Emotet )
JA3S = 80b3a14bccc8598a1f3bbe83e71f735f ( Fingerprint of Command and Control Server Response )

在这些恶意软件示例中,命令和控制服务器始终以完全相同的方式响应恶意软件客户端,不会偏离。因此,即使流量被加密并且人们可能不知道命令和控制服务器的IP或域,因为它们在不断变化,但我们仍然可以通过对客户端和服务器之间的TLS协商进行指纹识别,以合理的信心来识别恶意通信。

2.2.3 优势

由于JA3会检测客户端应用程序,因此无论恶意软件是否使用 DGA(域生成算法)或每个C2主机的不同IP,或者即使恶意软件使用Twitter进行C2JA3都可以根据它如何检测恶意软件本身沟通而不是它沟通的对象。

在只允许安装少数特定应用程序的锁定环境中,JA3也是一种出色的检测机制。在这些类型的环境中,您可以构建预期应用程序的白名单,然后对任何其他JA3命中发出警报。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

phantasms

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值