发贴者 詹姆斯HAUGHOM和斯特凡诺ORTOLANI ON 2020年6月2日
Excel 4.0(XL4)宏在攻击者中越来越流行,因为安全供应商正努力发挥追赶作用并正确检测它们。该技术为攻击者提供了一种简单可靠的方法来在目标网络上立足,因为它仅表示对Excel合法功能的滥用,并且不依赖于任何漏洞或漏洞利用。对于许多组织而言,将其列入黑名单并不是一个可行的解决方案,并且标记这些样本的任何签名必须足够精确,以免触发合法使用此功能的文件。由于这是具有30年历史的功能,去年才被攻击者大规模发现和利用,因此许多安全供应商目前没有适当的检测机制来触发这些样本,并无法为这种类型建立可靠的签名。进攻不是一件容易的事。
Lastline威胁研究小组已经观察到了数千种利用此技术的样本,并且在过去5个月以上的时间内一直在监视和跟踪趋势。拦截这些样本已提供了宝贵的数据,可用于建立统计数据,识别趋势,发现异常值以及跟踪活动。我们能够将样本聚类为不同的波,这清楚地显示了该技术如何随着时间的发展而变得更加复杂和回避。由于XL4宏代表了某种“未知领域”,恶意软件作者和安全研究人员每天都在发现新发现,从而推动了该技术的发展,并确定了逃避检测和混淆其代码的方式。这些攻击者采用的技术包括逃避自动沙盒分析和基于签名的检测的方法,以及由恶意软件分析师和反向工程师执行的动手分析。如前所述,这些技术似乎在波浪中浮出水面,每个新波浪都在前一个波浪或群集的基础上引入新技术。我们在2月观察到的第一波样本中使用的技术仍在今天发现的样本中得到利用。在此博客文章中,我们将分解发现的每种新技术,并解释每种显着,有效或无效的原因,从而详细描述每个波动和集群。我们在2月观察到的第一波样本中使用的技术仍在今天发现的样本中得到利用。在此博客文章中,我们将分解发现的每种新技术,并解释每种显着,有效或无效的原因,从而详细描述每个波动和集群。我们在2月观察到的第一波样本中使用的技术仍在今天发现的样本中得到利用。在此博客文章中,我们将分解发现的每种新技术,并解释每种显着,有效或无效的原因,从而详细描述每个波动和集群。
执行摘要
通过对数千个样本进行聚类并对每个聚类进行深入的代码级分析,我们可以直观地看到并见证此威胁的演变。我们发现,大约每1-2周就会出现一波新样本,每个样本都比上一个样本更易懂和复杂。所有这些浪潮似乎都建立在其前身的基础上,通过在已使用的技术之上引入新技术来扩展其功能。这些簇的大小表明,这些样本是通过某种工具箱或文档生成器生成的,因为这些样本彼此之间非常相似,以至于它们之间没有关联。逃避例程和模糊处理是主要的发展领域,因为这些示例的基本功能保持不变-下载并调用更持久的有效负载,例如EXE或DLL文件。
介绍
Excel 4.0或XLM宏是Microsoft Excel的一项具有30年历史的功能,在恶意软件作者和攻击者中,尤其是在过去一年中,这种功能已得到越来越多的欢迎(请参见图1)。攻击者积极地滥用这种类型的宏代码并将其武器化,以提供其他更持久的恶意软件。使这项技术有效的原因是,就像更流行和最新的VBA宏一样,Excel 4.0宏是合法Excel功能的组成部分,因此永远不会被禁用,因为它们经常用于良性商业目的。例如,在许多电子表格中都使用常用的SUM函数来获取一系列单元格的总和。这种类型的宏通常称为“公式”。
该技术之所以有效,是因为尽管这是一项旧功能,但安全供应商可能尚未设计出针对此类攻击的检测技术。最重要的是,由于经常出于合法目的使用此功能,因此组织可能永远无法禁用Excel中的此功能。因此,恶意软件作者现在有了另一种可靠的初始访问方法,因为这些恶意文档已通过电子邮件附件成功发送。
问题
安全供应商很难检测到这种威胁,这可能是由于没有适当的解决方案来正确评估和解析这些宏在Excel文档中的存储格式和结构[2]。这些宏非常简单明了,易于创建,因此易于修改以绕过基于签名的检测。宏也很健壮,并提供了可用于逃避分析的各种功能,例如混淆最终的有效负载,修改控制流或通过特定的主机环境检查来检测自动化的沙箱分析。该技术可能仍将保持相关性,并加入其后继者(即VBA宏)作为一种广泛使用的技术来对文档文件进行武器化。该技术不依赖错误,也不是漏洞利用,而只是滥用合法的Excel功能。这些宏可以设置为自动执行,并且如果启用了宏,则在打开工作簿后立即运行。由于这是一个未知的领域,恶意软件的作者和研究人员仍在探索将这种攻击技术武器化的可能性和功能的深度。
贡献
Lastline的威胁研究小组已经对五千个XL4样本进行了聚类和分析,因为我们已经跟踪和监视了五个月以上的威胁。我们能够将这些样本聚类并分类为清晰的波浪或趋势。这些示例的大部分似乎是使用相同的工具箱或文档生成器创建的,因为每个wave都是在先前的基础上构建的,每次迭代都增加了新功能。此附加功能通常由更复杂的混淆或规避例程组成。这些第1阶段电子表格示例依次提供了各种商品恶意软件家族,例如Danabot,ZLoader,Trickbot,Gozi和Agent Tesla。
进化时间表
下面的时间轴(图1)显示了这些宏在过去四个月中的发展情况。每个区块代表一个重要的波浪或星团,展现出我们尚未大规模观察到的新行为和新功能。我们将在以下各节中详细介绍每个群集
图1: Excel 4.0宏武器化的演变。
进化分解
丛集1:〜2020.02.14
这组样本是我们观察到的第一波重要武器化XL4文档。这些样本都包含一个隐藏的宏表,其中包含有效负载,还有一个图像(请参见图2),该图像用于社会工程用户以启用宏代码。此集群中引入的技术将被随后的几乎所有浪潮所利用和建立。
取消隐藏的宏表会显示有效负载(图3),该负载不会以任何方式混淆。
规避程序:
通过要求用户与消息框进行交互来执行沙箱检查(图4和5)。如果在消息框中单击“确定”,则将执行规避例程中的下一个检查,否则宏将退出。电池配方:
图4:首先检查逃避程序。
2.再次使用GET.WORKSPACE函数[1]开始其他沙箱逃逸操作(请参见图6)。此功能将提供有关正在查看Excel电子表格的环境的信息。两项检查分别是鼠标功能(常数为19)和音频功能(常数为42)。如果不满足这两个条件之一,则恶意软件退出。
3.开始对受害者的操作系统进行另一次检查(图7)。这是通过检查GET.WORKSPACE调用的返回值中是否存在字符串“ Windows”来执行的:
可通过Web查询下载其他有效负载(单元格公式)(图8和9)。这些Web查询存储在DCONN(数据连接)记录类型[3]中。
图8: DCONN记录/ Web查询的十六进制转储。
图9: Excel中的Web查询/数据连接。
来自该网络连接的数据将被写入映射到名称fgsb4g的单元格(在图8的十六进制转储底部显示),Excel名称管理器显示的范围为$ Y $ 100:$ Y $ 103(图10)。
图10:显示目标单元的名称管理器。
然后,在两个单元之间创建一个小循环,以检查有效负载是否已成功下载(图11)。这些单元格正在检查单元格Y103中任何位置的字符串“ LOS”。这是因为在下载的单元格公式有效负载的末尾,恶意软件会调用= CLOSE()。
图11:检查下载是否成功
丛集2:〜2020.02.26
2月的第二个群集通过在白色背景上使用白色字体(在图12中以红色显示)来隐藏有效负载并在工作表周围散布代码,从而增加了较小的混淆。这使得遵循控制流和识别重要的代码块对于手动分析更具挑战性,但是对于动态分析不会造成重大问题,并指出第一个集群包括了逃避动态分析的重大尝试。
图12:分散的负载(最初负载是用白色字体写的)。
类别3:〜2020.02.27
该集群保护本身比前簇的,因为它隐藏了有效载荷在veryhidden宏表而不是隐藏的宏表(注意,这两种类型的宏表的是Excel中记载的功能)。这意味着不能通过Excel中的传统方法取消隐藏宏表,而是必须修改二进制文件中的特定标志(请参见图14)以取消隐藏和查看工作表的内容。
一旦被隐藏,该宏似乎将通过执行其他来宾OS环境检查而扩展到集群1的动态分析规避例程中(图13)。这两项新检查还使用了前面提到的GET.WORKSPACE函数,但是这一次它们试图识别工作空间的高度和宽度。此检查确保该群集中工作空间点的显示大小(类似于像素)大于最小值770×380。
图13:检查工作区显示的大小。
群组4:〜2020.03.06
该集群引入的新技术包括建立指向三个不同文件的路径,其中一个是VBS脚本,这是我们在以前的集群中没有看到的技术。这些路径(图15)将由下载的公式(有效负载)使用,使用与前面描述的相同的DCONN Web查询。
图15:附加代码–文件路径。
另外,不是使用FORMULA.FILL来在表上移动下载的有效负载,而是使用FORMULA(图16)。此较小的更改可能会规避以前使用的FORMULA函数的基于签名的检测。
图16:用FORMULA代替FORMULA.FILL
类别5:〜2020.03.10
这个集群是我们观察到大量使用CHAR函数的第一批样本(图17)。此函数将整数转换为其相应的ASCII字符。例如:CHAR(0x41)解析为“ A”。解析这些字符,然后一次将其串联起来以构建最终的有效负载。这是一种跨越多种文件格式和语言的常见混淆技术,但这是我们第一次看到Excel 4.0宏中使用的技术。
图17: CHAR函数。
在同一时间范围内,我们还观察到了第一批大样本示例,该示例通过CALL函数(图18)而不是先前提到的DCONN下载方法直接调用WinAPI(URLDownloadToFile),该方法很可能会用于规避先前版本的静态检测。下载技术。
图18: WinAPI用法– URLDownloadToFile。
组6:〜2020.03.30
该群集的新增功能包括检查注册表中是否存在非默认的Excel Security设置,以防止可能的动态分析,以及使用WinAPI来注册DLL以执行第二阶段有效负载。图19中的代码显示将生成本地实用程序reg.exe(请参见图20)以提取特定的注册表项,并将其写入磁盘上的注册表文件( .reg)。
图19:反混淆的有效负载– reg.exe。
然后从字节215:470中读取此注册表文件( .reg)(请参见图21)。此读取的目的是查找并存储恶意软件将检查的与Excel Security相关的注册表设置。
图21:宏读取注册表文件。
在这种情况下,这似乎是对“文件验证”设置的检查;图22显示了示例的十六进制转储(切出255个字节)。
图22:文件验证设置的十六进制转储。
然后,宏会检查是否设置了安全性设置,如图23所示。
图23:检查标志是否已设置。
群集7:〜2020.04.01
该集群期望在特定的一天执行,因为它在去模糊例程的一部分中使用了当月的当前日期。硬编码的整数(图24)将从该月的当前日期减去,然后将差值传递给CHAR函数。这些样本是在4月10日创建的,预计将在同一天运行。我们没有在集群之外使用太多这种“日间”技术。这可能是由于攻击者在这一波攻击中不太成功,可能是因为受害者在预定执行日期的第二天检查了电子邮件(打开文档)。
图24:要解码的硬编码整数。
每个硬编码的整数都从当月的日期中减去7(图25),然后传递给char。
图25:获取月中的某天并添加7。
图26显示了去混淆例程的一部分,其中A列中的值被解码并连接为一个字符串。
图26:去模糊例程。
如果在每月的错误日期运行,则XL4宏将不会进行反模糊处理并正确执行(图27显示了反模糊处理失败的示例)。
图27:模糊处理失败(在错误的日期执行)。
用适当的值在Python中模拟此行为将显示预期的去模糊处理(请参见图28)。
图28:模拟在Python中实现的反混淆例程。
在工作表中硬编码正确的值(日期)可以使代码正确地去模糊化,如图29所示:
图29:预期的去混淆负载。
群组8:〜2020.04.14
与之前的群集一样,该群集也必须在特定的一天执行,但是添加了新的检查以查询字体大小和行高(图30)。GET.CELL用于这两项检查,单元格A1(19)中文本的字体大小以及行高(17)。这可能会检查电子表格是否已被篡改。
图30:获取单元格字体大小和行高。
这些操作的结果将写入单元AA181,该单元将在反混淆例程中重复使用。如果这些尺寸与恶意软件作者所期望的不完全相同,则有效负载将无法正确消除混淆,并且不会进行第二阶段下载。
类别9:〜2020.04.25
在此群集中引入的新技术使用了数十个独立的宏表(图31),而所有以前的群集仅使用一张或两页。我们认为,这是为了使样本与良性工作簿融合在一起,后者比恶意样本具有更多的宏表。它也可以用来减慢恶意软件分析人员的速度,他们必须确定20多个宏表中有效负载的位置(图32)。
图31:隐藏的宏表
另一个有趣的特性是,恶意软件作者将其命名为Auto_Open22(图33),而不是用于自动执行有效负载的典型Auto_Open名称(图33),该名称仍作为常规Auto_Open例程执行。
图33: 名称管理器中的Auto_Open22
群组10:〜2020.05.04
第一次,我们观察到隐藏名称被利用来隐藏大型群集中Excel 4.0宏代码的起点。这可能是试图阻止分析师和自动化解决方案进行静态解析和分析的尝试。图34显示了名称管理器如何不显示名称。
图34:由于隐藏而没有名称。
这是通过将Lbl记录中的fHidden位设置为已定义名称的偏移量0x0来实现的。在偏移量0x15处是名称字段,其中Auto_Open的常数为0x1。
该值0x21设置了fHidden和fBuiltin标志(图35)。
图35:置位标志的二进制视图。
翻转隐藏的位,并在此记录的末尾将一个字符(g)添加到Name的第一个字节后,该名称便可见(图36)。
图36:“隐藏的名称”现在显示在“名称管理器”中。
该集群还利用了一个有趣的去模糊例程,该例程与我们在先前集群中看到的有所不同。尽管我们已经通过GOTO和RUN函数看到了控制流混淆,但是该集群增加了一个为单元格设置值的步骤,供以后在例程中使用(图37):设置单元格值,跳转到下一个代码块,重复。
图37:传递控制流和设置有效载荷的公式。
群组11:〜2020.05.11
该集群通过检测窗口活动引入了一些有趣的规避技术。这些宏试图通过GET.WINDOW()的三种不同用法来识别Excel窗口是隐藏还是最大化(图38和39)。如果未最大化Excel窗口,则恶意软件将在表现出任何有趣的行为之前退出。这似乎是一种反分析或沙盒规避技巧,因为在这些环境中可能无法最大化Excel窗口。
图38:逐步执行规避例程– GET.WINDOW。
此恶意软件中引入的另一种逃避技术是确定恶意软件是否正在调试/分析。这是通过检查宏是否以单步模式运行(图40)来实现的,这是一种调试和单步执行Excel 4.0宏代码的方法。如果检测到单步模式,则恶意软件将退出。
图40:宏检测单步模式。
群组12:〜2020.05.19
几乎所有前面提到的集群在其去模糊例程期间都大量利用CHAR函数,以逐个字符地构建最终的宏有效负载。该群集通过使用MID函数而不是CHAR函数来更改原始技术。该MID功能用于通过提供一种用于从哪里开始的索引号,以及文本到提取物的长度,以从字符串中提取一个子(文本)。图41显示了MID函数,该函数用于为B列中的每个字符串提取一个子字符串,并将其写入C列。
图41:MID功能示例。
该函数的实例被串联并传递给FORMULA函数(图42),以便在运行时对最终的有效负载进行模糊处理。
图42:传递给FORMULA的MID函数的返回值。
该集群还利用了FILES功能(图43)。此功能用于获取目标目录中的文件列表。恶意软件作者使用FILES函数和ISERROR来检查下载是否成功(图44)。
图43:FILES函数返回错误或文件列表。
图44:检查下载是否成功。
在下载下一阶段之前,该恶意软件首先通过连接到microsoft.com来检查其是否可以访问Internet(图45和46),然后检查所请求的下载是否成功。
图45:测试Internet连接–单元CX29183包含URL
如果下载成功,则宏将重复此过程以获得下一个恶意软件阶段,然后将其调用。
结论
Excel 4.0宏继续向攻击者证明其价值,提供了一种使他们的代码在目标上运行的可靠方法。在许多环境中,出于合法的商业目的,带有宏的Excel工作表被大量使用以禁用或列入黑名单,因此,随着攻击继续发展,分析人员和安全供应商将不得不习惯于持续更新工具和签名。Excel 4.0宏为恶意软件作者提供了几乎无穷无尽的可能性列表,并且它们在不断发展,并且每天都在变得越来越复杂。
附录
参考文献
[1] https://d13ot9o61jdzpp.cloudfront.net/files/Excel%204.0%20Macro%20Functions%20Reference.pdf
[2] https://www.loc.gov/preservation/digital/formats/digformatspecs/Excel97-2007BinaryFileFormat(xls)Specification.pdf
[3] https://docs.microsoft.com/zh-cn/openspecs/office_file_formats/ms-xls/cd03cb5f-ca02-4934-a391-bb674cb8aa06
国际奥委会
下面是上述每个集群的样本选择。
集群1
032b584b85e8335f83c751dd9c70121eb329bc0830f908b7e97527e8a409ba93ec6258bdc7943b2426b7691ba5bac30670790f2af8b67aec3760972921deaf5c2adeb0ad3dae2048138c403691c3e71e17d62231f607ea
集群2
0b01f4a1ca08c0136d84e3ec91af8565797844513db463c73a62b8bf0b6ab388884c6f3ad3a91c2f2df8277a9ac5869fa7d5a5838fe6ab428207cf9cBb8d0af63f837e7f54d530d909feded623399a1bC1217a7a59dc307089901556985239039cb89cbb
集群3
0b80a32171c3f1b21015e880c7d3eb216eeff10338d8c573b901bb0bf1cd1cc62945521923630e584a57bf593c6dc515a869b0facc4e1f2e3f8e85e12d8b6113d858f988977a82af82ca649963915ff71f66200bd820646e74b56ed8493794861eebc479
集群4
15c3d132b4bc52f32541f6c7cb307467b7b85ee538d8c573b901bb0bf1cd1cc62945521923630e584a57bf593c6dc515a869b0facc4e1f2e3f8e85e12d8b6113d858f988977a82af82ca649963915ff71f66200bd820646e74b56ed8493794861eebc479
集群5
13d35c6a71ee02362905982cfdd4f19ea7971fb052bc0b0ca4aa88000220627d150b4996e4a2bdc0768d376f9ee85803940810a0d538c0ff4bd3ec4dB547d9eb47e2977e4f85e92e62e9271875f3654bD724559f4e1be192b8e60d1076ba6f00a76a7910
集群6
Ced11986de75f108b631ffa8165108fb14b81be5909196df72ba3f9e418379c184a435a7cad870e78ef757ad7ed52c7da069124bbbb0aba3f793a1091e42150111e8347da68e7363c1545384609c62dbEb71e2f83bfc
集群7
2bfc5c38fe25a095161716c17d4828348130ccc01fa19f7cf4f37966e131df657dc84b9372fa4e4e1f9e7110a0b58072466c0d5bece253ea7e6f74e11c10fe44429a1cf0b875aef63f61469006f596820b55491e45c50bde473e84c329127945cb20133f
集群8
Bd34811e40ac4ac351ace6c117161904b2e08a12Bc152b1054983a5db6361ce34e246f2fd36e8f82B528c29632b8e517fbfcf317711636b1b9b874a8B6a2634e82a206c8759616d5be4c6913400bf9e9f2e9b2e9b3e3b4e9b3b3b4e9b3b6e3b3b3c5b4e9b3b6b1b1b1b1b4e9b1b1b1b1b人
集群9
1953ac3dabc8affd223277564b4c0d9ac1332a9b
集群10
F377028e7946a812948a5c7ba44e954c8fbdfe4aF1459d32a711cd5e3a33b31334be28ed5ef9ed3dDe942054e5a5b9b011acf04e3de492d951705b28D53200f073da1091fb7263644d8eec9c4d06396
集群11
68bcdbfd523c1288487178f0154a272eb316b0fb59c4702ac6d89d244dc40d56ec6c6491507da8c851d1d14772d3087b426e74d91c977f33325c20e011f71766d280e26763742573fae133a51dbbca8b8d15ea7926f2fcfeca8c2df4fc720d9fb428ca9e
集群12
0339b41fe3dc92a1e95779cc5e3ac2b0fff0f48e198d3a4bc0b8af702a59cfab02f86476a5fcd5b091e0eb52ff166781b795dda55ff76363d414685689ae64f1a7db8dd4bd24daf587206c50c942d09587a87eb02940daa8a09e821d439a60e1ea01c039
本文为翻译转载 -
地址:https://www.lastline.com/labsblog/evolution-of-excel-4-0-macro-weaponization/