利用QEMU虚拟化构建隐蔽隧道:攻击者的隐匿通信技术

本文详细分析了攻击者如何通过社交工程、远程支持工具和QEMU虚拟机部署实现初始访问,并利用Tiny Core Linux构建反向SSH隧道以规避主机检测技术,同时提供了具体的IOC指标和防护建议。

隐藏在阴影中:通过QEMU虚拟化的隐蔽隧道

作者:Caroline Fenstermacher
事件响应 | 社交工程

目录

  • 初始访问
  • QEMU虚拟机部署
  • SSH后门尝试
  • 修复与预防
  • IOC指标

攻击者不仅在其载荷上越来越有创意,而且在交付和操作方式上也日益创新。在最近的一次事件响应任务中,TrustedSec调查了一起案例,涉及攻击者使用社交工程、远程支持工具和虚拟机(VM)部署的组合来获取企业端点的访问权限,并尝试进行隐蔽通信。最初是一次Microsoft Teams语音钓鱼攻击,随后升级为入侵,涉及基于Qemu的Tiny Core Linux虚拟机和尝试的反向SSH隧道。尽管技术并不高度复杂,但这次任务突显了虚拟化如何用于规避基于主机的检测(如EDR和AV工具),以及社交工程的有效性。

初始访问

这次入侵始于一次执行良好的语音钓鱼尝试。一名用户通过Microsoft Teams被自称来自其IT支持团队的人联系。这位“支持技术人员”实际上来自外部Microsoft 365租户,由于Teams的默认设置,允许外部通信。

通话开始后,威胁行为者指示用户打开Quick Assist,这是一个本地Windows功能,允许通过依赖远程桌面协议(RDP)进行端点的交互式远程管理。本质上,这是一个内置的远程监控和管理(RMM)工具,类似于熟悉的第三方选项,如AnyDesk、Atera、TeamViewer等。威胁行为者随后指示用户下载Zoho Meeting,另一个远程管理工具。通常,攻击者会在主机上放置多个不同的RMM工具,以在其中一个被发现和移除时更好地保持持久性。

打开Quick Assist会话后,威胁行为者指示用户运行一个curl命令,从攻击者控制的IP地址下载ZIP文件。由于缺乏遥测数据,TrustedSec未能捕获此命令;但是,捕获了curl.exe进程的执行,随后在文件系统中引入了updqem.zip。

利用攻击者通过Quick Assist获得的访问权限,在主机的ConsoleHost_history.txt文件中捕获了以下文件提取命令:

图1 - 控制台主机历史

在一周的时间内,威胁行为者两次联系用户。在初次联系用户几天后,威胁行为者联系用户,告知他们几天前采取的“IT支持步骤”未起作用。在第二次实例中,威胁行为者似乎执行了相同的步骤。

QEMU虚拟机部署

深入主机的$MFT,跟踪到updqem.zip提取后的结果到端点上的一组嵌套目录:

  • C:\ProgramData\update\
  • C:\ProgramData\update\update
  • C:\ProgramData\update\stl
  • C:\ProgramData\update\update\share
  • C:\ProgramData\update\stl\share

在这些目录中,两个可执行文件立即脱颖而出:C:\ProgramData\update\stl\stl.exe和C:\ProgramData\update\tc.exe(也出现在之前提到的控制台历史中)。这两个文件都与Qemu相关,Qemu是一个开源仿真工具,允许用户在现有操作系统之上运行VM。攻击者显然选择了便携式VM部署,而不是传统的恶意软件投放,这使他们能够避免检测。

除了Qemu二进制文件本身,还观察到两个VBS文件:

  • C:\ProgramData\update\update\update.vbs
  • C:\ProgramData\update\stl##START##.vbs

图2 - update.vbs内容

两个文件的内容都与通过Qemu部署VM有关,但使用了略微不同的方法。第一个脚本update.vbs利用Wscript shell执行tc.exe,使用配置文件(upd.conf)传递VM参数。

图3 - upd.conf内容

如文件内容所示,要创建的VM包括512MB RAM,附加tc.qcow2作为镜像文件,定义要仿真的虚拟硬盘(IDE),并允许基本互联网访问。

图4 - ##START##.vbs内容

相比之下,##START##.vbs文件放弃了配置文件的使用,而是在命令行中明确声明配置参数。此外,此方法使用了较小的RAM分配。这些方法上的差异可能与威胁行为者声称初始设置未起作用有关。

从进一步的$MFT分析中,识别出两个独立的镜像文件:C:\ProgramData\update\stl\tc.qcow2(首先引入系统)和C:\ProgramData\update\update\tc.qcow2(几天后引入系统)。似乎第一次虚拟环境未能交付结果后,攻击者尝试了更重的设置——可能带有更多工具或更完整的OS镜像。幸运的是,TrustedSec能够提取镜像文件,以更好地查看攻击者在部署的VM上的活动。

SSH后门尝试

两个镜像文件都部署了使用小镜像文件的Tiny Core Linux VM。尽管此OS占用空间最小,但我们仍然可以访问bash历史,这结果非常揭示性。

第一次构建后门的尝试似乎不成功。在此方法中,攻击者利用wget从攻击者控制的端点149.28.198[.]232下载载荷。

图5 - wget 123.out下载

此载荷疑似包含后门代码,以允许攻击者持续访问用户的机器。

为了尝试持久性,攻击者还被观察到编辑了Tiny Core Linux本地的几个关键文件。第一个被编辑的文件bootlocal.sh是一个在启动时运行定义命令的脚本。

图6 - bootlocal.sh编辑

