墨者防御联盟-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > WEB安全 > 正文

深入分析:Phobos勒索软件EKING变种样本

07-22 WEB安全

Phobos家族是最近浮上的一种勒索软件,在2019年初首次被研究人员发觉。自此开始,该恶意软件持续被发觉存在新的变种。与原有变种相比,新的变种不仅持续改进其攻击想法,同时还经常修改加密文件的扩展名。虽然该勒索软件持续的时刻比较短暂,但有无数受害者都表示,他们支付了勒索的赎金,但文件却没有被恢复。

两周前,FortiGuard实验室从野外捕获了一具新的威胁样本。这是一具Microsoft Word文档,带有一具恶意宏,用于传播Phobos勒索软件名为EKING的变种。我们对该样本举行了深入的分析,在这篇分析文章中,我们将展现该变种是怎么感染受害者的系统,以及它是怎么在受害者设备和共享网络文件夹上扫描并使用AES算法加密文件的。

0x01 在Word中打开捕获的样本

打开Word文档之后,会显示出一条警告,指示受害者单击黄色栏中的“启用内容”按钮以启用宏,如下图所示。

由于宏大概包含恶意代码,所以在默认事情下,MS Office Word会显示一具“安全警告”,警告用户该文档大概存在风险。接着,用户能够经过单击“启用内容”按钮来决定是否执行宏。

MS Office Word中的样本内容:

然而,那个文档中的安全警告是一具圈套。经过查看宏代码,我们发觉其中有一具名为Document_Close()的内置文件函数,当MS Office Word退出时,会自动调用该函数。换而言之,当受害者关闭文档时,将会执行恶意的宏代码。这种方式还能够绕过某些沙箱解决方案,FortiSandbox将那个恶意Word文件识别为风险软件(Riskware)。

宏代码很简洁清楚,它从打开的样本中提取一具Base 64编码的块,并保存在位于C:\Users\Public\Ksh1.xls的本地文件中。接着,经过调用命令“Certutil -decode C:\Users\Public\Ksh1.xls C:\Users\Public\Ksh1.pdf”将文件解码为另一具文件。“Ksh1.pdf”是通过Base64解码后的文件,实际上是一具PE文件(DLL文件)。下面是宏代码的截图,展示了将在何处将Base64编码后的文件“Ksh1.xls”解码为“Ksh1.pdf”。

通过Base64解码后提取的文件:

宏的最终一项任务是执行命令“Rundll32 C:\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文件。

0x02 分析Payload EXE文件

“C:\Users\Public\cs5\cs5.exe”是Phobos的EKING变种的Payload,该变种使用了未知的加壳工具,如下图是Exeinfo PE显示的结果。

受爱护的Phobos Payload EXE文件:

Phobos具有AES加密的配置块,其中包含很多配置信息(在我们分析的变种中包含69项)。它们在一具函数中被解密,接着随着索引号参数一起被使用。其中还包含用于加密文件的新扩展名字符串、用于生成加密密钥的数据、文件扩展名列表、Phobos的版本信息、受害者的勒索提示信息等等。

