拆解一个经多层打包的Betabot木马新变种

安全研究员Wojciech在上周发表的一篇文章中指出,他在偶然间得到了一个Betabot木马的新变种样本,经过了多层的伪装和隐藏。作为初始向量的恶意Office文档试图利用一个17年前的漏洞。

Betabot可以说是一个多变的木马程序,从银行木马演变成密码窃取者,然后演变成一个僵尸网络,能够传播勒索软件和其他恶意程序。虽然在地下市场上你可能只需要花费大约120美元就可以购买到这款木马,但在2017年初也发现了一个破解版本

 

Word文档作为初始向量

正如通常发生的那样,文档(PDFWordExcel)会是攻击者的切入点,在这种情况下,CVE-2017-11882被用于交付下一阶段的有效载荷。由于这种利用,攻击者可以将OLE对象嵌入到特制的RTF文件中,这允许他在受害者系统上执行命令。在下面,你可以找到嵌入在恶意word文档中的对象。

word文件中嵌入的对象

所有对象都试图伪装成合法的软件(英特尔)来获得用户的信任。

l  Inteldriverupd1.sct允许攻击者利用Windows脚本组件创建新对象,用于在之后运行task.bat脚本。 

inteldriverupd1.sct

l  Task.bat检查临时目录中“block.txt”文件的存在,如果文件不存在,脚本会创建它。最后它会启动“2nd.bat”并删除自身。 

task.bat

l  最后阶段是执行2nd.bat脚本。一开始它会启动主exe文件并杀死文字处理程序(winword.exe)进程。之后,它会从注册表中删除Resiliency目录(对于每个版本)以隐藏它自己的痕迹并阻止文档的恢复。由于MRU(最近使用)功能,下一行很有趣。这些键保留最后打开文档的路径。通过这种方式,攻击者能够知道文件的执行位置,并可以轻易地将decoy.doc复制到临时文件夹。最后两条命令删除其他存在痕迹。 

2nd.bat

l  就如同它的命名一样,“Decoy.doc”被用作诱饵,这意味着该文件将在感染后显示给最终用户。

decoy.doc

整个文件权重为1,4 MB

另外值得一提的是,在执行时,它连接到hxxp://goog[.]com/newbuild/t.php?stats=send&thread=0,稍后会详细介绍这一点。下面展示了一个截图: 

word文件中嵌入的地址

第一层

丢弃的文件(exe.exe)是用C#编写的,并且使用DeepSea算法进行了混淆处理,但是De4dot做得很好,立即对文件进行去混淆处理。

 de4dot进行去混淆

在这个操作之后,我们可以清楚地看到类和函数的名称,这可以让我们了解它的运作方式。事实证明,这只是第一层的混淆。我们必须确定下一个有效载荷的位置,以及可能的混淆算法,然后将其转储为二进制。 

左边是去混淆之前,右边是去混淆之后

第二层      

函数负责解码,它是简单的xormodulo操作。现在,我们可以轻松地转储下一个文件。 

解码算法

一种方法是在“while”操作之后设置断点,并将其变量直接保存到磁盘。也可以将整个项目导入到Visual Studio中,然后调用该函数,但Wojciech决定将此函数重写为python并解码。

Byte3”和“Byte2”是字节数组的名称。                 

 int0 = len(byte3) – 1

int1 = len(byte3)
array_size = [15] * int1 
byte2 = bytearray(array_size)
while int0> = 0:
    byte2 [int0] =(byte3 [int0%len(byte3)] ^ byte3 [int0])
    int0 = int0  -  1 
file = open(“decoded.bin”,“w”)
file.write(byte2)

这是如何检索下一个文件的方法,另一种方法可以是调试代码并检查已加载的模块。新文件在执行之前被加载到内存中,因此可以将它从“modules”选项卡转储到DnSpy中。 

未知的模块

另外有趣的是,在文件的资源中有许多被嵌入的图片。所有图片都包含有噪声像素,其中有一张图片是个例外,它看起来像布加勒斯特电影之夜的合法海报,名称为“Key0”。含有噪声像素的图片将在下一阶段中使用,但这张海报的目的仍然未知。 

在资源中的嵌入的海报

第三层

下一个文件也是用.Net编写的,采用的一些技巧使得它更加难以阅读。例如,字符串是用硬编码的密钥加密的。不过,解密它并不困难,因为我们有一个源代码,你可以在代码中的每一个创建的字符串上调用此函数。 

加密的字符串

一些有趣的字符串:

Notify

Software\Microsoft\Windows\CurrentVersion\Run

