在2020年7月6日和7月9日,就有研究人员观察到与对中东和北非的两个国有组织的攻击有关的文件,这些组织最终安装并运行了Thanos勒索软件的变体。 Thanos变体创建了一个文本文件,该文件显示赎金消息,要求受害者将2万美元转入指定的比特币钱包以恢复系统上的文件。目前,研究人员还无法了解这些攻击的总体影响,也无法了解攻击者是否成功从受害者那里获得了赎金。
加密文件后显示的Thanos赎金记录
Thanos还配置了可以覆盖主引导记录(MBR,Master Boot Record)的功能,MBR是计算机硬盘上重要的组件,计算机必须找到该文件才能找到并加载操作系统。具备了这个功能后,勒索软件会覆盖MBR,以显示与前面提到的文本文件相同的勒索消息,这是勒索软件攻击中很少看到的一种技术。研究人员观察到的最著名的例子是2017年的Petya勒索软件,覆盖MBR是比平常更具破坏性的攻击方法。即使受害者支付了赎金,受害者也将不得不花费更多的精力来恢复他们的文件。幸运的是,在这种情况下,负责覆盖MBR的代码导致了异常,因为勒索消息中包含无效字符,这使MBR完好无损,并允许系统正确启动。这意味着即使将勒索软件配置为覆盖MBR,攻击者也无法成功导致感染Thanos勒索软件的计算机无法启动。
如果MBR覆盖成功,将显示Thanos赎金记录
Thanos勒索软件最初是由Recorded Future在2020年2月发现的,Thanos勒索软件具有一个构建器,该构建器允许攻击者使用多种可用设置来自定义样本。研究人员于2020年1月13日首次观测到Thanos,此后已观测到130多个独特样本。研究人员认为攻击者可以事先访问这些组织的网络,因为样本包含凭据,研究人员相信这些攻击者在传播勒索软件之前已从这些组织的网络中的系统中窃取了凭据。
这种特殊的攻击涉及多层PowerShell脚本,内联C#代码和Shellcode,以便将Thanos加载到内存中并在本地系统上运行。这些层主要基于可在开源框架(如Sharp-Suite和Donut)中免费获得的代码。其中一层涉及自定义PowerShell,该PowerShell负责使用前面提到的被盗凭据将Thanos传播到本地网络上的其他系统。
最新的版本是攻击者为中东和北非国营组织特别设计的,研究人员确定这些组织已将勒索软件加载到内存中并在内存中运行。研究人员发现Thanos变体在功能上与Fortinet在2020年7月讨论的变体非常相似。Fortinet分析的样本还包含启用的网络传播功能,其中包括来自与中东相同直辖市的另一个国有组织的网络凭证研究人员观察到的国有组织。 Fortinet分析的样本包括研究人员观察到的相同的比特币钱包和联系电子邮件。当与在相同时间范围内以同一城市中的组织作为目标的目标相结合时,这表明这些攻击背后的开发者是相同的。
Thanos变体详解
虽然研究人员不知道这些攻击者是如何将Thanos勒索软件传播给中东和北非的两个国有组织的。但是,研究人员知道,使用这些工具背后的组织先前已经访问了这些网络,因为它们已经从网络中获取了有效的凭据。在这两个组织中都使用了完全相同的Thanos样本,这表明同一攻击者使用Thanos构建器创建了样本。
为这些网络创建的Thanos示例在.NET Thanos勒索软件在系统上运行之前就已经开始执行了,特别是使用来自多个开源框架的代码。这些层从一个PowerShell脚本开始,该脚本不仅将另一个PowerShell脚本作为子层加载,而且还尝试使用以前被盗的凭据将勒索软件传播到网络上的其他系统。第二层中的PowerShell只做内联加载嵌入式C#代码,因此初始PowerShell脚本可以执行它。 C#代码是第三层,它基于UrbanBishop,可作为GitHub上Sharp-Suite框架的一部分公开获得。 UrbanBishop代码负责将shellcode写入远程进程并执行它,其中shellcode是运行Thanos勒索软件之前的最后一层。在这种情况下,shellcode是由Donut创建的,Donut是另一个开源框架,它将生成可以在内存中加载和执行.NET程序集的shellcode。
在系统上运行Thanos勒索软件的过程
PowerShell传播器
PowerShell传播器(研究人员称为LogicalDuckBill)具有两个主要用途:
1.加载并运行Thanos勒索软件;
2.通过将自身复制到远程系统并在远程系统上执行,将其传播到其他系统;
LogicalDuckBill中的加载程序功能以base64编码的PowerShell脚本开始,它将使用IEX命令解码并运行。解码并执行的PowerShell包含以下代码,该代码有效地加载基于UrbanBishop的C#代码,随后LogicalDuckBill将调用该代码以注入Shellcode:
然后,LogicalDuckBill将在运行之前检查“c:\”驱动器中是否存在名为“logdb.txt”或“logdb.txt.locked”的文件,此方法用于确保在每个系统上只运行嵌入式勒索软件的一个实例。研究人员还观察到另一个相关示例,该示例查找“ logdbnnn.txt”,这就是为什么研究人员将此脚本称为LogicalDuckBill。如果这些文件不存在,则LogicalDuckBill将向该文本文件写入“ 1”,然后继续执行其功能。
然后,LogicalDuckBill创建一个“notepad.exe”进程,然后它将在正在运行的进程中进行迭代以查找已创建的“notepad.exe”进程的进程ID(PID)。使用记事本进程的PID,PowerShell脚本基于UrbanBishop在已加载的C#代码中调用“Do”方法,最终将Donut框架生成的shellcode注入记事本进程并执行。然后,shellcode解密并将嵌入式.NET可执行文件加载到内存中并执行该程序,这就是Thanos勒索软件有效载荷。
LogicalDuckBill的传播器功能从使用Get-NetTCPConnection cmdlet的脚本开始,以获取系统上当前TCP连接的远程地址。然后,代码通过这些远程地址查找以10.、172.和192.开头的地址作为第一个八位位组,并通过将循环中的最后一个八位位组从1更改为254来遍历每个被发现的网络。对于每次迭代,该脚本将使用Test-NetConnection cmdlet来查看该脚本是否可以通过SMB端口tcp / 445连接到每个远程系统,如果可以,它使用net use命令以以前的方式连接到远程系统。凭证被盗,并将远程系统的C:驱动器安装到本地系统的X:驱动器。然后,脚本使用copy命令将自身复制到新映射的X:驱动器,该驱动器将LogicalDuckBill有效地复制到远程系统。然后,脚本将使用wmic在远程系统上运行流程调用create,以在远程系统上运行新复制的LogicalDuckBill示例。扩展功能通过删除映射的驱动器来完成每次迭代,所有这些操作均通过以下代码执行:
LogicalDuckBill中的这种传播方法类似于Thanos的C#代码中的一种传播方法,但是,使用PowerShell脚本进行传播可以允许攻击者在创建映射的驱动器以及使用wmic运行复制的PowerShell脚本时包括以前被盗的网络凭据。
Thanos勒索软件
Thanos勒索软件是由Recorded Future在2020年2月首次发现的, Thanos勒索软件的代码与其他勒索软件变体(例如Hakbit)非常相似,并且具有允许用户使用各种可用设置自定义样本的构建器。该勒索软件似乎仍在积极开发中,因为与Recorded Future分析的原始样本相比,研究人员观察到了在中东和北非国有企业运行的样本中新增的功能。实际上,在这两个组织的网络上运行的Thanos勒索软件在可用功能上更接近于Fortinet在2020年7月讨论的变体。最明显的区别是,在这些样本中没有禁用Fortinet讨论的安全启动。
与其他Thanos勒索软件样本一样,为在这两个组织的网络上运行而构建的变体使用2048位RSA公钥来加密文件扩展名与表1中列出的文件匹配的文件。在加密文件内容之后,Thanos将文件扩展名“.locked” 添加到磁盘上的文件中。
Thanos将加密的文件扩展名列表
Thanos的这种变体将赎金记录写入名为“HOW_TO_DECYPHER_FILES.txt”的文件到桌面以及包含Thanos加密的文件的所有文件夹中。如图2所示,赎金记录要求将价值“ 20,000美元”的比特币转移到钱包“ 1F6sq8YvftTfuE4QcYxfK8s5XFUUHC7sD9”和联系电子邮件“ [email protected]”,以恢复加密文件。 Fortinet博客和几条推文中显示的.HTA赎金记录显示,其他研究人员和组织在2020年7月看到了联系电子邮件和比特币钱包ID。
Thanos勒索软件中的功能已被其他组织进行了分析,除了重新传播该分析之外,研究人员将仅讨论在此Thanos变体中启用的功能,而以前没有讨论过。但是,研究人员分别在表2和3中描述了在Thanos的此变体中禁用和启用的先前讨论的功能。
禁用的功能,可能是Thanos勒索软件构建器用户界面(UI)上的未选中框
启用的功能,可能是Thanos勒索软件构建器UI上的复选框
启用的第一个配置选项与对Thanos先前版本的分析不匹配,该代码从尝试通过在SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System中设置 “ LocalAccountTokenFilterPolicy”和“ EnableLinkedConnections”来禁用用户帐户控制(UAC)的代码,然后尝试枚举本地和映射的存储卷。为了枚举本地卷,代码创建并运行了一个批处理脚本,该脚本与Ragnar Locker勒索软件用来枚举本地存储卷的批处理脚本几乎完全相同。 Ragnar Locker使用此脚本创建了一个VirtualBox配置文件,该文件将这些卷设置为SharedFolders,这允许Ragnar Locker在VirtualBox虚拟机中运行时访问本地存储卷,如Sophos所述,Thanos实现不会将结果写入VirtualBox配置文件。相反,它仅将配置打印到屏幕上,但不保存输出。因此,研究人员不能确定此功能的目的。
此示例中启用的第二个功能在以前的Thanos变体中未曾观察到,它具有覆盖主引导记录(MBR)的功能。一旦代码检查了操作系统版本不是“Windows 10”或“ Windows 8”,代码将尝试打开“\\.\PhysicalDrive0”并写入一个512字节的字符串以偏移0。写入“\\.\PhysicalDrive0”的偏移量0的文件最初带有“Your files are encrypted. Contact us at: [email protected]…”这样的消息,但是在写入磁盘之前,代码将使用以下字符串替换此字符串:
在此特定示例中覆盖MBR的有趣之处在于它无法正常工作,这可以归因于编程错误或攻击者包括的自定义消息。如上所述,自定义消息的unicode中的单引号字符为字节“\ xe2 \ x80 \ x99”,但是该代码尝试使用“Convert.ToByte”函数转换每个字符,以替换字符串中的单个字节。初始赎金字符串。但是,Unicode单引号字符是三个字节长,并导致异常,该异常破坏了MBR覆盖功能。研究人员确认,更改此单个字符后,MBR覆盖功能将起作用,从而导致显示以下内容,而不是Windows正常启动。
在Thanos示例中,第三个先前未提及的功能涉及创建监视新连接的存储卷的线程。该代码使用管理事件监视程序,当使用以下WMI查询连接新的存储卷时,该事件监视程序将调用函数:
当事件监视程序检测到新连接的存储卷时,它将创建一个线程,该线程执行Thanos用来加密原始存储卷上的文件的文件加密功能。
此版本的Thanos中添加的最后一个功能是能够检测并终止更多分析工具以逃避检测和分析的能力。该示例将枚举正在运行的进程,并终止名称与以下内容匹配的进程:
此Thanos变体将检测并终止以逃避检测的工具列表
PowGoop
虽然研究人员无法确认连接,但他们相信在中东部署Thanos勒索软件的攻击者也使用了研究人员称为PowGoop的下载器。攻击者将使用PowGoop下载器与远程服务器联系,以下载并执行其他PowerShell脚本。这些文件与前面讨论的LogicalDuckBill示例存在于同一环境中,但是研究人员没有观察到专门运行PowGoop和LogicalDuckBill传播器的攻击者。而且,正如预期的那样,此下载器中的PowerShell代码与LogicalDuckBill之间几乎没有代码重叠,因为它们的功能差异很大。唯一的代码重叠是公共变量名$a,两个脚本都使用该公共变量名$a在解码之前存储base64编码的数据。
PowGoop下载器具有两个组件:DLL加载器和基于PowerShell的下载器。 PowGoop加载程序组件负责解密和运行包含PowGoop下载程序的PowerShell代码。与LogicalDuckBill存在于同一环境中的PowGoop加载器DLL的文件名goopdate.dll可能由合法的经过签名的Google Update可执行文件侧载。侧载过程将从合法的GoogleUpdate.exe文件开始,该文件加载名称为goopdate86.dll的合法DLL。当goopdate86.dll库加载goopdate.dll文件(有效运行PowGoop加载程序)时,将发生侧加载。研究人员观察到以下可能相关的文件:
与PowGoop下载器的侧面加载相关的文件列表
goopdate.dll文件是PowGoop加载程序,其功能存在于名为DllRegisterServer的导出函数中。 goopdate.dll文件的DllEntryPoint函数(如果通过上述侧面加载过程进行加载,则会调用该函数),无非就是尝试使用以下命令来运行DllRegisterServer导出的函数:
DllRegisterServer中的功能代码读取名为config.dat的文件,对其进行解码并将其作为PowerShell脚本运行,该脚本是PowGoop下载器组件。为了解码config.dat文件,DLL使用CreateProcessA函数构建并执行PowerShell脚本。由PowGoop加载程序构建的PowerShell脚本将读取config.dat文件的内容,使用一个简单的二乘除法来对base64内容进行解码和解密,并使用IEX命令运行结果PowGoop下载器脚本,如下所示:
研究人员解密的config.dat文件是PowGoop下载器,攻击者将其配置为使用以下URL作为其命令和控件(C2):
PowGoop下载器将通过对此URL的HTTP GET请求与C2服务器通信,它将期望C2服务器响应脚本将解码的base64编码数据的请求,使用System.IO.Compression.GzipStream解压缩解码的数据,然后使用相同的减法乘以用于解密配置的两个密码来解密解压缩的数据。 .dat文件。它将首先与C2通信以获得C2将分配给受感染系统的唯一标识符值。获取此标识符后,脚本将继续与C2通信以获得任务,该脚本将对它们进行解码,解压缩,解密并作为PowerShell脚本运行。该脚本通过使用两个密码加法加密结果,压缩密文并对其进行base64编码,然后使用GET请求将其与Cookie字段中的数据一起传输到C2服务器,从而将任务的结果扩展到C2。
总结
攻击者使用Thanos勒索软件对文件进行加密,并使用PowerShell脚本将其传播到其他系统,特别是在中东和北非两个国有组织的网络上。最新的Thanos变体创建了一个文本文件,该文件显示赎金消息,要求受害者将2万美金转入指定的比特币钱包。
尽管Thanos勒索软件不是新的,但由于这些攻击中使用的变体包含新功能,因此它仍处于积极开发中。新功能包括检测和逃避更多分析工具的能力,通过Ragnar Locker勒索软件使用的技术对本地存储卷进行枚举以及监控新连接的存储设备的新功能。
最重要的是,Thanos的这种变体还包括覆盖MBR并显示相同赎金消息的新功能。覆盖MBR是一种比Thanos以前使用的破坏性更大的勒索软件,即使受害者支付了赎金,受害者也需要付出更多的努力才能恢复其文件。
本文翻译自:https://unit42.paloaltonetworks.com/thanos-ransomware/如若转载,请注明原文地址