分析 Dark Crystal RAT,一个 C#后门

Andrew 2020-10-12
Web安全 发布于 2020-10-12 14:54:33 阅读 42 评论 0

FireEye Mandiant威胁情报小组发现了一种新型C#变种Dark Crystal RAT(DCRat)。我们审查了开源情报和先前的工作,进行了沙盒测试,并对Dark Crystal RAT进行了反向工程以审查其功能和通信协议。通过发布此博客文章,我们旨在帮助防御者寻找Dark Crystal RAT的攻击迹象和其他明显迹象,并帮助.NET恶意软件新手或遇到该样本的未来变种的其他恶意软件研究人员。

发现 Dark Crystal RAT

威胁情报小组为FLARE提供了一个EXE示例,该示例被认为包含Dark Crystal RAT,并且MD5哈希为b478d340a787b85e086cc951d0696cb1。使用沙盒测试,我们发现该示例生成了两个可执行文件,而这两个可执行文件之一又生成了三个可执行文件。图1显示了通过沙盒测试发现的恶意可执行文件之间的关系。


图1:我们开始分析的第一个示例最终产生了五个可执行文件。

有了沙盒结果,我们的下一步是对每个可执行文件进行分类分析。我们发现原始示例和mnb.exe是删除程序,dal.exe是清除已删除的文件的清理实用程序,daaca.exe和fsdffc.exe是Plurox的变体,该家族已有报告。然后,我们开始分析最终删除的样本dfsds.exe。我们在同一样本上发现@ James_inthe_box的简短公开报告,将其标识为DCRat以及RAT和凭据窃取者。我们还找到了包含相同样本的公共沙盒运行。其他公开报告描述了DCRat,但实际上分析了初始样本中与daca.exe捆绑在一起的daaca.exe Plurox组件。

由于dfsds.exe是缺少详细公开报告的RAT,我们决定进行更深入的分析。

分析 Dark Crystal RAT

初步分析

离开沙盒分析环境后,我们对dfsds.exe执行了静态分析。我们选择使用CFF Explorer开始静态分析,CFF Explorer是一个很好的工具,用于打开PE文件并将文件的各个部分分解为易于查看的形式。如图2所示,在CFF Explorer中查看dfsds.exe后,该实用程序向我们显示了它是.NET可执行文件。这意味着我们可以采用不同于本机C或C ++示例的方式来进行分析。否则,我们可能会用来缩小本机样本功能的技术(例如查看其导入的DLL以及使用的DLL中的功能)对该.NET样本没有产生有用的结果。如图3所示,dfsds.exe仅导入函数_CorExeMain。来自mscoree.dll。我们本可以在IDA Pro中打开dfsds.exe,但IDA Pro通常不是分析.NET样本的最有效方法。实际上,免费版本的IDA Pro无法处理.NET公共语言基础结构(CLI)中间代码。


图2:CFF Explorer显示dfsds.exe是.NET可执行文件。


图3:dfsds.exe的导入表没有用,因为它仅包含一个函数。

我们没有在dfsds.exe上使用像IDA Pro这样的反汇编程序,而是使用了.NET反编译器。幸运的是,对于逆向工程师而言,反编译器可以在更高的级别上运行,并且通常会产生与原始C#代码非常接近的结果。dnSpy是一个很棒的.NET反编译器。dnSpy的界面在Assembly Explorer中显示示例名称空间和类的层次结构,并在右侧显示所选类的代码。打开dfsds.exe时,dnSpy告诉我们,该示例在链接时的原始名称为DCRatBuild.exe,其入口点为 < PrivateImplementationDetails > {63E52738-38EE-4EC2-999E-1DC99F74E08C}。如图4所示。当我们使用Assembly Explorer浏览到Main方法时,我们在图5中找到了表示该方法的类似C#的代码。无论dnSpy在代码中显示对另一个方法的调用,都可以单击目标方法名称以转到它并查看其代码。通过右键单击代码中的标识符,然后在上下文菜单中单击“分析”,我们使dnSpy查找使用标识符的所有事件,这与在IDA Pro中使用交叉引用相似。


图4:dnSpy可以帮助我们找到样本的入口点


图5:dnSpy将Main方法反编译为类似C#的代码

