在过去的几个月里,FortiGuard SE团队一直在利用和增强Fortinet机器学习系统来检测新出现的威胁。最近,其中一台机器检测到一个异常的峰值,正是根据这个结果,我们发现了一个恶意软件活动,该活动在过去一段时间曾专门针对日本用户。
与大多数钓鱼活动一样,这种攻击从一封试图欺骗收件人打开附件的电子邮件开始,在本文的示例中,附件是一个恶意的Excel文档,其中包含恶意宏。然而,在这次调查中,我们发现了这些攻击者使用的反分析技术,以及一个Excel变量(目前没有文档记录)。
FortiGuard机器学习系统发现的异常峰值
观察到的流量主要集中在日本
攻击活动分析
该攻击由发送给收件人的垃圾邮件组成,其中邮件的上下文包含相同邮件主题的多种变体,其内容是关于发票的。
一些消息中包含某人的声明,声称他们“非常感激”收件人,奇热影视并且发件人要求对附件进行回复:
发送给收件人的垃圾邮件
另一个变体包括来自名为“MOTH”的人的四则消息,这些消息如下:
来自“MOTH”的消息变体
其他消息,比如永远感谢收件人,以及在需要时提供以.pdf文件形式提供发票的信息。
邮件附件是包含恶意宏的Microsoft Excel文件,的示例如下所示:
包含恶意宏的Excel文档
除了针对特定国家/地区之外,这次攻击引起我们注意的是Excel宏本身使用的技术。虽然这些攻击并不都是新出现的,但开发者显然在开发此攻击时非常小心。
使用的第一个技巧是典型的伪图片,ktv如上图所示。伪装的图片背后,电子表格的单元格A1实际上包含一个冗长的恶意字符串。尝试复制此字符串时,较早版本的Excel将无法处理它。
包含恶意宏和错误消息的Excel文档
进入宏本身,我们尝试了常用的分析方法。为了快速了解我们正在处理的内容,我们寻找到了最终的有效载荷,并试图简单地创建一个常规的MsgBox来查看最终的输出。但是,此操作失败,如下面的例子所示:
包含恶意宏和运行时错误消息的Excel文档
为了便于分析,我们尝试了将输出写入电子表格中的另一个单元格的方法。同样,令人惊讶的是,我们得到了一个类似的“内存不足”错误。
包含执行不同类型分析的恶意宏和错误消息的Excel文档
有趣的是,当我们试图将输出写入外部文件时,也出现了同样的问题。
事实证明,作者实际上找到了一种将反分析技术整合到文件中的方法,以防止分析人员使用他们通常使用的快速而简单的方法来消除宏的混淆。为了弄清实际发生了什么,我们需要对宏进行更仔细的检查。
检查xlXmlExportValidationFailed宏的示例
与几乎所有恶意宏一样,一旦打开电子表格,这个宏将通过调用Workbook_Open()自动启动。但是,实际上没有太多的宏检查Excel特定的变量,例如xlXmlExportValidationFailed。这样,开发者确保了宏只能在Office Excel环境中执行,这意味着如果宏仿真器不能正确地仿真特定的Excelxise变量,它们可能会失败。
在宏的整个执行过程中,在不同的位置使用相同的技巧。
此外,此宏还使用Application.International Excel属性,该属性包含有关当前国家/地区的信息以及其对Beta1()函数的调用中的国际设置。这最终会引用Excel中的xlDate变量,奇怪的是,该变量目前没有文档记录。
Excel中的Application.International文档缺少xlDate的示例
此变量很重要,至于具体原因,我下面再讲。
反仿真分析的技巧
如上面的oceran()所示,其他Excel变量用作反仿真器技巧。此外,Shell()命令需要两个参数:第一个是实际命令,第二个是窗口样式。此处的窗口样式定义为Sgn(123.67) – 1,这是一种这是表示0的一种奇特方式。因此,无论执行什么命令,该窗口都将被隐藏。实际命令由对Welcome()和westand()函数的组合调用定义。 WestAndS()函数用于对单元格A1中的上述冗长字符串进行模糊处理,而Welcome()函数则使用Beta1密钥对其进行了解密。提醒一下,Beta1项是通过使用未记录的xlDate变量通过Application.International属性访问国际设置来确定的。默认情况下,xlDate的USA值为2。但是,这个值导致了混乱,因为这个密钥不能正确地解密A1字符串。
由于我们的分析窗口很小,因此我们决定,快速的暴力攻击可能会更有效率,而不是无休止地尝试找出xlDate的实际含义。一个步长为“3”的快速FOR循环(因为脚本需要一个“Beta1 * 3”的项)被添加到宏中,试图强制执行正确的有效载荷。最后,我们的策略成功了:
解密的PowerShell流程示例
PowerShell的分析
该解密行的Beta1值与81相符,这对于标准的日语系统来说显然是正确的。解密后的有效载荷如下:
Wmic ProcEss "caLL" CrEATe "pOwERsHeLL -NONiNteRaCTI -W 1 -ExecutiOnpoL BypAsS -NoProF &( $pSHOmE[21]+$PShOME[30]+'x')( "\"sal b sal;b c Iex;b v nEw-oBject;(v Io.coMPReSSIoN.dEFlAtEStrEAM([sYsteM.Io.mEmORystrEAm] [conVErT]::fRoMBasE64StRiNg('REDACTED BASE64STRING')"\"+ ([CHAR]44).TOStRInG() + "\"[io.cOMpReSsIOn.COmPreSSiONmOdE]::DEComPrESs )|%{v iO.StREAmReADEr( `$_"\"+ ([CHAR]44).TOStRInG() + "\"[tExT.encODinG]::ASciI)}|%{ `$_.READtOeND( )})|c"\" ) "
注意PowerShell对参数的自由使用,不必指定一个完整的参数,例如“ -ExecutionPolicy”或“ -NonInteractive”。只要能理解指定的参数,即使是部分匹配也可以接受。例如,单独指定“-e”是不明确的,因为它既可以引用“-ExecutionPolicy”,也可以引用“-EncodedCommand”,因此会产生错误。这种技术可能是一种规避策略,以避免仅依赖于在命令行字符串中查找特定模式的检测引擎。
至于PowerShell的模糊处理,实际上在一个命令中嵌入了五层各种模糊处理技术。最后一层将留给读者作为练习。然而,一旦到了那里,它应该看起来像下面这样:
解密的PowerShell流程示例
在此执行另一个日语系统检查。在允许脚本继续执行之前,它将检查操作系统架构是否为ビ。ビ是片假名的字符,并且是日语的组成部分,允许转录日语中借来的或外来的单词。
该脚本大量使用了PowerShell别名和字符串连接技巧,更有趣的是,它还使用非常规变量名,特别是以数字开头的名称,这在PowerShell中是允许的。
非常规变量名示例
最后一层的作用是使用DownloadFile命令联系hxxps://berdiset.top/uploads/QuotaManager(位于俄罗斯),然后将相应的PE文件保存到$ENv:apPdAta\Outlook.srss.exe。由于时间限制,我们没有时间完成对下载文件(Outlook.srss.exe)的分析,该文件可能是BEBLOH/URSNIF变体(银行木马)。
在荷兰的分布和有趣的攻击活动
对邮件标题的调查显示,在这次活动中使用了以下IP地址:
93.147.115.90 93.58.112.48 79.11.236.101 79.11.173.200 165.51.245.201 130.0.161.134 39.45.30.114 79.7.176.43 31.197.238.214 79.3.19.107
令我们吃惊的是,多达80%的IP地址都位于一个国家——意大利。
垃圾邮件服务器的IP地址地理位置
另外两个IP地址分别来自巴基斯坦(39.45.30.114)和突尼斯(165.51.245.201),深入研究后,我们能够确定在其他活动中也看到了这些IP地址,特别是在僵尸网络示例下,考虑到传播范围和变化以及前面示例中看到的消息,这是有意义的。在我们的调查过程中,我们发现这些IP地址以前与Avalanche,Conficker,Cutwail和Quant僵尸网络以及Smokeloader和Nivdort恶意软件变体相关联。
这些计算机很可能是属于住宅用户或小型企业的计算机,它们还不知道自己受到了攻击。
荷兰和意大利的异常活动
根据我们的观测,我们发现这些攻击大部分集中在日本,和欧洲某些。但是,我们还注意到一个明显的例外,来自意大利IP地址130.0.161.134的活动,其中大量活动针对荷兰。
尽管日本是BEBLOH / URSNIF的攻击目标,但我们不确定为何荷兰会在此特定运动中名列前茅,但观察到的数据还显示,样本:[cb0b8a2c1ca33d89a2181e58a0948bd88f478a39af45d0b54c53913cd89a5aba]一直在荷兰。
命令与控制
如前所述,观察到样本07c7ec61d9e4fe3af22a80fa206a019ed490aa37a1c1f6c46c3563701adc0510进行了以下调用:
hxxps://berdiset.top/uploads/QuotaManager
它解析为我们的数据集观察到的以下IP地址: [5.188.60.133]和[5.8.88.24] ,两者都托管在俄罗斯,并且使用中国动态DNS提供商DNSPOD.com。有趣的是,在各种报告中都观察到URSNIF木马避免了运行启用了俄语或中文的操作系统的所有计算机。但是,我们不完全确定为什么最近的活动背后的参与者为何使用DNSPOD而不是动态DNS托管。
但是,有趣的是,该域名在2019年5月12日注册。我们的观测表明,涉及berdiset.top的样本在日本非常活跃。
5.8.88.24的攻击活动
有趣的是,我们之前也观察到5.8.88.24的活动,大部分攻击集中在秘鲁。我们可以从下面的图表中看到,没有任何活动,然后在2019年初突然激增。我们不知道这次活动的细节,也没有更多的细节,但注意到相关IP地址的趋势是很有趣的。
缓解措施
FortiMail或其他邮件解决方案可用于阻止特定文件类型,FortiMail也可以配置为在内部或在云中将附件发送到FortiSandbox解决方案(ATP),以确定文件是否显示恶意行为。启用了防病毒功能的FortiGate防火墙以及有效的订阅将被配置为检测并阻止此威胁。
FortiMail也可以配置为“内容撤防和重建”,以删除进入的Excel文件,Office文档和PDF文件中的脚本的所有宏,以便在进入网络之前将这些线程阻止。
运行最新病毒签名的FortiClient将检测并阻止该文件及相关文件,当前检测到此攻击中的文件为:
VBA/Agent.MUV!tr.dldr
W32/Inject.ALRRV!tr
IOC
此报告中的所有网络IOC已经被FortiGuard Web过滤服务列入黑名单