导语:思科Talos团队持续在监测新版本的恶意软件Smoke Loader,这一恶意软件可以用来进一步加载其他恶意软件。经过进一步的分析,我们发现了此次捕获的Smoke Loader样本发生了一些变化,新样本首次使用了PROPagate注入技术。

概述

在思科高级恶意软件防护(AMP)漏洞利用预防引擎发出告警后的几个月之中,思科Talos团队持续在监测新版本的恶意软件Smoke Loader,这一恶意软件可以用来进一步加载其他恶意软件。尽管我们的高级恶意软件防护(AMP)可以在主机被感染前有效阻止恶意软件,但经过进一步的分析,我们发现了此次捕获的Smoke Loader样本发生了一些变化。其中包括,新样本首次使用了PROPagate注入技术。在上个周末,Bleeping Computer曾发布过一份基于RIG Exploit Kit的新型恶意活动报告,除此之外,我们目前还没有发现其他任何恶意软件使用过此技术。

Talos团队此前对Smoke Loader进行过详细的研究。该恶意软件曾被用作网络攻击的下载器,并借助乌克兰会计软件开发商Crystal Finance Millennium的官方网站发动攻击。

与其他的一些恶意活动类似,其最初的感染方式是带有恶意Microsoft Word文档的电子邮件。邮件会诱导用户打开附件,并启用嵌入式宏。当用户打开后,就会自动下载恶意软件,最终导致目标系统感染Smoke Loader恶意软件及其插件。

Smoke Loader主要作为下载程序,用于执行删除操作和执行其他恶意软件,例如勒索软件或加密货币挖矿软件。目前,一些拥有Smoke Loader僵尸网络的攻击者已经在恶意软件论坛上试图售卖安装了第三方Payload的恶意软件。我们所捕获的样本没有传输任何其他的可执行文件,这表明该样本可能不再像以前那样受欢迎,或者只是用于私人目的。

Smoke Loader的众多插件都用于窃取被感染用户的敏感信息,特别针对Windows凭据、TeamViewer凭据、电子邮件账户及密码等这些会通过浏览器传输的存储凭据或敏感信息。

技术分析

感染链

如上所述,感染过程以电子邮件和附件中恶意Word文档(b98abdbdb85655c64617bb6515df23062ec184fe88d2d6a898b998276a906ebc)开始。下图为诱导电子邮件的截图。

1.png

附件中的Word文档包含一个嵌入的宏,该宏将启动第二阶段,并下载Trickbot恶意软件(0be63a01e2510d161ba9d11e327a55e82dcb5ea07ca1488096dac3e9d4733d41)。

附件IO08784413.doc:

2.png

该文档从hxxp://5[.]149[.]253[.]100/sg3.exe 或 hxxp://185[.]117[.]88[.]96/sg3.exe下载Trickbot恶意软件,将其另存为%TEMP%\[a-zA-Z]{6-9}.exe并执行。这些URL在过去曾经多次作为恶意可执行文件的下载站点,其中包括Trickbot的样本。

根据我们监测的结果,恶意软件最终下载了Smoke Loader木马(b65806521aa662bff2c655c8a7a3b6c8e598d709e35f3390df880a70c3fded40),该木马中安装了另外五个Smoke Loader插件,我们将在本文的后面详细分析这些插件。

Trickbot

我们所分析的样本的哈希值是0be63a01e2510d161ba9d11e327a55e82dcb5ea07ca1488096dac3e9d4733d41。

Smoke Loader经常以Trickbot作为Payload。我们所分析的样本对代码进行了混淆,这很可能是“恶意软件作为服务”(Malware-as-a-service)的一个具体应用,僵尸网络的运营商会收取费用,随后在被感染的计算机上安装第三方恶意软件。目前,我们还没有进一步分析Trickbot样本,但为了让大家参考,我们在此提供了Trickbot的配置(考虑到安全因素,IP地址中的点已经加上了方括号):

<mcconf>
<ver>1000167</ver>
<gtag>wrm13</gtag>
<srv>185[.]174[.]173[.]34:443</srv>
<srv>162[.]247[.]155[.]114:443</srv>
<srv>185[.]174[.]173[.]116:443</srv>
<srv>185[.]174[.]173[.]241:443</srv>
<srv>62[.]109[.]26[.]121:443</srv>
<srv>185[.]68[.]93[.]27:443</srv>
<srv>137[.]74[.]151[.]148:443</srv>
<srv>185[.]223[.]95[.]66:443</srv>
<srv>85[.]143[.]221[.]60:443</srv>
<srv>195[.]123[.]216[.]115:443</srv>
<srv>94[.]103[.]82[.]216:443</srv>
<srv>185[.]20[.]187[.]13:443</srv>
<srv>185[.]242[.]179[.]118:443</srv>
<srv>62[.]109[.]26[.]208:443</srv>
<srv>213[.]183[.]51[.]54:443</srv>
<srv>62[.]109[.]24[.]176:443</srv>
<srv>62[.]109[.]27[.]196:443</srv>
<srv>185[.]174[.]174[.]156:443</srv>
<srv>37[.]230[.]112[.]146:443</srv>
<srv>185[.]174[.]174[.]72:443</srv>
</servs>
<autorun>
<module name="systeminfo" ctl="GetSystemInfo"/>
<module name="injectDll"/>
</autorun>
</mcconf>

Smoke Loader加壳/注入过程详细分析

通常,恶意软件会对进程列表进行遍历,以此来找到要注入的进程。安全研究人员非常了解恶意软件的这一特性,也编写了许多工具来跟踪此技术中所使用到的Windows API,例如CreateToolhelp32Snapshot。我们的Smoke Loader样本通过调用Windows API GetShellWindow来获取Shell的桌面窗口句柄,然后调用GetWindowThreadProcessId获取到Explorer.exe的进程ID,从而避免对进程列表进行遍历。

随后,Smoke Loader使用了标准的注入API,在Explorer中创建并写入了两个内存段,一个用于Shellcode,另一个用于UxSubclassInfo,以便稍后的PROPagate注入。

GetShellWindow -> GetWindowThreadProcessId -> NtOpenProcess -> NtCreateSection -> NtMapViewOfSection x2 -> NtUnmapViewOfSection

之所以要从上一次调用GetShellWindows来检索窗口句柄,其实是有两个目的。Smoke Loader使用EnumChildWindows来遍历每个句柄的子窗口,目的是要找到一个包含UxSubclassInfo属性的窗口,也就代表着它易受PROPagate注入攻击。

2017年年底,安全研究人员首次发表了PROPagate注入的方法,但当Smoke Loader开始使用这一技术时,还没有公开的PoC。此外我们认为,Smoke Loader恶意软件的开发人员可能会参考PROPagate的公开介绍来重新编写这一技术的利用方式。

3.png

针对每一个子窗口,注入器会调用EnumPropsA来遍历窗口属性,直到其找到UxSubclassInfo。该函数还展示了这一样本加壳器所采用的一些反分析技术。样本使用了“控制流混淆”,代码中包含着一些不必要的跳转,其中也包括能产生花指令(Junk Code)的简单不透明谓词(Opaque Predicates)。

“Deobf_next_chunk”会获取下一个代码块的大小和偏移量参数,以进行反混淆并执行下一个代码块。根据实际需要,会对大部分恶意代码进行反混淆处理,并且一旦加载了下一个块,就可以再次进行混淆处理。具体而言,混淆的方法是使用单字节进行XOR计算,每个块都具有相同的硬编码值。

除了使用反分析技术之外,该样本还具有反调试、反虚拟机检查的特性,并且具有专门用于扫描分析工具的进程和窗口是否存在的线程。由于上述特性的存在,对该恶意软件的反病毒扫描、跟踪和调试工作都会变得非常困难。

通过WM_NOTIFY和WM_PAINT触发恶意事件处理程序:

4.png

将Shellcode和UxSubclassInfo数据写入远程进程侯,注入器会调用SetPropA来更新窗口的属性,然后将WM_NOTIFY和WM_PAINT消息发送到目标窗口,以强制它触发执行注入的Shellcode的恶意事件处理程序。

注入的Shellcode:Smoke Loader

Smoke Loader接收了5个插件,而不是额外的Payload。其中,每个插件都有自己的Explorer.exe进程来执行,恶意软件会使用较旧的技术将每个插件注入到这些进程之中。使用选项CREATE_SUSPENDED来创建每个Explorer.exe进程,注入Shellcode,并使用ResumeThread执行。这一过程非常复杂,并且会在被感染的计算机上运行6个Explorer.exe进程。

插件

如上所述,这些插件的目的都是窃取被感染用户的敏感信息,会准确定位到被感染计算机上存储的凭据和通过浏览器传输的敏感信息。每个插件都会借助互斥锁“opera_shared_counter”来确保多个插件不会同时将代码注入到同一个进程。

插件1

这是最大的一个插件,其中包括约2000个函数。该插件中包含一个静态链接的SQLite库,用于读取本地数据库文件。

该插件用于窃取Firefox、Internet Explorer、Chrome、Opera、QQ浏览器、Outlook和Thunderbird中存储的信息。该插件会递归搜索名为logins.json的文件,并解析这些文件的主机名、加密用户名和密码。此外,vaultcli.dll文件会读取Windows凭据管理器。该插件还会对POP3、SMTP和IMAP凭据进行收集。

插件2

该插件以递归方式对目录进行搜索,寻找要解析的文件。

Outlook
*.pst
*.ost
Thunderbird
*.mab
*.msf
inbox
sent
templates
drafts
archives
The Bat!
*.tbb
*.tbn
*.abd

插件3

如果凭证和Cookie通过HTTP或HTTPS传输,该插件会注入到浏览器中,并拦截相关凭证和Cookie。

如果设置了“fgclearcookies”,将会终止浏览器进程,并删除Cookie。

    iexplore.exe和microsoftedgecp.exe:
        HttpSendRequestA;
        HttpSendRequestW;
        InternetWriteFile;
        firefox.exe。
    nspr4.dll或nss3.dll中的PR_Write。
    chrome.exe:
        chrome.dll中的未知函数。
    opera.exe:
        opera_browser.dll或opera.dll中的未知函数。

插件4

该插件使用ws2_32!send和ws2_32!WSASend尝试窃取ftp、SMTP、POP 3和IMAP的凭据。

插件5

该插件将代码注入TeamViewer.exe以窃取凭据。

IoC

哈希值:

B98abdbdb85655c64617bb6515df23062ec184fe88d2d6a898b998276a906ebc(IO08784413.doc)

0be63a01e2510d161ba9d11e327a55e82dcb5ea07ca1488096dac3e9d4733d41(Trickbot)

b65806521aa662bff2c655c8a7a3b6c8e598d709e35f3390df880a70c3fded40(Smoke Loader)

互斥体:

opera_shared_counter

Trickbot相关IP地址:

185[.]174[.]173[.]34

162[.]247[.]155[.]114

185[.]174[.]173[.]116

185[.]174[.]173[.]241

62[.]109[.]26[.]121

185[.]68[.]93[.]27

137[.]74[.]151[.]148

185[.]223[.]95[.]66

85[.]143[.]221[.]60

195[.]123[.]216[.]115

94[.]103[.]82[.]216

185[.]20[.]187[.]13

185[.]242[.]179[.]118

62[.]109[.]26[.]208

213[.]183[.]51[.]54

62[.]109[.]24[.]176

62[.]109[.]27[.]196

185[.]174[.]174[.]156

37[.]230[.]112[.]146

185[.]174[.]174[.]72

Smoke Loader相关域名:

ukcompany[.]me

ukcompany[.]pw

ukcompany[.]top

投放文件:

%appdata%\Microsoft\Windows\[a-z]{8}\[a-z]{8}.exe

计划任务:

Opera scheduled Autoupdate [0-9]{1-10}

结论

我们已经发现,随着木马和僵尸网络的整体环境不断发生变化,攻击者也在不断提高恶意软件的质量和技术含量。攻击者不断修改恶意软件所使用的技术,以此来加强其绕过安全工具的能力。考虑到这一点,我们必须要时刻保持自己的系统和软件处于最新状态。针对企业中的安全负责人,可以考虑采用多层防御的方式来检测并防范这类威胁。Talos团队将继续监控这些恶意活动,以确保我们的产品能够实现有效防御。我们强烈建议个人用户和企业用户遵循我们提出的安全建议,及时更新安全补丁,慎重打开来自未知发件人的信息,并考虑备份容灾的方案。上述方案有助于减少资产的暴露面,并且能够在遭到攻击后迅速实现恢复。

源链接

Hacking more

...