FakeTLS恶意加密流量分析
作者: 日期:2022年09月02日 阅:2,870

背景介绍

观成科技安全研究团队近期发现一款使用FakeTLS技术进行加密通信的工具,可以创建一个C2服务器和恶意木马客户端,利用 FakeTLS 技术伪装TLS协议通信,在加密载荷中传输命令控制信息。

1. 伪造Client Hello消息分析

Client Hello 消息中的 TLS 扩展之一Server Name,该字段的服务器名称为“www.bing.com”,如下面数据包内容中标注的,它通过使用信誉度高的常见域名,来伪装成知名网络服务提供商的TLS流量:

通过分析源码,在伪造Client Hello消息时,它将从13个知名域名中随机挑选一个:

2. 伪造Server Hello消息分析

Server Hello 消息中的其余字节,有些是硬编码的,有些是随机生成的,这两种情况的源代码代码片段如下所示,通过这种方式组合出Server Hello、Change Cipher Spec等消息:

Server Hello 包数据

Change Cipher Spec 消息中使用的硬编码字节

TLS握手消息中使用的硬编码字节和随机字节

3. 伪造Application Data消息分析

服务端发送加密的命令使用byte{0x17, 0x03, 0x03}硬编码,作为命令控制包的头部,客户端发送加密返回数据使用0x17, 0x03, 0x03,0x00硬编码,作为返回数据包的头部。事实上是伪装成TLS的Application Data消息。

服务端发送加密的命令

客户端返回数据

有效数据传输部分并未使用TLS握手中协商的密钥和算法进行加密,而是将命令和响应消息经过RC4加密后伪装成TLS加密载荷传输。在下图的例子中,我们发送了ls列出当前目录中文件的命令。加密不会改变消息的长度,因此我们以看到发送的命令与“ls”的长度(两个字节)匹配。在第二张图中也是如此,它显示了从受害者中返回的加密响应消息(60 字节)。使用的加密密钥为key[16] = {0x79, 0xE1, 0x0A, 0x5D, 0x87, 0x7D, 0x9F, 0xF7, 0x5D, 0x12, 0x2E, 0x11, 0x65, 0xAC, 0xE3, 0x25 };

使用 RC4 加密发送的命令“ls”

接收到的使用 RC4 加密的目录列表数据包

使用密钥解密返回数据包为目录列表

总结

FakeTLS技术在较知名的几个APT组织中曾经有过使用。大致分为两类,一类是建立TCP连接,伪装整个密钥协商过程和加密数据交互过程;另一类是建立TLS连接,正常进行密钥协商过程,但是后续加密数据交互过程并不是密钥协商后的TLS连接,而是直接利用TCP连接进行伪装。本文所述的工具为第一类FakeTLS。此工具通过TCP连接伪装TLS的流量通信,按照TLS协议规范固定结构的硬编码和非固定结构的随机编码相结合,辅之以在Server Name扩展中填入知名网站,让流量看起来与正常的TLS通信极其相似。这种流量伪造方式灵活多变,使得加密流量的检测难度进一步提升,经过深入分析后才能形成检出能力。

目前瞰云-加密威胁智能检测系统(ENS)对该工具已具备检测能力。观成科技安全研究团队一直针对各类加密协议的最新威胁保持密切跟踪,并随时更新方案进行应对。

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章