声明:该公众号分享的安全工具和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。
前言
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. 初始感染和部署
-
当从 C2 服务器
tddwrt7s.sh
下载软件包时,攻击就开始了。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 脚本检查是否存在现有安装。如果恶意软件已经存在且已解压,它将运行 initall 脚本,启动感染链。否则,它将尝试从提供的暂存服务器列表中下载软件包。为了便于说明,下面显示了植入程序的简短片段:
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
中命名的二进制文件作为后台进程启动并建立持久性。在这两个脚本中,恶意软件都会安装 cron 作业,以定期和系统重启时执行其二进制文件:a/
b/
5 6 * * 0 ~/.configrc6/a/upd@reboot ~/.configrc6/a/upd5 8 * * 0 ~/.configrc6/b/sync@reboot ~/.configrc6/b/sync0 0 */3 * * ~/.configrc6/c/aptitude
尽管脚本几乎同时执行和目录a
中的二进制文件,但我们将首先遵循目录的执行流程。a/
b/
a/
a/ 目录的子程序执行:XMRIG
执行的第一个脚本是a
,它会使用 删除所有现有的 cron 作业,crontab -r
然后将当前工作目录存储在变量中。然后,它会创建一个名为 的 shell 脚本,用于upd
检查进程(存储在 中bash.pid
)是否仍在运行。如果进程未运行,它会./run
作为后台进程执行,确保恶意软件在终止后不断重新启动。
此外,我们还看到一些带注释的命令,表明该恶意软件的其他版本可能以rsync
、go
、kswapd0
和blitz,
等名称存在redtail
。
脚本的下方会创建一个函数,用于检查是否/sys/module/msr/parameters/allow_writes
存在并将其设置为“on”,以启用对模型特定寄存器 (MSR) 的写入。如果文件不存在,则通过modprobe msr allow_writes=on
命令启用 MSR 写入。
/proc/cpuinfo
,并应用特定的 MSR 寄存器值来优化性能。hugepages
计算所需的数量并将其设置在目录中。hugepages``nproc``/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`启动`kswapd01`和二进制文件。`kswapd0``nohup
kswapd01
该kswap01
二进制文件在确保恶意软件基础设施内的持续通信方面起着至关重要的作用。其主要任务是监控和维护连续的socat
过程,这对于与攻击者的 C2 服务器进行通信至关重要。
执行时,kswap01
会检查受socat
感染机器上是否有任何正在运行的进程。如果未找到活动连接,它会继续终止所有正在运行的socat
进程并从预定义列表中选择备用 IP 地址。然后,该二进制文件通过启动新进程socat
来监听本地机器并将流量转发到远程服务器(通常在端口 4444 上)来建立新连接。这可确保恶意软件保持对受感染系统的控制并可以继续接收来自攻击者的命令。
但需要注意的是,并非观察到的每个 OUTLAW 恶意软件包版本都包含socat
二进制文件。在这些情况下,提供的功能socat
要么通过其他方式复制,要么干脆被省略,依靠其他方法来维持持久性和通信。
通过执行这些检查和修改,kswap01
有助于维持 C2 连接的持久性,使得防御者更难以中断攻击者和受感染系统之间的通信通道。
kswapd0
该文件是合法加密货币矿工(具体来说是6.22.1版本)kswapd0
的恶意修改副本。XMRig
两个主要的修改决定了该恶意软件的行为:
1.启动 Shell 命令
-
该恶意软件会删除并重新创建受害者的
~/.ssh
文件夹,注入攻击者控制的 SSH 公钥,并重新应用限制性权限(chattr +ia
)以防止修改。这将授予持久的 SSH 访问权限。 -
它还会删除或锁定现有的
XMRig
配置文件(例如~/.xmrig.json
)~/.config/xmrig.json
,以确保攻击者嵌入的矿工设置保持完整。
2. 嵌入式矿机配置
-
该二进制文件使用内部挖掘配置进行编译,允许 XMRIG 无需外部配置文件即可运行。
-
:80
挖矿流量通过纯文本端口( 、:4444
)、SSL( )以及偶尔的 TOR 地址路由到多个 Monero 矿池:442
。请注意,此处的端口 442 并非拼写错误。 -
该配置通过以下方式优化性能:
-
在后台运行挖矿程序
-
启用大页面
RandomX
-
将捐款水平设为零
-
最大化 CPU 线程利用率
通过锁定管理员、阻止配置更改以及注入攻击者控制的 SSH 密钥,kswapd0
可以作为一种隐秘的持久性机制 - 允许持续的 Monero 挖掘和未经授权的远程访问,同时伪装成合法的系统进程。
b/ 目录的子程序执行:STEALTH SHELLBOT
正如我们之前描述的,目录a
中的二进制文件b/
也是通过脚本执行的init
。
stop
脚本,其目的与我们之前描述的相同:终止任何已知的恶意进程。之后,它会创建一个名为 的脚本sync
,其唯一目的是执行该run
脚本。此脚本在我们之前描述的 cronjob 中引用。该run
脚本包含三个 base64 编码的 blob,它们通过管道传输到perl
。下面显示了一个缩短的脚本示例: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 命令
-
下载并执行其他payload
-
发起 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 二进制文件,但这只是猜测。
在大多数情况下,执行流会转移到名为的 bash 脚本go
:
该脚本确定 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 和凭证对的列表。
-
暴力认证和系统分析
-
更改用户密码以实现持久访问。
-
执行系统侦察命令,收集:
-
将收集的数据泄露到 C2 服务器。
-
用户权限
-
CPU 详细信息
-
SSH 横幅信息
-
操作系统版本
-
BLITZ 使用多线程 SSH 暴力破解,尝试使用被盗的凭证进行身份验证。
-
一旦获得访问权限,它:
-
子网扫描和横向移动
-
该恶意软件会扫描新近受到感染的系统的本地子网,识别其他可通过 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 杀死了提示符,表明此时是手动交互而不是自动脚本。接下来,攻击者粘贴了一系列命令,通过 下载 dota3.tar.gz 的新副本wget
,解压它,并执行新获取的脚本。
整个活动链可以通过会话视图显示,会话视图是一种调查工具,它允许您检查根据 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 暴力破解获得初始访问权限,以使用弱凭据或默认凭据的系统为目标。Elastic 预构建检测规则可以成功检测这种初始访问方法。这些规则包括:
-
检测到潜在的外部 Linux SSH 暴力破解
-
可能成功的 SSH 暴力攻击
此外,还有几条基于身份验证日志的规则可以检测可疑的 SSH 身份验证:
-
使用不寻常的 SSH 公钥成功进行 SSH 身份验证
-
异常用户的 SSH 身份验证成功
-
从不寻常的 IP 地址成功进行 SSH 身份验证
除了依赖检测之外,将威胁搜寻纳入您的工作流程也很重要。Elastic Security 使用ES|QL和OSQuery提供了几个搜寻查询,这些查询在我们的检测规则存储库中公开提供,特别是在Linux 搜寻子目录中。例如,以下两个搜寻可能有助于识别攻击的不同阶段:
-
按源 IP 划分的登录活动
-
到唯一目标的 SSH 网络活动过多
TA002:执行
获得初始访问权限后,OUTLAW 会执行一系列脚本和二进制文件来建立控制权。下载并解压后,我们检测到:
-
Web 服务器从可疑来源下载的文件
-
内存威胁检测警报:Linux.Trojan.Pornoasset
STEALTH SHELLBOT 脚本通过以下方式检测:
-
通过异常父进程执行的脚本
此外,该恶意软件还执行多个可疑的系统命令,触发:
-
由未知的可执行文件执行的可疑系统命令
TA003:坚持
这种基于 cron 的执行和 SSH 密钥操纵的组合使 OUTLAW 能够在受感染的系统上保持持久的立足点。这两种持久性技术都在我们的“ Linux 检测工程 - 持久性机制入门”出版物中进行了广泛的研究。我们可以通过以下 SIEM 和端点规则检测这些技术:
-
Cron 作业已创建或修改
-
SSH 授权密钥文件修改
-
通过文件修改实现持久性
此外,我们可以通过以下 ES|QL 和 OSQuery 搜索来寻找这些技术:
-
通过 Cron 实现持久性
-
通过 SSH 配置和/或密钥实现持久性
TA005:防御规避
OUTLAW 采用多种防御规避技术来避免检测。其主要方法之一是 Base64 解码,可通过以下预构建规则进行检测:
-
Base64 解码的有效负载通过管道传输到解释器
-
不寻常的 Base64 编码/解码活动
-
通过内置实用程序解码和解密Linux有效负载
此外,该恶意软件的二进制文件使用 UPX 加壳,从而减小了文件大小并更改了签名,以逃避传统的恶意软件检测。一旦恶意软件在内存中解壳,我们便可以通过常规恶意软件检测检测到它。
继续沿着执行链,恶意软件创建几个隐藏文件和目录,并使用以下命令对其进行修改chattr
:
-
可写目录中的文件权限修改
-
通过命令行创建隐藏文件和目录
-
Chattr 将文件设为不可变
-
来自异常父母的 Chattr 执行
我们可以通过以下搜索查询进一步增强检测:
-
隐藏进程执行
TA006:凭证访问
OUTLAW 通过操纵凭证来维持对受感染系统的持久访问。在成功进行 SSH 暴力验证后,恶意软件会将现有的 SSH authorized_keys 文件替换为包含恶意 SSH 公钥的新版本,从而授予持久访问权限。可通过以下信号检测到此情况:
-
SSH 授权密钥文件修改
-
SSH 授权密钥文件删除
然后,恶意软件使用该实用程序输入新密码来更改经过身份验证的帐户的用户凭据passwd
:
-
Linux 用户账户凭证修改
TA007:发现
OUTLAW 在成功感染后会收集系统信息,以分析受感染的环境。恶意软件会执行各种命令来收集有关系统 CPU、用户权限、操作系统、内存使用情况和可用二进制文件的详细信息。此侦察步骤可帮助攻击者评估系统的功能并确定如何最好地利用受感染的机器。这些都通过几个构建块规则检测出来,如我们的rules_building_block 目录中所列。以下是 OUTLAW 触发的最重要的规则的简短列表:
-
Linux 系统信息发现
-
通过内置应用程序发现流程
-
系统所有者/用户发现 Linux
-
通过内置工具发现帐户或群组
-
系统网络连接发现
由于构建块规则的噪声水平相对较高,因此默认接口设置不包含构建块规则。但是,可以启用这些规则来帮助识别潜在威胁。
TA008:横向移动
OUTLAW 恶意软件通过执行内部 SSH 暴力攻击在受感染的网络中传播。我们可以通过以下 ES|QL 规则识别此行为:
-
受感染主机的潜在端口扫描活动
-
受感染主机的潜在子网扫描活动
一旦成功暴力破解系统,恶意软件包dota3.tar.gz
就会从受感染的主机部署到新目标。然后扫描本地子网以查找其他目标,以确保恶意软件继续传播。
弹性预建检测规则可以识别这些横向移动尝试:
-
检测到潜在的内部 Linux SSH 暴力破解
-
在全局可写目录中创建远程文件
-
不寻常的远程文件创建
此外,将 OUTLAW 恶意软件复制到远程主机后,恶意软件预防警报就会启动。
TA009:收集 & TA010:渗透
OUTLAW 会从受感染的机器收集基本系统信息、凭证和 SSH 详细信息,主要用于跟踪受感染的主机并促进进一步攻击。这些数据会存储在一个简单的文本文件中,然后上传到 C2 服务器。由于此收集活动仅限于收集系统详细信息并将其写入文件,因此它本身并不可疑。
当 OUTLAW 通过 sftp-server 启动出站 SSH 连接以将收集的信息传输到预定义的 C2 服务器时,就会发生泄露。虽然这可能类似于正常的 SSH 活动,但我们可以通过 ES|QL 检测到文件传输实用程序的可疑执行:
-
不寻常的文件传输实用程序已推出
TA011:指挥与控制
OUTLAW 通过多种渠道与其 C2 基础设施保持通信,允许攻击者发出命令、窃取数据和管理受感染的系统。我们可以通过以下规则检测到该恶意软件使用的几个实用程序:
-
Socat 反向 Shell 或监听器活动
-
来自异常可执行文件的大量出口网络连接
-
通过 先前未知的可执行文件 向 互联网 发出 可疑 网络 活动.
与检测恶意软件的初始访问尝试相关的相同搜索查询也可用于搜索此 C2 活动。此外,还可以使用以下搜索查询:
-
特定代理进程的外部网络连接量低
-
源地址的异常文件下载
-
到唯一目标的 SSH 网络活动过多
TA040:影响
OUTLAW 通过消耗 CPU 资源进行加密货币挖掘和执行 SSH 暴力攻击来传播,从而影响受感染的系统。在启动修改后的 XMRIG 挖掘软件之前,会尝试进行多项 CPU 和内存优化,包括启用 MSR 写访问权限和设置内核参数(如大页面)。可以通过以下规则检测这些修改:
-
可疑的内核功能活动
-
MSR 写访问已启用
由于 OUTLAW 尝试通过 modprobe 启用 MSR 写访问但缺少所需的权限,因此会触发与内核驱动程序相关的规则:
-
非 root 用户加载内核驱动程序
-
内核驱动加载
这些规则通过Auditd直接监视init_module()
和系统调用。有关如何设置Auditd Manager 集成以捕获驱动程序事件等的更多信息,请查看使用 Auditd 进行 Linux 检测工程出版物。finit_module()
同时,受感染主机发起 SSH 暴力破解尝试,触发:
-
潜在的恶意软件驱动的 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:执行 | Web 服务器从可疑来源下载文件通过异常父进程执行Linux.Trojan.Pornoasset脚本由先前未知的可执行文件执行可疑系统命令 |
TA003:坚持 | 创建或修改 Cron 作业SSH 授权密钥 文件修改通过文件修改实现潜在持久性 |
TA005:防御规避 | Base64 解码的有效负载通过管道传输到解释器异常的 Base64 编码/解码活动 |
TA006:凭证访问 | SSH 授权密钥文件修改SSH 授权密钥文件删除Linux 用户账户凭证修改 |
TA007:发现 | Linux 系统信息发现 |
TA008:横向移动 | 受感染主机的潜在端口扫描活动 |
TA009 和 TA010:收集和渗漏 | 不寻常的文件传输实用程序已推出 |
TA011:指挥与控制 | Socat 反向 Shell 或监听器活动 |
TA040:影响 | 可疑的内核功能活动 |
结论
OUTLAW 证明了即使是不成熟的恶意软件也能在现代环境中持续存在并有效扩展。尽管缺乏先进的规避技术,但它结合了 SSH 暴力攻击、自我复制和模块化组件,使其能够维持长期运行的僵尸网络。OUTLAW 利用受感染的主机进一步传播感染,确保在攻击者干预最少的情况下持续扩展。
我们的蜜罐实验让我们得以罕见地一窥攻击者的真实行为,证实虽然 OUTLAW 的大部分操作都是自动化的,但也有直接的人机交互。观察手动命令、侦察尝试甚至简单的印刷错误的能力凸显了僵尸网络维护中经常被忽视的一个方面——操作员驱动的质量控制。这些见解强调了检测策略的必要性,这些策略不仅要考虑自动攻击,还要考虑手动的入侵后活动。
通过了解 OUTLAW 如何运作、传播和利用感染获利,防御者可以制定强大的检测策略来减轻其影响。本报告提供了可操作的 SIEM 规则、威胁搜寻查询和取证见解,使安全团队能够领先于类似的不断演变的威胁。
免费网络安全资料PDF大合集
链接:https://pan.quark.cn/s/41b02efa09e6
原文始发于微信公众号(安全视安):【翻译】非法 Linux 恶意软件:持久、简单且效果惊人
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论