内容简介:简介网络犯罪分子常常会采用多层的加密或混淆技术来逃避安全产品的检测。对加密器和封装器的使用在当今恶意软件领域正变得越来越流行,它们不仅能为恶意代码提供所谓的“FUD”(完全无法检测)功能,并且还能隐藏额外的payload。近日,Cybaze-Yoroi ZLab发现了一类有趣的样本,它是Nanocore远程管理工具(RAT)的变种之一,用到了Delphi封装器。下面是Yoroi实验室对此样本的分析。
简介
网络犯罪分子常常会采用多层的加密或混淆技术来逃避安全产品的检测。对加密器和封装器的使用在当今恶意软件领域正变得越来越流行,它们不仅能为恶意代码提供所谓的“FUD”(完全无法检测)功能,并且还能隐藏额外的payload。
近日,Cybaze-Yoroi ZLab发现了一类有趣的样本,它是Nanocore远程管理工具(RAT)的变种之一,用到了Delphi封装器。下面是Yoroi实验室对此样本的分析。
技术分析
Nanocore RAT是一种“通用的”恶意软件,通过操作它的客户端进行攻击对一般人而言没什么太大难度。此次攻击事件中,攻击者瞄准了意大利的奢侈品行业,攻击由一封伪装成来自银行的钓鱼邮件开始。
图1:部分截取的钓鱼邮件
附件是一个7z格式的存档文件,包含一个Adobe Acrobat图标的有效PE文件,看来攻击者试图通过一个简单的伎俩来让用户相信它是一个合法的PDF文件。该PE可执行文件信息如下:
表1:Nanocore dropper/ NanoCore RAT的静态信息
接着我们在样本上提取了一些静态信息:
图2:有关“trasferimento.exe”dropper / NanoCore RAT的信息
该样本是用“BobSoft Mini Delphi”编译器编译的,有两个重要特征:一是高水平的熵; 二是可执行文件中伪造的编译时间戳。
执行恶意软件时,我们注意到恶意软件会执行一些检查来逃避检测。
图3:恶意软件检查的进程
上图展示了恶意软件所检查的一些进程,此操作是通过使用经典的Win32 API调用“CreateToolhelp32Snapshot”和“Process32Next”来执行的。
图4:用于检查打开 工具 的API调用
如果检查的进程中没有一个处于活动状态,恶意软件就可以继续进行实际的感染:将Nanocore RAT的实际payload写入“%TEMP%”文件夹中。
图5:由加载程序和相关API调用编写的NanoCore payload
payload会进一步加载到内存中,有趣的是,该payload在没有经过任何加密或混淆。
图6:嵌入在“trasferimento.exe”样本资源中的有效负载与写入%TEMP%文件夹的“non.exe”之间的比较
如上图所示,“trasferimento.exe”Delphi包装器有很多嵌入式资源(左侧),其中一个包含整个Nanocore RAT的payload。右侧我们列出了一个名为“2035”的资源和真实payload之间的差异分析,“2035”左上角黄色突出的是要在机器上植入的payload名称——“non.exe”,后续代码是相同的,也没有任何保护。“trasferimento.exe”组件运行计划任务以保证其持久性。
图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:设置任务计划程序的详细信息
这两个进程会连接两个不同的C2。在分析过程中,其中一个(185.244.31.[50)已被关闭,另一个(79.134.225[.41) 还在继续工作。
图9:与两个不同C2间的通信
NanoCore客户端
表2:“non.exe”NanoCore RAT的信息
现在我们开始分析“non.exe”文件,即Nanocore RAT客户端,该文件由.NET语言编译。
图10:有关“non.exe”NanoCore RAT和相关编译语言的其他信息
解压后的代码非常模糊,它使用了一些自定义例程进行加密。
图11:NanoCore客户端版本
经过几个步骤的调试之后,payload的真实性质就显露出来了,提取的当前版本为1.2.2.0,如红色方框所示。继续调试后我们发现了一个用于解密RAT静态字符串和恶意软件配置的循环例程:
图12:提取配置文件的解密例程
与其他犯罪软件一样,该软件也利用加密配置,只在恶意软件执行期间解密。有趣的是,提取的配置不包括持久性,持久性由外部包装器处理的计划任务所保证。
图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
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning ARKit for iPhone and iPad
Wallace Wang / Apress / 2018-11-5 / USD 39.99
Explore how to use ARKit to create iOS apps and learn the basics of augmented reality while diving into ARKit specific topics. This book reveals how augmented reality allows you to view the screen on ......一起来看看 《Beginning ARKit for iPhone and iPad》 这本书的介绍吧!