查看bootlocal.sh文件的内容确认了此方法用于确保123.out载荷的持久性。此脚本创建一个循环,ping攻击者控制的端点45.77.4[.]101。如果ping失败,输出被忽略,并在两秒后重新启动进程。一旦ping成功,123.out作为tc用户执行。

图7 - bootlocal.sh内容

攻击者还更新了filetool.lst,该文件告诉OS哪些文件和目录应在重启后持久化,因为Tiny Core默认是无状态的。

图8 - filetool.lst编辑

filetool.lst的内容也确认了尝试持久性,通过定义以下目录包含在内。123.out载荷包含在home/tc目录中,因此确认此文件也将在重启后持久化。攻击者还通过包含opt目录确保其机器配置的持久性。

图9 - filetool.lst内容

几天后,攻击者确定此方法未起作用,并第二次联系用户。第二个镜像文件比第一个大得多,表明攻击者策略的变化。攻击者在第二个VM上开始通过再次利用wget确保SSL和NoSSL应用程序存在于主机上。

图10 - SSL/NoSSL下载

随后,攻击者被观察到编辑了一个非Tiny Core Linux OS本地的文件hostname.sh。

图11 - hostname.sh编辑

此自定义脚本生成了一个随机化的五字符主机名,前缀为tc-,可能用于帮助攻击者跟踪或掩蔽单个VM。

图12 - hostname.sh内容

接下来,攻击者利用Tiny Core包管理器命令tc-load安装openssh。

图13 - OpenSSH安装

一旦SSH设置完成,攻击者将相关配置、脚本和目录添加到filetool.lst,以确保一切在重启后持久化。

图14 - SSH持久性

图15 - filetool.lst内容

bootlocal.sh脚本文件也被更新,以在启动时自动运行hostname.sh、启动下载的SSL工具并启动SSH服务。

图16 - bootlocal.sh编辑

图17 - bootlocal.sh内容

随着机器配置的完成,攻击者尝试构建一个反向SSH隧道回其服务器137.184.4[.]169,通过端口443——努力使用HTTPS在明文中隐藏流量。

SSH命令还显示了一些反取证努力,通过指示SSH配置将已知主机存储在/dev/null中。通常,此信息定向到.ssh/known_hosts文件,该文件记录用户过去连接过的主机的公钥。此方法确保此信息不被存储,因此无法被调查人员引用。StrictHostKeyChecking也被禁用,另一项努力确保公钥信息不存储在主机上。

图18 - SSH隧道命令

这里突出的不是技术复杂性,而是方法的创意。使用客户VM构建反向SSH隧道是聪明的,尤其是在EDR工具专注于主机OS的环境中。这也提醒我们,即使是不复杂的参与者,在社交工程成功时也能造成隐蔽入侵。

修复与预防

在类似入侵中,防御者应确保通过系统重新映像和/或设备没收并为用户发放新设备,从系统中根除威胁行为者的所有痕迹。此外,应重置受影响用户的凭据并销毁任何活动会话。

组织可以采取几个步骤来预防类似入侵:

  • 在Microsoft Teams中限制外部通信:除非明确需要,否则禁用外部租户通信。如果某些级别的外部通信是工作职能所必需的,考虑实施租户白名单。
  • 禁用或限制远程访问工具:如果非业务关键,可以从端点移除Quick Assist。这可以通过组策略完成(计算机配置 > 管理模板 > 系统 > 远程协助)。阻止未经授权的远程工具,如Zoho Meeting、AnyDesk、Atera、TeamViewer等,如果未合法用于支持功能。
  • 监控或限制未经授权的虚拟化软件:监控端点上的虚拟化软件,如Qemu、VirtualBox、VMware等,特别是如果未批准使用。如果某些用户没有合法的业务目的,也可以按用户组阻止此软件。
  • 监控在未预期虚拟化行为的端点上引入镜像文件类型。
  • 审查防火墙和网络分段策略:阻止出站SSH流量到外部IP地址,除非明确允许。防止客户VM流量穿越敏感网络段。
  • 用户意识和培训:教育员工关于未经批准的远程管理工具的危险以及如何验证内部IT通信。

IOC指标

类型 描述
ZA_Connect.exe 文件名 Zoho Meeting Assist
8aa77293b0e26e2dc15ba912bc3e8c0a MD5 ZA_Connect.exe哈希
Tc.exe 文件名 Qemu软件
Stl.exe 文件名 Qemu软件
8697ff6c68e4d029b4980fed99f3ff96 MD5 Tc.exe和stl.exe哈希
##START##.vbs 文件名 Qemu设置脚本
a116b1ac07ba6f1286fbf12adbd6a29f MD5 ##START##.vbs哈希
Upd.conf 文件名 Qemu虚拟化参数
c4069197ac4dceb3ff4dd3e1155187a5 MD5 Upd.conf哈希
Update.vbs 文件名 Qemu设置脚本
dbe24234b231af446c655e3fbd2a694e MD5 Update.vbs哈希
Tc.qcow2 文件名 Tiny Core Linux镜像文件
834614dea627f85863124de17a6a5f47 MD5 Tc.qcow2哈希
3e4a502948e4fc8ac39dcd5c152b78e2 MD5 Tc.qcow2哈希
Hostname.sh 文件名 攻击者自定义脚本
D0A67FA9F13E7ED7B957F47C27EFA64B MD5 Hostname.sh哈希
123.out 文件名 潜在后门
BB21E569F67807596C6C1C8768B15A53 MD5 123.out哈希
82.118.16[.]49 IP地址 攻击者控制端点
137.184.4[.]169 IP地址 攻击者控制端点
143.28.198[.]232 IP地址 攻击者控制端点
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计