[翻译]Lightning 框架: 一个未被发现的 "Swiss Army Knife(瑞士军刀级别) "Linux恶意软件
2022-7-23 21:40 7707
原文地址:https://www.intezer.com/blog/research/lightning-framework-new-linux-threat/
翻译:梦幻的彼岸
Lightning框架是一种新的未被发现的类似瑞士军刀的Linux恶意软件,具有模块化插件和安装rootkits的能力。
年复一年,由于攻击者者对该空间的持续兴趣,Linux环境越来越成为恶意软件的目标。针对Linux环境的恶意软件在2021年激增,大量的创新导致了新的恶意代码,特别是在勒索病毒、木马和僵尸网络中。随着云计算使用的增加,难怪恶意软件的创新在这一领域仍在以惊人的速度加速发展。
这是对一个对以前没有记录和没有检测到的Linux威胁的技术分析,这个威胁被称为 "Lightning框架"。很少看到为针对Linux系统而开发的如此复杂的框架。Lightning是我们发现的一个模块化框架,它有大量的能力,并且能够安装多种类型的rootkit,还能运行插件。该框架具有被动和主动与攻击者沟通的能力,包括在受感染的机器上打开SSH,以及多样的易被构造命令和控制配置。我们发布这个博客的目的是为了提供信息。我们没有在框架中引用的所有文件,但希望这个发布可以帮助其他人,如果他们拥有"拼图"的其它部分。我们没有观察到这种恶意软件被用于攻击。
该框架由一个下载程序和核心模块组成,并有一些插件。恶意软件使用的一些插件是开源的工具。下面是该框架的规划布局图:
名称 | 磁盘上的名称 | 描述 |
Lightning.Downloader | kbioset | 下载核心模块及其插件的持久性模块。 |
Lightning.Core | kkdmflush | Lightning 框架的main模块 |
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 |
Downloader模块的主要功能是获取其他组件并执行核心模块。
Downloader模块开始检查它是否位于工作目录/usr/lib64/seahorses/下,名称为kbioset。该框架大量使用错别字和伪装,以保持不被察觉。对海马的引用掩饰了密码和钥匙管理软件海马。如果不是,它将自己重新定位到该工作目录并执行该副本。Downloader将对主机名和网络适配器进行指纹识别,以生成一个GUID,该GUID将被发送到命令和控制(C2)服务器。
然后,Downloader将联系C2以获取以下模块和插件:
联系C2的方法将在下面的可塑性C2部分描述(点击这里跳到该部分)。然后,Downloader将执行核心模块(kkdmflush)。
核心模块是这个框架中的主要模块,它能够接收来自C2的命令并执行插件模块。该模块有很多功能,并使用一些技术来隐藏非常规内容,以保持在被探测的下运行。
核心模块将模块的调用线程的名称修改为kdmflush,以使其看起来是一个内核线程。
接下来,核心模块通过创建一个在系统启动时执行的脚本来设置持久性。这是通过首先创建一个位于/etc/rc.d/init.d/elastisearch的文件来实现。该文件的名称似乎是typosquat elasticsearch。以下内容被写入该文件中:
#!/bin/bash# chkconfig:2345 90 20/usr/lib64/seahorses/kbioset &
这个脚本将在启动时执行Downloader模块。然后使用chkconfig工具添加该服务。
文件的时间戳被修改以隐藏伪装,这种技术被称为 "时间戳"。文件的最后修改时间被编辑成与whoami、find或su的时间一致。它将分别寻找每个文件,直到找到一个。这种技术被用于该框架所创建的大多数文件。
该恶意软件将试图隐藏其进程ID(PID)和任何相关的网络端口。这是通过将框架运行的PID写入两个文件来实现的:HPI和HPO。这些文件被解析,然后检查文件proc/y.y的存在。如果该文件存在,说明已经安装了一个rootkit。PID被写入proc/y.y,供rootkit使用,rootkit可以从ps和netstat等命令中擦除对框架中运行文件的任何引用。
核心模块将以与Downloader相同的方式生成一个GUID并与C2联系。响应被解析,命令被执行。核心模块有以下命令:
命令 | 描述 |
SystemInfo | 获取机器指纹信息 |
PureShellCommand | 运行Shell命令 |
RunShellPure | 启动Linux.Plugin.Lightning.Sshd(SSH Daemon)插件 |
CloseShellPure | 终止Linux.Plugin.Lightning.Sshd插件 |
Disconnect | 退出核心模块 |
GetRemotePathInfo | 采集给定路径的摘要 |
KeepAlive | 没有任何行动,连接仍然有效 |
UploadFileHeader | 检查文件的访问情况 |
FileEdit | 获取文件和相关时间信息 |
TryPassSSH | 在root/.ssh/authorized_keys文件中添加一个公钥 |
DeleteVecFile | 删除指定的文件或路径 |
PreDownloadFile | 计算文件的校验和 |
DownloadFile | 向C2发送文件 |
DeleteGuid | 删除框架 |
UpdateVersion | 调用Downloader模块来更新框架 |
UpdateRemoteVersion | 更新框架,包括下载程序 |
Socks5 | 设置Socks5代理 |
RestorePlug | 与UpdateVersion相同 |
GetDomainSetting | 获取易被构造的C2配置文件(cpc)内容 |
SetDomainSetting | Updates the contents of the malleable C2 configuration file (cpc) |
InstallKernelHide | 获取操作系统版本 |
RemoveKernelHide | 删除内核模块 |
UpdateKernelVersion | 删除内核模块并运行uname -r |
OverrideFile | 覆盖指定的文件 |
UploadFileContent | 将服务器发送的数据写入文件中 |
LocalPluginRequest | 写入LD_PRELOAD rootkit或者LKM rootkit |
核心模块和下载模块的网络通信是通过TCP套接字进行的。数据的结构是JSON。C2存储在一个多态编码的配置文件中,该文件对每一次创建都是唯一的。这意味着配置文件将无法通过哈希值等技术进行检测。密钥是建立在编码文件的开头。
解码的配置是用JSON构建的。在分析的样本中,默认配置使用本地IP地址10.2.22[.]67,端口为33229。
如果攻击者执行RunShellPure命令,还有一种被动的通信模式。这将在被感染的机器上用Linux.Plugin.Lightning.Sshd插件启动一个SSH服务。该插件是一个OpenSSH守护程序,有硬编码的私人和主机密钥,允许攻击者用自己的SSH密钥SSH到机器上,创造一个二级后门。
Lightning 是一个有趣的恶意软件,因为针对Linux开发的这样一个大型框架并不常见。虽然我们没有所有的文件,但我们可以根据我们拥有的模块的字符串和代码来推断一些缺失的功能。很快,我们将发布另一篇博客,介绍使用osquery检测Lightning框架的机会。
我们要对我们在IBM和SentinelOne的朋友和合作伙伴在调查这一威胁时提供的帮助表示极大的感谢。
title: Lightning Framework File Pathstatus: experimentaldescription: Detects creation of files related to Lightning Framework.author: Intezerreferences: - https://www.intezer.comlogsource: product: linux category: file_createdetection: selection1: TargetFilename|startswith: - '/usr/lib64/seahorses/' selection2: TargetFilename|contains: - 'kbioset' - 'cpc' - 'kkdmflush' - 'soss' - 'sshod' - 'nethoogs' - 'iftoop' - 'iptraof' condition: selection1 and selection2falsepositives: - Unknown. title: Lightning Default C2 Communicationstatus: experimentaldescription: Detects communication to default local ip for Lightning Frameworkauthor: Intezerreferences: - https://intezer.comlogsource: category: firewalldetection: select_outgoing: dst_ip: 10.2.22.67 dst_port: 33229 condition: select_outgoingfalsepositives: - Unknown.
Tactic | Technique | ID | 描述 |
Persistence | Boot or Logon Initialization Scripts | T1037 | 一个init.d脚本被用来维持Downloader模块的持久性 |
Persistence | SSH Authorized Keys | T1098.004 | SSH密钥可以被添加到authorized_keys文件中 |
Defense Evasion | Obfuscated Files or Information | T1027 | C2配置文件在磁盘上被加密 |
Defense Evasion | Deobfuscate/Decode Files or Information | T1140 | C2配置文件用动态XOR算法进行解码 |
Defense Evasion | Hide Artifacts | T1564 | 许多非常规内容被隐藏起来,包括端口、PID和文件时间戳。 |
Defense Evasion | Masquerading | T1036 | 许多文件被伪装成其他文件或任务 |
Defense Evasion | Rootkit | T1014 | 使用了LKM和LD_PRELOAD rootkits |
Defense Evasion | Timestomp | T1070.006 | 修改Lightning创建的文件以与其它程序的文件相匹配 |
Defense Evasion | File Deletion | T1070.004 | 该框架有能力删除自己 |
Discovery | File and Directory Discovery | T1083 | 该框架可以列出被感染系统中的文件和目录 |
Discovery | Network Service Discovery | T1046 | 可以使用多个插件来进行网络服务探测活动 |
Discovery | Network Sniffing | T1040 | 可使用多个插件来进行网络嗅探 |
Discovery | System Information Discovery | T1082 | Lightning 可以进行系统指纹识别 |
Command and Control | Data Encoding | T1132 | 来自C2的数据被加密 |
Command and Control | Non-Application Layer Protocol | T1095 | 与C2的通信是通过TCP进行的 |
Command and Control | Proxy | T1090 | 该框架能够启动Socks5代理 |
Command and Control | Exfiltration Over C2 Channel | T1041 | 数据可以被盗取 |
[2022冬季班]《安卓高级研修班(网课)》月薪三万班招生中~
最后于 2022-7-23 21:44 被梦幻的彼岸编辑 ,原因: