跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

Remcos RAT通信模型剖析及攻防技术对抗

精选回复

发布于

## 概述

近日,我在浏览网络上的威胁情报信息时,无意中发现不少APT组织利用Remcos商业木马作为远程控制程序来窃取数据。因此,笔者尝试了解并利用Remcos商业木马。在模拟使用过程中,我发现这个商业木马确实很好用,目前正在维护更新中。难怪它受到许多APT组织的青睐。

基于“既然Remcos商业木马受到众多APT组织的青睐,网络中必然存在更多的Remcos商业木马的使用案例,因此围绕Remcos商业木马进行攻防技术的研究绝对是有意义的”。笔者从以下几个角度对Remcos商业木马进行了分析:

- 梳理Remcos商业木马历史版本的升级迭代,发现每次大版本升级都会伴随着木马通信模型的升级和优化;

- 对Remcos商业木马最新版本的通信模型进行梳理和分析;

- 从防御者的角度分析了Remcos商业木马的配置文件提取、通信包解密等核心技术点,并对Remcos商业木马的加密通信识别提出了思考;

- 为了更好的辅助分析Remcos商业木马的命令通信模型,模拟构建了Remcos商业木马的控制程序,可以重现Remcos商业木马的通信模型,也可以重现单个命令号的具体响应行为;

相关Remcos商业木马用法如下:f16ab4a7ef29b52ae3fea59c952c3b0d.png

8841bbf7bdc29e211c15b5d558000084.png

9cef49d99af0569a35061de1b4da1f30.png

939c2f44eaee032d972caf36675ec0bf.png

## Remcos历史版本通信模型

为了更好地了解Remcos远程控制的历史通信模型,笔者查阅了大量资料,并从以下几个角度进行了尝试:

- 搜索网络上可用程序的历史版本:基本上没有找到可用的历史版本,并且github上发布的一些程序无法运行。感觉像是一个钓鱼木马(未实际验证)。

- 查看网上关于Remcos木马的分析报告:对网络通信模型的分析很少,只能三言两语拼凑出来。

- 查看Remcos官网对Remcos遥控版的说明:有详细说明,但没有实际配置图片。

结合各类资料,笔者整理了Remcos远程控制的通信模型。排序情况如下:91f7e08fda5ac32a9bf8f194632739f7.png

相关截图如下:

- v1.0版本更新说明1c5812a279a7c2f354f54a3073710286.png

- v1.7版本Agent网络连接配置(图片来自网络)c1b0bf0ca1a1c448c8d19c5e331aca63.png

- v2.0.0版本更新说明a8c4fef689f57378816320b892311fc9.png

- RC4算法加密通讯连接(网络报道截图)

- 无加密算法的明文通信模式下的通信数据包截图0cde328da8698265d159827c5a8dbff7.png

- 使用加密算法的加密通信模式下的通信数据包截图4b5ff599aaad14e64e5808e2935b1227.png

- v3.0.0版本更新说明72d1a068553b2a58172483d09b9671fd.png

453a40d8634891d24b51084ddda90e85.png

- v4.0.0版本Agent网络连接配置(官网图片)6ce1ab59db8f53033f8ea1cdadf61430.png

- v4.9.3版本Agent网络连接配置(官网免费版实际运行截图)37e1ab31dafaf6248b2259cd7cbb9d1f.png

## Remcos-v4.9.3 通信模型回顾

尝试从官网下载最新的免费版Remcos远程控制程序,深入研究其通信模型,发现该版本支持两种通信模型:

- TLS1.3通信协议:使用TLS协议对数据进行加密和传输;

- 套接字连接:使用TCP协议以明文形式传输数据;

### TLS1.3通信协议模型

在最新免费版Remcos远程控制程序中配置TLS1.3通信协议模型时,需要手动填写密码**(注:通过查看TLS1.3通信协议原理,发现TLS1.3不需要手动填写密码,因此推测该密钥主要用于TLS1.3通信链路建立后的数据验证)**。

相关截图如下:06d44cb102c0e9b8e25da4d5a31cc781.png

0bf860898b1bc256bbeadc2a248fc4ab.png

###socket套接字通信模型

在最新免费版Remcos远程控制程序中配置socket通信协议模型时,只需取消“安全连接(TLS1.3)”选项即可。

相关截图如下:14010f20ae897bbca2ea6e69d868ee5a.png

