解析NanoCore犯罪软件攻击链

Change Web安全 2019年6月18日发布
Favorite收藏

导语:近日,Cybaze-Yoroi ZLab发现了一类有趣的样本,它是Nanocore远程管理工具(RAT)的变种之一,用到了Delphi封装器。本文是Yoroi实验室对此样本的分析。

简介

网络犯罪分子常常会采用多层的加密或混淆技术来逃避安全产品的检测。对加密器和封装器的使用在当今恶意软件领域正变得越来越流行,它们不仅能为恶意代码提供所谓的“FUD”(完全无法检测)功能,并且还能隐藏额外的payload。

近日,Cybaze-Yoroi ZLab发现了一类有趣的样本,它是Nanocore远程管理工具(RAT)的变种之一,用到了Delphi封装器。下面是Yoroi实验室对此样本的分析。

技术分析

Nanocore RAT是一种“通用的”恶意软件,通过操作它的客户端进行攻击对一般人而言没什么太大难度。此次攻击事件中,攻击者瞄准了意大利的奢侈品行业,攻击由一封伪装成来自银行的钓鱼邮件开始。

1.png

图1:部分截取的钓鱼邮件

附件是一个7z格式的存档文件,包含一个Adobe Acrobat图标的有效PE文件,看来攻击者试图通过一个简单的伎俩来让用户相信它是一个合法的PDF文件。该PE可执行文件信息如下:

t1.jpg

表1:Nanocore dropper/ NanoCore RAT的静态信息

接着我们在样本上提取了一些静态信息:

2.png

图2:有关“trasferimento.exe”dropper / NanoCore RAT的信息

该样本是用“BobSoft Mini Delphi”编译器编译的,有两个重要特征:一是高水平的熵; 二是可执行文件中伪造的编译时间戳。

执行恶意软件时,我们注意到恶意软件会执行一些检查来逃避检测。

3.png

图3:恶意软件检查的进程

上图展示了恶意软件所检查的一些进程,此操作是通过使用经典的Win32 API调用“CreateToolhelp32Snapshot”和“Process32Next”来执行的。

4.png

图4:用于检查打开工具的API调用

如果检查的进程中没有一个处于活动状态,恶意软件就可以继续进行实际的感染:将Nanocore RAT的实际payload写入“%TEMP%”文件夹中。

5.png

图5:由加载程序和相关API调用编写的NanoCore payload

payload会进一步加载到内存中,有趣的是,该payload在没有经过任何加密或混淆。

6.png图6:嵌入在“trasferimento.exe”样本资源中的有效负载与写入%TEMP%文件夹的“non.exe”之间的比较

如上图所示,“trasferimento.exe”Delphi包装器有很多嵌入式资源(左侧),其中一个包含整个Nanocore RAT的payload。右侧我们列出了一个名为“2035”的资源和真实payload之间的差异分析,“2035”左上角黄色突出的是要在机器上植入的payload名称——“non.exe”,后续代码是相同的,也没有任何保护。“trasferimento.exe”组件运行计划任务以保证其持久性。

7.png

图7:恶意软件设置的任务调度程序

此时,恶意软件会创建一个带有伪随机名称的xml文件,该名称包含其在计算机上持久性的配置。创建此文件后,恶意软件会生成“non.exe”进程,然后通过以下命令行重新生成自身。

schtasks.exe” /create /f /tn “IMAP Subsystem” /xml “C:\Users\admin\AppData\Local\Temp\tmpC5A7.tmp”schtasks.exe” /create /f /tn “IMAP Subsystem” /xml “C:\Users\admin\AppData\Local\Temp\tmpCB59.tmp”

xml配置文件的主体如下:

<?xml version=”1.0″ encoding=”UTF-16″?><Task version=”1.2″ xmlns=”http://schemas.microsoft.com/windows/2004/02/mit/task”>  <RegistrationInfo />  <Triggers />  <Principals>    <Principal id=”Author”>      <LogonType>InteractiveToken</LogonType>      <RunLevel>HighestAvailable</RunLevel>    </Principal>  </Principals>  <Settings>    <MultipleInstancesPolicy>Parallel</MultipleInstancesPolicy>    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>    <AllowHardTerminate>true</AllowHardTerminate>    <StartWhenAvailable>false</StartWhenAvailable>    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>    <IdleSettings>      <StopOnIdleEnd>false</StopOnIdleEnd>      <RestartOnIdle>false</RestartOnIdle>    </IdleSettings>    <AllowStartOnDemand>true</AllowStartOnDemand>    <Enabled>true</Enabled>    <Hidden>false</Hidden>    <RunOnlyIfIdle>false</RunOnlyIfIdle>    <WakeToRun>false</WakeToRun>    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>    <Priority>4</Priority>  </Settings>  <Actions Context=”Author”>    <Exec>      <Command>”C:\Users\admin\Desktop\trasferimento.exe”</Command>      <Arguments>$(Arg0)</Arguments>    </Exec>  </Actions></Task>

