比较Windows系统和Linux之间的勒索软件加密技术
2023-12-20 14:32:49 Author: 嘶吼专业版(查看原文) 阅读量:8 收藏

Check Point Research (CPR)提供了一些最近针对Linux系统和ESXi系统的勒索软件攻击案例,不难发现,这些攻击在过去几年一直在增加。

2021年发布的Babuk源代码显然促进了大量勒索软件的出现,许多针对Linux大量使用OpenSSL库以及ChaCha20/RSA和AES/RSA的算法接连出现。

我们对一些顶级勒索软件家族(总共12个)进行了研究,发现这些勒索软件要么是直接为Linux系统开发的,要么是用具有强大跨平台组件的语言开发的,比如Golang或Rust,允许它们在Windows和Linux上不加区分地编译。

为了更好比较Linux和Windows开发的勒索软件,我们首先需要关注这两个系统的历史演变。

Linux勒索软件

Windows勒索软件

首先,我们注意到,第一个可查的勒索软件样本(尽管处于非常早期的阶段)可以追溯到1989年。这种被称为AIDS的威胁是通过软盘和目标Windows系统传播的。

直到2004年的GPCode,我们才开始看到第一批恶意软件。它们专注于Windows环境,很快勒索软件威胁开始进行演变,如2006年的Archiveus,或2012年作为第一个RaaS出现的Reveton。

到2015年,有了Linux.Encoder.1,这是专门针对Linux的勒索软件。此时,网络威胁已经在Windows系统中得到高度发展。尽管这些威胁在Windows中很成熟,但并不能直接转移到Linux上。

事实上,尽管在2015年已经有针对Linux的勒索软件,但相比来说,数量仍然非常少。从2020年开始一直到现在,RaaS的Linux版本以及用Golang或Rust等语言开发的跨平台样本开始出现。

在目前针对基于linux的操作系统的攻击中,我们分析了一些最新的:

Maori

Cl0p

Cylance

Royal

ViceSociety

IceFire

BlackCat

ESXiArgs

Rorschach

Monti

LockBi

tGwisinLocker

在许多情况下,工具本身被简化了,在二进制文件中只会留下最小的功能和内容,在某些情况下,只将它们减少到文件加密代码。这使得本文所列举的样本非常依赖外部配置、脚本或命令行来配置其目标。最著名的例子之一是Cl0p,它只具有加密功能,它支持的唯一参数是要加密的路径。

在名为“ESXiArgs”的勒索软件中,二进制文件本身甚至没有嵌入RSA公钥,但需要包含密钥的文件的路径作为参数,以便它可以执行加密,这个样本甚至没有加密整个目录的功能,攻击者必须用执行加密器的脚本遍历每个文件。事实上,恶意软件的名称是由使用该恶意软件的攻击者的https给出的,它特意面向这种类型的系统。

除了加密功能之外,许多面向linux的勒索软件几乎没有什么逻辑,因此检测它们可能是一项挑战,因为它们的所有代码都基于许多其他合法应用程序可能包含的相同加密代码。

在许多样本中,与服务器的通信协议,是为加密系统做准备的一些命令执行。创建某种持久性的功能(在许多最活跃的Windows系列中发现),甚至是嵌入式配置都是异常元素,可以实现更详细的恶意软件检测,但在大多数勒索软件中不存在。

当然,也有一些例外,比如BlackCat,它是一个跨平台的样本,具有特定于windows的功能,如删除影子副本或搜索共享文件夹。再比如GwisinLocker,它有一个嵌入式加密配置,允许它在不需要参数的情况下工作,并且更加独立。

最主要和最显著的动机无疑是对ESXi虚拟化系统的特殊兴趣。通过攻击这些系统,攻击者可以极大地影响多个服务和设备(所有使用这种技术虚拟化)。这可能就是为什么绝大多数以linux为目标的勒索软件,尽管除了加密本身之外几乎没有什么功能,却倾向于运行旨在与ESXi系统交互的特定命令,特别是:

 Linux勒索软件图

需要指出的是,由于ESXi系统与Linux系统并不完全相同,因此发布的不同样本包含有静态链接,以便它们可以在两个系统上独立运行。

在所有以linux为中心中,一个非常普遍的模式是,他们倾向于关注特定的技术,这些技术主要与这些系统中这类威胁的主要攻击途径有关。与我们习惯的针对Windows的攻击不同,比如Ryuk或REvil,它们的攻击通常是通过针对许多用户的网络钓鱼活动发起的,Linux最常见的攻击链之一是利用受害者服务器某些暴露服务的漏洞。ESXi中的漏洞也是如此,但也有其他情况,例如IceFire利用IBM技术中的漏洞(CVE-2022-47986)或Cl0p,其Linux版本的目标目录中有几个与Oracle数据库相关的路径以及Linux系统的通用路径。

