前言
OUTLAW 是一个持续存在但不成熟的自动传播货币挖掘程序包,在过去几年中被发现有多个版本[ 1 ],[ 2 ],[ 3 ],[ 4 ]。尽管缺乏隐身和先进的逃避技术,它仍然通过利用简单但有效的策略(例如 SSH 暴力破解、SSH 密钥和基于 cron 的持久性以及手动修改的商品矿工和 IRC 频道)保持活跃和有效。这种持久性凸显了僵尸网络运营商如何在不依赖复杂技术的情况下实现广泛的影响。
为了更深入地了解 OUTLAW 的行为和操作模式,我们部署了一个蜜罐,旨在吸引和观察攻击者的行动。通过精心设计一个模拟易受攻击的系统的环境,我们能够诱使对手与我们的服务器进行交互。这种交互揭示了自动和手动操作,操作员直接输入命令,动态进行修改,甚至输入错误命令——这是人类参与的明显指标。捕获的 GIF 展示了这些瞬间,让我们可以难得一见他们实时的决策过程。
通过分析 OUTLAW,我们对其操作员使用的工具及其随时间演变的策略有了新的认识。该恶意软件提供了应用检测工程原理的宝贵机会,因为其攻击链几乎涵盖了整个 MITRE ATT&CK 框架。检查其感染过程使我们能够制定有效的检测策略,利用其可预测和重复的行为。
该报告提供了完整的攻击链分析,包括详细的检测规则和搜索查询。通过分解 OUTLAW 的组件,我们展示了即使是基本的恶意软件也可以在现代环境中保持长寿,以及防御者如何利用其简单性来增强检测和响应。
关键要点
- 持久但不复杂:尽管使用了 SSH 暴力破解、SSH 密钥操作和基于 cron 的持久性等基本技术,OUTLAW 仍然保持活跃。
- 商品工具:该恶意软件部署了修改后的
XMRig
矿工,利用 IRC 进行 C2,并包含用于持久性和防御逃避的公开可用脚本。 - 广泛的攻击面:OUTLAW 的感染链几乎涵盖整个 MITRE ATT&CK 框架,提供了许多检测和搜寻机会。
- 蠕虫式传播:OUTLAW 利用被攻陷的主机对其本地子网发起进一步的 SSH 暴力攻击,迅速扩大僵尸网络。
OUTLAW 概述
OUTLAW 遵循多阶段感染过程,从下载和执行其有效负载开始,建立持久性,然后通过 SSH 暴力攻击扩展其僵尸网络。执行链如下所示:
1. 初始感染和部署
- 当
tddwrt7s.sh
从 C2 服务器下载dota3.tar.gz
包时,攻击就开始了。 - 提取的
initall.sh
脚本执行,启动感染链。
2. 获得控制力和毅力
- 该恶意软件通过杀死竞争的暴力破解者和矿工来确保其主导地位。
- 然后部署:
- 修改 XMRIG 用于加密挖掘(连接到挖掘池)。
- STEALTH SHELLBOT 可通过 IRC C2 进行远程控制。
- BLITZ 执行 SSH 暴力攻击。
3.传播与扩展
- 暴力破解模块从 SSH C2 服务器检索目标列表,并尝试对新机器进行 SSH 暴力攻击。
- 成功入侵的系统将被感染,并重复这一循环。
这种自动感染循环使得 OUTLAW 能够在攻击者付出最少努力的情况下保持活跃并盈利。让我们深入了解整个攻击链。
OUTLAW 执行链
OUTLAW 有效涵盖了 MITRE ATT&CK 框架中的各种策略和技术。本节绘制其行为图,以概述其感染链和方法。
初始访问:闪电战
OUTLAW 通过机会性 SSH 暴力破解获得初始访问权限,目标是具有弱凭据或默认凭据的系统。该恶意软件使用其blitz
组件(也称为kthreadadd
等)来执行大容量扫描和密码猜测尝试。它利用从其 C2 服务器检索的目标 IP 和凭据列表。
OUTLAW 的行为方式也类似蠕虫,会自动在其成功入侵的每个系统上进行自我安装。这种自我传播机制使其能够在网络中快速传播,将每个新感染的设备变成另一个节点,以进一步进行暴力破解和感染尝试。
我们将在文章后面深入探讨 OUTLAW 如何执行这些攻击并进行自我传播。
执行:tddwrt7s.sh
OUTLAW 的首次感染似乎源自一个简单的植入脚本: tddwrt7s.sh
。该 shell 脚本检查是否存在现有安装。如果恶意软件已经存在且已解压,它将运行初始脚本,启动感染链。否则,它将尝试从提供的暂存服务器列表中下载包。为了便于说明,下面显示了该投放器的简短片段:
解压的dota3.tar.gz
包将其内容解压到名为.rsync
的隐藏文件夹中,并包含以下条目:
├── a
│ ├── a
│ ├── init0
│ ├── kswapd0
│ ├── kswapd01
│ ├── run
│ ├── socat
│ └── stop
├── b
│ ├── a
│ ├── run
│ └── stop
├── c
│ ├── blitz
│ ├── blitz32
│ ├── blitz64
│ ├── go
│ ├── run
│ ├── start
│ ├── stop
│ └── v
├── init
├── init2
└── initall
让我们逐一解构执行链。
主初始化脚本:initall
三个init
脚本控制恶意软件的整体执行流程和部署。从initall
脚本开始,主初始化程序确定采用哪条执行路径。它检查系统环境并根据文件权限和可用目录决定是否使用init
或init2
。
这些init
脚本全部使用基于变量的字符串连接混淆技术,其中命令被拆分成小的变量片段,然后动态连接并执行,这使得静态分析更加困难。例如, initall
脚本如下所示:
但是,通过将eval
更改为echo
,我们可以毫不费力地获得输出:
默认情况下,此脚本将一致执行init
。这是在隐藏目录~/.configrc6
中安装恶意软件的主要执行路径。后备执行路径为init2
,在~/.configrc6
无法访问时使用。主要区别在于此路径将所有组件保存在当前工作目录中。应用与之前相同的反混淆原理,我们最终得到以下两个脚本:
第一个脚本( init
)将其组件隐藏在隐藏目录~/.configrc6
中,而第二个脚本( init2
)直接从工作目录运行。尽管存在这种差异,执行流程保持不变,即在a/
和b/
目录中启动名为a
的二进制文件作为后台进程并建立持久性。在这两个脚本中,恶意软件都会安装 cron 作业,以定期和系统重启时执行其二进制文件:
5 6 * * 0 ~/.configrc6/a/upd
@reboot ~/.configrc6/a/upd
5 8 * * 0 ~/.configrc6/b/sync
@reboot ~/.configrc6/b/sync
0 0 */3 * * ~/.configrc6/c/aptitude
尽管脚本几乎同时执行a/
和b/
目录中的a
二进制文件,但我们将首先遵循a/
目录的执行流程。
a/ 目录的子程序执行:XMRIG
执行的第一个脚本是a
,它使用crontab -r
删除所有现有的 cron 作业,然后将当前工作目录存储在变量中。然后,它创建一个名为upd
的 shell 脚本,检查进程(存储在bash.pid
中)是否仍在运行。如果进程未运行,它将作为后台进程执行./run
,确保恶意软件在终止后不断重新启动。
此外,我们还看到一些带注释的命令,表明该恶意软件的其他版本可能以rsync
、 go
、 kswapd0
、 blitz,
和redtail
等名称存在。
在脚本的下方,创建一个函数,用于检查/sys/module/msr/parameters/allow_writes
是否存在并将其设置为“on”,以允许写入特定于模型的寄存器 (MSR)。如果该文件不存在,则通过modprobe msr allow_writes=on
命令启用 MSR 写入。
接下来,该函数通过检查/proc/cpuinfo
来识别活动 CPU,并应用特定的 MSR 寄存器值来优化性能。
最后,该函数通过为所有 CPU 核心启用hugepages
来优化内存使用率,提高内存访问效率。它根据可用的处理器 ( nproc
) 计算所需的hugepages
数量,并将它们设置在/sys/devices/system/node/node*/hugepages/
目录中。
optimize_func()
函数不是由威胁行为者创建的。威胁行为者使用来自XMRig
存储库的开源脚本(特别是randomx_boost.sh脚本)来辅助其感染链。
根据用户的权限,它将运行整个优化功能,或者尝试设置hugepages
到sysctl
的数量:
该链中执行的所有步骤都显示出加密货币挖掘系统优化的明显迹象。最后,脚本授予upd
文件的执行权限、授予其文件夹中所有文件的“777”权限,并运行upd
。
正如我们之前在链中看到的, upd
文件会检查bash.pid
中存储的进程是否仍在运行,如果没有运行,它将执行run
脚本:
运行脚本将启动stop
脚本,这是一个典型的脚本,它会破坏任何已知矿工配置的防御,并根据名称/进程 ID 或网络流量终止任何已知矿工进程。该脚本的缩短版本如下所示:
有趣的是,存在第二个名为init0
的进程终止脚本,这是一个用于在 Linux 环境中终止加密货币矿工的开源脚本。该脚本未运行,因为该脚本的执行流程已被a
脚本注释掉。
成功运行stop
脚本后, run
脚本将通过nohup
在后台启动kswapd01
和kswapd0
二进制文件。
kswapd01
kswap01
二进制文件在确保恶意软件基础架构内的持续通信方面发挥着关键作用。其主要任务是监控并维护连续的socat
过程,这对于与攻击者的 C2 服务器的通信至关重要。
执行时, kswap01
会检查受感染机器上是否正在运行任何现有的socat
进程。如果未找到活动连接,它将继续终止任何正在运行的socat
进程,并从预定义列表中选择备用 IP 地址。然后,二进制文件通过启动一个新的socat
进程来监听本地机器并将流量转发到远程服务器(通常在端口 4444)来建立新的连接。这确保恶意软件能够控制受感染的系统并能继续接收来自攻击者的命令。
但需要注意的是,并非所观察到的每个 OUTLAW 恶意软件包版本都包含socat
二进制文件。在这些情况下, socat
提供的功能要么通过其他方式复制,要么直接省略,依靠替代方法来维持持久性和通信。
通过执行这些检查和修改, kswap01
有助于维持 C2 连接的持久性,使防御者更难中断攻击者与受感染系统之间的通信渠道。
kswapd0
名为kswapd0
的文件是合法XMRig
加密货币矿工(具体版本为 6.22.1)的恶意修改副本。
两个主要的修改决定了该恶意软件的行为:
1.启动 Shell 命令
- 该恶意软件会删除并重新创建受害者的
~/.ssh
文件夹、注入攻击者控制的 SSH 公钥,并重新应用限制性权限(chattr +ia
)以防止修改。这将授予持久的 SSH 访问权限。 - 它还会删除或锁定现有的
XMRig
配置文件(例如~/.xmrig.json
、~/.config/xmrig.json
),以确保攻击者嵌入的矿工设置保持完整。
2. 嵌入式矿机配置
- 该二进制文件使用内部挖掘配置进行编译,允许 XMRIG 无需外部配置文件即可运行。
- 挖矿流量通过纯文本端口(
:80
、:4444
)、SSL(:442
)以及偶尔的 TOR 地址路由到多个 Monero 矿池。请注意,此处的端口 442 不是拼写错误。 - 该配置通过以下方式优化性能:
- 在后台运行挖矿程序
- 启用大页面
RandomX
- 将捐款水平设为零
- 最大化 CPU 线程利用率
通过锁定管理员、阻止配置更改以及注入攻击者控制的 SSH 密钥, kswapd0
可充当一种隐秘的持久性机制 - 允许持续进行 Monero 挖掘和未经授权的远程访问,同时伪装成合法的系统进程。
b/目录的子程序执行:STEALTH SHELLBOT
正如我们之前所述, b/
目录中的a
二进制文件也是通过init
脚本执行的。
该脚本启动另一个stop
脚本,其目的与我们之前描述的相同:终止任何已知的恶意进程。随后,它创建一个名为sync
的脚本,其唯一目的是执行run
脚本。这个脚本在我们之前描述的cronjob中被引用。run
脚本包含三个 base64 编码的 blob,它们通过管道传输到perl
。缩短的脚本示例如下所示:
经过 base64 解码后,可以识别出混淆的perl
脚本。这些脚本利用公共的 Perl Obfuscator实用程序来混淆其内容,使其更难分析:
幸运的是,作者在混淆的脚本中留下了标准的注释。通过使用公开的反混淆器,我们可以通过以下命令对脚本进行反混淆:
perl decode-stunnix-5.17.1.pl < obfuscated_run.pl > deobfuscated_run.pl
之后我们可以查看反混淆后的内容:
这只是脚本的前几行,仅用于说明目的。这种反混淆技术也可以用于 OUTLAW 使用的其他混淆 Perl 脚本。我们稍后会仔细研究这些脚本。
该脚本最后安装自己的 SSH 公钥以实现持久访问、设置限制性权限以及使目录不可变以防止通过chattr
进行修改:
STEALTH SHELLBOT 脚本
OUTLAW 中使用的 STEALTH SHELLBOT 脚本不是定制的,而是公开可用的 IRC 机器人脚本,通常来自旧的 GitHub 存储库和地下论坛。这些脚本已经存在十多年了,最初是为远程管理、自动化和僵尸网络管理而设计的。然而,它们后来被恶意软件作者用于恶意活动。
SHELLBOT 脚本作为基于 IRC 的后门运行,允许攻击者通过 IRC 频道发送预定义命令来远程控制受感染的机器。一旦连接到攻击者的 IRC 服务器,这些机器人就可以:
- 执行任意 shell 命令
- 下载并执行其他有效载荷
- 发起 DDoS 攻击(旧版本)
- 窃取凭证或泄露系统信息
- 管理加密矿工或其他恶意软件组件
OUTLAW 将这些遗留的 SHELLBOT 脚本集成为辅助持久性机制,确保即使其暴力破解模块被破坏,攻击者仍然能够保留远程立足点。该机器人连接到攻击者控制的 IRC C2,在那里监听进一步的命令,从而能够按需执行恶意操作。
虽然这些脚本并不新颖,但它们的持续使用凸显了攻击者如何依赖公开可用的工具,而不是从头开始开发新的恶意软件。
c/目录的子程序执行:客户暴力破解器
作为第三个也是最后一个子程序的一部分,部署了一个自定义的暴力破解工具。与前面的子例程类似,该链从init
和init2
脚本开始。这些脚本都调用了start
脚本,包含以下内容:
该脚本存储当前工作目录,为当前目录中的所有文件提供所有权限(777),并创建一个名为aptitude
的脚本(也被之前设置的 cron 作业调用),以运行run
脚本。创建aptitude
后,被授予执行权限并运行。
run
脚本用于收集 CPU 架构信息并计算 CPU 核心数以确定执行行为,如下所示:
如果系统是 x86_64,它会检查 CPU 的核心数是否少于 7 ,从而在后台执行./go
之前引入随机延迟。如果检测到 7 或更多核心,则会跳过或更改执行(以前使用的二进制golan
现在已被注释掉)。威胁行为者可能正在测试或使用可以充分利用系统中现有核心数量的 Golang 二进制文件,但这只是猜测。
在大多数情况下,执行流移动到名为go
的 bash 脚本:
该脚本确定 CPU 架构并相应地分配线程数:
- 基于 ARM 的系统 → 75 线程
- i686 (32 位 x86) → 325 线程
- 所有其他(默认)→ 475 线程
然后它进入无限循环,执行以下操作:
- 创建并清理临时文件(
v
、p
、ip
、xtr*
、a.*
、b.*
)。 - 将硬编码值(
257.287.563.234
和sdaferthqhr34312asdfa
)写入文件c
和d
。 - 等待随机延迟(1-30 秒)后再启动
blitz
。 - 使用指定参数执行
blitz
并持续 3 小时(-t $threads
建议使用多线程处理)。 - 执行后清理,在重复循环之前删除临时文件和日志文件。
闪电战
OUTLAW 是一种自我传播蠕虫,它使用其定制的暴力破解程序 BLITZ 通过 SSH 暴力攻击进行横向传播。BLITZ 专为积极的自动化凭证攻击而设计,它会系统地扫描并破坏具有弱或默认 SSH 凭证的系统,从而使恶意软件能够在最少的攻击者干预下扩大其立足点。
BLITZ 执行流程
执行后,BLITZ 遵循结构化的攻击序列:
- IP 目标和凭证检索
- BLITZ 联系 SSH C2 服务器以获取目标 IP 和凭证对的列表。
- 暴力认证和系统分析
- BLITZ 使用多线程 SSH 暴力破解,尝试使用被盗的凭证进行身份验证。
- 一旦获得访问权限,它:
- 更改用户密码以实现持久访问。
- 执行系统侦察命令,收集:
- 用户权限
- CPU 详细信息
- SSH 横幅信息
- 操作系统版本
- 将收集的数据泄露到 C2 服务器。
- 子网扫描和横向移动
- 该恶意软件会扫描新近受到感染的系统的本地子网,识别其他可通过 SSH 访问的机器以进行攻击。
- 自我复制和恶意软件部署
- BLITZ 不是从外部 C2 下载,而是直接将 dota3.tar.gz 恶意软件包从感染主机传输到新的受害者,从而增强了持久性并最大限度地减少了对外部基础设施的依赖。
通过结合自动暴力攻击、系统分析、子网扫描和直接恶意软件传输,BLITZ 最大限度地提高了感染效率,同时确保了网络的持续扩展。
二进制分析与 C2 通信
除了暴力操作之外,分析还表明,BLITZ 通过与系统 shell 命令和嵌入式 SSH 库交互来执行其任务。一旦连接到受感染的系统,它就会向 C2 服务器查询更新的目标并传递身份验证数据。
此外,OUTLAW 还包含一个用于 C2 身份验证的硬编码 SSH 密钥,必须使用密码“pegasus”才能解锁。身份验证成功后,Blitz 会将攻击详细信息记录到“v”文件中,其结构如下:
该日志包含:
- 攻击中使用的原始用户名和密码。
- 受害者的IP地址和恶意软件设置的新密码。
- SSH 端口和操作系统详细信息,包括 CPU 规格。
一旦 BLITZ 完成其扫描周期,“v”文件就会被泄露到 SSH C2 服务器,为攻击者提供持续更新的受感染系统列表。
入侵后
为了分析攻击者的入侵后行为,我们特意设置了一个蜜罐,并主动将其凭证上传到攻击者使用的相同 SSH C2 服务器。这实际上将攻击者引入了我们的控制环境,使我们能够密切监视他们的后续行动。
BLITZ 成功暴力破解蜜罐系统并设置新密码几天后,我们观察到使用这些凭据进行了远程登录。登录源自 212.234.225[.]29。攻击者立即执行基本侦察,通过运行 w 命令来检查谁登录了,然后执行 ps 查看正在运行的进程。在输入命令的过程中,他们出现了一个小错误,并快速按 Ctrl+C 终止了提示,这表明此时是手动交互,而不是自动脚本。接下来,攻击者粘贴一系列命令,通过wget
下载 dota3.tar.gz 的新副本,解压并执行新获取的脚本。
整个活动链可以通过会话视图显示,这是一个调查工具,允许您检查根据 Linux 逻辑事件模型以树状结构组织的 Linux 进程数据,其中进程按来源和执行时间组织。它以受终端启发的高度可读的格式显示事件。这使得它成为监控和调查 Linux 基础架构上的会话活动以及了解用户和服务行为的强大工具。
上面显示的攻击链反映了原始的感染方法,表明攻击者正在更新组件或重新感染主机以保持持久性。在验证更新后的有效载荷正在运行后不久,攻击者就断开了与主机的连接,留下了一个可以继续进行 SSH 暴力破解、加密货币挖掘和通过 IRC 进行远程控制的环境。
这次简短的登录提醒我们,即使是不复杂的活动也可能包含一些交互式攻击者活动——一种手动的“质量检查”——强调了及时发现和迅速遏制的重要性。
通过 MITRE ATT&CK 检测 OUTLAW
OUTLAW 是一种 Linux 恶意软件,它依靠 SSH 暴力攻击、加密货币挖掘和蠕虫式传播来感染并维持对系统的控制。虽然不是很复杂,但它涵盖了广泛的 MITRE ATT&CK 技术,使其成为检测工程的有效案例。
本节将 OUTLAW 的攻击链映射到 MITRE ATT&CK,突出显示可在不同阶段识别其活动的 Elastic SIEM 和端点规则以及威胁搜寻查询。
OUTLAW 遵循结构化的感染流程:
- 初始访问——针对弱凭证进行 SSH 暴力破解。
- 执行——运行恶意脚本来启动恶意软件感染的几个阶段。
- 持久性——安装 cron 作业并修改 SSH 密钥。
- 防御逃避——隐藏在隐藏目录中,修改文件权限,使用打包技术、命令编码和混淆脚本。
- 凭证访问– 修改凭证并注入公共 SSH 密钥。
- 发现— 枚举用户、系统和硬件详细信息。
- 横向移动——通过内部 SSH 暴力破解和恶意软件传输进行传播。
- 收集和泄露——收集系统数据并将其泄露至其 C2。
- 命令和控制- 使用 socat 和 STEALTH SHELLBOT 进行 C2 通信。
- 影响——启动 XMRIG 来挖掘加密货币,并利用受感染的主机作为暴力破解节点。
以下部分详细介绍了每种技术的检测策略,帮助防御者有效识别和减轻 OUTLAW 的感染。
TA001:初始访问
OUTLAW 通过机会性 SSH 暴力破解获得初始访问权限,目标是具有弱凭据或默认凭据的系统。弹性预建的检测规则可以成功检测到这种初始访问的方法。这些包括:
此外,还有几条基于身份验证日志的规则来检测可疑的 SSH 身份验证:
除了依赖检测之外,将威胁搜寻纳入您的工作流程也很重要。Elastic Security 使用ES|QL和OSQuery提供了几个搜索查询,这些查询在我们的检测规则存储库中公开提供,特别是在Linux 搜索子目录中。例如,以下两次搜寻可能有助于识别攻击的不同阶段:
TA002:执行
获得初始访问权限后,OUTLAW 执行一系列脚本和二进制文件来建立控制权。下载并解压后,我们检测到:
STEALTH SHELLBOT 脚本通过以下方式检测:
此外,该恶意软件还执行多个可疑的系统命令,触发:
TA003:坚持
这种基于 cron 的执行和 SSH 密钥操作的组合使得 OUTLAW 能够在受感染的系统上保持持久的立足点。我们在《 Linux 检测工程 - 持久性机制入门》出版物中对这两种持久性技术进行了广泛的研究。我们可以通过以下 SIEM 和端点规则检测这些技术:
此外,我们可以通过以下 ES|QL 和 OSQuery 搜索来寻找这些技术:
TA005:防御规避
OUTLAW 采用多种防御规避技术来避免被发现。其主要方法之一是 Base64 解码,通过以下预建规则进行检测:
此外,该恶意软件的二进制文件还用 UPX 打包,从而减小了其大小并改变了其签名,以逃避传统的恶意软件检测。一旦恶意软件在内存中解压,我们就会通过常规恶意软件检测来检测到它。
继续沿着执行链,恶意软件创建几个隐藏文件和目录,并使用chattr
对其进行修改:
我们可以通过以下搜索查询进一步增强检测:
TA006:凭证访问
OUTLAW 通过操纵凭证来维持对受感染系统的持续访问。成功进行 SSH 暴力认证后,恶意软件会用包含恶意 SSH 公钥的新版本替换现有的 SSH authorized_keys 文件,从而授予持久访问权限。这是通过以下信号检测到的:
然后,恶意软件通过使用passwd
实用程序输入新密码来更改经过身份验证的帐户的用户凭据:
TA007:发现
OUTLAW 在成功感染后会收集系统信息来分析受感染的环境。该恶意软件执行各种命令来收集有关系统 CPU、用户权限、操作系统、内存使用情况和可用二进制文件的详细信息。此侦察步骤可帮助攻击者评估系统的功能并确定如何最好地利用受感染的机器。这些都是通过几个构建块规则检测出来的,如我们的rules_building_block目录中所列。以下是 OUTLAW 引发的最重要的问题的简短列表:
默认接口设置不包括构建块规则,因为它们的噪声水平相对较高。但是,可以启用这些规则来协助识别潜在威胁。
TA008:横向移动
OUTLAW 恶意软件通过执行内部 SSH 暴力攻击在受感染的网络中传播。我们可以通过以下 ES|QL 规则识别此行为:
一旦系统被成功暴力破解,恶意软件包dota3.tar.gz
就会从受感染的主机部署到新的目标。然后扫描本地子网以寻找其他目标,以确保恶意软件的持续传播。
弹性预建检测规则可以识别这些横向移动尝试:
此外,将 OUTLAW 恶意软件复制到远程主机后,恶意软件预防警报就会启动。
TA009:收集 & TA010:渗透
OUTLAW 从受感染的机器收集基本系统信息、凭证和 SSH 详细信息,主要用于追踪受感染的主机并促进进一步的攻击。该数据存储在一个简单的文本文件中,然后上传到 C2 服务器。由于此收集活动仅限于收集系统详细信息并将其写入文件,因此其本身并不具有可疑性。
当 OUTLAW 通过 sftp 服务器启动出站 SSH 连接以将收集到的信息传输到预定义的 C2 服务器时,就会发生泄露。虽然这可能类似于正常的 SSH 活动,但我们可以通过 ES|QL 检测到文件传输实用程序的可疑执行:
TA011:指挥与控制
OUTLAW 通过多种渠道与其 C2 基础设施保持通信,允许攻击者发出命令、窃取数据并管理受感染的系统。我们可以通过以下规则检测该恶意软件使用的几个实用程序:
与检测恶意软件的初始访问尝试相关的相同搜索查询也可用于搜索此 C2 活动。此外,还可以使用以下搜索查询:
TA040:影响
OUTLAW 通过消耗 CPU 资源进行加密货币挖掘和执行 SSH 暴力攻击来传播,从而影响受感染的系统。在启动修改后的 XMRIG 挖掘软件之前,尝试进行几项 CPU 和内存优化,包括启用 MSR 写访问权限和设置内核参数(如大页面)。可以通过以下规则检测这些修改:
由于 OUTLAW 尝试通过 modprobe 启用 MSR 写访问但缺乏所需的权限,因此会触发与内核驱动程序相关的规则:
这些规则通过Auditd直接监控init_module()
和finit_module()
系统调用。有关如何设置Auditd Manager 集成以捕获驱动程序事件等的更多信息,请查看《使用 Auditd 的 Linux 检测工程》出版物。
同时,受感染主机发起 SSH 暴力破解尝试,触发:
在整个执行过程中,OUTLAW 会运行终止脚本来终止竞争的恶意软件或以前感染留下的进程。此行为会触发:
攻击指标 (IOC)
完整的指标集可以在Github上找到。
雅苒签名
rule Linux_Hacktool_Outlaw_cf069e73 {
meta:
author = "Elastic Security"
description = "OUTLAW SSH bruteforce component fom the Dota3 package"
reference_sample = "c3efbd6b5e512e36123f7b24da9d83f11fffaf3023d5677d37731ebaa959dd27"
strings:
$ssh_key_1 = "MIIJrTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQI8vKBZRGKsHoCAggA"
$ssh_key_2 = "MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBBC3juWsJ7DsDd2wH2XI+vUBIIJ"
$ssh_key_3 = "UCQ2viiVV8pk3QSUOiwionAoe4j4cBP3Ly4TQmpbLge9zRfYEUVe4LmlytlidI7H"
$ssh_key_4 = "O+bWbjqkvRXT9g/SELQofRrjw/W2ZqXuWUjhuI9Ruq0qYKxCgG2DR3AcqlmOv54g"
$path_1 = "/home/eax/up"
$path_2 = "/var/tmp/dota"
$path_3 = "/dev/shm/ip"
$path_4 = "/dev/shm/p"
$path_5 = "/var/tmp/.systemcache"
$cmd_1 = "cat /proc/cpuinfo | grep name | head -n 1 | awk '{print $4,$5,$6,$7,$8,$9;}'"
$cmd_2 = "cd ~; chattr -ia .ssh; lockr -ia .ssh"
$cmd_3 = "sort -R b | awk '{ if ( NF == 2 ) print } '> p || cat b | awk '{ if ( NF == 2 ) print } '> p; sort -R a"
$cmd_4 = "rm -rf /var/tmp/dota*"
$cmd_5 = "rm -rf a b c d p ip ab.tar.gz"
condition:
(all of ($ssh_key*)) or (3 of ($path*) and 3 of ($cmd*))
}
MITRE ATT&CK Tactic 的 SIEM 和端点规则概述
技术编号 | 描述 |
---|---|
TA001:初始访问 | 检测到潜在的外部 Linux SSH 暴力破解 潜在成功的 SSH 暴力破解攻击 使用不寻常的 SSH 公钥成功进行 SSH 身份验证 异常用户的 SSH 身份验证成功 从不寻常的 IP 地址成功进行 SSH 身份验证 |
TA002:执行 | File Downloaded from Suspicious Source by Web Server Linux.Trojan.Pornoasset 通过异常父进程执行的脚本 由以前未知的可执行文件执行的可疑系统命令 |
TA003:坚持 | Cron Job Created or Modified SSH 授权密钥文件修改 通过文件修改实现持久性 |
TA005:防御规避 | Base64 解码的有效负载通过管道传输到解释器 不寻常的 Base64 编码/解码活动 |
TA006:凭证访问 | SSH 授权密钥文件修改 SSH 授权密钥文件删除 Linux 用户账户凭证修改 |
TA007:发现 | Linux 系统信息发现 |
TA008:横向移动 | 受感染主机的潜在端口扫描活动 |
TA009 和 TA010:收集和渗漏 | 不寻常的文件传输实用程序已推出 |
TA011:指挥与控制 | Socat 反向 Shell 或监听器活动 |
TA040:影响 | 可疑的内核功能活动 |
结论
OUTLAW 证明了即使是简单的恶意软件也能在现代环境中存活并有效扩展。尽管缺乏先进的逃避技术,但其结合了 SSH 暴力攻击、自我复制和模块化组件,使其能够维持长期运行的僵尸网络。OUTLAW 利用受感染的主机进一步传播感染,以最少的攻击者干预确保持续扩展。
我们的蜜罐实验让我们难得一见地了解到了攻击者的真实行为,证实了虽然 OUTLAW 的大部分操作都是自动化的,但也有直接的人机交互的时刻。观察手动命令、侦察尝试甚至简单的印刷错误的能力凸显了僵尸网络维护中经常被忽视的一个方面——操作员驱动的质量控制。这些见解强调了检测策略的必要性,该策略不仅要考虑自动攻击,还要考虑手动的攻击后活动。
通过了解 OUTLAW 如何运行、传播和将感染货币化,防御者可以制定强大的检测策略来减轻其影响。该报告提供了可操作的 SIEM 规则、威胁搜寻查询和取证见解,使安全团队能够领先于类似不断演变的威胁。
参考资料
[1] CounterCraft、 DOTA3 恶意软件频频出现
[2] 瞻博网络, DOTA3:你的物联网设备是否在兼职?
[3] SANS ISC,卫生卫生卫生
[4] Darktrace, 《亡命之徒归来》:揭秘回归特色和新战术