这两项计划任务的区别在于,一个引用“trasferimento.exe”进程,另一个引用“non.exe”进程。 它似乎是一种生存机制,在这种机制中,这两个进程都在起作用,并保持感染的存活。

8.png

图8:设置任务计划程序的详细信息

这两个进程会连接两个不同的C2。在分析过程中,其中一个(185.244.31.[50)已被关闭,另一个(79.134.225[.41) 还在继续工作。

9.png

图9:与两个不同C2间的通信

NanoCore客户端

t2.jpg

表2:“non.exe”NanoCore RAT的信息

现在我们开始分析“non.exe”文件,即Nanocore RAT客户端,该文件由.NET语言编译。

10.png

图10:有关“non.exe”NanoCore RAT和相关编译语言的其他信息

解压后的代码非常模糊,它使用了一些自定义例程进行加密。

11.png

图11:NanoCore客户端版本

经过几个步骤的调试之后,payload的真实性质就显露出来了,提取的当前版本为1.2.2.0,如红色方框所示。继续调试后我们发现了一个用于解密RAT静态字符串和恶意软件配置的循环例程:

12.png图12:提取配置文件的解密例程

与其他犯罪软件一样,该软件也利用加密配置,只在恶意软件执行期间解密。有趣的是,提取的配置不包括持久性,持久性由外部包装器处理的计划任务所保证。

13.png

图13:RAT客户端的配置信息

从上图中可以看出,该客户端具有一些有趣的启用功能,例如绕过UAC控制的功能,或者阻止系统进入休眠状态。此外,主C2和备用C2是相同的,并且通过其他“trasferimento.exe”RAT模式进程保证备份C2的解决方案。

结论

如今,许多网络罪犯不会努力从头开始编写恶意软件,因为已经有许多公共工具适合这种需求。从攻击者的角度来看,使用这些工具的问题在于它们迟早会被反病毒引擎识别。

因此,攻击者采用其他技术,如包装器和混淆器(很多时候也是公开可用的),或者编写定制的装载器来隐藏他们的间谍工具,让它们长时间运行在受害机器中,静静地观察目标,等待合适的时间来实施他们的犯罪计划。

IoC

C2:

185.244.31[.50:1540

79.134.225[.41:2031

目标:

完全控制受害者机器

持久性:

schtasks.exe” /create /f /tn “IMAP Subsystem” /xml “C:\Users\admin\AppData\Local\Temp\tmpC5A7.tmp” (trasferimento.exe)
schtasks.exe” /create /f /tn “IMAP Subsystem” /xml “C:\Users\admin\AppData\Local\Temp\tmpCB59.tmp” (non.exe)

Hash:

8274313b5b1e941a67b54e9f311094f2f56a3afe97820ad03560d9885a60b71b

52d73eee176a2ff30af7e386809b94ef1c4918f131f8de1e2b66915ab8cc3790

Yara Rule

import "pe"
rule Delphi_Loader_NanoCoreRAT {
meta:
     description = "Yara Rule for Delphi Loader and embedded NanoCore RAT"
     author = "Cybaze - Yoroi ZLab"
     last_updated = "2019-06-12"
     tlp = "white"
     category = "informational"
strings:
$s1 = "IE(AL(\"%s\",4),\"AL(\\\"%0:s\\\",3)\",\"JK(\\\"%1:s\\\",\\\"%0:s\\\")\")"
$a1 = "#=qP05CRmbt2pJg10eRU50wu1vx$mfteEn$pCn9SEbehP8="
     $a2 = "NanoCore"
     $a3 = {69 73 34 31 74 49 58 4D}
     $b1 = "<*t\"<0r=<9w9i"
 
condition:
pe.number_of_resources == 73 and $s1 or 1 of ($a*) and $b1
}
本文翻译自:https://blog.yoroi.company/research/dissecting-nanocore-crimeware-attack-chain/如若转载,请注明原文地址: https://www.4hou.com/web/18610.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论