MS Office恶意软件(Dropper)分析手记 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

MS Office恶意软件(Dropper)分析手记

fanyeee 资讯 2020-09-05 09:35:00
1087600
收藏

导语:本文中,我们将为读者介绍如何利用各种逆向分析方法和恶意软件分析技术,来分析MS Office恶意软件(Dropper)。

根据Yoroi年度网络安全报告、网络威胁趋势以及其他资源来看,MS Office文件(Word文档和Excel电子表格)已经成为当前最常见的恶意软件加载器之一。通常情况下,攻击者会引诱受害者打开特制的Office文档,从而加载(有时甚至从外部资源中引入)恶意内容,并在登陆的主机上执行恶意代码。本文中,我们将为读者介绍如何利用各种逆向分析方法和恶意软件分析技术,来分析MS Office恶意软件(Dropper)。

工具链

· rtfdump.py

· xorsearch

· scDBg

· oleid.py

· oletools

· msoffcrypto-crack.py

· olevba

· XLMDeobfuscator

富文本格式(.RTF)

RTF格式是一种可以携带各种对象的文本格式。  

1.png

RTF数据

实际上,Didier Stevens为我们提供了一款名为rtfdump.py的优秀工具,可以用来处理RTF文件。事实上,如果当我们利用这个工具处理RTF文件时,不仅看到文件的各个组成部分,同时,还能看到其运行后被包含和使用的各个对象,具体如下图所示。通常情况下,我会建议大家从“体型”较大的对象开始调查,换句话说,从字节数较多的对象开始入手。

1.png

考察RTF文件内容

实际上,rtfdump.py不仅提供了选择特定节的方法(-s),而且,您还可以决定是显示它,还是将其转储到一个文件中以进行其他分析。举例来说,如果您希望选择第2节并显示其内容,则可以使用如下所示的命令。

python rtfdump.py -s 2 -H  mal1.doc

1.png

EquationEditor (CVE-2017-11882) ?

根据个人经验,EquationEditor通常是一个危险的标志。因为攻击者经常利用CVE-2017-11882来运行特定的shellCode。如果你通过HexView检查第2节中的内容,你可能会发现某些编码模式,即反复出现的字符和符号。这通常是XOR/ROL/SHIFT加密函数的典型行为。为此,Didier Stevens提供了另一个有趣的工具,名为xorsearch。

1.png

转储二进制内容

在使用xorsearch工具之前,我们需要将equationeditor所在节转储到一个外部文件中。完成这项任务后,请转到Windows系统(我们以后会需要它),并通过xorsearch.exe处理转储的二进制文件。

“[...]XORSearch是一个在XOR、ROL、ROT或SHIFT编码的二进制文件中搜索给定字符串的程序。对于使用XOR算法编码的二进制文件来说,通常会用一个常量值(密钥)对某些(或所有)字节执行XOR运算。对于使用ROL(或ROR)编码的文件来说,其字节被循环移位一定数量的位数(密钥)。而使用ROT编码的文件中的字母字符(A-Z和a-z),被循环移位了一定数量的步数。SHIFT编码文件的字节向左移动一定数量的位数(密钥):第一个字节的所有位向左移动,第二个字节的MSB变成第一个字节的LSB,第二个字节的所有位向左移动,......XOR和ROL/OR编码经常被恶意代码开发者用来混淆像URL这样的字符串。[...]”(上述内容摘自Didier Stevens的博客)

  1.png

利用XORSSearch处理经过编码的二进制文件

一旦运行,xorsearch就会提供许多偏移量,使我们有更大的机会发现控制权的变化情况。换句话说,如果我们从这些偏移量处运行shellcode的话,可以避免执行未对齐的指令。这时,您还可以借助于另一款号称ShellCode调试专家的软件:scDbg。运行该软件后(下图显示了其GUI),你需要从xorsearch.exe给出的偏移量处运行模拟器,就本例来说,该偏移量为0x2c74c。在此,建议勾选“Unlimited steps”功能,这样的话,模拟器就能够在不停止shellcode的情况下进行跟踪;同时,我们还建议勾选“Reporting Mode”,这样你就可以在执行结束时看到一个摘要视图。

1.png

在偏移量0x2c74c处运行scDbg。

运行结果如下所示:  1.png

执行Shellcode

有时候,攻击者会使用不同的系统调用:ExpandEnvironmentStringsW,它并非scDbg所hooked的函数。在这种情况下,您可能需要打开“刚刚转储的文件”,并通过将字符串ExpandEnvironmentStringsW替换为字符串ExpandEnvironmentStringsA来修补二进制文件。完成该操作后,将shellcode的修补版本重新加载到scDbg中并重新运行它,这样能获得更好的结果。