.exe

InstallUtil.exe

RegAsm.exe

vbc.exe

AppLaunch.exe

svchost.exe

-boot

/c select,

explorer.exe

.lnk

Save

shell32.dll,

conLocation

TargetPath

CreateShortcut

b070b0ef-fb2c-415b-9f41-b32551b5d91f

vmacthlp

vmtools

vboxservice

事实证明,大多数类和函数名称仍然不够易读,不便于分析。Wojciech表示,他没有找到任何自动去混淆这个层的方法,但经过一段时间,他得出了一些结论。

第三层的主要功能

文件所做的第一件事是解密另一个文件,并将其与其他与恶意软件配置相关的信息存储在字典中。它创建另一个文件的方式非常有创意,其工作原理如下:

l  从资源获取图片(来自前一阶段的含有噪声像素的图片),并将其作为“image”类型存储在数组中;

l  将每个图片转换成内存流;

l  解密它。;

l  将它添加到字典中。 

配置字典

在执行过程中,它检查字典中的配置(在这个样本中没有打开任何附加功能),并调用相应的函数。例如,如果将值Options.CheckVM设置为false,恶意软件则不会调用负责检查其是否在虚拟环境中运行的功能。

其中一个功能检查进程(vmacthlpvmtoolsvboxservice),如果其中任意一个正在运行,它会自动终止。

在下面我们可以看到它是如何将自己复制到C:users[username]AppDataRoamingMicrosoftWindowsStart MenuPrograms并在之后启动的。 

 

第四层——Betabot

在从前面提到的数组中转储文件之后,我们就得到了Betabot变种。目前在野外很多不同版本的Betabot,作为原因之一,很可能是因为破解版本的出现。样本包含一些反调试和反虚拟环境技巧。

首先是检查PEB进程中的BeingDebugged标志。想要绕过它,我们必须将EBX值设置为与EAX中的值相同。关于这项技术的更多信息在这里

 它在SYSTEMCurrentControlSet中检查以下键的存在:VboxGuestVmToolsVmware.inc

检查过程

执行的其余部分与此处分析的样本相同。不过,Wojciech在从内存中打开恶意软件时遇到了一些麻烦。在整个文件被完全解压缩之前,Wojciech遇到了堆栈溢出错误,这也许是无法绕过的下一个反调试机制。

在这种情况下,Wojciech决定使用SysAnalyzer之类的自动工具,它可以检测和转储适当的内存部分以供进一步分析。它确实完成了自己的工作,但是header仍然被破坏或加密,因此无法分析文件,但是从字符串中可以推断出一些功能。 

转储文件中的字符串

网络流量

如前所述,首先连接到的是hxxp://goog[.]com/newbuild/t.php?stats=send&thread=0,在重定向之后,它会分配随机值作为响应。 

第一个请求和响应

重定向导致联署服务hxxp://sharesale[.]com,并带有一些跟踪值。 

第二个请求和响应

最后,我们登陆到hxxp://shirtbattle[.]com

Wojciech的猜测是,bot首先会注册自身用于跟踪目的,然后去shirtbattle从联署项目赚取一些额外的钱。

Wojciech还观察到,主要的C2服务器位于hxxp://onedriveservice[.]com上,它不是真正的微软域,它与其他恶意活动相关联

也许这项活动已经结束,CnC已经关闭。我们可以更改我们的DNS设置,以充当CC服务器。以下是对Betabot标准的要求、随机参数名称和RC4编码。更多关于提取RC4密钥以及如何获取配置的信息在这里

 Betabot的标准要求

网络流量的准备非常谨慎,一些合法的全球服务可能会因为域名的相似性而显得无辜,类似于goog[.]comonedriveservice[.]com

 

结论

有时即使是已知的样本也会因为各种打包、加密或编码方式而带来一些麻烦,这使得我们需要花更多时间来了解它的运作方式以及它可以做什么。

 

IOCs

Purchase_order.doc 20FC1511A310ECE324E40381E49F49C2

Decoy.doc B5F34D2752EC82ACA1DD544DA7990448

2nd.bat 76C94647524188152C6488600CC438B0

Exe.exe 13AE5AF773E63F65D5B0748676FCFF75

Mndgrhsz.exe BFDD283E6135AC06284AC8A221990DA9

Multi.exe B01137B556E968582730F9FE4186DE08

Betabot.exe 005551A827C77BCECBA7B65F5B7A95AF

goog.com

onedriveservice.com

 

审核人:yiwang   编辑:边边

(完)