Ursnif木马分析: 隐写术万岁!

2019-04-04 约 2246 字 预计阅读 5 分钟

声明:本文 【Ursnif木马分析: 隐写术万岁!】 由作者 Hulk 于 2019-02-14 09:13:00 首发 先知社区 曾经 浏览数 1103 次

感谢 Hulk 的辛苦付出!

原文链接: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的恶意字节数组分配足够的空间,同时它通过QueueUserAPCSleepEx的调用将其作为合法进程启动。

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")
 }

关键词:[‘技术文章’, ‘翻译文章’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now