[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=