在Windows环境中,勒索软件攻击者采用广泛的攻击途径来破坏系统。许多具有攻击性的针对windows的勒索软件,通过包含恶意附件(通常在文档中使用宏)或链接的网络钓鱼电子邮件到达受害者的基础设施。例如,Emotet通常是最初的有效负载,受害者基础设施的完全攻击随着Ryuk或Sodinokibi样本的部署而结束。

除了钓鱼电子邮件,过去使用Rig和Magnitude等漏洞工具来利用浏览器或插件等软件中的漏洞,来导致勒索软件的执行(现在已经不常见了)。

另一个常见的攻击途径是利用或暴力破解暴露在互联网上的远程桌面协议(RDP)服务器。

利用暴露服务上的漏洞是勒索软件的主要攻击手段之一。值得注意的是,在这些情况下,攻击链通常涉及到Webshell的部署,最终成为最初允许他们访问并控制相关服务器的工具。

使用被盗凭证获取访问权限(例如,使用SSH)是另一个正在增长的领域。凭证被盗通常是由于其他恶意软件攻击引起的泄漏,或者是由于涉及整个Windows系统网络的同一攻击的横向移动。

在这些情况下,在Linux系统内进行检测是非常复杂的,因为攻击者经常使用内部系统帐户和合法工具来访问系统,而不是后门,其影响与在Windows系统上使用lolbin非常相似。

Linux系统的另一个常见入口类似于Windows系统中的RDP服务,扫描不同的公开服务,然后进行暴力攻击,试图通过弱凭据获得对服务器的访问权。

这是一种非常“嘈杂”的技术,但仍然有效,并且由于访问是通过从公开的服务本身获得的合法凭据进行的,因此难以识别。

如果我们观察Linux服务器的所有常见攻击途径可以发现,每种模式都针对暴露的服务器和关键服务。我们可以看到以linux为目标的勒索软件攻击更侧重于组织和公司,而不是普通用户。

正如许多其他类型威胁的恶意软件家族(如Mirai或Quasar)一样,一旦成功威胁的源代码被发布,其他组织就会迅速出现,并试图利用这些代码通过小的修改(在某些情况下不是那么小)来创建自己的工具。就Linux勒索软件而言,最引人注目的是Babuk勒索软件,我们可以在许多其他勒索软件中找到Cylance或Rorschach样本。

基于Babuk的代码重叠

在许多情况下,对初始工具的检测允许我们检测可能从源代码中出现的所有子家族。

持久性在勒索软件中并不像在其他类型的威胁中那么重要,因为一旦受害者的文件和目录被加密,在同一系统中再次执行基本上是没有意义的。然而,这种类型的恶意软件的攻击链确实有了很大的发展,特别是在Windows环境中,因为其目的不是加密单个计算机,而是传播到其他计算机。在大多数情况下,攻击者的目标是一点一点地破坏整个基础设施,一旦他们取得了控制权,整个AD就会被加密,例如,通过GPO的方式,或者对最关键的计算机进行加密,以增加攻击者收到赎金的机会。

在执行勒索软件之前,会执行一系列允许攻击者访问系统的威胁和工具。这些确实需要持久性,因为整个基础设施的攻击可能需要很长时间。然而,尽管这是最常见的场景,但在某些情况下,威胁本身具有建立持久性的功能。

在Windows环境中,勒索软件通过各种手段实现持久性。最著名的例子包括注册表操纵,如WannaCry和Ryuk,确保其有效负载在系统启动期间执行,以及使用计划任务,如Sodinokibi (REvil)背后的许多威胁攻击者,利用Windows任务调度程序创建恶意任务,确保勒索软件定期执行。

在Windows系统上获得持久性的另一种常见方法是服务创建,这是最严格的。因为它需要受害者计算机上的管理员权限,但在更高级的攻击阶段,攻击者已经获得了必要的凭据,并对基础设施有一定的控制,这是最常用的方法之一。

在ESXi和Linux系统中,很少看到勒索软件采用许多已知的持久性方法,这些方法通常被其他类型的威胁所利用。在访问后,易受攻击的服务器被直接加密,并且在许多情况下,例如Lockbit, ESXiArgs, BlackCat或Gwisin,恶意软件在执行后具有自我删除的功能。