我们转到了从入口点方法调用的SchemaServerManager.Main方法,观察到它使用不同的整数参数多次调用ExporterServerManager.InstantiateIndexer,如图6所示。我们浏览到ExporterServerManager.InstantiateIndexer方法,并找到了它是一个巨大的switch语句,具有许多goto语句和标签;图7显示摘录。这看起来不像典型的dnSpy输出,因为dnSpy经常重建原始C#代码的近似值,尽管缺少注释和局部变量名。这种代码结构加上代码引用CipherMode.CBC常量这一事实,使我们相信ExporterServerManager.InstantiateIndexer可以是解密或反混淆例程。因此,dfsds.exe可能被混淆。幸运的是,.NET开发人员经常使用通过自动化手段可逆的混淆工具。


图6:SchemaServerManager.Main多次调用ExporterServerManager.InstantiateIndexer


图7:ExporterServerManager.InstantiateIndexer看起来像是一个去模糊例程

去混淆

De4dot是.NET的反混淆器,它知道如何撤消许多类型的混淆。在dfsds.exe(图8)上运行de4dot -d(用于检测)通知我们使用.NET Reactor对其进行模糊处理。

> de4dot -d dfsds.exe
de4dot v3.1.41592.3405 Copyright (C) 2011-2015 de4dot@gmail.com
Latest version and source code: https://github.com/0xd4d/de4dot
Detected .NET Reactor (C:\...\dfsds.exe)

图8:.NET Reactor混淆了dfsds.exe

在确认de4dot可以对dfsds.exe进行反混淆后,我们再次运行它以将样本反混淆到文件dfsds_deob.exe中(图9)。

> de4dot -f dfsds.exe -o dfsds_deob.exe

de4dot v3.1.41592.3405 Copyright (C) 2011-2015 de4dot@gmail.com
Latest version and source code: https://github.com/0xd4d/de4dot

Detected .NET Reactor (C:\Users\user\Desktop\intelfirst\dfsds.exe)
Cleaning C:\Users\user\Desktop\intelfirst\dfsds.exe
Renaming all obfuscated symbols
Saving C:\Users\user\Desktop\intelfirst\dfsds_deob.exe

图9:de4dot成功对dfsds.exe进行了模糊处理

对dfsds.exe进行模糊处理后,我们在生成的dfsds_deob.exe上再次运行dnSpy。再次对SchemaServerManager.Main进行反编译时,结果有很大不同,如图10所示。将新输出与先前如图6所示的混淆后的版本进行对比,我们发现反混淆后的代码更具可读性。在反混淆的版本中,对ExporterServerManager.InstantiateIndexer的所有调用被删除;怀疑,这显然是一个字符串解码例程。相反,Assembly Explorer中显示的类名称没有更改;混淆器必须使用从标准列表中获得的毫无意义的名称,以不可恢复的方式替换了原始的类别名称。接下来,我们注意到图10中的十行包含base64编码的数据。一旦成功对样本进行了模糊处理,就该开始提取其配置,并按照样本的代码路径来获取其持久性功能和初始信标了。


图10:对dfsds.exe进行混淆处理表明,该方法从一些路径操作开始,然后访问Base64编码的数据

配置,持久性和初始信标

回想一下,在图10中,我们发现SchemaServerManager.Main方法具有一个包含Base64编码数据的局部变量。对该数据进行解码可以揭示其中包含的内容。图11显示了解码后的配置(C2终结点URL已脱毒):


> echo TUhvc3Q6aHR0cDovL2RvbWFsby5vbmxpbmUva3NlemJseGx2b3Uza2NtYnE4bDdoZjNmNGN5NXhnZW
80dWRsYTkxZHVldTNxYTU0LzQ2a3FianZ5a2x1bnAxejU2dHh6a2hlbjdnamNpM2N5eDhnZ2twdHgy
NWk3NG1vNm15cXB4OWtsdnYzL2FrY2lpMjM5bXl6b24weHdqbHhxbm4zYjM0dyxCSG9zdDpodHRwOi
8vZG9tYWxvLm9ubGluZS9rc2V6Ymx4bHZvdTNrY21icThsN2hmM2Y0Y3k1eGdlbzR1ZGxhOTFkdWV1
M3FhNTQvNDZrcWJqdnlrbHVucDF6NTZ0eHpraGVuN2dqY2kzY3l4OGdna3B0eDI1aTc0bW82bXlxcH
g5a2x2djMvYWtjaWkyMzlteXpvbjB4d2pseHFubjNiMzR3LE1YOkRDUl9NVVRFWC13TGNzOG8xTlZF
VXRYeEo5bjl5ZixUQUc6VU5ERUY= | base64 -d

MHost:hxxp://domalo[.]online/ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54/
46kqbjvyklunp1z56txzkhen7gjci3cyx8ggkptx25i74mo6myqpx9klvv3/akcii239myzon0xwjl
xqnn3b34w,BHost:hxxp://domalo[.]online/ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91
dueu3qa54/46kqbjvyklunp1z56txzkhen7gjci3cyx8ggkptx25i74mo6myqpx9klvv3/akcii239
myzon0xwjlxqnn3b34w,MX:DCR_MUTEX-wLcs8o1NVEUtXxJ9n9yf,TAG:UNDEF

图11:在SchemaServerManager中解码base64数据Main显示一个配置字符串

图11显示了将数据解码为包含四个值的配置字符串:MHost,BHost,MX和TAG。我们分析了解析此字符串的代码,发现MHost和BHost用作其主要和备份命令与控制(C2)端点。请注意,图11中的MHost和BHost值相同,因此此示例没有备份C2端点。

在dnSpy中,可以为类和方法赋予有意义的名称,就像在IDA Pro中命名标识符一样。例如,方法SchemaServerManager.StopCustomer选择一个随机运行的进程的名称。通过右键单击StopCustomer标识符并选择Edit Method,可以将方法名称更改为PickRandomProcessName,如图12所示。


图12:为方法分配有意义的名称使继续分析程序更加容易

继续分析SchemaServerManager.Main方法发现该示例在重新启动后仍然存在。持久性算法可以总结如下:

  1. 该恶意软件会选择一个随机运行进程的名称,然后将其自身复制到%APPDATA%和C:\。例如,如果选择svchost.exe,则恶意软件会将自身复制到%APPDATA%\ svchost.exe和C:\ svchost.exe。
  2. 该恶意软件会创建一个快捷方式%APPDATA%\ dotNET.lnk,该快捷方式指向%APPDATA%下的该恶意软件的副本。
  3. 该恶意软件在登录用户的Startup文件夹中创建一个名为dotNET.lnk的快捷方式,该快捷方式指向%APPDATA%\ dotNET.lnk。
  4. 恶意软件会创建一个快捷方式C:\ Sysdll32.lnk,指向C:\下的恶意软件副本。
  5. 该恶意软件在登录用户的Startup文件夹中创建一个指向Sysdll32.lnk的快捷方式,该快捷方式指向C:\ Sysdll32.lnk。
  6. 该恶意软件会创建指向%APPDATA%\ dotNET.lnk的注册表值HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run \ scrss。
  7. 该恶意软件会创建指向C:\ Sysdll32.lnk的注册表值HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run \ Wininit。

经过持久性步骤后,该恶意软件会检查该恶意软件的多个实例:

  1. 恶意软件会随机休眠5到7秒。
  2. 该恶意软件会获取仍以base64编码的配置字符串的MD5哈希,并创建互斥体,其名称为该哈希的十六进制表示形式。对于此样本,恶意软件创建了互斥体bc2dc004028c4f0303f5e49984983352。如果由于另一个实例正在运行而导致失败,则恶意软件退出。

然后,该恶意软件会发出信标,这也使它可以确定是使用主主机(MHost)还是使用备用主机(BHost)。为此,恶意软件会基于MHost URL构造信标URL,向信标URL发出请求,然后检查服务器是否以HTTP响应主体“ ok”响应。如果服务器未发送此响应,则恶意软件将无条件使用BHost;否则,恶意软件将使用BHost。该代码如图13所示。请注意,由于该示例具有相同的MHost和BHost值(来自图11),因此无论检查成功还是失败,恶意软件都使用相同的C2终结点。


图13:恶意软件根据MHost URL发出HTTP请求,以确定是使用MHost还是BHost

