Lazarus APT组织将恶意代码写入BMP图像的攻击方法
2021-04-22 11:35:00 Author: www.4hou.com(查看原文) 阅读量:181 收藏

导语:本文主要记录了Lazarus近期对韩国的鱼叉式网络钓鱼攻击事件中所使用到的新技术,用了一种巧妙的方法来绕过安全机制,在该机制中,攻击者将恶意HTA文件作为压缩的zlib文件嵌入到PNG文件中,然后在运行时通过将其自身转换为BMP格式进行解压。

Lazarus APT组织是朝鲜最老练的APT组织之一,自2009年以来一直活跃,该组织长期对美国、韩国、日本和其他几个国家进行渗透攻击。在今年四月份最新一起攻击事件中,Lazarus对韩国部分企业/用户展开了针对性网络钓鱼行动,在邮件附件中携带恶意文档引诱受害者点击,同时采取了一项简单有效的逃避检测技术,将恶意HTA文件作为压缩的zlib文件嵌入到PNG文件中,然后在运行时通过将其自身转换为BMP格式进行解压。整体攻击流程如下所示。

图1:攻击流程图

文件分析

打开文档会显示一个蓝色的韩文页面,要求用户启用宏后查看文档。

图2:文档界面截图

启用宏后,将弹出一个消息框,单击确认后将出现诱饵文件。

图3:诱饵文件

文档名称为“참가신청서양식.doc”,是韩国某城市的博览会的参会申请表。文档创建时间为2021年3月31日,说明攻击行为在近期发生。文档宏被武器化处理过,一旦用户确认启用便开始执行恶意操作。

图4:宏

宏首先调用MsgBoxOKCancel函数,该函数向用户弹出一个消息框,声称用户使用的是旧版本的Microsoft Office。显示消息框后,执行以下步骤:

图5:Document_Open

· 以base64格式定义所需的变量,如WMI对象、Mshta和文件扩展名,然后调用Decode函数对它们进行base64解码。

· 获取活动文档名称,并将名称与扩展名分开。

· 将ActiveDocument.SaveAs以wDFormatHTML为参数,创建HTML格式活动文档的副本。将文档另存为HTML能将此文档中的所有图像存储在FILENAME_files目录中。

图6:另存为HTML

· 调用show函数保护文档,防止文档被修改。

图7:保护文档

· 获取具有嵌入式zlib对象的图像文件(image003.png)。

· 调用WIA_ConvertImage将PNG格式的图像转换为BMP格式。由于BMP文件格式是未压缩的图形文件格式,攻击者将zlib恶意对象压缩到PNG图像中能逃避静态检测,而PNG文件格式转换为BMP文件格式会自动将PNG中嵌入的恶意zlib对象解压为BMP,这是攻击者为了绕过图像嵌入对象检测机制所采用的聪明方法。

图8:PNG和BMP文件中的嵌入式对象

图9:BMP中的嵌入式hta文件

· 获取WMI对象后调用Mshta执行BMP文件。解压后的BMP文件包含一个HTA文件,该文件执行Java脚本以植入有效负载。

· 删除目录中的所有图像,然后删除由SaveAs函数生成的目录。

BMP文件分析(image003.zip)

宏在图像转换过程中向BMP文件添加扩展名zip,用来伪装成zip文件。该BMP文件有一个嵌入的HTA文件,HTA包含一个JavaScript脚本,用于在“C: Users Public Libraries AppStore.exe”目录中创建AppStore.exe”并填充其内容。

JavaScript脚本首先定义一个数组,其中包含所需的函数和参数:OpenTextFile,CreateTextFile,Close,Write,FromCharCode," C:/Users/Public/Libraries/AppStore.exe "和一些垃圾值。当脚本想要执行操作时,它调用带有十六进制值的用第二个函数,该函数负责构建索引,从第一个数组检索所需的值。

例如,它调用具有0x1dd值的第二个函数。这个函数从0x1dd中减去0x1dc以获得第一个数组的索引1。然后使用这个索引来检索第一个数组的第一个元素,即“C:/Users/Public/Libraries/AppStore.exe”。依据相同的过程,调用CreateTextFile创建AppStore.exe,将MZ写入其中,调用fromCharCode函数将十进制格式的数据转换为字符串。最后调用Wscript.Run来执行植入的有效负载。

图10:嵌入式HTA对象

有效负载分析(AppStore.exe)

有效负载为base64加密的字符串,被加载到AppStore.exe的末尾。在有效负载之前有一个字符串,它是解密密钥(by7mJSoKVDaWg*Ub)。

 

图11:嵌入式有效负载

为了解密第二阶段的有效负载,首先,它将自身写入VirtualAlloc创建的缓存中,然后查找加密的有效负载并将其复制到另一个缓存中。

图12:分配内存

用自带的base64解码器来解码分配的缓存,并使用memset和memmove将其写入另一个缓存。最后,使用硬编码的解密密钥,通过XOR对有效负载进行解密,以生成第二阶段的有效负载。

图13:XOR解密

解密过程完成后,将跳转到第二个有效负载的起始地址来执行它。

第二阶段有效负载分析

该有效负载由AppStore.exe加载到内存中,没有被写入磁盘。它首先执行初始化过程,有以下步骤:

图14:初始化过程

· 创建互斥锁:检查计算机上是否存在带有" Microsoft32 "名称的互斥锁,如果存在,则退出;否则意味着该计算机尚未感染此RAT,能开始其恶意活动。

