Lightning Framework 是一种新的未被检测到的类似瑞士军刀的 Linux 恶意软件,它具有模块化插件和安装 rootkit 的能力。
由于威胁行为者对该领域的持续兴趣,Linux 环境年复一年地成为恶意软件的目标。针对 Linux 环境的恶意软件在 2021 年激增,大量创新产生了新的恶意代码,尤其是在勒索软件、木马和僵尸网络中。随着云使用的增加,难怪恶意软件创新在这个领域仍然以惊人的速度加速。
这是对以前未记录和未检测到的 Linux 威胁的技术分析,称为Lightning 框架. 很少看到针对 Linux 系统开发的如此复杂的框架。Lightning 是我们发现的一个模块化框架,它具有多种功能,能够安装多种类型的 rootkit,以及运行插件的能力。该框架具有与威胁参与者通信的被动和主动功能,包括在受感染的机器上打开 SSH,以及多态可延展的命令和控制配置。我们发布此博客仅供参考。我们没有框架中引用的所有文件,但希望此版本能够帮助其他人,如果他们拥有拼图的其他部分。我们没有观察到这种恶意软件被用于野外攻击。
Lightning框架技术分析
该框架由下载器和核心模块组成,并带有许多插件。该恶意软件使用的一些插件是开源工具。下图是框架布局图:
模块概述
姓名 |
磁盘名称 |
描述 |
闪电下载器 |
kbioset |
下载核心模块及其插件的持久模块 |
闪电核心 |
kkdmflush |
Lightning框架的主要模块 |
Linux.Plugin.Lightning.SsHijacker |
soss |
有对这个模块的引用,但还没有在野外找到样本。 |
Linux.Plugin.Lightning.Sshd |
sshod |
带有硬编码私钥和主机密钥的 OpenSSH |
Linux.Plugin.Lightning.Nethogs |
nethoogs |
有对这个模块的引用,但还没有在野外找到样本。大概是软件Nethogs |
Linux.Plugin.Lightning.iftop |
iftoop |
有对这个模块的引用,但还没有在野外找到样本。大概是软件iftop |
Linux.Plugin.Lightning.iptraf |
iptraof |
有对这个模块的引用,但还没有在野外找到样本。大概是软件IPTraf |
Linux.Plugin.RootkieHide |
libsystemd.so.2 |
有对这个模块的引用,但还没有在野外找到样本。LD_PRELOAD Rootkit |
Linux.Plugin.Kernel |
elastisearch.ko |
有对这个模块的引用,但还没有在野外找到样本。LKM Rootkit |
闪电下载器
下载器模块的主要功能是获取其他组件并执行核心模块。
Lightning Downloader在Intezer Analyze 中的结果
下载器模块首先检查它是否位于/usr/lib64/seahorses/名称下的工作目录中kbioset。该框架大量使用仿冒和伪装,以保持不被发现。对seahorses的引用伪装了密码和密钥管理器软件seahorse。如果不是,它将自己重新定位到该工作目录并执行该副本。下载程序将对主机名和网络适配器进行指纹识别以生成 GUID,该 GUID 将被发送到命令和控制 (C2) 服务器。
构建 GUID
然后下载器将联系 C2 以获取以下模块和插件:
Linux.Plugin.Lightning.SsHijacker
Linux.Plugin.Lightning.Sshd
Linux.Plugin.Lightning.Nethogs
Linux.Plugin.Lightning.iftop
Linux.Plugin.Lightning.iptraf
闪电核心
从 C2 获取的资源
联系C2的方法将在下面的可锻C2部分中描述(点击这里跳转到该部分)。然后下载器将执行核心模块 (kkdmflush)。
核心模块的执行
闪电核心
核心模块是该框架中的主要模块,它能够接收来自 C2 的命令并执行插件模块。该模块具有许多功能,并使用多种技术来隐藏工件以保持在雷达下运行。
核心模块将模块调用线程的名称修改为kdmflush,使其看起来是内核线程。
使用prctl修改调用线程名
接下来,核心模块通过创建在系统启动时执行的脚本来设置持久性。这是通过首先创建一个位于/etc/rc.d/init.d/elastisearch. 该名称似乎是误码elasticsearch。将以下内容写入文件:
#!/bin/bash
# chkconfig:2345 90 20
/usr/lib64/seahorses/kbioset &
此脚本将在启动时执行下载器模块。然后使用该chkconfig实用程序添加服务。
创建 init.d 脚本和服务
文件的时间戳被修改以隐藏工件,一种称为“ timestamping ”的技术。对文件的最后修改时间进行了编辑,以匹配whoami、find或su。它将分别查找每个文件,直到找到一个。该技术用于框架创建的大多数文件。
文件时间戳修改功能
该恶意软件将尝试隐藏其进程 ID (PID) 和任何相关的网络端口。这是通过将运行 PID 的框架写入两个文件来实现的:hpi和hpo. 解析这些文件,然后proc/y.y 检查文件是否存在。如果该文件存在,则表示已安装 rootkit。PID 被写入以proc/y.y 供 rootkit 使用,它可以从命令(例如ps 和netstat.
如果存在,则将PID 写入proc/yy(指示 rootkit 存在)
核心模块会以与下载器相同的方式生成一个 GUID 并联系 C2。解析响应并执行命令。核心模块有以下命令:
命令 |
描述 |
系统信息 |
指纹机器 |
PureShell 命令 |
运行 Shell 命令 |
RunShellPure |
启动Linux.Plugin.Lightning.Sshd(SSH 守护程序)插件 |
CloseShellPure |
终止Linux.Plugin.Lightning.Sshd插件 |
Disconnect |
退出核心模块 |
获取远程路径信息 |
收集给定路径的摘要 |
keepAlive |
无操作,连接仍然有效 |
上传文件头 |
检查文件的访问 |
文件编辑 |
获取文件内容和时间元数据 |
TryPassSSH |
将公钥添加到root/.ssh/authorized_keys文件 |
删除 Vec 文件 |
删除指定的文件或路径 |
预下载文件 |
计算文件的校验和 |
下载文件 |
向 C2 发送文件 |
删除Guid |
移除框架 |
更新版本 |
调用 Downloader 模块更新框架 |
更新远程版本 |
更新框架,包括下载器 |
Socks 5 |
设置 Socks5 代理 |
RestorePlug |
与更新版本相同 |
获取域设置 |
获取可延展 C2 配置文件 (cpc) 的内容 |
设置域设置 |
更新可延展 C2 配置文件 (cpc) 的内容 |
安装内核隐藏 |
获取操作系统版本 |
移除内核隐藏 |
移除内核模块 |
更新内核版本 |
删除内核模块并运行uname -r |
覆盖文件 |
覆盖指定文件 |
上传文件内容 |
将从服务器发送的数据写入文件 |
本地插件请求 |
编写 LD_PRELOAD rootkit 或 LKM rootkit |
网络通讯
Core 和 Downloader 模块中的网络通信是通过 TCP 套接字执行的。数据采用 JSON 结构。C2 存储在一个多态编码的配置文件中,该文件对于每个创建都是唯一的。这意味着将无法通过哈希等技术检测到配置文件。密钥内置在编码文件的开头。
编码的可延展 C2 配置文件
动态 XOR 解码例程
解码后的配置采用 JSON 结构。分析示例中的默认配置使用本地 IP 地址10.2.22[.]67和端口33229。
解码默认配置
如果参与者执行RunShellPure命令,则可以使用被动通信模式。这将使用Linux.Plugin.Lightning.Sshd插件在受感染机器上启动 SSH 服务。该插件是一个具有硬编码私钥和主机密钥的 OpenSSH 守护程序,允许攻击者使用自己的 SSH 密钥 SSH 进入机器,从而创建辅助后门。
修改后的 OpenSSH 守护程序中的硬编码密钥
概括
Lightning 框架是一个有趣的恶意软件,因为针对 Linux 开发的这么大的框架并不常见。虽然我们没有所有文件,但我们可以根据我们拥有的模块的字符串和代码推断出一些缺失的功能。很快我们将发布另一个关于使用 osquery 检测闪电框架的机会的博客。
IBM 和 SentinelOne 的朋友和合作伙伴在调查此威胁期间提供的帮助。
闪电框架的 IOC
哈希
文件 |
SHA256 |
闪电下载器 |
48f9471c20316b295704e6f8feb2196dd619799edec5835734fc24051f45c5b7 |
闪电核心 |
fd285c2fb4d42dde23590118dba016bf5b846625da3abdbe48773530a07bcd1e |
Linux.Plugin.Lightning.Sshd |
ad16989a3ebf0b416681f8db31af098e02eabd25452f8d781383547ead395237 |
西格玛检测规则
title: Lightning Framework File Path
status: experimental
description: Detects creation of files related to Lightning Framework.
author: Intezer
references:
- https://www.intezer.com
logsource:
product: linux
category: file_create
detection:
selection1:
TargetFilename|startswith:
- '/usr/lib64/seahorses/'
selection2:
TargetFilename|contains:
- 'kbioset'
- 'cpc'
- 'kkdmflush'
- 'soss'
- 'sshod'
- 'nethoogs'
- 'iftoop'
- 'iptraof'
condition: selection1 and selection2
falsepositives:
- Unknown.
title: Lightning Default C2 Communication
status: experimental
description: Detects communication to default local ip for Lightning Framework
author: Intezer
references:
- https://intezer.com
logsource:
category: firewall
detection:
select_outgoing:
dst_ip: 10.2.22.67
dst_port: 33229
condition: select_outgoing
falsepositives:
- Unknown.
MITRE ATT&CK
战术 |
技术 |
ID |
描述 |
持久性 |
引导或登录初始化脚本 |
T1037 |
init.d 脚本用于下载器模块的持久性 |
持久性 |
SSH 授权密钥 |
T1098.004 |
SSH 密钥可以添加到authorized_keys文件中 |
防御规避 |
混淆文件或信息 |
T1027 |
C2 配置文件在磁盘上编码 |
防御规避 |
去混淆/解码文件或信息 |
T1140 |
C2 配置文件使用动态 XOR 算法解码 |
防御规避 |
隐藏工件 |
T1564 |
隐藏了许多工件,包括端口、PID 和文件时间戳 |
防御规避 |
伪装 |
T1036 |
许多文件被伪装成其他文件或任务 |
防御规避 |
Rootkit |
T1014 |
使用 LKM 和 LD_PRELOAD rootkit |
防御规避 |
时间戳 |
T1070.006 |
修改由 Lightning 创建的文件以匹配其他实用程序的文件 |
防御规避 |
文件删除 |
T1070.004 |
框架有能力自行移除 |
发现 |
文件和目录发现 |
T1083 |
该框架可以列出受感染系统上的文件和目录 |
发现 |
网络服务发现 |
T1046 |
可以使用多个插件来执行网络服务发现 |
发现 |
网络嗅探 |
T1040 |
可以使用多个插件来执行网络嗅探 |
发现 |
系统信息发现 |
T1082 |
闪电可以执行详细的系统指纹识别 |
命令与控制 |
数据编码 |
T1132 |
来自 C2 的数据被编码 |
命令与控制 |
非应用层协议 |
T1095 |
通过 TCP 执行与 C2 的通信 |
命令与控制 |
代理人 |
T1090 |
该框架具有启动 Socks5 代理的能力 |
命令与控制 |
通过 C2 通道渗出 |
T1041 |
数据可以被泄露 |
原文来源:https://www.intezer.com/blog/research/lightning-framework-new-linux-threat/
原文始发于微信公众号(祺印说信安):Lightning Framework 是一种新的未被检测到的 Linux 恶意软件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论