导语:介绍 从2018年1月到2018年3月,通过FireEye的动态威胁(Dynamic Threat)情报,我们观察到攻击者利用最新的代码执行和持久性技术,将基于宏的恶意文档传播给亚洲和中东的个人。 我们把这一活动归因于“TEMP.Zagros”,是一个伊朗关系行动者
介绍
从2018年1月到2018年3月,通过FireEye的动态威胁(Dynamic Threat)情报,我们观察到攻击者利用最新的代码执行和持久性技术,将基于宏的恶意文档传播给亚洲和中东的个人。
我们把这一活动归因于“TEMP.Zagros”,是一个伊朗关系行动者,自2017年5月起就一直活跃着。该行动者从事的是在中亚和西南地区的政府和防御实体进行大量的网络钓鱼攻击。网络钓鱼攻击电子邮件和附加的恶意宏文件通常都包含地缘政治主题。一旦被成功执行,恶意文档就会安装一个我们跟踪的POWERSTATS后门。
在分析这些文件时,一个更有趣的观察是重用了最新的AppLocker旁路,以及用于间接代码执行的横向移动技术。横向移动技术中的IP地址被本地机器IP地址取代,以实现系统上的代码执行。
活动时间表
在该恶意活动中,威胁行动者的战术、技术和程序(TTPs)在一个月后就改变了,他们的目标也是如此。图1显示了此钓鱼活动的简要时间轴。
图1:最近观察到的钓鱼攻击活动时间轴
攻击活动的第一部分(从2018年1月23日到2018年2月26日)使用了一个基于宏的文档,删除了一个VBS文件和一个INI文件。INI文件包含Base64编码的PowerShell命令,该命令将通过使用wscript.exe执行的VBS文件生成的命令行,用PowerShell进行解码和执行。流程链如图2所示。
图2:攻击活动第一部分流程链
调用PowerShell来解码INI文件中Base64编码的PowerShell命令并执行该命令,而该命令早些时候已被宏删除。VBS通过MSHTA调用PowerShell的一个例子如图3所示。
图3:VBS通过MSHTA调用PowerShell
攻击活动的第二部分(从2018年2月27日到2018年3月5日)使用了宏的一种新变种,该变种不使用VBS进行PowerShell代码执行。相反,它使用了最近公开的一种利用INF和SCT文件的代码执行技术,我们将在后续内容中对此进行解释。
感染载体
我们相信,本次活动中所有攻击的感染载体都是以电子邮件附件形式发送的基于宏的文档。我们能够获得的一封电子邮件是针对土耳其用户的,如图4所示:
图4:包含基于宏的文档附件的钓鱼攻击电子邮件
我们观察到的恶意Microsoft Office附件似乎是专门为四个国家的个人用户精心设计的,这四个国家分别是:土耳其、巴基斯坦、塔吉克斯坦和印度。下面是四个例子,在文末攻击指标部分有一个完整的列表。
图5:来自巴基斯坦国民议会的文件
图6显示了一份来自土耳其武装部队的文件,内容是用土耳其语书写的内容。
图6:来自土耳其武装部队的文件
图7显示了一份来自银行技术发展与研究研究所(由印度储备银行建立)的文件。
图7:来自银行技术发展与研究研究所的文件
图8显示了用塔里克语写的来自塔吉克斯坦共和国内务部的一份文件。
图8:用塔里克语写的,来自塔吉克斯坦共和国内务部的一份文件
这些基于宏的文档都使用类似的通过命令和控制(C2)服务器的代码执行技术、持久性技术和通信技术。
通过INF和SCT间接代码执行
这个利用INF和SCT文件的脚本代码执行技术,在2018年2月被发现并记录下来。在最近的观察活动中,威胁组织——TEMP.Zagros——使用以下技术武装其恶意软件。
Word文档中的宏将三个文件放入硬编码路径:C:\programdata。由于路径是硬编码的,所以上述文件只能在操作系统Windows 7及以上版本执行。下面是三个文件:
· Defender.sct——基于scriptlet文件的恶意JavaScript。
· DefenderService.inf——用于调用上述scriptlet文件的INF文件。
· WindowsDefender.ini——Base64编码和混淆的PowerShell脚本。
在删除三个文件之后,宏将设置以下注册表键以实现持久性:
\REGISTRY\USER\SID\Software\Microsoft\Windows\CurrentVersio n\Run\"WindowsDefenderUpdater" = cmstp.exe /s c:\programdata\DefenderService.inf
系统重新启动后,cmstp.exe将被用于通过INF文件间接地执行SCT文件。这是可能的,因为在INF文件中我们发现了以下部分:[UnRegisterOCXSection]
%11%\scrobj.dll,NI,c:/programdata/Defender.sct
该部分通过INF 的DefaultInstall_SingleUser部分被间接调用,如图9所示。
图9:通过INF的DefaultInstall_SingleUser部分间接调用SCT
这种代码执行的方法是为了躲避安全产品而执行的。FireEye MVX 和 HX Endpoint Security(HX端点安全技术)成功地检测了该代码执行技术。
SCT文件分析
Defender.sct文件的代码是一个混淆的JavaScript。SCT文件执行的主要功能是对WindowsDefender.ini文件的内容进行Base64解码,并使用下面的命令行执行解码的PowerShell Script:
powershell.exe -exec Bypass -c iex([System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String((get-content C:\\ProgramData\\WindowsDefender.ini)
其余的恶意活动是由PowerShell Script执行的。
PowerShell文件分析
PowerShell 脚本使用了几个层次的混淆,以隐藏其实际的功能。除了混淆处理技术之外,它还可以在分析机器上检测安全工具,如果检测到安全工具的存在,该脚本还可以关闭系统。
其中一些关键的混淆处理技术是:
· 字符替换:字符替换和字符串反转技术的几个实例(图10)使分析变得困难。
图10:字符替换和字符串反转技术
· PowerShell环境变量:现在,恶意软件作者通常使用环境变量来屏蔽诸如“IEX”之类的关键字符串。该脚本使用环境变的量一些实例是:
· $eNv:puBLic[13]+$ENv:pUBLIc[5]+'x'
· ($ENV:cOMsPEC[4,26,25]-jOin'')
· XOR编码:PowerShell脚本的最大部分是使用单个字节键进行XOR编码,如图11所示。
图11:PowerShell脚本是使用单个字节键进行XOR编码的
在对PowerShell Script的内容进行了混淆之后,我们可以将其划分为三个部分。
第一部分
PowerShell脚本的第一部分负责设置PowerShell脚本其余部分使用的不同的关键变量,特别是下面的变量:
· TEMpPAtH = "C:\ProgramData\"(用于存储临时文件的路径)
· Get_vAlIdIP = https://api.ipify.org/(用于获取机器的公共IP地址)
· FIlENAmePATHP = WindowsDefender.ini (用于存储Powershell代码的文件)
· PRIVAtE = Private Key exponents
· PUbLIc = Public Key exponents
· Hklm = "HKLM:\Software\"
· Hkcu = "HKCU:\Software\"
· ValuE = "kaspersky"
· SYSID
· DrAGon_MidDLe = [array of proxy URLs]
在这些变量中,有一个让人特别感兴趣的变量,DrAGon_MidDLe,它存储代理URL的列表(详细信息在文末攻击指标部分的网络指标部分)将用于与C2服务器交互,如图12所示。
图12:DrAGon_MidDLe存储用于与C2服务器交互的代理URL列表
第二部分
PowerShell脚本的第二部分有能力对在系统和C2服务器之间交换的消息进行加密和解密。用于加密和解密的算法是RSA,该算法利用了PowerShell脚本第1部分中包含的公共和私有关键指数。
第三部分
PowerShell脚本的第三部分是最大的部分,具有各种各样的功能。
在分析过程中,我们观察了一个代码段,在该代码段中有一个消息用中文编写并被硬编码在脚本中,当与C2服务器连接的过程中,如果出现错误,该消息则被打印出来:
此消息的英文翻译是:“不能连接到网站,请等待龙”。
PowerShell脚本的这一部分提供的其他功能如下:
· 通过利用Windows管理工具(WMI)查询和环境变量从系统中检索以下数据:
• 网络适配器配置的IP地址
• 操作系统名称
• 操作系统的架构
• 计算机名
• 计算机域名
• 用户名
所有这些数据都是连接和格式化的,如图13所示:
图13:由PowerShell脚本检索到的连接和格式化的数据
· 通过将REGISTER命令发送到服务器,将受害者的机器注册到C2服务器。作为响应,如果状态正常,那么将从C2服务器接收一个TOKEN,TOKEN用于同步受害者机器和C2服务器之间的活动。
在发送到C2服务器时,数据被格式化如下:@{SYSINFO = $get.ToString(); ACTION = "REGISTER";}
· 截屏
· 检查安全工具的存在(在附录中详细说明),如果发现了任何安全工具,那么系统将被关闭,如图14所示。
图14:在发现安全工具时系统被关闭
· 能够从C2服务器接收PowerShell脚本并在机器上执行。有几种技术用于执行PowerShell代码:
• 如果命令以“Excel”开头,那么它就利用了Excel.Appilcation的DDEInitiate Method执行代码:
• 如果命令以“Outlook”开头,那么它就会利用Outlook.Application和MSHTA执行代码:
• 如果命令以“risk”开头,则执行是通过DCOM对象执行的:
· 文件上传功能。
· 通过在Windows注册表中设置以下键,能够禁用Microsoft Office保护视图(如图15所示):
• DisableAttachmentsInPV
• DisableInternetFilesInPV
• DisableUnsafeLocationsInPV
图15:禁用Microsoft Office保护视图
· 远程重启或关闭或清理系统的能力,是建立在从C2服务器接收的命令之上,如图16所示。
图16:重启、关闭和清除命令
· 能够在给定秒数内休眠。
下表总结了这个PowerShell脚本支持的主要C2命令。
总结
该恶意活动向我们展示了TEMP.Zagros在最新的代码执行和持久性机制技术方面的最新进展,并且他们可以快速地利用这些技术来更新他们的恶意软件。通过将多个混淆层组合在一起,它们阻止了逆向工程的过程,并试图避开安全产品。
用户可以在他们的设置中禁用Office宏,并且更加谨慎的在文档中启用宏(特别是当有提示时),即使这些文档来自看似可信的源,以此保护自己免受此类攻击。
攻击指标
宏基文档和散列
网络指标
代理URL列表(由于篇幅过长,此处仅列出几条,详见原文)
hxxp://alessandrofoglino[.]com//db_template.php hxxp://www.easy-home-sales[.]co.za//db_template.php hxxp://www.almaarefut[.]com/admin/db_template.php hxxp://chinamall[.]co.za//db_template.php hxxp://amesoulcoaching[.]com//db_template.php ……
附录
检查机器上的安全工具:
win32_remote win64_remote64 ollydbg ProcessHacker tcpview autoruns autorunsc filemon procmon regmon procexp idaq idaq64 ImmunityDebugger Wireshark dumpcap HookExplorer ImportREC PETools LordPE dumpcap SysInspector proc_analyzer sysAnalyzer sniff_hit windbg joeboxcontrol joeboxserver