IoC:

· b98b7be0d7a4004a7e3f22e4061b35a56f825fdc3cba29248cf0500beca2523d (mal1.doc)

· eac70cabccac5b0bd493111ec238f287e129923c27d68e5bb126d2442a4bf8da (转储的二进制文件)

· //yatesassociates[.co[.za/documentato/MLY.exe (下载地址)

Office文档中的加密内容

有时候,你可能会遇到加密的Office文档。如果运行oleid,这时会看到“Encrypted”对应的值为“True”。对于这些使用VBA加密的OLE文件,我们是无法访问其原始内容的,从而难以逆向/研究/了解这些内容的作用。在这种情况下,你需要找出加密密钥,并对内容进行解密。

  1.png

OLEID表明内容已加密

幸运的是,MACRO代码进行了加密处理后,运行这些代码的客户端肯定知道如何解密,否则的话,它们也无法运行这些MACRO代码。

这种保护措施乍一看似乎比较可靠,但详细分析后发现,用于加密文档的密钥,并不是用户输入的密码(或其哈希值),而是存储在MS Excel程序代码中的一个固定密钥。这个密钥是由密码“VelvetSweatshop”生成的。这真是太搞笑了!大家可以尝试用该密码来保护一个MS Excel文档(或者用这个密码打开一个文档)。最令人惊讶的是,打开文档根本就不需要密码。

对于这个问题,我们可以借助于一个好帮手,即msoffcrypto-crack.py。  

1.png

寻找“隐密”的微软加密密码

一旦找到了“加密密钥”,你可以直接解密文件内容了(使用同样的工具,即msoff-crypto-crack.py),以明文方式保存,然后,运行oledump.py处理该文件。这时,你应该可以看到正常的对象内容了。就本例来说,多用了一个Equation Editor。让我们转储它(oledump.py)。  

1.png

没有VBA宏的Equation Editor

python3 oledump.py -s B2 -d cracked.xlsx > out_b2.bin

现在,让我们看看xorsearch.exe是否找到了常见的控制流模式!如果找到了的话,请使用scDBG.exe进一步分析。

  1.png

使用XORSearch搜索二进制代码

IoC:

· 3f3c2a4cb476c76b8bf84d6d2b0ee1a0a589709ccc69e84ffe6b2afd2dadbb39 (XLS文件)

· 03u.ru (D&C2)

带有VBA宏的Office文档

分析恶意Office文档时,经常会文档中遇到VBA宏。这时,我们可以通过运行Oledump.py,检查各种VBA内容(宏所在的M标签),并将重点放在最“胖”的内容上。换句话说,强烈建议从内容较多的地方开始着手(因此,就下图来说,我们可以从A11处着手调查,因为它的字节数最多),因为这些地方最有可能找到我们感兴趣的IoC。

 1.png

oledump显示的VB宏

在这种情况下,olevba能够给我们带来很大的帮助。该工具可以模拟VBA引擎,从而运行宏脚本,执行的结果如下图所示。

1.png

VBA仿真程序

这个仿真引擎会一直运行,直到一个已知函数到达终点为止。例如

IoC:

· 84a07333851ed300b34b34a026a58636844861e2d5265f2faabddddf05815f21 (direct.07.20.doc)

