转自:https://xz.aliyun.com/t/4092
文链接:https://blog.yoroi.company/research/ursnif-long-live-the-steganography/
一、介绍
近期,又一波Ursnif木马袭击了意大利。
Ursnif是最活跃的银行木马之一。它也叫Gozi,事实上它是Gozi-ISFB银行木马的一个分支,在2014年它的的源代码被泄露,多年来黑客们更新和扩展了Gozi的功能。经过多次变体,如今的Ursnif木马藏匿于办公文档,其中嵌入了VBA宏,它是作为滴管和多阶段高度混淆的PowerShell脚本,以隐藏真正的Payload。本文讨论的Ursnif使用隐写术制作恶意代码,可以避免AV检测。
此外,这个变体Ursnif木马还使用了QueueUserAPC
进程注入技术以更加隐蔽的方式注入到explorer.exe
,因为在目标进程中并没有发现有远端进程。
二、技术分析
初始样本显示为错误的Excel文件,它要求用户启用宏以便查看虚假文档,内容通常是采购订单,发票等。
提取出宏代码,首先显示恶意软件使用属性Application.International MS Office
检测受害者所在国家或地区。在这里是意大利(代码39),同时宏将使用Shell函数执行下一个命令。
宏的其他功能有准备shell命令以启动,连接几个不同编码方式的字符串(主要是十进制和二进制)。生成的命令是一个很长的二进制字符串,该字符串将使用以下函数转换为新的Powershell命令:
[Convert]::ToInt16() -as[char]
从上图中可以看到,恶意软件将从两个嵌入的URL中至少一个下载图像:
图片文件可以嵌入Powershell命令。这里的图片文件使用Invoke-PSImage脚本制作,该脚本将一些特殊脚本字节嵌入到PNG文件的像素中。
继续分析,Base64解码Payload,发现如下代码:
可以看出它是十六进制编码,通过我们提到的[Convert] :: ToInt16
函数进行解码。
最终的代码是:
脚本对受害者的国家再次检查,以确保是意大利。它使用了以下命令:
Get-Culture | Format-List -Property *
如果检查是意大利,那么脚本将从http://fillialopago[.]info/~DF2F63下载EXE格式的Payload,存储在%TEMP%\Twain001.exe
并且立即执行。
在分析时,大多数防病毒软件都不能检测出该文件:
尽管它的查杀率很低,但是这个EXE文件是一个经典的Ursnif加载器,它用来访问服务器下载恶意二进制文件,最后二进制文件被注入到explorer.exe
进程。这里,该EXE文件使用函数IWebBrowser.Navigate
从其恶意服务器上felipllet[.]info
下载数据。从下图中可以看到,这个URI路径为视频文件(.avi)的路径。
服务器响应此请求发送加密数据,如下图所示
经过解密分析后,所有有用的数据被储存在注册表HKCU\Software\AppDataLow\Software\Microsoft\{GUID}
中。
这里它的RegValue名为“defrdisc”(提醒磁盘碎片整理的合法程序),它包含的命令将在下一步或Windows启动时执行,如下图所示。
该命令将通过Powershell引擎执行包含在名为“cmiftall”的RegValue中的数据。
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\94502524-E302-E68A-0D08-C77A91BCEB4E’).cmiftall))”
这里的“cmiftall”的数据很简单,是以十六进制方式编码的PowerShell脚本,所以它重启后也会执行。
使用存储在RegKey中的Powershell脚本(如上图所示),Ursnif可以自动为其包含最终Payload的恶意字节数组分配足够的空间,同时它通过QueueUserAPC
和SleepEx
的调用将其作为合法进程启动。
Ursnif的完整工作流程如图所示:
最后,我们分析最后一个脚本的字节数组中的数据,可以提取一个与Ursnif注入explorer.exe
进程相对应的DLL 。
可以看到,这个DLL文件似乎已经损坏:
但是,当使用APC
注入技术将其加载到内存中时,它又可以正常工作。这次,我们将文件提交到VirusTotal检测,结果是灾难性的,没有一个厂商能够正确识别它。
三、小结
对比我们在2018年12月的Ursnif分析和2019年1月的Cisco Talos Intelligence,这个新型Ursnif样本使用相同的APC
注入技术将二进制文件灌输到explorer.exe
进程,过程中使用了各种混淆眼球的隐写术隐匿其恶意行为。Ursnif木马比起以前更加活跃和广泛,虽然木马中C&C
地址已经无法访问,但恶意软件植入仍然存在,因为骗子们也在不断地改变他们的C&C
域以防止跟踪和分析。
研究人员正在继续分析这个未被发现的DLL,提取信息和证据后将分享出来。
四、IOC
Hashes
- 630b6f15c770716268c539c5558152168004657beee740e73ee9966d6de1753f (old sample)
- f30454bcc7f1bc1f328b9b546f5906887fd0278c40d90ab75b8631ef18ed3b7f (new sample)
- 93dd4d7baf1e89d024c59dbffce1c4cbc85774a1b7bcc8914452dc8aa8a79a78 (final binary)
Dropurls
C2s
- pereloplatka[.]host
- roiboutique[.]ru
- uusisnfbfaa[.]xyz
- nolavalt[.]icu
- sendertips[.]ru
IPs
- 185.158.248.142
- 185.158.248.143
Artifacts
- HKCU:\Software\AppDataLow\Software\Microsoft\94502524-E302-E68A-0D08-C77A91BCEB4E
Yara rules
import "pe"
rule Ursnif_201902 {
meta:
description = "Yara rule for Ursnif loader - January version"
author = "Yoroi - ZLab"
last_updated = "2019-02-06"
tlp = "white"
category = "informational"
strings:
$a1 = "PADDINGXX"
$a2 = { 66 66 66 66 66 66 66 }
condition:
all of ($a*) and pe.number_of_sections == 4 and (pe.version_info["OriginalFilename"] contains "Lumen.exe" or pe.version_info["OriginalFilename"] contains "PropositionReputation.exe")
}