获取信标URL的完整算法如下:

  1. 获取MHost URL,即hxxp:[] // domalo在线/ ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54
    / 46kqbjvyklunp1z56txzkhen7gjci3cyx8ggkptx25i74mo6myqpx9klvv3 / akcii239my
    zon0xwjlxqnn3b34w。
  2. 计算完整的MHost URL的SHA1哈希,即56743785cf97084d3a49a8bf0956f2c744a4a3e0。
  3. 从MHost URL中删除最后一个路径组件,然后从上方附加SHA1哈希,并设置?data = active。因此,完整的信标URL为hxxp:// domalo [。] online / ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54
    / 46kqbjvyklunp1z56txzkhen7gjci3cyx8ggkcfafcf7a3cf7a7a3fc7a7fa7a3fc4a7a7a3fc3a7a0f7a7a7a3a0f0f0f0f0f0f0f0c0f0f0b0f0f0f0f0c0c0f0f0b0f0f0f0f0c0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0c0f0b0f0f0b0b0f0f0b0b0f0b0f0f0b0f0f碎了的
    位置。

发出信号后,恶意软件将继续使用已配置的C2发送和接收消息。

消息和功能

在对dfsds.exe进行静态分析以确定其如何选择C2端点并确认C2端点URL之后,我们转向了动态分析,以收集示例C2流量并使其更易于理解生成和接受C2消息的代码。幸运的是,即使服务器未发送有效响应,该恶意软件仍继续向C2端点生成请求。为了在不允许恶意软件访问Internet的情况下侦听和拦截对C2端点(domalo [online])的请求,我们使用了FLARE的FakeNet-NG工具。图14显示了一些C2请求,表明FakeNet-NG捕获了恶意软件。


图14:FakeNet-NG可以捕获恶意软件对C2端点的HTTP请求

通过将由恶意软件生成并在FakeNet-NG中捕获的消息与恶意软件的反编译代码进行比较,我们确定了其消息格式和类型。观察到图14中可见的最后一个HTTP请求包含正在运行的进程的列表。通过跟踪反编译的代码,我们发现方法SchemaServerManager.ObserverWatcher.NewMerchant生成了此消息。我们将该方法重命名为taskThread,并为其调用的其他方法分配了有意义的名称。此方法的结果代码显示在图15中。


图15:生成正在运行的进程列表并将其发送到C2端点的方法

通过进一步分析代码,我们确定了恶意软件用来将数据发送到C2端点的URL的组成部分以及它们的构造方式。

信标

第一种URL是信标,在恶意软件启动时仅发送一次。在此示例中,信标URL始终为hxxp:// domalo [.] online / ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54 / 46kqbjvyklunp1z56txzk
hen7gjci3cyx8ggkkhash / h <hashp ,这是最早的数据,是<Host? 。

GET请求,格式1

当恶意软件需要向C2发送数据或从C2接收数据时,它会发送一条消息。所述第一类型的消息,这是我们表示为“格式1”is a GET request to URLs of the form hxxp://domalo[.]online/ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54/46kqb jvyklunp1z56txzkhen7gjci3cyx8ggkptx25i74mo6myqpx9klvv3/akcii239myzon0xwjlxqnn 3b34w/<hash>.php? type=__ds_setdata&__ds_setdata_user=<user_hash>&__ds_setdata_ext=<message_hash>&__ds_setdata_data=<message>,其中:

  • **是MD5(SHA1(MHost)),对于此示例,它是212bad81b4208a2b412dfca05f1d9fa7。
  • **是运行恶意软件的计算机的唯一标识符。它始终按.NET System.Environment类提供的SHA1(OS_version + machine_name + user_name)进行计算。
  • **标识恶意软件发送给C2端点的消息类型。所述计算为MD5( + ) ,其中是一个短的关键字识别消息的类型,并且如上所计算出的。
    • 恶意软件支持的每个命令都有的值。有关可能的值,请参见图19中所示的代码示例中的“ msgs”变量。
    • 观察到这使得很难从日志流量中直观地观察消息类型,或为消息类型编写静态网络签名,因为由于包含,每台计算机的消息类型都会有所不同。
    • 一种消息类型使用值u代替的哈希。
  • **是消息数据,不会以任何方式掩盖。

另一种普通消息是getdata消息。这些是GET请求形式的URL hxxp://domalo[.]online/ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54/46kqb jvyklunp1z56txzkhen7gjci3cyx8ggkptx25i74mo6myqpx9klvv3/akcii239myzon0xwjlxqnn 3b34w/<hash>.php? type=__ds_getdata&__ds_getdata_user=<user_hash>&__ds_getdata_ext=<message_hash>&__ds_getdata_key=<key>,其中:

  • **的计算方法与上面针对getdata消息所述的相同。
  • **的计算也如上所述,针对getdata消息,但描述了恶意软件期望在服务器响应中接收的消息类型。
  • **是MD5()。

