当前位置: 首页 > 科技观察

深度分析:Phobos勒索病毒EKING变种样本

时间:2023-03-17 17:32:09 科技观察

0x00概述Phobos家族是最近出现的勒索病毒,于2019年初被研究人员首次发现,此后该恶意软件的新变种不断被发现。与原变种相比,新变种不仅不断改进攻击手段,还经常修改加密文件的扩展名。虽然勒索软件持续的时间比较短,但不少受害者表示,他们支付了赎金,但文件并没有找回。两周前,FortiGuard实验室从野外捕获了一个新的威胁样本。这是一个带有恶意宏的MicrosoftWord文档,用于传播名为EKING的Phobos勒索软件的变体。我们对该样本进行了深入分析,在这篇分析文章中,我们将展示该变体如何感染受害者的系统,以及它如何在受害者的设备和共享网络文件夹文件上使用AES算法进行扫描和加密。0x01在Word中打开抓取的样本打开Word文档后,会提示受害者点击黄色栏中的“启用内容”按钮启用宏,如下图所示。由于宏可能包含恶意代码,默认情况下MSOfficeWord会显示“安全警告”警告用户文档可能存在风险。然后用户可以通过单击“启用内容”按钮来决定是否执行宏。MSOfficeWord中的示例内容。但是,本文档中的安全警告是一个陷阱。查看宏代码,发现有一个内置文件函数Document_Close(),在MSOfficeWord退出时自动调用。也就是说,当受害者关闭文档时,就会执行恶意宏代码。这种方法还可以绕过一些沙箱解决方案,FortiSandbox将这个恶意Word文件识别为风险软件(Riskware)。宏代码非常简洁明了,从打开的样本中提取出一个Base64编码的chunk,保存在本地C:\Users\Public\Ksh1.xls的文件中。然后,通过调用命令“Certutil-decodeC:\Users\Public\Ksh1.xlsC:\Users\Public\Ksh1.pdf”将文件解码为另一个文件。“ksh1.pdf”是一个Base64解码后的文件,实际上是一个PE文件(DLL文件)。下面是宏代码的屏幕截图,显示了Base64编码文件“Ksh1.xls”将在何处解码为“Ksh1.pdf”。Base64解码后的提取文件:宏的最后一个任务是执行命令“Rundll32C:\Users\Public\Ksh1.pdf,In”运行解码后的PE文件“Ksh1.pdf”。解码后的PE文件“Ksh1.pdf”是一个包含导出函数“In”的DLL文件,在上述命令行中被“Rundll32.exe”调用。导出函数In的ASM代码:上图为“Ksh1.pdf”的导出函数In的ASM代码。根据我在ASM代码旁边插入的注释,很容易理解它首先在“C:\Users\Public\cs5”创建了一个新目录。然后,通过调用API“URLDownloadToFile()”从URL“hxxp://178[.]62[.]19[.]66/campo/v/v”下载文件并保存到“C:\Users\Public\cs5\cs5.exe”。最后,通过调用API“CreateProcessA()”运行下载的“cs5.exe”文件。这里,下载URL字符串和完整文件路径字符串都硬编码在DLL中文件“Ksh1.pdf”。值得注意的是,下载的文件“cs5.exe”是Phobos的Payload文件。0x02AnalysisPayloadTheEXEfile"C:\Users\Public\cs5\cs5.exe"isthePayloadPhobos的EKING变种,使用了未知的加壳工具,下图是ExeinfoPE显示的结果。受保护的PhobosPayloadEXE文件:Phobos有一个AES加密的配置块,其中包含许多配置信息(我们分析的变体中有69项)。它们在函数中解密,然后与索引号参数一起使用。它还包含用于加密文件的新扩展名字符串、用于生成加密密钥的数据、文件扩展名列表、Phobos版本信息、受害者的赎金记录等。在下图中,我们可以看到新扩展名“.id”的加密文件的解密[<配置块的新扩展名:0x03启动第二个进程并执行两组命令。当“cs5.exe”运行时,它通过使用来自Explorer.exe进程的令牌调用APICreateProcessWithTokenW()创建自己的第二个进程,以便第二个进程在Explorer.exe令牌的安全上下文中运行。这样,它具有特权需要在受害者的系统上读取和写入更多文件。Phobos在两个创建的线程中执行两组命令。第一组命令在下面列出,并添加了注释:vssadmindeleteshadows/all/quiet–Deletesallofthevolume'sshadowcopies.wmicshadowcopydelete–Deletesshadowcopiesfromlocalcomputer。bcdedit/set{default}bootstatuspolicyignoreallfailuresbcdedit/set{default}recoveryenabledno–Disablestheautomaticstartupprepairfeature.wbadmindeletecatalog–quiet–Deletesthebackupcatalog.Exit通过删除Windows系统用于系统还原的卷副本,受害者无法再使用此功能恢复加密文件。该勒索软件还阻止受害者通过自动启动修复功能恢复文件,或从备份目录中恢复文件。第二组命令关闭受感染系统上的Windows防火墙,如下所示。netshadvfirewallsetcurrentprofilestateoff(Windows7及以上)netshfirewallsetopmodemode=disable(WindowsXPandWindows2003)0x04添加自动运行条目恶意软件还从加密配置块中解密字符串“Software\Microsoft\Windows\CurrentVersion\Run”(索引0x11),这是一个子路径注册表。然后,将在HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER下创建一个自动运行项“cs5”。下图是HKEY_CURRENT_USER下添加的autorun项的截图。添加自动运行项“cs5”:勒索病毒除了将此项添加到系统注册表的autorun组外,还会将“cs5.exe”复制到两个启动文件夹,即“%AppData%\Microsoft\Windows\StartMenu\Programs\Startup”和“%ProgramData%\Microsoft\Windows\StartMenu\Programs\Startup”。下图显示了将“cs5.exe”复制到两个启动文件夹中的ASM代码片段。将Payload文件复制到启动文件夹:Windows启动时,Windows系统会自动执行这两个文件夹中的可执行文件。这意味着Windows将在启动期间运行4个“cs5.exe”文件,以确保恶意软件的持久性。我们不需要担心冲突,因为Phobos使用Mutex对象来确保只有一个进程在运行。如果存在相同的Mutex对象,则其他“cs5.exe”进程将退出。0x05Phobos在受害者系统上的核心任务对于勒索软件,其核心任务是对受害者的文件进行加密,然后勒索受害者以换取解密文件。在这里,我们详细分析了Phobos的EKING变体如何执行此任务。为了提高性能,它会创建多个线程来扫描和加密受害者系统上的文件。另外,它使用了大量的Event对象来控制和同步这些线程的进度。5.1终止进程的线程通过使用线程,勒索软件可以终止41个具有特定名称(在列表中指定)的进程。名单也存储在配置块中,其索引号为0x0a。msftesql.exe;sqlagent.exe;sqlbrowser.exe;sqlservr.exe;sqlwriter.exe;oracle.exe;ocssd.exe;dbsnmp.exe;synctime.exe;agntsvc.exe;mydesktopqos.exe;isqlplussvc.exe;xfssvccon。exe;mydesktopservice.exe;ocautoupds.exe;agntsvc.exe;agntsvc.exe;agntsvc.exe;encsvc.exe;firefoxconfig.exe;tbirdconfig.exe;ocomm.exe;mysqld.exe;mysqld-nt.exe;mysqld-opt.exe;dbeng50.exe;sqbcoreservice.exe;excel.exe;infopath.exe;msaccess.exe;mspub.exe;onenote.exe;outlook.exe;powerpnt.exe;steam.exe;thebat.exe;thebat64。exe;thunderbird.exe;visio.exe;winword.exe;wordpad.exe相同的进程名称列表经常出现在其他勒索软件系列中,它们的做法相同。这些进程属于MSSQLServer、OracleDatabase、VMware、PandaSecurity、MySql、FireFox、SQLAnywhere、RedGateSQLBackup、MSExcel、MSWord、MSAccess、MSPowerPoint、MSPublisher、MSOneNote、MSOutlook、TheBat!、雷鸟、写字板等产品。Phobos继续终止这些应用程序,迫使它们释放当前打开的所有文件,以便对它们进行加密。5.2用于扫描文件并加密文件的线程该线程的线程函数调用APIGetLogicalDrives()获取并枚举受害系统上的所有逻辑驱动器,如“C:\”、“D:\”、“E:\“ETC。然后它为每个逻辑驱动器创建两个扫描线程。这意味着每个逻辑驱动器中的文件都使用两个线程进行处理。忽略两个系统文件夹:为了避免对受害者的Windows系统造成损害,它会忽略两个系统文件夹及其子文件夹,不对其中的文件进行加密。这两个文件夹是“%WinDir%”(通常是“C:\Windows”)和“%ProgramData%\Microsoft\Windows\Caches”。下图显示了Phobos检查当前路径(“\\?\D:")匹配它需要忽略的两个系统文件夹。如前所述,勒索软件创建两个线程来扫描每个驱动器的文件。一个线程用于正常扫描(逐个文件),另一个线程仅用于特殊扫描数据库相关文件。我们可以假设这些文件对受害者来说比其他文件更有价值。然后,将按照以下扩展名(索引号0x06)的顺序扫描数据库文件:fdb;sql;4dd;4dl;abs;abx;accdb;accdc;accde;adb;adf;ckp;db;db-journal;db-shm;db-wal;db2;db3;dbc;dbf;dbs;dbt;dbv;dcb;dp1;eco;edb;epim;fcd;gdb;mdb;mdf;ldf;myd;ndf;nwdb;nyf;sqlitedb;sqlite3;sqlite;除此之外,勒索软件还包含两个扩展排除列表。其中一个包含Phobos之前使用的加密文件扩展名,如下所示(索引0x07):eking;actin;Acton;actor;Acuff;Acuna;acute;adage;Adair;Adame;banhu;banjo;Banks;Banta;Barak;Caleb;Cales;Caley;calix;Calle;Calum;Calvo;deuce;Dever;devil;Devoe;Devon;Devos;dewar;eight;eject;eking;Elbie;elbow;elder;phobos;help;blend;bqux;com;mamba;KARLOS;DDoS;phoenix;PLUT;karma;bbc;CAPITAL;WALLET;另一个列表包含此变体用来向受害者显示勒索信息的文件,以及一些Windows系统文件,如下所示(索引号为0x08):info.hta;info.txt;boot.ini;bootfont.bin;ntldr;ntdetect.com;io.sys;osen.txt扫描线程在回调函数中使用这两个排除列表来过滤文件,根据其规则进行加密。同时,Phobos还在每个扫描线程中创建一个加密线程,对受害者的文件进行加密。那么,扫描线程和加密线程是如何协同工作的呢?扫描线程继续扫描文件并将文件名和完整路径复制到公共缓冲区中,并在选择文件后设置事件。然后加密线程可以从公共缓冲区中获取文件名并对其进行加密。5.3加密算法和密钥的使用Phobos使用AES算法的CBC模式作为其加密文件的加密算法。在我的分析中,发现这个Phobos变种并没有使用Windows提供的内置AES加密API,而是自己实现了AES功能。我们知道,人们在谈到AESCBC加解密时,通常会提到“IV”和“Key”。对于它的密钥长度,我们知道Phobos使用的是256位密钥(20H字节),这是最强的文件加密。此外,它使用非对称公私密钥加密来保护AES密钥。公钥包含在索引号为0x2的配置块中,解密后使用。AES密钥和加密公钥:AES密钥是由解密的公钥使用10H字节的随机数据和10H字节的数据生成的。如下图所示,内存窗口顶部生成AES密钥(20H字节),后面是加密后的AES密钥(80H字节)相关数据。这部分数据使用卷序列号“%systemdrive%”(例如受害系统上的“C:\”)和公钥,还包含函数Sub_401706中的一些解密常量值。加密后的AES密钥之后还有四个字节,其中包含了以上两部分的CRC32散列。一旦受害者提供了系统驱动卷序列号(使用Phobos中的APIGetVolumeInformationW())、加密的AES密钥和其他常值数据,攻击者就可以使用他拥有的私钥来恢复AES密钥。加密后的AES密钥会记录在加密文件中,后面我们会分析加密文件的结构。这就是为什么在勒索信中要求受害者提供系统驱动器的卷序列号。IV(初始向量)数据的长度为10H字节,通常是随机生成的。它也像加密的AES密钥一样记录在加密文件中。IV和AES密钥一起用于数据加密,就像MD5算法中的salt一样。得到IV数据和AES密钥后,就可以对加密文件进行解密了。5.4用于加密文件的线程如上所述,加密线程是由扫描线程启动的。扫描线程选中文件后,会将文件的完整路径复制到加密线程的公共缓冲区中,由扫描线程通知(设置事件对象)。然后它将配置块中的格式字符串(索引号0x04)解密为这些加密文件的新文件扩展名,如下所示,其中“<.id[<>-2987].[wiruxa@airmail.cc].eking新扩展名的加密文件:这个过程只是简单地重命名了新扩展名的加密文件。这次扫描线程选择和过滤的文件是“\\?\E:\test_file.txt”,它的加密文件名为“\\?\E:\test_file.txt.id[[581F1093-2987].[wiruxa@airmail.cc].eking”。然后,继续读取选中的文件内容(例如“E:\test_file.txt”).我们知道AES加密块的大小是固定的10H字节。因此,如果待加密数据的大小不是10H对齐,就需要使用paddingdata追加原始数据来解决这个问题。Phobos勒索软件使用的填充字符是“00”。调用AES_CBC_Encrypt()函数对文件内容进行加密:上图为Phobos调用AES_CBC_Encrypt()函数,其参数arg0为密钥对象(AES_CTXStruct),其中包含用于加密文件内容的IV和密钥(填充三个“00”)。加密后,Phobos通过调用APIWriteFile()(如“E:\test_file.txt.id[[581F1093-2987].[wiruxa@airmail.cc].eking”)将密文保存到加密文件中,如图如下图所示。将密文保存到加密文件中:加密文件内容由两部分组成,第一部分是原文件内容的密文,第二部分是一组数据,我们称之为decryption_config_block,用于解密第一部分。下图是加密文件内容的截图。我们主要分析decryption_config_block中包含的内容。加密文件内容示例:前10H字节(红色标记)为加密后的原始文件内容。接下来的40H字节(以蓝色标记)是一个加密块,其中包含一些常量值以及原始文件名,这些文件名是使用相同的AES密钥和IV加密的。随后的14H字节“00”可以看作是数据分隔符。接下来的10H字节(黑色标记)是这个文件的IV数据。下面的Dword0x03负责通知原始文件内容附加填充的大小。有80H个数据块(绿色标记)是加密AES密钥的相关数据,在扫描线程中产生,不同扫描线程不同。下面的Dword0xF2就是整个decryption_config_block的大小。最后6个字节“4BE51F84A977”从配置块中的索引号0x00开始解密。之后,Phobos做的最后一件事是调用APIDeleteFileW()以从受害者系统中清除原始文件。5.5扫描网络共享资源该线程函数用于网络共享资源。Phobos使用参数dwScope的不同值多次调用APIWNetOpenEnum()。这些参数值是RESOURCE_CONNECTED、RESOURCE_RECENT、RESOURCE_CONTEXT、RESOURCE_REMEMBERED和RESOURCE_GLOBALNET。RESOURCE_CONNECTED:列出当前所有连接的资源;RESOURCE_RECENT:列出所有最近连接的资源;RESOURCE_CONTEXT:只列出调用者网络上下文中的资源;RESOURCE_REMEMBERED:列出所有记住的(持久的)连接;RESOURCE_GLOBALNET:列出网络上的所有资源。这里使用WNetOpenEnumW()和WNetEnumResourceW()这两个API来枚举网络共享资源。成功获取其中一个资源后,Phobos会使用上述资源的完整地址(如\\?\UNC\{资源名称}\{文件夹名称})运行5.2中描述的两个扫描过程,开始扫描并筛选文件。随后,扫描线程启动加密线程并按照5.4中的描述对所选文件进行加密。对于其中一个共享资源,准备启动扫描线程:上图是通过RESOURCE_CONNECTED获取到的共享资源(“\\?\UNC\VBoxSvr\vbox_share_folder”),调用Sub_405840函数对这个进行新的扫描共享资源线程。5.6用于监控和扫描新逻辑驱动器的线程正如我们前面分析的那样,Phobos扫描本地逻辑驱动器上的文件以及网络共享资源,这些资源都是受害系统的当前资源。但是,还有另一个线程,其主要任务是监视新的逻辑驱动器。例如,如果受害者连接了USB驱动器或手机,Windows会将其视为新的逻辑驱动器。这个进程会被这个线程捕获。该线程每秒运行一次检测,并为检测到的任何新逻辑驱动器启动两个新的扫描线程。下图是线程函数逻辑结构的伪代码。扫描新逻辑驱动器的伪代码:0x06向受害者显示勒索信息Phobos的主线程等待所有扫描和加密线程完成其工作。然后,将两个文件info.hta(赎金票据的HTML版本)和info.txt(赎金票据的TXT版本)拖放到桌面和受害者系统上可用逻辑驱动器的根目录。它还使用“打开”命令调用APIShellExecuteExW(),以在受害者的屏幕上打开info.hta的HTML版本,如下图所示。向受害者显示勒索字条:0x07总结在本文中,我对Phobos勒索软件的EKING变体进行了深入分析。我们描述了如何从原始MSWord文档样本中下载有效负载文件(cs5.exe),以及Phobos采取了哪些措施使其在受害者的系统上持久存在。我们深入探讨了Phobos的核心任务——扫描和加密受害者系统上的文件。经过分析,我们现在知道它不仅扫描逻辑驱动器上的文件,还扫描网络共享和新连接的逻辑驱动器。最后分析了Phobos变种是如何使用多线程来完成工作的。最后,我们解释了Phobos如何在加密完成后向受害者显示勒索信息。为保护您的设备免受恶意软件侵害,我们建议您不要打开来自不受信任来源的电子邮件附件。0x08保护方案使用网页过滤、反病毒和内容安全产品来防止Phobos变种攻击,例如:FortiGuard网页过滤服务将下载URL标记为“恶意网站”;FortiGuard反病毒服务检测Word文档和下载的Payload文件并阻止“VBA/Agent.KBU!tr”和“W32/Phobos.HGAF!tr.ransom”;FortiSandbox将Word文档检测为风险软件;使用FortiMail的用户可以检测原始Word文档,并通过CDR服务进一步增强保护,该服务可用于消除Office文档中的宏威胁。此外,为了保护设备免受恶意软件的侵害,我们建议用户不要打开来自不受信任来源的电子邮件附件。我们强烈建议对所有最终用户进行培训,让他们了解如何发现潜在的恶意电子邮件。0x09威胁指标9.1网址hxxp://178[.]62[.]19[.]66/campo/v/v9.2样本SHA-256Word文档:667F88E8DCD4A15529ED02BB20DA6AE2E5B195717EB630B20B9732C8573C4E83PhobosPayload:6E9C9B72D1BDB993184C7AA05D961E706A57B3BECF151CA4F883A80A07FDD9550x0A参考https://id-ransomware.blogspot.com/2017/10/phobos-ransomware.htmlThisarticleistranslatedfrom:https://www.fortinet.com/blog/threat-research/deep-analysis-the-eking-variant-of-phobos-ransomwareIfreproduced,Pleaseindicatetheoriginaladdress.