· detayworx[.com/_vsnpNgyXp84Os8Xh.php (Dropper)

Office Excel Macro 4.0

有时你会打开一个恶意的MS Excel电子表格,但是里面并没有包含MACRO代码。这种技术为攻击者提供了一种简单可靠的方法,使他们能够在目标网络上站稳脚跟,因为它只是滥用了Excel的合法功能,并不依赖于任何漏洞或exploit。它只是一个“古董级”的功能特性(几乎有30年历史),只是近几年才开始被攻击者所利用。关于这种类型的攻击的缓解措施,可以访问这篇文档。  

1.png

没有MACRO代码的Excel文档!

通过运行OLEVBA,你就可以检查它是否发现了我们感兴趣的东西。就上图来说,它指出该文档应用了XLM Excel 4。当然,用于去混淆并进行分析的工具有许多,有的功能很简单,有的则非常复杂。根据我的经验,XLMDeobfuscator用起来非常顺手,所以,下文中我们将以它为例进行介绍。

为了对XLM中的宏代码进行去混淆,可使用下列技术:

1.png

 OLEVBA.py发现MACRO 4.0

在未启用宏的情况下打开恶意文件,打开宏编辑器,复制以下脚本并保存,然后,在启用宏的情况下重新打开该文件。

  Sub ShowAllSheets()
    Dim sh As Worksheet
    For Each sh In ActiveWorkbook.Sheets
    sh.Visible = True
    Next
    End Sub

如果由于宏被执行而无法打开恶意文件,并且也无法控制执行流程的话,则可以打开另一个工作表,打开VBA编辑器,并按以下方式直接用VBA“导入”恶意文档:

Public Sub Convert_XML_To_Excel_From_Local_Path()
    Dim xml_File_Path As String
    Dim wb As Workbook
   
    'Load XML Data into a New Workbook - Code from Officetricks.com
    Application.DisplayAlerts = False
     xml_File_Path = "c:/FileToOpen.xlm"
     Set wb = Workbooks.OpenXML(Filename:=xml_File_Path)
 
    'Copy Content from New workbook to current active Worksheet
     wb.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets(Sheet2).Range(A1)
    
     'Close New Workbook & Enable Alerts
     wb.Close False
     Application.DisplayAlerts = True
End Sub

这样,您就可以看到隐藏的工作表或隐藏的单元格了。这里还有一个小技巧,为了快速找到有内容的单元格,可以搜索=,具体如下图所示。

现在,通过选中左上角的方框(即下图中BG35344),就可以看到哪里是起点。在这个文件中,Auto_Open是第一个被调用的函数,你可以在那里找到它的引用。然后,您可能会看到使用了两种主要格式:FORMULA和GOTO。  

1.png

揭开隐藏的Excel 4.0 Macro的神秘面纱

这时,您能够以受控的方式执行MACRO 4,从而为XLM去混淆。为此,您可以删除最后一个GOTO,这样就不会把控制流交给去混淆的MACRO,而是停止它们(用HALT代替最后一个GOTO),这样,就可以看到用于该工作表的、经过去混淆处理的代码了。

IoC:

· d864b4da58253cba29a8106b0727e81852a181f3ac59ec7dfb9b9dee5931b7cc (W2_tax.xls)

· 5.182.210.133/get.php (Dropper)

由Excel解读的.CSV文件

有时你可能会发现许多.csv文件。这时,可以将其导入到Microsoft Excel中,使其变成“真正的”的Ole文件。事实上,通过OleDump处理攻击者精心制作的csv文件时,有可能会发现一些有趣的事情,比如CSV文件中包含VBA代码或Object。例如,对于sha-256为d5db2034631e56d58dffd797d25d286469f56690a1b00d4e6a0a80c31dbf119e的样本来说,你可能会发现下面的东西(如果用普通的编辑器打开该样本的话,它看上去就是一个正常的文本,并且以逗号为分隔符)。但是,如果通过OleDump打开它的话,则会找到一些可疑的东西。

1.png 

OleDump处理结果

接下来,您既可以转储代码并进行手动分析,也可以通过代码仿真器进行分析。通过对CSV运行OleVBA,你会发现许多有趣的指标(请看下图)。例如,该工具指出,一旦用Microsoft excel打开该文档,它就会调用AutoExec。此外,还有许多可疑的调用会被执行,如exec、run;此外,一些hex-base64字符串还应用了混淆技术。在这次运行中,它甚至能够解码这些的字符串,并识别IoC,如URLs和文件名。

1.png 

oleVBA分析结果

如果代码仿真器行不通的话,你还可以使用OleDump转储整个代码。一旦转储了代码,就可以通过调试器来分析代码;如果代码未经混淆处理的话,则可以直接读取。

1.png

提取的组件

IoC

· d5db2034631e56d58dffd797d25d286469f56690a1b00d4e6a0a80c31dbf119e (invoice.csv)

· omamontaggi.[it/bels.exe (Droping WB)

XLMDeobfuscator

XLMDeobfuscator是@DissectMalware开发的一款优秀工具。它可以用来解码经过混淆的XLM宏(也就是Excel 4.0宏)。它利用内部的XLM模拟器来解释宏,而不需要完全执行代码。它同时支持xls、xlsm和xlsb格式。

1.png

XLMDeobfuscator

此外,OleDump插件_biffis能够忽略每一个Excel单元格,并找到函数和公式。通过插件选项-x,它能够显示隐藏的宏XLM;而使用了插件选项-f,该插件将通过解释编码(如十六进制和base64)并打印相关字符串来找出外部链接。

oledump.py -p plugin_biff --pluginoptions "-x"

IoC

· 1e194edbb1f28b9ecc4dc6a9a1e289d1c404470724f5fb14dd01312ed75bc298 (File_457366.xls)

· p://45[.11[.183[.78/6f04e0be46qb4Zc[.php (Dropper)

本文翻译自:https://marcoramilli.com/2020/08/24/how-to-reverse-office-droppers-personal-notes/如若转载,请注明原文地址:
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务