透明部落组织CrimsonRAT远控木马通信模型剖析
T0daySeeker 发表于 四川 技术文章 3453浏览 · 2024-07-10 01:14

概述

前段时间,笔者基于威胁情报发现了几个最新的透明部落组织使用的CrimsonRAT远控木马,通过分析,发现其通信模型还比较简单,因此就简单写了一个Demo程序复现了CrimsonRAT远控木马的攻击场景。由于前段时间有一些事情耽搁了,因此一直没有时间将此研究技术形成分析文章。一晃还是有快一个月了,所以最近还是抽时间把相关技术总结总结,供大家一些交流学习。

通过对CrimsonRAT远控木马进行剖析,笔者发现:

  • CrimsonRAT远控木马由C#编写,分析还比较简单;
  • CrimsonRAT远控木马的通信数据为明文传输;(提取其通信过程中的特殊字符串,即可实现对其通信流量的检测)
  • CrimsonRAT远控木马内置了多个外链C&C及端口;

相关威胁情报截图如下:

样本分析

配置信息--携带迷惑外链C&C

通过分析,笔者在提取此样本的配置信息时,发现了一个比较有意思的地方:就是直接查看反编译代码,能够很快速的发现maisdwtp变量处存放了一个外链C&C地址,但进一步剖析,发现此外链C&C地址并非真实的样本外链C&C地址,真实的外链C&C地址存放于minsbnfdsns变量(按字节存放)处。

因此,尝试对minsbnfdsns变量数据进行转换,可提取样本真实外链信息如下:

  • 端口:11248、16896、18868、22245、26424
  • 外链地址:waqers.duckdns.org、94.72.105.227

相关截图如下:

字节数据转换截图如下:

外链上线

通过分析,发现样本运行后,将直接外链上线:

  • 由于配置信息中内置了两个外链地址,因此,样本运行过程中,若第一个外链地址上线失败,则样本将尝试使用第二个外链地址进行上线

相关代码截图如下:

远程控制

通过分析,发现样本上线成功后,则将接收远控指令用于远程控制,相关代码截图如下:

梳理远控指令列表如下:

指令 描述 对应响应函数名
thy5umb 读取图像文件信息:文件名、创建日期、文件大小 imageiWails(string path)
scy5rsz 设置截屏大小 dsecrsize(string scvEsize)
gey5tavs 获取进程ID macEsrorcss("geytavs")
scy5uren、scy5ren、scyr5en、scyu5ren 判断标志位决定是否屏幕截屏 isyDeskgcren(string desenEsize)
pry5ocl 获取进程列表 macEsrorcss("pryocl")
puy5tsrt 设置自启 savesWepps()
doy5wf 文件上传 dtnwdivfile(string filesPweth)
cdy5crgn、csy5crgn、csy5dcrgn 截屏 seyesWcren(string desenEsize)
diy5rs 获取磁盘信息 shsend_drivwes()
fiy5lsz 获取文件属性信息 filersAtails(string path, bool retsdn = false)
iny5fo 获取系统信息(系统版本,主机名,用户名等) accosAffos()
liy5stf 获取指定目录的文件信息 seeswdrers(string info_svtr)
fly5es 列出指定目录下文件 seelwfes(string path)
ruy5nf 执行指定文件
afy5ile 窃取文件 seynrsAuto(string fileinfwtr)
udy5lt 上传并执行文件 remsAcogunt()
fiy5le 窃取文件 movsWles(string lfile)
sty5ops 停止截屏
cny5ls 设置标志位
dey5lt 删除文件 trasfWeles(string path)
doy5wr 文件上传 dtnwdivfile(string filesPweth)
fly5dr 获取指定目录的所有子目录 expfsdlder(string path)

远控木马攻击场景复现

为了能够更好的还原CrimsonRAT远控木马的攻击利用场景,笔者尝试模拟构建了CrimsonRAT远控木马的控制端Demo程序,目前可有效的与CrimsonRAT远控木马进行交互,相关运行效果如下:

相关通信数据包截图如下:

相关操作流程如下:

Server started. Listening on 0.0.0.0:11248
请选择需执行的功能:help、iny5fo、pry5ocl、fiy5lsz
>iny5fo
*******************iny5fo:*******************
userDomainName: WIN-JMKJXXXC4OT
userName: admin
OS Version: 6>1
text2: A.F.0.7
Path: C:\Users\admin\Desktop\
请选择需执行的功能:help、iny5fo、pry5ocl、fiy5lsz
>pry5ocl
*******************pry5ocl:*******************
1512    dwm
888     svchost
796     svchost
528     lsm
2936    1
1956    svchost
1500    vmtoolsd
2308    dnSpy
424     csrss
512     lsass
3092    svchost
1552    explorer
1220    vmtoolsd
2996    taskhost
2192    HaoZipService
500     winlogon
1300    VGAuthService
1136    svchost
3696    msdtc
584     svchost
1384    taskhost
404     wininit
848     svchost
1468    vm3dservice
3156    svchost
1108    spoolsv
128     svchost
3840    HaoZipWorker
2528    SearchIndexer
712     svchost
1116    mscorsvw
468     services
1832    WmiPrvSE
284     smss
372     csrss
636     svchost
4012    ProcessHacker
1520    vm3dservice
1636    dllhost
4       System
0       Idle
请选择需执行的功能:help、iny5fo、pry5ocl、fiy5lsz
>fiy5lsz
fiy5lsz指令-请输入需查看的文件路径:
>C:\Users\admin\Desktop\dnSpy-net-win64\dnSpy.Console.exe
*******************fiy5lsz:C:\Users\admin\Desktop\dnSpy-net-win64\dnSpy.Console.exe*******************
filename: dnSpy.Console.exe
CreationTimeUtc: 2024/7/9 0:00:00
filesize: 139.5KB
请选择需执行的功能:help、iny5fo、pry5ocl、fiy5lsz
>exit