通过分析通信数据包格式,整理通信数据格式如下:

````

#数据包1

24 04 ff 00 #固定魔法值

0c 00 00 00 #后续有效数据大小

01 00 00 00 #有效数据指令号

30 7c 1e 1e 1f 7c 33 30 #有效数据-数据加载

#数据包2

24 04 ff 00 #固定魔法值

64 00 00 00 #后续有效数据大小

4c 00 00 00 #有效数据指令号

#有效的数据-数据负载

30

7c 1e 1e 1f 7c #分隔符“|.|”

43 00 3a 00 5c 00 55 00 73 00 65 00 72 00 73 00 5c 00 61 00 64 00 6d 00 69 00 6e 00 5c 00 44 00 65 00 73 00 6b 00 74 00 6f 00 70 00 5c 00 72 00 65 00 6d 00 63 00 6f 00 73 00 5f 00 62 00 2e 00 65 00 78 00 65 00

7c 1e 1e 1f 7c #分隔符“|.|”

36 33

7c 1e 1e 1f 7c #分隔符“|.|”

39 38 36 37 30 35 32 33

````

相关截图如下:69cb9b4b7e1a4d7d792d57103061e9da.png

## 攻防技术对抗

为了更好地对Remcos远程控制程序进行攻防对抗和预警发现,笔者准备从取证分析的角度对该远程控制程序的Agent端木马进行分析:

- 木马配置信息提取:由于该样本为商用遥控器,因此可以在网络上查询其背景、功能等信息。无需分析样品即可有效获得相关信息。唯一需要分析提取的就是木马外部链接地址信息。

- 木马通信解密尝试:通过解密木马通信,可以有效提取攻击者在攻击过程中执行的所有操作;由于该样本使用的是TLS1.3通信协议,因此笔者之前并没有尝试过基于TLS1.3通信协议来解密该木马。因此,目前还没有什么好的办法从取证取证的角度来解密通信,所以笔者在这里只能对TLS1.3做一个简单的对比介绍。

- 木马加密通信识别:由于该样本的通信数据暂时无法解密,因此只能从加密数据的角度检测识别该样本的通信行为。因此,作者从加密流量预警识别的角度提出了一种检测识别思路(仅供参考)。

### RAT练习

通过对Remcos远程控制程序的使用分析,我们发现Remcos远程控制程序的整体操作确实非常人性化、流畅。经过7年官方的升级迭代,支持的指令也非常丰富;因为使用的是免费版本,Agent运行后会弹出一个小框,所以这个版本更多的是为了演示效果。

代理运行截图:c8e23bef6c86fba3bc52d65d84241a47.png

控制端运行截图如下:e4aecae0f26b75fa4e33a13e9ec58c67.png

###配置信息解密

通过分析发现,Agent样本运行后,会从“SETTINGS”资源段中读取并解密配置信息。配置信息包括:外链IP、外链端口等配置项。

配置信息解密过程如下:

- 从“SETTINGS”资源段读取第一个字节。该字节是下一个RC4密钥的大小;

- 根据RC4密钥的大小读取RC4密钥负载;

- 读取后续的payload,并将其作为实际的加密配置信息数据;

- 使用RC4密钥解密实际加密的配置信息数据;

**注:在分析过程中,笔者查看了网络上的分析报告,发现不同报告中的不同Remcos版本均采用了相同的配置信息加密方式。因此,笔者推测Remcos的所有历史版本到最新版本都采用了统一的配置信息加密方式。 **

Remcos-v4.9.3远程控制程序Agent端木马代码截图如下:a166455e0709a76bfec7cceed9a87d68.png

5739a104a6ecca06c14b500f12933e9e.png

加密配置信息数据:7b1c1321154161ad1f4621d2f225a9f9.png

解密配置信息数据:026f57ab4f98670a2dc399fb94590dc2.png

####解密脚本工具

为了实现快速解密,可以基于CyberChef工具或者编写解密脚本来解密“SETTINGS”资源段:

- CyberChef工具:需要手动提取RC4密钥和payload,然后解密;eeb17658384ea9d2b7145f6e508ba666.png

- 编写解密脚本:可实现自动解密;

````

包主

