导语:FireEye表示,最近APT 10针对日本媒体界发起的攻击揭示其使用了更新的策略、技术和程序(TTP)。
一、简介
2018年7月,FireEye设备检测到并阻止了针对日本媒体行业的APT 10(Menupass)活动。 APT 10是FireEye自2009年以来一直追踪的中国网络间谍组织,他们有针对日本实体的历史。
在此攻击活动中,该组织发送了包含恶意文档的鱼叉式网络钓鱼电子邮件,用于安装UPPERCUT后门。这个后门在安全社区中以ANEL而闻名,直到最近它才有了beta或RC(候选版本)。本文将讨论我们在此后门的多个版本中观察到的更新和差异。
二、攻击流程
攻击始于Microsoft Word文档,其中包含附加到鱼叉式网络钓鱼电子邮件的恶意VBA宏。虽然恶意文件的内容不可读(见图3),但其日文标题与海事,外交和朝鲜问题有关。表1显示了UPPERCUT的IoC。
表1:UPPERCUT IoC
对于朝鲜的诱饵文档而言,一个具有相同标题的新闻文章随时可在线获取。同样值得注意的是,在危地马拉的诱饵中,攻击者使用了日语中危地马拉的不寻常拼写。Google搜索相同的拼写,最高结果引导我们进入了2018年8月举行的危地马拉大使讲座活动的网页。图1显示了活动页面的屏幕截图。
图1:危地马拉大使讲座活动的网站
图2为显示诱饵文档的宏。在此函数的底部,可以看到与图1中的联系信息相匹配的可读文本。因此,对拉丁美洲问题感兴趣的人可能是此次行动的目标。
图2:显示诱饵文档的宏
最初的Word文档受密码保护,可能是为了绕过检测。输入密码(在电子邮件正文中提供)后,将向用户显示一个文档,该文档将请求用户启用恶意宏,如图3所示。
图3:诱饵文件
图4显示了恶意宏执行时会发生什么。
图4:安装UPPERCUT的宏
执行工作流程如下:
1.宏将三个PEM文件padre1.txt,padre2.txt和padre3.txt释放到受害者的%TEMP%文件夹,然后将它们从%TEMP%复制到%AllUserProfile%文件夹。
2.宏使用以下Windows certutil.exe命令对已释放的文件进行解码(certutil.exe是一个合法的内置命令行程序,用于管理Windows中的证书):
3.宏使用可扩展存储引擎实用程序(esentutil.exe)使用以下命令创建具有适当扩展名的文件副本(esentutil.exe也是Windows中预安装的合法程序):
释放的文件包括以下内容:
· GUP.exe : GUP,免费(LGPL)通用更新程序。 GUP是Notepad ++用于软件更新的开源二进制文件。这里使用的版本是由Notepad ++进行数字签名的4.1版本,如图5所示。
· libcurl.dll: 恶意加载程序DLL
· 3F2E3AB9: 加密的载荷
图5: Notepad++ 签名的updater
4.宏启动合法的可执行文件GUP.exe。
· 可执行侧载恶意DLL(libcurl.dll),它解密并运行位于同一文件夹中的shellcode(3F2E3AB9)。
· shellcode对另一个DLL进行解码和解压缩,它是UPPERCUT的更新变体。在解码DLL之前,shellcode使用基于ntdll_NtSetInformationThread的反调试技术,该技术使线程与调试器分离,如图6所示。然后将DLL加载到内存中,并调用随机命名的导出函数。
图6:shellcode使用的反调试技术
5.宏使用Windows esentutl.exe删除最初释放的.txt文件,并将文档文本更改为嵌入消息。
完整的攻击流图如图7所示。
图7:攻击流程
一些威胁演员利用使用Windows certutil.exe解码有效载荷的技术,APT 10 继续采用这种技术。
三、UPPERCUT的演化
图8显示了UPPERCUT的更新时间表。在图中绘制了Loader的PE编译时间和dropper的创建时间(Word文档)。由于时间戳被覆盖并用零填充,因此这里没有显示较新版本中的loader的编译时间。我们无法了解UPPERCUT 5.2.x系列,但可能会在2017年12月至2018年5月期间每隔几个月发布一次小修订。
图8:UPPERCUT更新的时间表
与以前的版本不同,在最新版本中导出函数名随机化(表2)。
表2:UPPERCUT的静态特性
最新UPPERCUT样本中的另一个新功能是,如果恶意软件无法从命令和控制(C2)服务器接收HTTP响应,则会在Cookie标头中发送错误代码。错误代码是GetLastError函数返回的值,并在下一个信标中发送。这可能包括帮助攻击者了解问题,如果后门无法收到响应的话(图9)。此Cookie标头是一个唯一的指示器,可用于基于网络的检测。
图9:回调示例
早期版本的UPPERCUT在与C2通信时使用了硬编码字符串“this is the encrypt key”,用于Blowfish加密。但是,在最新版本中,密钥对每个C2地址都是唯一的硬编码,并使用C2计算的MD5哈希来确定使用哪个密钥,如图10所示。
图10:Blowfish密钥生成
例如,表3列出了解码后的有效载荷126067d634d94c45084cbe1d9873d895中的硬编码C2地址、MD5散列以及相应的Blowfish密钥。
表3:Blowfish密钥的示例
在此示例中,hxxp[:]//151.106.53[.]147/VxQG的MD5哈希值为f613846eb5bed227ec1a5f8df7e678d0。当恶意软件与此URL交互时,将选择bdc4b9f5af9868e028dd0adc10099a4e6656e9f0ad12b2e75a30f5ca0e34489d作为Blowfish密钥。如果URL的MD5哈希值与列出的任何哈希值不匹配,则将使用默认密钥f12df6984bb65d18e2561bd017df29ee1cf946efa5e510802005aeee9035dd53。
从恶意软件产生的网络流量的另一个差异是在C2通信期间已经在URL查询值中添加了编码的代理信息。表4显示了在较新版本中从后门发送到C2服务器的参数。这些是通过POST请求发送的,如图9所示。
表4:URL参数
此外,使用与以前相同的RGPH哈希算法对命令字符串进行哈希处理。新版本支持另外两个命令0xD290626C85FB1CE3和0x409C7A89CFF0A727(表5)。
表5:支持的命令
四、总结
虽然APT 10始终针对相同的地理位置和行业,但他们使用的恶意软件正在积极发展。在较新版本的UPPERCUT中,后门初始化Blowfish加密密钥的方式发生了重大变化,这使得分析人员更难检测和解密后门的网络通信。这表明APT 10有足够能力维护和更新其恶意软件。
为了缓解威胁,建议用户在其设置中禁用Office宏,而不是打开来自未知来源的文档。 FireEye多向量执行(MVX)引擎能够使用以下检测名称识别和阻止此威胁:
· APT.Backdoor.Win.UPPERCUT
· FE_APT_Backdoor_Win32_UPPERCUT