作为攻击过程一部分的webshell的部署也应该被视为维护持久性。webshell充当后门,允许攻击者在重新启动或任何类型的更改后保持对这些服务器的访问。在更复杂的攻击期间通过横向移动访问服务器的场景中,这种情况下的持久性主要减少到创建用户帐户或泄露原始服务器凭据,这允许攻击者通过合法服务(如SSH)维持访问。

最后,考虑到与Linux系统相关的事件与Windows系统相比的明显演变,迟早会部署后门,如Merlin或Poseidon,就像现在在Windows上发生的Cobalt Strike一样,将变得更加普遍。因此,攻击者需要利用在Windows系统中更相似的技术,例如Cron job(相当于Windows任务调度程序)或Daemons(相当于Windows服务)等执行来获得持久性。

在面向linux的勒索软件的受害者类型和目标方面,我们看到了与Windows同类软件的一些最大差异。首先,我们必须考虑到这些系统所处的环境。Windows在个人电脑和大多数组织的用户工作站中更为普遍,然而,在服务器领域,特别是对于使用Linux的某些类型的部署,Linux通常是唯一有效的选择。

这意味着,就像我们可以很容易地找到多个针对个人和终端的Windows勒索软件家族一样,这在Linux系统中要少见得多。针对Linux的勒索软件更明确地指向暴露的服务器或内部网络上的服务器,这些服务器可以从Windows设备上发起的攻击转向访问。

因此,与Windows威胁相比,Linux勒索软件显然是针对中型和大型组织的,Windows威胁在本质上要普遍得多。

同样,这两个系统的内部结构也导致攻击者选择要加密的文件夹和文件的方式有所不同。我们可以在许多面向linux的样本中找到清单,这些清单旨在避免/boot、/etc或/sys等可能导致系统损坏的目录,就像我们看到Windows恶意软件避免使用一样。

在Windows恶意软件中没有包含目标的配置时,它会不加区分地遍历所有系统磁盘。在Linux恶意软件中,更常见的是发现威胁完全依赖于提供一个或多个目标目录的参数或配置,没有这些参数或配置,威胁就不会执行。例如Royal, Monti, Cylance或Lockbit。

Linux和Windows中扩展管理的差异也会让攻击者产生一些奇怪的行为。Cl0p就是这样一种情况,它使用字符“.”来区分文件和文件夹。这在Windows中非常有效,但在Linux中不一定能很好地工作,因为扩展在这个系统中几乎没有相关性。

Cl0p勒索软件使用“.”进行扩展

但并非所有系列中都存在该参数,对于其他示例,值得注意的是,除了与ESXi或CL0p相关路径(Oracle路径为“/u01/u02/u03/u04”)的特定情况外,/home和/root文件夹是配置中最常见的文件夹,然后是在某些情况下出现的/opt。

在Linux中,泄漏通常与攻击载体有关。在使用被盗凭证发生攻击的情况下,通常使用合法工具(如SSH服务)获得访问权限,这同时允许从服务器提取所有类型的信息,而无需部署其他工具。

同样,在许多情况下,利用漏洞获得服务器访问权与Webshell的部署相关联,类似的情况大多数发生在Webshell,以及执行Linux命令的功能。因此,它们经常被用作进行渗透的工具。

在Windows系统中,使用RDP、WinSCP或RClone可能与使用SSH或其他合法工具(如Linux中的Curl或Wget)类似。在Windows中非常常见,而在Linux中不太常见的是使用更复杂的威胁,例如过去的威胁Trickbot或Emotet,或者为此目的使用CobaltStrike或其他开发后框架。随着勒索软件样本的成熟,攻击者的https也很可能会成熟,并且我们最终会在Linux中看到使用后门(如Merlin或Poseidon)的这种场景。

值得注意的是,勒索软件组织利用双重勒索已经有一段时间了,因为他们不仅劫持文件,还威胁要在他们的泄密网站上暴露受害者的敏感信息。事实上,Cl0p等几个知名组织已经开展了一些活动,在这些活动中,他们直接跳过了加密工具,只专注于为随后的勒索活动窃取信息。

在勒索软件事件中,在检测和取证级别上,关键点是攻击者对系统的影响超出了加密本身。在Windows环境中,我们习惯于严密监控旨在删除ShadowCopies、禁用备份以及试图禁用或绕过安全工具的命令。

执行旨在关闭目标服务(如数据库)的命令也相对常见,因为这允许威胁对大多数关键文件进行加密,从而增加受害者支付赎金的压力。

