解析针对巴西用户的恶意软件及垃圾邮件行动
TRex 嘶吼专业版
FireEye实验室最近发现了几起针对巴西公司的大范围masepam(恶意软件垃圾邮件)行动,旨在传播银行***。我们将这些行动称为Metamorfo。在行动的各个阶段中,我们观察到使用多种策略和技术来逃避检测并提供恶意payload。本文中,我们剖析了两个主要的行动,并解释了其工作原理。
一、行动#1
kill链以包含HTML附件的电子邮件开始,该附件带有使用Google短URL为目标的刷新标记。图1显示了一个示例电子邮件,图2显示了HTML文件的内容。
图1:带HTML附件的恶意电子邮件
图2:HTML文件的内容
加载URL后,它会将受害者重定向到一个云存储站点,例如GitHub,Dropbox或Google Drive以下载ZIP文件。图3显示了一个例子。
图3:短URL重定向到Github链接
ZIP文件包含一个嵌入HTML应用程序(HTA)的恶意可移植PE文件。用户必须解压缩并双击感染链的可执行文件才能继续。 PE文件是一个编译成可执行文件的简单HTA脚本。当用户双击可执行文件时,恶意HTA文件被解压缩到%temp%并由mshta.exe执行。
HTA脚本(图4)包含VBS代码,该代码从hxxp:///ilha/pz/logs.php中获取base64格式编码的第二个VBS代码块。
图4:HTA文件的内容
第二阶段的VBS解码后(图5和图6),脚本从hxxp:///28022018/pz.zip下载最后一个阶段。
图5:解码的VBS的内容
图6:解码后VBS的更多内容
下载的ZIP文件包含四个文件。其中两个是PE文件,一个是合法的Windows工具pvk2pfx.exe,用于DLL加载,一个DLL是恶意银行***。
VBS代码解压缩文件,将合法Windows工具的扩展名从.png更改为.exe,并将恶意DLL重命名为cryptui.dll。VBS代码还使用随机字符串写入C:\ Users \ Public \ Administrador \ car.dat文件。这些随机字符串用于命名Windows工具,然后执行该工具。由于此工具依赖于名为cryptui.dll的合法DLL,搜索路径按顺序将在同一目录中找到具有相同名称的恶意***并将其加载到进程空间中。
在2017年第4季度,类似的masepam活动通过使用电子邮件中附带的嵌入式JAR文件而不是HTML附件来传播相同的银行***。执行时,Java代码从云端文件托管站点(例如Google Drive,Dropbox或Github)下载ZIP压缩文件。ZIP文件包含一个合法的微软工具和恶意***。
(一)银行***分析
该***与其他三个文件预计位于硬编码目录C:\ Users\Public\Administrador\。如图7所示,这些文件是:
· car.dat(给Windows工具随机生成的名称)
· i4.dt(下载相同zip文件的VBS脚本)
· id(给予主机的ID)
· cryptui.dll(恶意***)
图7:ZIP的内容
(二)持久性
在文件C:\ Users \ Public \ Administrador \ car.dat中找到的字符串被解压并用于添加注册表项Software \ Microsoft \ Windows \ CurrentVersion \ Run \ <从car.dat中获取字符串>以获取持久性,如图8所示。
图8:读取car.dat文件
该示例还在同一目录中查找名为i4.dt的文件,并提取其内容,将文件重命名为icone.vbs,并在\ Software \ Microsoft \ Windows \ CurrentVersion \中创建一个新的持久性键值(图9)运行此文件。
图9:持久性键值
该文件中的VBS代码(图10)能够重新创建整个链并下载相同的ZIP文件。
图10:VBS脚本的内容
接下来,***程序在Program Files目录中搜索几个文件夹,其中包括:
· C:\Program Files\AVG
· C:\Program Files\AVAST Software
· C:\Program Files\Diebold\Warsaw
· C:\Program Files\Trusteer\Rapport
· C:\Program Files\Java
· C:\Program Files (x86)\scpbrad
如果找到任一文件夹,则将此信息以及主机名和操作系统版本以及硬编码的user-agent“Mozilla / 5.0(Windows NT 6.1; WOW64; rv:12.0)Gecko / 20100101 Firefox / 12.0”发送到硬编码的域名,格式如图11所示。AT的值是"= <找到的文件夹列表>"。
图11:主机枚举的网络流量
该示例遍历正在运行的进程,杀死以下进程,并阻止它们启动:
· msconfig.exe
· TASKMGR.exe
· regedit.exe
· ccleaner64.exe
· taskmgr.exe
· itauaplicativo.exe
接下来,它使用GetForegroundWindow获取用户正在查看的窗口的句柄,并使用GetWindowText提取窗口的标题。将该标题与巴西银行和数字货币网站的硬编码清单进行比较。该清单非常广泛,包括主要组织和小型实体。
如果找到这些名称中的任何一个,并且浏览器是下列其中一种,则***将终止该浏览器。
· firefox.exe
· chrome.exe
· opera.exe
· safari.exe
创建文件夹C:\ Users \ Public \ Administrador \ logs \存储屏幕截图以及用户在浏览银行网站时触发的鼠标点击次数(图12)。屏幕截图不断保存为.jpg图像。
图12:恶意软件捕获鼠标点击
(三)C&C
命令和控制(C2)服务器根据文件id中的字符串进行选择:
· al -> '185.43.209[.]182'
· gr -> '212.237.46[.]6'
· pz -> '87.98.146[.]34'
· mn -> ’80.211.140[.]235'
然后,通过端口9999上的Raw TCP,启动到其中一台主机的连接。命令和控制通信通常遵循模式<| command="">,例如:
· <| dispida=""> logs> SAVE <'发送gh.txt中收集的屏幕截图。
· ——从C2向主机发送,——从主机向C2发送,保持连接处于活动状态。
· <| info="">——感染首次启动时,根据car.dat中的文件时间戳获取主机信息。
根据文件“id”中找到的字符串,分析的样本只能连接四个可能的IP地址。在进一步研究C2的相关基础设施(图13)后,就能够找到这个特定活动的潜在受害者人数。
在打开的目录中,我们能够获得与不同的活动相对应的目录。在每个目录中,我们可以找到向C2报告的受害者数量的统计数据。截至3/27/2018,数量为:
· al – 843
· ap – 879
· gr – 397
· kk – 2,153
· mn – 296
· pz – 536
· tm – 187
总结行动#1的图表如图14所示。
图14:#1行动的感染链
二、行动#2
在第二个行动中,FireEye实验室观察到电子邮件中包含指向合法域名的链接(如hxxps://s3-ap-northeast-1.amazonaws [.] com //Boleto_Protesto_Mes_Marco_2018.html)或受侵害的域名(如hxxps :// curetusu。-industria [.]site /),它使用带有短URL的刷新标记作为目标。短URL将用户重定向到托管恶意ZIP文件的在线存储网站,例如Google Drive,Github或Dropbox。图15显示了一个钓鱼邮件示例。
图15:网络钓鱼邮件示例
ZIP文件包含用AutoIt编写的恶意可执行文件(内容如图16所示)。当被用户执行时,它会将VBS文件放入随机创建并命名的目录(如C:\ mYPdr\TkCJLQPX \HwoC \mYPdr.vbs),并从C2服务器获取内容。
图16:恶意AutoIt可执行文件的内容
从C2服务器下载两个文件,一个是合法的Microsoft工具,另一个是恶意DLL:
· https[:]//panel-dark[.]com/w3af/img2.jpg
· https[:]//panel-dark[.]com/w3af/img1.jpg
这些文件被下载并保存到以下列模式命名的随机目录中:
· \<5 random="" chars="">\<8 random="" chars="">\<4 random="" chars="">\<5 random="" chars="">.exe
· \<5 random="" chars="">\<8 random="" chars="">\<4 random="" chars="">\CRYPTUI.dll
执行链确保在启动目录中使用.lnk文件在受影响的系统上维持持久性。图17中显示的.lnk文件打开在系统上投放的恶意VBS。
图17:持久性键值
VBS文件(图18)将启动并执行下载的合法Windows工具,在本例中为Certmgr.exe。该工具将被滥用使用DLL侧加载技术,恶意Cryptui.dll被加载到程序取代合法程序中并执行。
图18:VBS文件的内容
(一)银行***分析
与第一个行动中的***一样,此示例通过搜索顺序劫持执行。在这种情况下,二进制滥用合法的Windows工具Certmgr.exe,加载Cryptui.dll。由于此工具依赖于名为cryptui.dll的合法DLL,搜索顺序路径将在同一目录中找到具有相同名称的恶意***并将其加载到进程空间中。
恶意DLL导出21个函数。只有DllEntryPoint包含启动恶意代码执行所需的实际代码,其他函数返回没有真正目的的硬编码值。
在执行时,特洛伊***会创建一个名为correria24的互斥体,以便一次只允许其中一个实例运行。
恶意软件试图解析www.goole [.]com(很可能是拼写错误)。如果成功,它会向hxxp://api-api [.] com/json发送一个请求,检测受害者的外部IP。只有国家代码与BR匹配,结果才会被解析并继续执行,如图19所示。
图19:国家代码检查
在尝试将收集到的信息发送到C2服务器之前,恶意软件首次执行时会在%appdata%\ Mariapeirura中创建一个空文件,该文件用作互斥锁。这样做是为了每个感染主机只能得到一个报告。
恶意软件收集主机信息,用base64对其进行编码,并将其发送给两台C2服务器。以下项目是从受感染系统收集的:
· OS名称
· OS 版本
· OS 架构
· AV 软件
· 安装的银行软件列表
· IP 地址
· 恶意软件执行路径
信息被发送到hxxp://108.61.188.171/put.php(图20)。
图20:发送到第一台C2服务器的主机信息数据
相同的信息发送到panel-dark [.] com / Contador / put.php(图21)。
图21:发送到第二台C2服务器的主机信息数据
如图22所示,恶意软件将注册表项Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Advanced \ ExtendedUIHoverTime的值更改为2710,以便在鼠标悬停在任务栏上时更改缩略图显示的毫秒数。
图22:ExtendedUIHoverTime注册表项更改
与第一个行动中的***一样,此示例通过查找硬编码字符串来检查前景窗口的标题是否包含巴西银行和数字货币的名称。
恶意软件在银行网站上显示伪造的表格并拦截受害者的凭据。它也可以在后台有恶意活动时显示虚假的Windows更新,如图23所示。
图23:伪造窗体显示Windows更新
该示例还包含键盘记录功能,如图24所示。
图24:键盘记录功能
(二)C&C
***的命令和控制命令结构与第一个示例相同。这些命令由<| command="">语法表示。
· <| ok="">获取主机上安装的银行软件列表。
· <PING>——从C2向主机发送,——从主机向C2发送,以保持连接处于活动状态。
· <| delllemb="">删除注册表项\ Software \ Microsoft \ Internet Explorer \notes。
· EXECPROGAM调用ShellExecute运行命令中给出的应用程序。
· EXITEWINDOWS调用ExitWindowsEx。
· NOVOLEMBRETE创建并存储通过命令在注册表键\ Software \ Microsoft \ Internet Explorer \notes中发送的数据。
图25:部分受害者名单
此示例包含大部分加密的重要字符串。我们提供以下脚本(图26)来解密它们。
图26:字符串解密脚本
三、总结
多阶段感染链的使用让研究这些类型的行动变得困难。
正如我们的研究所证明的,***者正在使用各种技术来逃避检测,并用银行***感染毫无戒心的葡萄牙语用户。使用公共云基础设施来帮助实现不同阶段在交付恶意负载方面起着特别重要的作用。使用不同的感染方法结合滥用合法签名的二进制文件来加载恶意代码,使得这些行动值得高度关注。