RARCVE恶意软件分析:从PowerShell解密到Shellcode注入与RC4算法

3 阅读4分钟

[CyberDefenders Write-up] RARCVE (BAT文件转PowerShell与Shellcode调试)

场景

2023年4月左右,威胁行为者利用WinRAR压缩工具中的一个零日漏洞(CVE-2023–38831)。这些武器化的ZIP文件携带多种恶意软件家族,如DarkMe、GuLoader和Remcos RAT,被战略性地投放到交易论坛上。这些压缩包伪装成“比特币交易个人策略”等诱人内容,一旦执行,威胁行为者就能控制受害者机器。你有一份恶意ZIP文件的副本,需要剖析并理解其功能。

分类:恶意软件分析

工具:CyberChef、VsCode、scdbg

什么是CVE-2023–38831?

简而言之,此CVE允许攻击者使用户执行一个与“良性”文件同名文件夹内的文件。用户打开该“良性”文件时,文件夹内的恶意文件会被执行。因此,在ZIP文件内部,我们应预期存在一个“良性”文件、一个与其同名的文件夹,以及该文件夹内的恶意文件。

问题与解答

Q1:从压缩包中提取恶意代码后,解密第二阶段恶意软件使用的密钥是什么?

ZIP文件中包含一个“良性”PDF文件和一个与其同名的文件夹。文件夹内有一个BAT文件。当用户使用存在漏洞的WinRAR版本打开“良性”PDF文件时,该BAT文件会被执行。

提取BAT文件后,可以看到一个PowerShell命令,其中包含一串很长的十六进制有效载荷。该有效载荷会被解码,并与 0x23 进行XOR异或运算,然后放入 C:\Users\Public\akvzmVI.cmd 文件,并以最小化窗口静默执行。

通过CyberChef可以确认XOR密钥确实是 0x23。解密后的内容是另一个经过Base64编码的PowerShell命令,需要进一步解码。

答案:0x23

Q2:恶意软件执行后将有效载荷放置在系统的哪个位置?

答案:C:\Users\Public\akvzmVI.cmd

Q3:根据恶意软件试图导入的库,存在第三阶段操作。请找出恶意软件试图导入函数的库名。

解码Base64命令后,发现它会从 kernel32.dll 导入 VirtualAlloc 函数以分配虚拟内存,并从同一个DLL导入 CreateThread 函数以创建线程,执行将分配到虚拟内存中的shellcode。

答案:kernel32.dll

Q4:恶意软件试图从上一问题中发现的库中导入多少个函数?

答案:2

Q5:从导入的函数来看,恶意软件试图将shellcode注入内存。为了逃避检测,攻击者加密了shellcode。请识别此阶段用于加密shellcode的具体算法。

Shellcode被加密,存在一个负责解密的函数。该函数接收两个变量(密文和一个密钥)进行解密。该函数类似于RC4算法,经确认确实就是 RC4算法

答案:RC4

Q6:恶意软件在互联网通信时使用的特定用户代理是什么?

可以将此阶段的脚本复制到.ps1文件中,仅保留RC4解密函数、shellcode和密钥,然后使用 [System.IO.File]::WriteAllBytes("C:\Users\Administrator\shellcode.raw", $Yzoic) 创建一个包含解密后shellcode的文件,以便调试。

使用scdbg(Shellcode调试器)调试该shellcode时(勾选Unlimited steps和Findsc),可以看到前两个字节是 FC E8,这是典型的Windows shellcode。启动调试器从索引0开始,它会加载 wininet 库(用于通过FTP和HTTP协议访问互联网的API),然后连接到 linode.bratbg.eu 的8080端口,并使用预定义的用户代理。

答案:Mozilla/5.0(Macintosh; Intel Mac OS X13_4) AppleWebKit/605.1.15(KHTML,likeGecko) Version/16.5 Safari/605.1.15

Q7:该shellcode是一个无阶段的有效载荷,等待攻击者服务器下发最终有效载荷。恶意软件从哪个域名和端口下载最终阶段?

答案:linode.bratbg.eu:8080 CSD0tFqvECLokhw9aBeRqlYOt3ps3tPAD0LJObDymBaJQWhJrDh5ssxGxqyuFtK5lQJ2absx77FSJ4o+Tl7P/1XxWxBtHfvLG0BqZRg8xc8Ez1QETB/VBhPsYRjNCzkP7oAjeR69BPLg+PeZCg1dhJK0Nx8b9wqssGZegzqKCas=