深度分析– Phobos 家族勒索病毒的 .eking变体
作者:互联网
受影响的平台:Microsoft Windows
受影响的各方:Windows用户
影响:为受害者的文件加密赎金
严重级别:严重
Phobos 勒索软件 家族是最近才出现的,直到2019年初才被安全研究人员首先发现。但是从那时起,它继续推出新的变种,不仅发展了攻击方法,而且还经常更改加密文件的扩展名。过去的变体。在其短暂的历史中,其受害者经常抱怨说,由于不还原文件,他们被火卫一的攻击者欺骗。
两周前,FortiGuard实验室从野外捕获了一个新的威胁样本。这是一个带有恶意宏的Microsoft Word文档,该宏旨在传播Phobos的EKING变体。我对该示例进行了深入的分析,在本分析文章中,我将展示此变种如何感染受害者的系统,以及它如何使用AES算法在受害者的设备以及共享的网络文件夹上扫描和加密文件。
在MS Office Word中打开捕获的示例
打开Word文档后,它会显示一条警告,指示受害者单击黄色栏中的“启用内容”按钮以启用宏,如图1.1所示。
由于宏可能包含恶意代码,因此默认情况下,MS Office Word会显示“安全警告”,警告用户文档可能存在风险。然后,用户可以决定是否执行宏(通过单击“启用内容”按钮)。
但是,文档警告屏幕是一个诡计。通过宏代码,我发现它具有一个名为Document_Close()的内置事件函数,当MS Office Word退出时会自动调用该函数。换句话说,当受害者关闭文档时,将执行恶意的宏代码。这还具有绕过某些沙箱解决方案进行检测的好处.
宏的代码简单明了。它从打开的样本中提取一个base64编码的块到“ C:\ Users \ Public \ Ksh1.xls”中的本地文件中。然后,通过调用命令“ Certutil -decode C:\ Users \ Public \ Ksh1.xls C:\ Users \ Public \ Ksh1.pdf ”将文件解码为另一个文件。“ Ksh1.pdf”是base64解码的文件,它是PE文件(DLL文件)。 图1.2 是宏代码的屏幕截图,显示了将在何处执行将base64解码的文件“ Ksh1.xls”转换为“ Ksh1.pdf”的命令。
宏的最后一项任务是通过执行命令“ Rundll32 C:\ Users \ Public \ Ksh1.pdf,In ”来执行解码的PE文件“ Ksh1.pdf ”。解码的PE文件“ Ksh1.pdf”是具有导出功能“ In ”的DLL文件,在上述命令行中由“ Rundll32.exe”调用。
图1.3显示了“ Ksh1.pdf”的导出功能“ In”的ASM代码。从我在ASM代码旁插入的注释中,可以很容易地理解到它首先在“ C:\ Users \ Public \ cs5”处创建了一个新目录。然后,它通过以下方式将文件从URL“ hxxp:// 178 [。] 62 [。] 19 [。] 66 / campo / v / v”下载到文件“ C:\ Users \ Public \ cs5 \ cs5.exe”中调用API“ URLDownloadToFile()”。最后,它通过调用API“ CreateProcessA()”来运行下载的“ cs5.exe”文件。顺便说一下,下载URL字符串和完整文件路径字符串在DLL文件“ Ksh1.pdf”中进行了硬编码。有趣的是,下载的文件“ cs5.exe”是Phobos的有效负载文件。
查看有效载荷EXE文件
“ C:\ Users \ Public \ cs5 \ cs5.exe”是Phobos的EKING变种的有效负载,该变种已被未知的封包程序保护,如图2.1中的Exeinfo PE所示。
Phobos具有AES加密的配置块,其中包含许多配置信息(此变体中为69项)。它们在与索引号参数一起使用之前在函数中解密。它还包含用于加密文件的新扩展名字符串,用于生成用于加密文件的密钥的数据,文件排除列表,Phobos的版本信息,受害者的赎金信息等等。
在图2.2中,我们可以看到解密加密文件“ .id [<< ID >>-2987]。[wiruxa@airmail.cc] .eking”的新扩展名的示例,其索引号为0x04。根据一个解密的字符串“ [<< ID >>-2987] v2.9.1”(索引号为0x33),我们知道此变体的版本为v2.9.1。
启动第二个进程并执行两组命令
当“ cs5.exe”运行时,它将通过调用API CreateProcessWithTokenW()以及来自Explorer.exe进程的令牌来创建自身的第二个进程,以便第二个进程在Explorer.exe令牌的安全上下文中运行。这样,它就具有在受害者的系统上读写更多文件所需的特权。
Phobos在两个创建的线程中执行两组命令。
下面列出了第一组命令,并附有我的注释:
vssadmin delete shadows / all / quiet –删除该卷的所有卷影副本。
wmic shadowcopy delete –从本地计算机删除卷影副本。
bcdedit / set {默认} bootstatuspolicy ignoreallfailures
bcdedit / set {默认} recoveryenabled否 –禁用自动启动修复功能。
wbadmin delete catalog –quiet –删除备份目录。
出口
通过删除Windows系统为系统还原创建的卷影副本,受害者无法使用它来还原加密的文件。它还可以防止受害者从自动启动修复或备份目录中还原文件。
第二组命令关闭了受感染系统上的Windows防火墙,如下所示。
netsh advfirewall将currentprofile状态设置为off –对于Windows 7和更高版本。
netsh防火墙设置opmode模式=禁用 –对于Windows XP,Windows 2003版本。
出口
添加自动运行项目
该恶意软件还从加密的配置块中解密字符串“ Software \ Microsoft \ Windows \ CurrentVersion \ Run”(索引号为0x11),这是注册表子项路径。然后,它为两个根键HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER的相同子键创建一个自动运行项“ cs5”。图4.1是根键“ HKEY_CURRENT_USER”下添加的自动运行项的屏幕截图。
除了将此项添加到系统注册表中的自动运行组之外,它还将“ cs5.exe”复制到两个自动启动文件夹中:“%AppData%\ Microsoft \ Windows \ Start Menu \ Programs \ Startup”和“%ProgramData” %\ Microsoft \ Windows \开始菜单\程序\启动”。图4.2显示了将“ cs5.exe”复制到两个启动文件夹中的ASM代码片段。
Windows启动时,这两个文件夹中的可执行文件将由Windows系统自动执行。这意味着Windows将在启动时启动四个“ cs5.exe”文件,以保持恶意软件的生存。您无需担心冲突。Phobos具有一种使用Mutex对象来确保仅一个进程正在运行的机制。如果存在相同的Mutex对象,则其他“ cs5.exe”进程将退出。
Phobos在受害者系统上执行的核心任务
对于勒索软件,核心任务是加密受害者的文件,然后要求勒索以解密那些加密的文件。在本节中,我将向您展示Phobos的EKING变体如何执行此任务。
为了提高性能,它创建了多个线程来扫描和加密受害者系统上的文件。此外,它使用大量的Event对象来控制和同步这些线程的进度。
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
其他Ransomware家族多次发现此进程名称列表,以执行相同的操作。
这些进程属于MS SQL Server,Oracle数据库,VMware,Panda Security,MySql,FireFox,SQL Anywhere,RedGate SQL Backup,MS Excel,MS Word,MS Access,MS PowerPoint,MS Publisher,MS OneNote,MS Outlook,蝙蝠!,雷鸟,写字板等。
Phobos会继续终止这些应用程序,以迫使它们释放当前打开的任何文件,以便Phobos可以对其进行加密。
2.扫描文件以加密的线程
该线程的线程函数调用API GetLogicalDrives()来获取并枚举受害系统上的所有逻辑驱动器,例如“ C:\”,“ D:\”,“ E:\”等等。然后,它为每个逻辑驱动器创建两个扫描线程。这意味着每个逻辑驱动器中的文件由两个线程处理。
为了避免破坏受害者的Windows系统,它会忽略对两个系统文件夹及其子文件夹下的加密文件,它们分别是“%WinDir%”(通常是“ C:\ Windows”)和“%ProgramData%\ Microsoft \ Windows \ Caches” 。图5.1显示,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):
埃金;肌动蛋白;肌动蛋白;演员;阿库夫;阿库纳;急性;年龄;阿代尔;阿达姆;班胡;班卓琴;班克斯;班塔;巴拉克;卡勒布;凯莱斯;卡利;哈利克斯; Calle;卡卢姆;卡尔沃;道奇;德维尔;魔鬼; Devoe; Devon; Devos;杜瓦瓶; 8;弹出; eking; Elbie;肘; 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还在每个扫描线程中创建一个加密线程,以对受害者的文件进行加密。扫描线程和加密线程如何协同工作:扫描线程继续扫描文件,并将具有完整路径的文件名复制到公共缓冲区中,并在选择一个文件后设置一个事件。然后,加密线程可以从公共缓冲区中获取文件名并进行加密。
3.加密算法和密钥使用
Pbobos使用AES(高级加密标准)CBC(密码块链接)模式作为其加密文件的加密算法。在我的分析中,Phobos的这种变体没有使用Windows提供的用于AES的内置Crypto API,而是实现了自己的AES功能。
如您所知,当人们谈论AES CBC加密和解密时,经常会提到“ IV”和“ Key”。
对于密钥长度,我们知道Phobos使用256位AES密钥(20H字节),这是最强的文件加密。此外,它使用非对称的公私钥密码系统来保护AES密钥。公钥从索引号为0x2的配置块中解密。
AES密钥是使用10H字节的随机数据和10H字节的数据从解密的公共密钥生成的。如图5.2所示,它刚刚在内存窗口顶部生成了AES密钥(20H字节)。后续信息是加密的AES密钥(80H字节)的相关数据,该数据是使用卷序列号“%systemdrive%”(例如受害者系统上的“ C:\”)以及解密后的一些数据生成的。函数Sub_401706中的常量值。加密的AES密钥后的最后四个字节是以上两部分的CRC32哈希值。
为了保护AES密钥,Phobos使用带有攻击者公钥的RSA算法对其进行加密。因此,只要受害者能够获得攻击者的私钥,就可以解密AES密钥,并且还可以恢复加密的文件。即使通过蛮力也很难获得带有保存在Phobos中的公共密钥的RSA私有密钥。私钥始终由攻击者保留。
加密的AES密钥将记录在加密的文件中,稍后我将解释加密的文件结构。
IV(初始化向量)数据的长度为10H字节,通常是随机生成的。它也像加密的AES密钥一样记录在加密的文件中。IV与AES密钥一起用于数据加密,就像MD5算法的盐一样。
一旦获得IV数据和AES密钥,它就可以解密加密的文件。
4.加密文件的线程
如上所述,这是由扫描线程启动的加密线程。扫描线程选择文件后,便会将文件的完整路径复制到加密线程的公用缓冲区,该缓冲区由扫描线程通知(设置事件对象)。
然后,它将配置块中的格式字符串(索引号0x04)解密为那些加密文件的新文件扩展名,如下所示,其中“ << ID >>”将替换为系统驱动器的卷序列号。
.id [<< 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对齐,则需要使用填充来附加数据(Phobos使用“ 00”作为填充)来解决该问题。
图5.4显示Phobos将要调用AES_CBC_Encrypt()函数,该函数的arg0是一个密钥对象(AES_CTX Struct),其中包含用于加密内存窗口中显示的文件内容的IV和密钥(附加了三个“ 00”填充元素对此)。
加密后,Phobos通过调用API WriteFile()将密文保存到加密文件中(例如,“ E:\ test_file.txt.id [[581F1093-2987]。[wiruxa@airmail.cc] .eking”),如图5.5所示。
加密的文件内容由两部分组成。第一部分是 原始文件内容的 密文。第二部分是一组数据,我称其为decryption_config_block。它用于解密第一部分。图5.6是加密文件内容的屏幕截图。我将解释一下decryption_config_block包含的内容。
前10H个字节(用红色包围)是加密的原始文件内容,如图5.5所示。40H字节(由蓝色包围)是一个加密的块,其中包含一些常数值以及原始文件名,这些文件使用相同的AES密钥和IV进行加密。随后的14H字节“ 00”可被视为数据定界符。10H字节(用黑色包围)仅是此文件的IV数据。下一个Dword 0x03告诉原始文件内容附加的填充的大小(再次参考图5.5)。80H数据块(绿色)是加密的AES密钥的相关数据,该数据在扫描线程中生成,并且对于不同的扫描线程而言是不同的。下一个Dword 0xF2是整个decryption_config_block的大小。
之后,Phobos要做的最后一件事是调用API DeleteFileW()从受害人的系统中擦除原始文件。
5.扫描网络共享资源
该线程功能专注于网络共享资源。Phobos使用参数dwScope的不同值多次调用API WNetOpenEnum()。它们是RESOURCE_CONNECTED,RESOURCE_RECENT,RESOURCE_CONTEXT,RESOURCE_REMEMBERED和RESOURCE_GLOBALNET。
RESOURCE_CONNECTED:枚举所有当前连接的资源。
RESOURCE_RECENT:枚举所有最近连接的资源。
RESOURCE_CONTEXT:仅枚举调用方的网络上下文中的那些资源。
RESOURCE_REMEMBERED:枚举所有记住的(持久的)连接。
RESOURCE_GLOBALNET:枚举网络上的所有资源。
这项工作涉及API WNetOpenEnumW()和WNetEnumResourceW()来枚举网络共享资源。
成功获取一种资源后,Phobos将使用上面的资源的完整地址(如\\?\ UNC \ {resource name} \ {folder name})启动我在上面的第2点中讨论的两个扫描线程 ,以启动该资源。扫描和过滤文件。如我在第4点中所述,扫描线程然后启动加密线程,并在选择一个文件时注意到加密 。
我已经讨论过Phobos扫描本地逻辑驱动器上的文件,以及扫描网络共享资源,这些都是受害者系统的所有现有资源。
还有另一个线程,其主要任务是监视将来的逻辑驱动器。为什么要未来?原因是,它在特殊情况下发生,例如,受害者连接了USB闪存驱动器或手机,Windows系统将其视为新的逻辑驱动器。这将被该线程捕获。它每秒运行一次检测,并为它检测到的任何新逻辑驱动器启动两个新的扫描线程。图5.8显示了一个伪代码,该伪代码显示了此线程功能的逻辑结构。
向受害者显示赎金信息
Phobos的主线程等待所有扫描线程和加密线程完成其工作。然后,它将两个文件info.hta(html版本勒索信息)和info.txt(文本版本勒索信息)拖放到桌面以及受害者系统上可用逻辑驱动器的根目录中。它还使用命令“ open”调用API ShellExecuteExW()以在受害者的屏幕上打开html版本的info.hta,如图6.1所示。通过电子邮件联系攻击者时,受害者需要在我的设备的电子邮件主题中提供唯一的受害者ID,例如“ 581F1093-2987”,其中包括系统驱动器的卷序列号(通常为“ C:\”),变体子版本号。
对EKING变体进行深入分析的结论
在这篇文章中,我对Phobos勒索软件的EKING变种进行了深入分析。我已经介绍了如何从原始MS Word文档样本中下载有效负载文件(cs5.exe),以及Phobos如何将其保持在受害者系统上。
我主要分析了Phobos的核心任务-扫描和加密受害者系统上的文件。通过这篇文章,我们现在知道,它不仅扫描逻辑驱动器上的文件,而且还扫描网络共享资源和新连接的逻辑驱动器。我还详细介绍了Phobos的这种变体如何使用多个线程来完成其工作。
最后,我解释了Phobos在加密后如何向受害者显示其勒索信息。
为了保护您的设备免受恶意软件的攻击,我们建议不要打开不受信任来源的电子邮件附件。
Fortinet解决方案
借助FortiGuard的Web过滤,防病毒和CDR(内容撤防和重建)服务,Fortinet客户已受到此Phobos变种的保护,如下所示:
下载的URL被FortiGuard Web过滤服务评为“恶意网站”。
Word文档和下载的有效负载文件被检测为“ VBA / Agent.KBU!tr ”和“ W32 / Phobos.HGAF!tr.ransom ”,并被FortiGuard AntiVirus服务阻止。
此外,FortiSandbox将Word文档检测为风险软件。
FortiMail用户受到FortiGuard AntiVirus的保护,FortiGuard AntiVirus可以检测出发送Phobos的原始Word文档,并进一步受到CDR服务的保护,该服务可用于消除Office文档中所有宏的威胁。
此外,为了防止设备受到这种方式发送的恶意软件的攻击,我们建议用户不要打开不受信任来源的电子邮件附件。强烈建议对最终用户进行有关如何识别和标记潜在恶意电子邮件的培训。
标签:eking,AES,exe,加密,文件,Phobos,线程,变体 来源: https://blog.csdn.net/qq_38515028/article/details/116943169