在Linux系统中,对备份和关闭安全工具的担忧还没有Windows那么普遍。然而,如果保持适当的监控,我们可以发现一些影响系统的元素,这些元素可以帮助早期检测。第一个例子在Windows环境中很常见,它是一个互斥锁,在开始加密之前由许多威胁创建,以避免同时执行可能损坏文件而不可能返回。就像在Windows中生成特定的互斥锁对某些家庭起到保护的作用一样,在Linux中,我们有像Lockbit这样的样本,默认情况下,它会生成一个名为/tmp/loker.pid的文件,如果该文件在执行时已经在系统中,则会导致进程立即终止(无论之前生成该文件的进程是否为勒索软件本身)。

与Windows中发生的情况类似,一些家族生成较少重复的文件,例如Gwisin,其生成的互锁文件更具随机性: /tmp/.66486f04-bf24-4f5e-ae16-0af0fdb3d8fe。

当涉及到检测时,一个更简单但效率更低的版本是日志文件。在加密过程中,从真实的攻击活动中找到带有调试信息的文件并不罕见,例如HelloKitty勒索软件或Monti,它们分别生成work.log和result.txt文件,其中包含有关其执行和加密的信息,其内部字符串非常具有这两个家族的特征。但是,应该注意的是,这些文件的存在在任何情况下都不会阻止它们的执行,就像Mutex那样。

关于可以监控的命令的执行,唯一真正值得注意的案例是关于ESXi系统上的虚拟化。大多数面向linux的勒索软件样本都有ESXi版本,或者以直接兼容的方式编译。这就是为什么在这些样本中获得正在运行的设备列表以及停止它们允许加密的功能非常常见的原因。

Royal ransomwareMonti Ransomware中嵌入的Esxi命令

Esxi命令嵌入Monti勒索软件

Gwisin和BlackCat勒索软件:

监控这种类型的执行是很有意义的,因为如果它是在加密之前发生的,这让我们能够预测加密,并可能及时检测并采取行动。

每个勒索软件威胁都要使用加密货币。在Windows中,在某些情况下,比如Conti,这部分是如何委托给Windows api本身的。在许多其他情况下,恶意软件使用许多不同的加密库,如CryptoPP(例如,PYSA Ransomware), mbedtls(例如,Petya)和libcrypt(例如,Moneybird)。

在Linux系统的样本中,有一半的样本使用OpenSSL库执行所有加密任务。事实上,几个最著名的恶意软件在二进制文件中静态链接了这个库,占威胁代码的50%以上。不过还有一些恶意软件是在Golang或Rust中开发的。

就算法而言,在Windows上,ChaCha20和RSA占主导地位。

在Linux世界中可以找到的变体数量较少。这些样本中的大多数主要依赖于AES进行加密,ChaCha20是最常见的替方案。

不过,ESXiArgs使用Sosemanuk进行对称加密,而其中Cl0p则在通常使用非对称加密的地方使用带有嵌入式密钥的RC4。攻击者在攻击时会优先考虑效率,因为覆盖所有目标文件的速度越快,遇到的防御就越少。可靠性是第二个考虑因素,因此他们使用安全的库和算法可以避免被分析。这两个因素导致不同的攻击者会创建相对统一的工具,这有助于我们深入了解所使用的工具和优先级,从而使安全研究人员能够更容易地检测到这种类型的威胁。

通过对linux为目标的勒索软件分析可以发现,它们的核心功能通常被简化为基本的加密过程,从而将其余的工作留给脚本和合法的系统工具。这种极简方法不仅使它们严重依赖外部配置和脚本,而且使它们更难以检测。

研究还显示了勒索软件之间的一些独特策略,明确关注ESXi系统,但也涉及其他技术。勒索软件的主要入口途径是暴露服务中的漏洞,在某些情况下,这些漏洞恰恰是最相关的服务,因此也是这类攻击的主要目标。

比较Windows系统和Linux之间的勒索软件加密技术发现,针对Linux的恶意软件倾向于使用OpenSSL作为主要库,AES作为通用加密基石,RSA作为主要的非对称选择。

参考及来源:https://research.checkpoint.com/2023/the-platform-matters-a-comparative-study-on-linux-and-windows-ransomware-attacks/


文章来源: http://mp.weixin.qq.com/s?__biz=MzI0MDY1MDU4MQ==&mid=2247572389&idx=2&sn=c580157fa0177dfa9e0a51fef847e016&chksm=e80f1d046767add3a12060cd1ef82b24b8eff4b1470d182c92b56ae5a1ba45686c13cd47cc87&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh