1. 概述
在密切跟踪 IcedID 僵尸网络的活动后,趋势科技的研究人员发现其分发方法发生了一些重大变化。自 2022 年 12 月以来, 趋势科技检测到的名为TrojanSpy.Win64.ICEDID.SMYXCLGZIcedID变体滥用谷歌点击付费(PPC)广告,通过恶意广告攻击分发IcedID。
像谷歌广告这样的广告平台使企业能够向目标受众展示广告,以提高流量和增加销售额。恶意软件分发者滥用同样的功能,使用一种被称为恶意广告的技术,其中选择的关键字被劫持,显示恶意广告,诱使毫无戒心的搜索引擎用户下载恶意软件。
调查发现,恶意行为者通过合法组织和知名应用程序的克隆网页使用恶意广告传播IcedID恶意软件。最近,美国联邦调查局(FBI)发布了一份关于网络犯罪分子如何滥用搜索引擎广告服务来模仿合法品牌,并将用户引向恶意网站以获取经济利益的警告。
下面将给出 IcedID 僵尸网络的新分发方法及其使用的新加载程序的技术细节。
2. 技术分析
自然搜索结果是由谷歌 PageRank 算法生成的,而谷歌广告则显示在自然搜索结果的上方、旁边、下方或更突出的位置。当这些广告被恶意行为者通过恶意广告技术劫持时,它们可能会将用户引导至恶意网站。
2.1 目标品牌和应用
调查发现 IcedID分发者劫持了以下品牌和应用程序关键字用于显示恶意广告:
Adobe -计算机软件公司
AnyDesk - 远程控制应用程序
Brave Browser -网络浏览器
Chase Bank - 银行应用程序
Discord - 即时通讯服务
Fortinet - 安全公司
GoTo - 远程控制应用程序
Libre Office - Microsoft Office 的开源替代品
OBS Project - 流媒体应用程序
Ring - 家用闭路电视制造商
Sandboxie - 虚拟化/沙盒应用程序
Slack - 即时通讯应用程序
Teamviewer - 远程控制应用程序
Thunderbird - 电子邮件客户端
US Internal Revenue Service (IRS) – 美国联邦政府机构
面向受害者的恶意网站看起来就像合法网站一样。图1显示了一个看起来合法的恶意Slack网页,被IcedID分发者用来引诱受害者下载恶意软件。
图1:IcedID分发者使用的看似合法的恶意Slack网页
2.2 感染链
整个感染流包括分发初始加载程序、获取机器人核心,并最终下载有效负载(通常是后门)。
图2:IcedID僵尸网络恶意软件感染链
通过恶意广告感染:
1.用户在谷歌上输入搜索词搜索应用。在这个特定的例子中,用户想要下载AnyDesk应用程序,并在谷歌搜索栏上输入搜索词“AnyDesk”。
2.AnyDesk恶意广告技术会使恶意网站显示在自然搜索结果上方。
3.IcedID分发者滥用合法的Keitaro流量重定向系统(TDS)来过滤研究人员和沙盒流量,然后受害者被重定向到恶意网站。
4.用户选择“下载”按钮后,它会在用户系统的 ZIP 文件中下载恶意的 Microsoft 软件安装程序 (MSI) 或 Windows 安装程序文件。
图3:IcedID僵尸网络恶意广告感染链
2.3 新的IcedID僵尸网络加载程序
在此活动中,通过 MSI 文件下载加载程序,这对于 IcedID 来说是非典型的。
安装程序下载一些文件并通过 rundll32.exe 调用“init”导出函数,然后执行恶意加载程序例程。
此“加载程序”DLL 具有以下特征:
作者使用了一个合法的 DLL,并使用最后一个序号处的“init”导出函数名称将单个合法函数替换为恶意加载程序函数。
IcedID 加载程序中每个合法导出函数的第一个字符将替换为字母“h”。
对恶意函数的引用是打过补丁的合法函数。
生成的恶意文件几乎与合法版本相同,这对于机器学习 (ML) 检测解决方案来说可能具有挑战性。
从表面上看,恶意的IcedID和合法的sqlite3.dll文件看起来几乎相同。图 4 展示了使用由安全研究员Karsten Hahn开发的PortEx Analyzer工具并排比较这些文件的结果。该工具允许我们快速可视化PE (portable executable)文件的结构,并评估文件的相似性。
图4:恶意 IcedID(左)和合法 PE(右)文件的可视化表示(使用 Karsten Hahn 的 PortEx Analyzer 工具)
因此可以假设这是针对两种恶意软件检测技术的攻击::
机器学习检测引擎
白名单系统
2.4 篡改DLL文件
不难发现,一些被修改为充当 IcedID 加载程序的文件是众所周知且广泛使用的库。
表1:已被修改为充当 IcedID 加载程序的文件
DLL 名称 | 描述 |
tcl86.dll | ActiveState的TCL(工具命令语言)编程语言解释器的库组件 |
sqlite3.dll | SQLite 数据库的库组件 |
ConEmuTh.x64.dll | 远距离管理器的插件 |
libcurl.dll | curl库 |
在sqlite3.dll 中,发现270 号(最后一个序号)处的 “sqlite3_win32_write_debug” 函数已被 IcedID 加载程序中的恶意 “init” 函数所取代。
上面列出的修改过的 DLL 文件都是这样:最后一个序号的导出函数被替换为恶意的“init”函数。
图5:修改过的IcedID文件(左)和正常(右)文件的比较,其中前者在最后一个序号的导出函数被替换为恶意的“init”函数
进一步调查表明,两个文件的结构是相同的。
图6:修改过的IcedID文件和正常文件的比较,两个文件显示了相同的结构
2.5 执行
1.“MsiExec.exe”执行(父进程)(MITRE ID T1218.007 - 系统代码代理执行:msiexec)
2.生成“rundll32.exe”(MITRE ID T1218.011 - 系统代码代理执行:rundll32.exe)
3.“rundll32.exe” 通过 “zzzzInvokeManagedCustomActionOutOfProc” 运行自定义操作 “Z3z1Z” (MITRE ID T1218.011 - 系统代码代理执行:rundll32.exe)
4.自定义操作生成第二个“rundll32.exe”以运行具有“init”导出函数的 IcedID 加载程序“MSI3480c3c1.msi”(MITRE ID T1027.009 - 嵌入式有效负载和 T1218.011 - 系统代码代理执行:rundll32.exe)
图7:IcedID 加载程序执行链
图8:MSI自定义操作
图9:包含自定义操作的 MSI 结构
3. 结论
IcedID是一个值得关注的恶意软件家族,它能够传输其他有效载荷,包括Cobalt Strike和其他恶意软件。IcedID 使攻击者能够执行高效的破坏性攻击,从而导致整个系统遭受诸如数据失窃和瘫痪之类的勒索攻击。恶意广告和规避加载程序的使用提醒人们,为什么企业部署分层安全解决方案很重要,这些解决方案包括自定义沙盒、预测性机器学习、行为监控以及文件和 Web 信誉检测功能。用户还可以考虑使用广告拦截器来帮助阻止恶意攻击。
附录 MITRE ATT&CK
ID | 名称 | 描述 |
T1218.007 | 系统代码代理执行msiexec | lcedID是通过MSIExEC包交付的,该包执行恶意自定义操作来部署lcelD 加载程序 |
T1218.011 | 系统代码代理执行rundll32.exe | 恶意自定义操作调用rundll32.exe来执行loelD加载程序 |
T1027.009 | 嵌入式有效载荷 | 攻击者将恶意函数嵌入到正常的DLL中,以阻止检测技术 |
参考链接:https://www.trendmicro.com/en_us/research/22/l/icedid-botnet-distributors-abuse-google-ppc-to-distribute-malware.html?&web_view=true
编辑|张维泽
审校|何双泽、金矢
本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。
声明:本文来自国家网络威胁情报共享开放平台,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。