在下图,我们能够看到对具有新扩展名的加密文件“.id[<

从配置块解密新的扩展名:

0x03 启动第二个进程并执行两组命令

当“cs5.exe”运行时,它经过调用API CreateProcessWithTokenW() 以及来自Explorer.exe进程的令牌来创建自身的第二个进程,从而让第二个进程在Explorer.exe令牌的安全上下文中运行。如此一来,它就具有在受害者的系统上读写更多文件所需的特权。

Phobos在两个创建的线程中执行两组命令。

下面列出了第一组命令,其中包含我添加的注释:

vssadmin delete shadows /all /quiet   – Deletes all of the volume's shadow copies.
wmic shadowcopy delete  – Deletes shadow copies from local computer.
bcdedit /set {default} bootstatuspolicy ignoreallfailures
bcdedit /set {default} recoveryenabled no – Disables the automatic startup repair feature.
wbadmin delete catalog –quiet  – Deletes the backup catalog.
Exit

经过删除Windows系统用于系统还原的卷影副本,受害者无法再使用这一功能来还原加密的文件。勒索软件还能够防止受害者经过自动启动修复功能还原文件,或者从备份名目中还原文件。

第二组命令关闭了受感染系统上的Windows防火墙,如下所示。

netsh advfirewall set currentprofile state off(Windows 7及更高版本)
netsh firewall set opmode mode=disable(Windows XP和Windows 2003)

0x04 添加自动运行项

该恶意软件还从加密的配置块中解密字符串“Software\Microsoft\Windows\CurrentVersion\Run”(索引号为0x11),这是注册表的子路径。接着,会并且在HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER下创建一具自动运行项“cs5”。下图是在HKEY_CURRENT_USER下添加的自动运行项的截图。

添加自动运行项“cs5”:

除了将此项添加到系统注册表的自动运行组之外,勒索软件还会将“cs5.exe”复制到两个启动文件夹中,分别是“%AppData%\Microsoft\Windows\Start Menu\Programs\Startup”和“%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup”。下图展示了将“cs5.exe”复制到两个启动文件夹中的ASM代码片段。

将Payload文件复制到启动文件夹中:

在Windows启动时,Windows系统会自动执行这两个文件夹中的可执行文件。这意味着,Windows将在启动过程中运行4个“cs5.exe”文件以保证恶意软件的持久化。我们无需担心会发生冲突,因为Phobos使用了Mutex对象来确保仅有一具进程正在运行。假如存在相同的Mutex对象,则其他的“cs5.exe”进程将会退出。

0x05 Phobos在受害者系统上执行的核心任务

关于一具勒索软件来讲,其核心任务算是加密受害者的文件,接着举行勒索,以换取对文件的解密。在那个地点,我们将详细分析Phobos的EKING变种是怎么执行这一任务的。

为了提高性能,它创建了多个线程来扫描和加密受害者系统上的文件。此外,它使用了大量Event对象来操纵和同步这些线程的进度。

5.1 用于终止进程的线程

经过使用线程的方式,勒索软件能够终止特定名称的41个进程(在列表中指定)。名称列表同样也是保存在配置块中,高防ip,其索引号为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

在其他勒索软件家族中,也经常会发觉相同的进程名称列表,这些勒索软件也会举行相同的操作。

这些进程属于MS SQL Server、Oracle Database、VMware、Panda Security、MySql、FireFox、SQL Anywhere、RedGate SQL Backup、MS Excel、MS Word、MS Access、MS PowerPoint、MS Publisher、MS OneNote、MS Outlook、The Bat!、Thunderbird、WordPad等产品。

Phobos会然后终止这些应用程序,以迫使它们释放当前打开的任何文件,从而能够对其举行加密。

5.2 用于扫描文件并举行加密的线程

该线程的线程函数调用API GetLogicalDrives()来猎取并枚举受害者系统上的所有逻辑驱动器,例如“C:\”、“D:\”、“E:\”等等。接着,它为每个逻辑驱动器创建两个扫描线程。这意味着,高防cdn,每个逻辑驱动器中的文件都会使用两个线程举行处理。

忽略两个系统文件夹:

为了幸免对受害者的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的内置Crypto API,而是自行实现了AES的功能。

我们懂,当人们在谈论AES CBC加密和解密时,CC防御,通常会提到“IV”和“Key”。

关于其密钥长度,我们懂Phobos使用256位密钥(20H字节),这是最强的文件加密。此外,它使用非对称的公私钥密码系统来爱护AES密钥。公钥包含在索引号为0x2的配置块中,在解密后使用。

AES密钥和基本加密的公钥:

AES密钥是使用10H字节的随机数据和10H字节的数据,由解密的公钥生成的。如下图所示,在内存窗口的最上方生成了AES密钥(20H字节),接下来是加密的AES密钥(80H字节)的相关数据,这部分数据是使用卷序列号“%systemdrive%”(例如受害者系统上的“C:\”)和公钥生成的,并且还包含函数Sub_401706中的一些解密后的常量值。在加密的AES密钥之后还有四个字节,其中包含上述两部分的CRC32哈希值。

一旦受害者提供了系统驱动器卷序列号(使用Phobos中的API GetVolumeInformationW())、加密的AES密钥以及其他常量值数据,攻击者就能够使用其持有的私钥来还原AES密钥。加密的AES密钥将被记录在加密的文件中,稍后我们将分析加密的文件结构。正因这样,在勒索提示信息中要求了受害者提供系统驱动器的卷序列号。

IV(初始向量)数据的长度为10H字节,通常是随机生成的。它也像加密的AES密钥一样,记录在加密的文件中。IV与AES密钥共同用于数据加密,就如同MD5算法中的盐一样。

在获得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对齐,就需要使用填充数据来附加在原始数据的后面,以解决该咨询题。Phobos勒索软件使用的填充字符为“00”。

调用AES_CBC_Encrypt()函数来加密文件内容:

上图显示了Phobos调用AES_CBC_Encrypt()函数,其参数arg0是一具密钥对象(AES_CTX Struct),其中包含用于加密文件内容的IV和密钥(填充了三个“00”)。

加密后,Phobos经过调用API WriteFile()将密文保存到加密文件中(例如“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数据。接下来的Dword 0x03负责通知原始文件内容附加填充的大小。有80H数据块(使用绿色标记)是加密的AES密钥的相关数据,该数据在扫描线程中生成,同时关于不同的扫描线程来讲是不同的。下面的Dword 0xF2是整个decryption_config_block的大小。最终的6个字节“4B E5 1F 84 A9 77”是从配置块中索引号为0x00的位置解密获得的。

之后,Phobos要做的最终一件事算是调用API DeleteFileW()来清除受害者系统中的原始文件。

5.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:列举网络上的所有资源。

在那个地点,使用到WNetOpenEnumW()和WNetEnumResourceW()这两个API来枚举网络共享资源。

在成功猎取到其中的一种资源后,Phobos将使用上面的资源的完整地址(例如\\?\UNC\{resource name}\{folder name}),运行5.2中所描述的两个扫描进程,开始扫描并筛选其中的文件。随后,如5.4中所描述的,扫描线程启动加密线程,并对挑选的文件举行加密。

针对其中一具共享资源,预备启动扫描线程:

上图展示了经过RESOURCE_CONNECTED猎取的共享资源(“\\?\UNC\VBoxSvr\vbox_share_folder”),该资源调用Sub_405840函数,从而针对那个共享资源启动新的扫描线程。

5.6 用于监视和扫描新逻辑驱动器的线程

我们之前分析过,Phobos会扫描本地逻辑驱动器以及网络共享资源上的文件,这些基本上受害者系统当前的所有资源。

可是,还有另外一具线程,其要紧任务是监视新的逻辑驱动器。例如,受害者假如连接了U盘或手机,Windows系统会将其视为新的逻辑驱动器。那个过程会被这一线程捕获。该线程每秒运行一次检测,并对检测到的任何新逻辑驱动器启动两个新的扫描线程。下图展示了该线程功能的逻辑结构伪代码。

用于扫描新逻辑驱动器的伪代码:

0x06 向受害者显示勒索提示信息

Phobos的主线程会等待所有扫描线程和加密线程完成工作。接着,将info.hta(HTML版本勒索提示信息)和info.txt(TXT版本勒索提示信息)这两个文件拖放到桌面以及受害者系统上可用逻辑驱动器的根名目中。它还使用“open”命令调用API ShellExecuteExW(),以在受害者的屏幕上打开HTML版本的info.hta,如下图所示。

向受害者显示勒索提示信息:

0x07 总结

在这篇文章中,我对Phobos勒索软件的EKING变种举行了深入分析。我们介绍了怎么从原始MS Word文档样本中下载Payload文件(cs5.exe),以及Phobos采取了哪些措施来使其在受害者的系统上持久存在。

我们深入分析了Phobos的核心任务——扫描并加密受害者系统上的文件。通过分析之后,我们如今懂,它不仅仅会扫描逻辑驱动器上的文件,还会扫描网络共享资源和新连接的逻辑驱动器。在最终,我们分析了Phobos的变种是怎么使用多个线程来完成其工作的。

最终,我们解释了Phobos在完成加密后怎么向受害者显示其勒索提示信息。

为了爱护设备免受恶意软件的攻击,我们建议不要打开不受信任来源的电子邮件附件。

0x08 防护方案

使用Web过滤、反病毒和内容安全产品,能够防范Phobos变种的攻击,例如:

FortiGuard Web过滤服务将下载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/v

9.2 样本SHA-256

Word文档:

667F88E8DCD4A15529ED02BB20DA6AE2E5B195717EB630B20B9732C8573C4E83

Phobos Payload:

6E9C9B72D1BDB993184C7AA05D961E706A57B3BECF151CA4F883A80A07FDD955

0x0A 参考

https://id-ransomware.blogspot.com/2017/10/phobos-ransomware.html

版权保护: 本文由 主页 原创,转载请保留链接: http://www.heikesz.comhttp://www.heikesz.com/web/87951.html


QQ客服

400-0797-119