导入(

\'加密/rc4\'

\'fmt\'

\'io/ioutil\'

函数主() {

file_in :=\'C:\Users\admin\Desktop\remcos_a_SETTINGS\'

文件数据,错误:=ioutil.ReadFile(file_in)

如果错误!=nil {

fmt.Println(\'读取文件:时出错\', err)

返回

}

key_len :=文件数据[0]

键:=文件数据[1 : key_len+1]

密文:=文件数据[key_len+1:]

//创建解密器

解密,错误:=rc4.NewCipher(key)

如果错误!=nil {

恐慌(错误)

}

//解密密文

解密文本:=make([]byte, len(cipherText))

decipher.XORKeyStream(decryptedText, cipherText)

ioutil.WriteFile(file_in+\'解密\',decryptedText,0664)

}

````

### 通信解密尝试?

笔者在分析该木马加密通信数据的过程中,发现其与常规TLS解密的几个不同点:

- 该木马的通讯数据中没有证书数据;

- 使用的密钥套件没有DH算法;

由于作者从来没有比较过TLS1.3和TLS1.2的区别,所以在通信解密阶段走了很多弯路但失败了。我使用了多种方法对通信数据进行解密,发现无法解密成功。

相关截图如下:cb1a59a7593b7d283eb9a7f63d664350.png

b570fc8d1c09a4b2fcddcb6cfa90c370.png

#### TLS1.3 和TLS1.2 的区别

通过查询网络中《[SSL/TLS、对称加密和非对称加密和TLSv1.3](https://tinychen.com/20200602-encryption-intro/)》的信息,我们发现TLS1.3不仅对通信数据进行了加密,而且对握手阶段的数据也进行了加密。

相关对比截图如下:06f9aab9af73f4f644e5f703ff73e100.png

b382cdfde833e17f94ad1824876cdecc.png

#### TLS1.3和TLS1.2之间的通信解密

尝试构建一个程序来模拟TLS1.3和TLS1.2通信,研究TLS1.3和TLS1.2的通信解密方法如下:

- TLS1.2通信数据中,如果使用的密钥套件没有DH算法,可以使用CLIENT_RANDOM形式的私钥或Master-Secret进行解密;

- TLS1.2通信数据中,如果使用的密钥套件具有DH算法,则只能使用CLIENT_RANDOM形式的Master-Secret进行解密;

- TLS1.3通信数据中,虽然使用的密钥套件没有DH算法,但由于密钥握手阶段使用了DH算法,因此无法使用私钥进行解密;

- TLS1.3通信数据中,由于握手阶段的数据也是加密的,因此无法使用CLIENT_RANDOM形式的Master-Secret进行解密;

- TLS1.3通信数据中,需要使用CLIENT_HANDSHAKE_TRAFFIC_SECRET、SERVER_HANDSHAKE_TRAFFIC_SECRET、CLIENT_TRAFFIC_SECRET_0、SERVER_TRAFFIC_SECRET_0形式的Master-Secret进行解密;

《TLS1.2-私钥解密》相关截图:18b46935a82d4a87b8a8a60687d070b9.png

《TLS1.2-CLIENT_RANDOM形式的Master-Secret解密》相关截图:ea4606953ad5c89794685857a3ee7871.png

“TLS1.3-CLIENT_HANDSHAKE_TRAFFIC_SECRET、SERVER_HANDSHAKE_TRAFFIC_SECRET、CLIENT_TRAFFIC_SECRET_0、SERVER_TRAFFIC_SECRET_0形式的Master-Secret解密”相关截图:6a56a1cf1d10c7d637921d08f9312af1.png

### 加密通讯识别?

由于该样本的通信数据暂时无法解密,因此只能从加密数据的角度检测识别该样本的通信行为。通过对比socket通信流程和TLS1.3通信流程,发现加密通信可以从以下几个角度来识别:

- 加密通信采用TLS1.3通信协议;

- 通信过程中,Agent端木马仅提供一种密钥套件供密钥套件选择:Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)

- 心跳包会在主会话中循环发起通信,心跳间隔默认为30秒;

- 由于心跳数据包有固定范围长度(注:不确定是否是固定长度),因此加密后的数据长度也是固定范围长度;

####socket套接字通信过程

通过分析该样本的通信行为,作者发现Remcos-v4.9.3版本程序的socket通信过程中:

- Remcos-v4.9.3版本程序会启动一个主会话来接收远程控制命令和心跳数据(默认心跳间隔为30秒);

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。