对于指定的消息类型,服务器应以适当的响应来响应getdata消息。

GET请求,格式2

从恶意软件到C2的几种消息使用不同的格式,我们将其称为“格式2”。这些消息的形式是GET请求hxxp://domalo[.]online /ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54/46kqbjvyklunp1z56txzkhen7gj ci3cyx8ggkptx25i74mo6myqpx9klvv3/akcii239myzon0xwjlxqnn3b34w/<user_hash>.<mes sage_hash>,其中:

  • **的计算方法如上所述,适用于getdata消息。
  • **的计算也如上所述,针对getdata消息,但描述了恶意软件期望在服务器响应中接收的消息类型。也可以是字符串comm。

表1显示了可能的,它们可以作为格式2消息的一部分并入中,以指示服务器需要哪种响应类型。与格式1消息相反,格式2消息仅用于少数值。

<message_type> 需要回应
s_comm 如果屏幕快照请求未决,服务器将发送非空响应
m_comm 如果未处理麦克风请求,则服务器发送非空响应
RDK 服务器直接通过按键响应进行重播
通讯 服务器直接响应其他类型的任务

表1:恶意软件使用特殊消息向服务器请求任务时的消息类型

POST请求

当恶意软件需要上传大文件时,它会发出POST请求。这些POST请求被发送到hxxp:// domalo在线/ ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54 / 46kqb [。]
jvyklunp1z56txzkhen7gjci3cyx8ggkptx25i74mo6myqpx9klvv3 / akcii239myzon0xwjlxqnn
3b34w / <散列> .PHP,在POST数据以下参数:

  • 名称是 +“。+ ,其中是如上所述计算的,而是要上传的数据的类型。
  • 上载是一个文件,数据已发送到服务器。

表2显示了可能的值以及要上载的文件类型。

| <message_type> | 文件类型 |
| jpg | Screenshot |
| zipstealerlog | Cookie stealer log |
| wav | Microphone recording |
| file | Uploaded file |
| bmp | Webcam image |
| RD.jpg | Remote control screenshot |

表2:文件上传到服务器时的消息类型

Capabilities

通过分析处理对通信消息的响应的代码(格式2),我们可以清点恶意软件的功能。表3列出了响应中使用的关键字以及每种功能的描述。

关键词 描述
Keyword Description
shell Execute a shell command
deleteall Recursively delete all files from C:, D:, F:, and G:
closecd Close the CD-ROM drive door
setwallpaper Change the background wallpaper
ddos Send TCP and UDP packets to a given host or IP address
logoff Log off the current user
keyboardrecorder Replay keystrokes as if the user had typed them
fm_newfolder Create a new folder
fm_rename Rename or move a file
desktopHide Hide desktop icons
keyloggerstart Start logging keystrokes
exec_cs_code Compile and execute C# code
msgbox Open a Windows MessageBox
fm_upload Transfer a file from the C2 to the client
rdp Re-spawn the malware running as an administrator
fm_zip Build a ZIP file from a directory tree and transfer it from the client to the C2
webcam Take a webcam picture
fm_unzip Unzip a ZIP file to a given path on the client
keyloggerstop Stop logging keystrokes
fm_drives Enumerate drive letters
cookiestealer Transfer cookies and browser/FileZilla saved credentials to the C2
fm_delete Recursively delete a given directory
dismon Hide desktop icons and taskbar
fm_uploadu Transfer a file from the C2 to the client
taskstart Start a process
cleardesktop Rotate screen
lcmd Run shell command and send standard output back to C2
taskbarShow Show taskbar
clipboard Set clipboard contents
cookiestealer_file Save cookies and credentials to a local file
newuserpass Create a new local user account
beep Beep for set frequency and duration
speak Use speech synthesizer to speak text
openchat Open chat window
taskbarHide Hide the taskbar
RDStart Start remote control over user’s desktop
closechat Close chat window
RDStop Stop remote control over user’s desktop
fm_opendir List directory contents
uninstall Remove the malware from the client
taskkill Kill a process
forkbomb Endlessly spawn instances of cmd.exe
fm_get Transfer a file from the client to the C2
desktopShow Show desktop icons
Clipboardget Transfer clipboard contents to C2
playaudiourl Play a sound file
opencd Open the CD-ROM drive door
shutdown Shut down the machine
restart Restart the machine
browseurl Open a web URL in the default browser

表3:DCRat的功能