· 解析API调用:所有重要的API调用均已进行base64编码和RC4加密,并将在运行时进行解码和解密。RC4解密的密钥是" MicrosoftCorporationValidation@#$%^&*()!US "。

图15:API解析器

· 向命令和控制服务器发出HTTP请求,服务器地址已使用自定义加密算法进行base64编码和加密。解码器可参见此处。这类自定义加密算法类似于US-CERT报告的与Lazarus相关的BISTROMATH RAT使用的加密算法

图16:自定义解密算法

http://mail.namusoft.kr/jsp/user/eam/board.jsp

http://www.jinjinpig.co.kr/Anyboard/skin/board.php

初始化过程完成后,它将检查与C&C服务器的通信是否成功,如果成功,则转到下一步,从服务器接收命令并根据命令执行不同的操作。

从C&C接收到的命令是base64编码的,并使用其定制的加密算法进行加密(图16)。清除混淆后,它将根据命令代码执行以下命令。通过send和recv socket函数与服务器通信。

· 8888:它尝试以两种不同的方式执行命令代码之后收到的命令。首先是尝试通过创建一个新线程来执行命令(图17)。这个线程获取命令后用cmd.exe执行,此过程是通过使用CreatePipe和CreateProcessA完成的,然后使用ReadFile读取cmd.exe的输出。

图17:创建线程

cmd.exe的输出已被编码和加密,并使用HTTP POST请求作为test.gif发送到服务器(图18)。

图18:将cmd.exe的输出作为test.gif发送

如果CreateThread进程不成功,则通过调用WinExec执行命令,然后发送“ 8888 Success!”。通过自定义加密对邮件进行加密后,再使用base64将该邮件编码为test.gif到服务器。

图19:WinExec

· 1234:调用CreateThread执行从服务器接收到的缓存(第三阶段有效负载),后续对“ 1234 Success!”进行编码和加密,并将其作为test.gif发送到服务器。

· 2099:创建一个批处理文件并执行,执行后退出。此批处理文件用于从受害者的计算机中删除AppStore.exe。

图20:创建批处理文件

· 8877:把从服务器接收的缓存存储在一个文件中。

· 1111:调用shutdown函数以禁用套接字上的发送或接收。

第二阶段的有效负载使用自定义编码的用户代理进行通信。所有这些用户代理都经过base64编码和加密,使用了用于加密服务器地址的相同的自定义加密算法。下面是此RAT使用的不同用户代理的列表。

Mozilla/%d.0  (compatible; MSIE %d.0; Windows NT %d.%d; WOW64; Trident/%d.0; Infopath.%d)
 
Mozilla/18463680.0  (compatible; MSIE -641.0; Windows NT 1617946400.-858993460; WOW64; Trident/-858993460.0; Infopath.-858993460)
 
Mozilla/18463680.0  (compatible; MSIE -641.0; Windows NT 1617946400.-858993460; Trident/-858993460.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Infopath.-858993460)
 
Mozilla/%d.0  (Windows NT %d.%d%s) AppleWebKit/537.%d (KHTML, like Gecko) Chrome/%d.0.%d.%d Safari/%d.%d Infopath.%d

归因判断

这次攻击与过去的Lazarus行动有很多相似之处:

· 第二阶段有效负载使用了与BISTROMATH RAT相似的自定义加密算法,BISTROMATH RAT也被判断与Lazarus相关联。

· 第二阶段有效负载使用base64和RC4的组合进行数据混淆,这是Lazarus的常用技术。

· 此攻击中使用的第二阶段有效负载与某些已知的Lazarus恶意软件家族(如Destover)在代码上有一些相似之处。

· 在过去的Lazarus行动(如AppleJeus行动、针对韩国的供应链攻击和DreamJob行动)中,也观察过将数据和消息作为GIF发送到服务器的动作。

· 这次网络钓鱼攻击针对韩国,韩国是Lazarus的主要目标之一。

· 这些程序与这次攻击中使用Mshta.exe运行恶意脚本和下载程序,也与Lazarus习惯相同。

结论

Lazarus APT组织是朝鲜最活跃、最复杂的威胁团伙之一,在过去几年里,该组织已将韩国、美国和日本等多个国家作为攻击目标。Lazarus APT组织擅长使用邮件钓鱼进行鱼叉攻击,同时武器库强大,从披露的该组织的活动来看,由其发起的攻击规模都巨大。

本文主要记录了Lazarus近期对韩国的鱼叉式网络钓鱼攻击事件中所使用到的新技术,用了一种巧妙的方法来绕过安全机制,在该机制中,攻击者将恶意HTA文件作为压缩的zlib文件嵌入到PNG文件中,然后在运行时通过将其自身转换为BMP格式进行解压,植入的有效负载是一个加载器,该加载器将第二阶段的有效负载解码并解密到内存中。第二阶段有效负载能接收并执行命令/ shellcode,还有进行数据滤出、与C2通信的功能。

IoC

文档

F1EED93E555A0A33C7FEF74084A6F8D06A92079E9F57114F523353D877226D72

植入的可执行文件

ED5FBEFD61A72EC9F8A5EBD7FA7BCD632EC55F04BDD4A4E24686EDCCB0268E05

命令和控制服务器

jinjinpig[.]co[.]kr

mail[.]namusoft[.]kr

本文翻译自:https://blog.malwarebytes.com/malwarebytes-news/2021/04/lazarus-apt-conceals-malicious-code-within-bmp-file-to-drop-its-rat/如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/D676
如有侵权请联系:admin#unsafe.sh