通信模型剖析

由于此样本的通信模型比较简单,因此,笔者在这里就只抽取了几个远控指令进行通信模型剖析。

接收远控指令

通过分析,发现样本getsEtype()函数即为接收远控指令的对应函数,通过对此函数功能进行分析,梳理接收数据的数据结构如下:

  • 数据大小:5字节
  • 远控指令数据:以“=”分割远控指令和远控指令参数

相关代码截图如下:

发送远控指令响应数据

通过分析,发现样本loadsQEta(byte[] data, string type, bool tmp = false)函数即为向C&C地址返回远控指令响应数据的对应函数,通过对此函数功能进行分析,梳理返回数据的数据结构如下:

  • 标志数据大小:5字节
  • 标志数据
  • 远控指令响应数据大小:5字节
  • 远控指令响应数据

相关代码截图如下:

iny5fo-获取系统信息

通过分析,发现样本accosAffos()函数即为远控指令iny5fo对应的远控指令响应函数,通过对此函数功能进行分析,发现此函数运行后将返回系统信息。

梳理通信数据结构如下:

  • 标志数据大小:5字节,12 00 00 00 00
  • 标志数据:inywmqzofo=uwarder
  • 远控指令响应数据大小:5字节
  • 远控指令响应数据:以“|”或多个“|”分割
    • 当前登录用户的域名或工作组名
    • 用户名
    • 操作系统信息
    • 固定字符串:A.F.0.7
    • 当前木马运行路径

远控指令响应数据内容如下:

|WIN-JMKJXXXC4OT|admin| |6>1|A.F.0.7|| ||C:\Users\admin\Desktop\

相关数据包截图如下:

相关代码截图如下:

pry5ocl-获取进程列表

通过分析,发现样本macEsrorcss("pryocl")函数即为远控指令pry5ocl对应的远控指令响应函数,通过对此函数功能进行分析,发现此函数运行后将返回进程列表信息。

梳理通信数据结构如下:

  • 标志数据大小:5字节,13 00 00 00 00
  • 标志数据:prywmqzoocl=proihts
  • 远控指令响应数据大小:5字节
  • 远控指令响应数据:每个进程均以“进程PID>进程名>0><”格式构成

远控指令响应数据内容如下:

1512>dwm>0><888>svchost>0><796>svchost>0><528>lsm>0><1956>svchost>0><1500>vmtoolsd>0><1892>dnSpy>0><424>csrss>0><512>lsass>0><3092>svchost>0><1552>explorer>0><1220>vmtoolsd>0><2996>taskhost>0><2192>HaoZipService>0><500>winlogon>0><1300>VGAuthService>0><1136>svchost>0><3696>msdtc>0><584>svchost>0><1384>taskhost>0><404>wininit>0><848>svchost>0><1468>vm3dservice>0><3156>svchost>0><1108>spoolsv>0><128>svchost>0><2528>SearchIndexer>0><712>svchost>0><1116>mscorsvw>0><468>services>0><1832>WmiPrvSE>0><3312>1>0><284>smss>0><372>csrss>0><636>svchost>0><4012>ProcessHacker>0><1344>HaoZipWorker>0><1520>vm3dservice>0><1636>dllhost>0><4>System>0><0>Idle>0><
#解析
1512>dwm>0><
888>svchost>0><
796>svchost>0><
528>lsm>0><
1956>svchost>0><
1500>vmtoolsd>0><
1892>dnSpy>0><
424>csrss>0><
512>lsass>0><
3092>svchost>0><
1552>explorer>0><
1220>vmtoolsd>0><
2996>taskhost>0><
2192>HaoZipService>0><
500>winlogon>0><
1300>VGAuthService>0><
1136>svchost>0><
3696>msdtc>0><
584>svchost>0><
1384>taskhost>0><
404>wininit>0><
848>svchost>0><
1468>vm3dservice>0><
3156>svchost>0><
1108>spoolsv>0><
128>svchost>0><
2528>SearchIndexer>0><
712>svchost>0><
1116>mscorsvw>0><
468>services>0><
1832>WmiPrvSE>0><
3312>1>0><
284>smss>0><
372>csrss>0><
636>svchost>0><
4012>ProcessHacker>0><
1344>HaoZipWorker>0><
1520>vm3dservice>0><
1636>dllhost>0><
4>System>0><
0>Idle>0><

相关数据包截图如下:

相关代码截图如下:

fiy5lsz-获取文件属性信息

通过分析,发现样本filersAtails(string path, bool retsdn = false)函数即为远控指令fiy5lsz对应的远控指令响应函数,通过对此函数功能进行分析,发现此函数运行后将返回文件属性信息。

梳理通信数据结构如下:

  • 标志数据大小:5字节,3F 00 00 00 00
  • 标志数据:fiylsz=C:\Users\admin\Desktop\dnSpy-net-win64\dnSpy.Console.exe
  • 远控指令响应数据大小:5字节
  • 远控指令响应数据:以“>”分割
    • 文件名
    • 文件创建时间
    • 文件大小

远控指令响应数据内容如下:

fiywmqzolsz=dnSpy.Console.exe>2024/6/5 0:00:00>139.5KB>

相关数据包截图如下:

相关代码截图如下:

相关Hash

梳理相关Hash信息如下:

E6F4BB8ED235F43CB738447FBF1757C3
27a457ada2495680ec776d368b084348
ab92b7883b5832df0f5e19cf014527a5
0 条评论
某人
表情
可输入 255