Proof-of-Concept Dark Crystal RAT Server

从Dark Crystal RAT收集有关其功能和C2消息格式的信息后,另一种说明功能并测试我们对消息的理解的方法是编写概念验证服务器。这是我们编写的代码片段,其中包含用Python编写的准系统DCRat服务器。与真正的RAT服务器不同,该服务器没有用户界面,攻击者无法选择并启动命令。而是,它具有发送给RAT的预先编写的命令列表。

服务器启动时,它将使用Python BaseHTTPServer开始侦听传入的Web请求(第166-174行)。假定传入的POST请求包含RAT正在上载到服务器的文件。该服务器假定所有文件上传都是屏幕截图,并将其保存到“ screen.png”(第140-155行)。对于GET请求,服务器必须区分信标,普通消息和特殊消息(第123-138行)。对于普通消息,ds_setdata消息只是打印到标准输出,而唯一支持的ds_getdata消息类型是s_comm(屏幕截图通信),服务器以所需的屏幕截图尺寸对其进行响应(第63-84行)。对于comm类型的消息,服务器按顺序发送四种类型的命令:第一,它隐藏桌面图标;第二,它隐藏桌面图标。然后,它会说出字符串“ Hello this is tech support”。接下来,它显示一个消息框,要求输入密码;最后,它启动Windows计算器(第86-121行)。

图16显示了Dark Crystal RAT在已配置为将所有流量重定向到domalo.online到我们编写的概念验证服务器的系统上运行时的结果。


图16:Dark Crystal RAT实例与概念验证服务器通信时的结果

Other Work and Reconnaissance

在对Dark Crystal RAT进行反向工程之后,我们继续进行侦察,以了解可以找到哪些其他信息。我们分析的一个局限性是我们不想让样本与真实的C2通信,因此我们将其与Internet隔离。要了解有关Dark Crystal RAT的更多信息,我们尝试了两种方法:一种是使用Tor浏览Dark Crystal RAT网站(files.dcrat [.] ru),另一种是使用其他方法观看YouTube上的实验视频“真正的” Dark Crystal RAT服务器。

Dark Crystal RAT网站

我们发现Dark Crystal RAT的网站位于files.dcrat [.] ru,如图17所示。观察到有一些下载RAT本身的选项以及一些插件。DCLIB扩展名与我们在RAT中找到的插件加载代码一致。


图17:网站files.dcrat [.] ru允许用户下载Dark Crystal RAT及其一些插件

图18显示了一些其他插件,包括能够抵抗在虚拟机中运行,禁用Windows Defender以及禁用某些型号的网络摄像头指示灯的插件。没有插件与我们研究的样本捆绑在一起。


图18:Dark Crystal RAT网站上列出的其他插件

图19列出了RAT页面上的软件下载。我们花了一些时间查看这些文件。这是我们发现的一些有趣的事情:

  • 网站上列出的DCRat实际上是一个“构建器”,它打包了RAT的构建和供攻击者部署的配置。这与图4中显示的名称DCRatBuild.exe一致。在对构建器的简短测试中,我们发现它具有许可检查。一旦我们发现DCRat构建器的公开YouTube视频正在运行,我们就不会绕过它,我们将在后面展示。
  • DarkCrystalServer不是自包含的,它只是一个PHP文件,允许用户提供用户名和密码,从而导致其下载和安装服务器软件。由于需要提供凭据并与dcrat [。] ru通信(图20),因此我们没有进一步分析DarkCrystalServer。


图19:“ RAT”页面列出了RAT的软件,服务器,API和插件开发


图20:DarkCrystalServer要求输入用户名和密码,然后回叫dcrat [。] ru下载软件,因此我们没有进一步进行研究。

YouTube Videos

作为证实我们通过反向工程获得的有关Dark Crystal RAT功能的发现的一部分,我们找到了DCRat构建器和服务器的一些YouTube演示。

YouTube用户LIKAR在YouTube上演示了Dark Crystal RAT。作者演示了如何在具有两个活动RAT实例的服务器上使用Dark Crystal RAT软件。在视频过程中,作者浏览了软件中的各个屏幕。这使您很容易设想网络威胁将如何使用RAT,并证实我们对它如何工作的怀疑。

图21显示了在3:27时从视频中捕获的内容。请注意,Dark Crystal RAT构建器软件将DCRatBuild包称为“服务器”,而不是客户端。但是,请注意,其中一个选项是Java或C#(Beta)类型。通过观看此YouTube视频并进行其他一些背景研究,我们发现Dark Crystal RAT在Java版本中已经存在了一段时间。C#版本相对较新。这解释了为什么我们找不到有关它的详细报告。


图21:YouTube演示显示,以前存在Java版本的Dark Crystal RAT,而我们分析的C#版本为beta

图22显示了视频中6:28的另一个捕获。屏幕上显示的功能与“ msgbox”,“ browseurl”,“剪贴板”,“说”,“ opencd”,“ closecd”以及我们在表6中发现并列举的其他功能很好地匹配。


图22:YouTube演示证实了我们在逆向工程中发现的许多Dark Crystal RAT功能

结论

在这篇文章中,我们浏览了对威胁情报小组提供给我们的样本及其所有组件的分析。通过最初的分类,我们发现其“ dfsds.exe”组件是Dark Crystal RAT。我们发现Dark Crystal RAT是.NET可执行文件,并对其进行了反向工程。我们提取了恶意软件的配置,并通过动态分析发现了其C2通信的语法。我们实施了一个小型的概念验证服务器,以测试可以发送给恶意软件的命令的正确格式,以及如何解释其上传的屏幕截图。最后,我们再次研究了实际的威胁参与者如何下载和使用Dark Crystal RAT。

总而言之,表4给出了此版本的Dark Crystal RAT(MD5:047af34af65efd5c6ee38eb7ad100a01)的危害指标。

Indicators of Compromise

Dark Crystal RAT (dfsds.exe)
Handle artifacts
Mutex name bc2dc004028c4f0303f5e49984983352
Registry artifacts
Registry value HKCU\Software\Microsoft\Windows\CurrentVersion\Run\scrss
Registry value HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Wininit
File system artifacts
File C:\Sysdll32.lnk
File %APPDATA%\dotNET.lnk
File Start Menu\Programs\Startup\Sysdll32.lnk
File Start Menu\Programs\Startup\dotNET.lnk
File %APPDATA%<random process name>.exe
File C:<random process name>.exe
Network artifacts
HTTP request hxxp://domalo[.]online/ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54/46kqbjvyklunp1z56txzkhen7gjci3cyx8ggkptx25i74mo6myqpx9klvv3/212bad81b4208a2b412dfca05f1d9fa7.php?data=active
HTTP request hxxp://domalo[.]online/ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54/46kqbjvyklunp1z56txzkhen7gjci3cyx8ggkptx25i74mo6myqpx9klvv3/akcii239myzon0xwjlxqnn3b34w212bad81b4208a2b412dfca05f1d9fa7.php? type=ds_getdata&ds_getdata_user=&ds_getdata_ext=&ds_getdata_key=
HTTP request hxxp://domalo[.]online /ksezblxlvou3kcmbq8l7hf3f4cy5xgeo4udla91dueu3qa54/46kqbjvyklunp1z56txzkhen7gjci3cyx8ggkptx25i74mo6myqpx9klvv3/akcii239myzon0xwjlxqnn3b34w/.
TCP connection domalo[.]online:80
TCP connection ipinfo[.]ip
DNS lookup domalo[.]online
DNS lookup ipinfo[.]ip
Strings
Static string DCRatBuild

表4:此DCRat实例的IoC

FireEye产品对Dark Crystal RAT的支持

表5描述了FireEye产品对初始样本(MD5:b478d340a787b85e086cc951d0696cb1)及其暗晶RAT有效负载的反应,或者在进行Mandiant安全验证的情况下,允许涉众验证自己的能力来检测暗晶RAT。

FireEye产品 支持Dark Crystal RAT
FireEye Network Security (NX) Backdoor.Plurox detection
FireEye Email Security (EX & ETP) Backdoor.MSIL.DarkCrystal, Backdoor.Plurox, Malware.Binary.exe, Trojan.Vasal.FEC3, Win.Ransomware.Cerber-6267996-1, fe_ml_heuristic detections
FireEye Endpoint Security (HX) Trojan.GenericKD.32546165, Backdoor.MSIL.DarkCrystal detections
FireEye Malware Analysis (AX) Backdoor.Plurox.FEC2 detection
FireEye Detection on Demand (DoD) Backdoor.Plurox.FEC2, FireEye.Malware detections
Mandiant Security Validation Built-in Action coming soon
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!