摘要:第三种加载程序使用基于rand()的解码算法来隐藏PE文件,样本具有如下特征:。执行后,加载程序会打开一个WAV文件,读取其数据,解码其内容,然后尝试执行shellcode。

只因放了一首歌,自己的电脑竟成了别人的“矿工”

最近,BlackBerry Cylance发现了一些内嵌恶意代码的WAV音频文件。每一个WAV文件都带有一个加载程序组件,用于解码和执行恶意代码。播放时,部分WAV文件产生的音乐没有任何质量问题,只有少部分会产生白噪声。

分析显示,其中一些WAV文件包含有与XMRig门罗币挖矿程序相关的代码,也有一些包含有用于建立反向shell的Metasploit代码(一款开源的安全漏洞检测工具)。

值得注意的是,这两种有效载荷都是在同一环境中发现的。也就是说,攻击者的目的很可能有两个:一是通过挖矿获取经济利益,二是通过建立远程访问留下后门。

加载程序组件可分为三种,具体如下:

  • 1. 采用Least Significant Bit(LSB)隐写术来解码和执行PE文件的加载程序;
  • 2. 采用基于rand()的解码算法来解码和执行PE文件的加载程序;
  • 3. 采用基于rand()的解码算法来解码和执行shellcode的加载程序。

三种加载程序组件都允许攻击者在受感染设备上执行任意代码,且都经过了混淆处理。

隐写术PE加载程序

如上所述,第一种加载程序采用隐写术从WAV文件中提取可执行文件,理想情况下不会引起怀疑。

BlackBerry Cylance研究人员发现的隐写术PE加载程序具有如下特征:

只因放了一首歌,自己的电脑竟成了别人的“矿工”

与其他两种加载程序不同,它包含一个硬编码的字符串,指定了要加载的文件名(“Song.wav”)。

Song.wav位于一个zip文件中:

只因放了一首歌,自己的电脑竟成了别人的“矿工”

一旦解码,就会导出要执行的函数(“Start”)。

执行后,加载程序就会读取Song.wav,在内存中提取一个DLL,然后执行“Start”。

提取的文件与XMRig门罗币挖矿程序相关联:

只因放了一首歌,自己的电脑竟成了别人的“矿工”

据说,一个高效的加密货币挖矿僵尸网络,一个月就可以为攻击者带来数千美元的收益。

基于Rand()的PE加载程序

第二种加载程序采用基于rand()的解码算法来隐藏PE文件,样本具有以下特征:

只因放了一首歌,自己的电脑竟成了别人的“矿工”

为加载WAV文件,加载程序会使用到如下命令行:

WAV文件具有如下特征:

只因放了一首歌,自己的电脑竟成了别人的“矿工”

与上面的WAV文件不同,此类WAV文件拥有合法的header,但播放时没有音乐,听起来像是白噪声。

加载程序执行时,会读取WAV文件,在内存中提取一个DLL,然后尝试执行指定的入口点。

提取的文件也与XMRig门罗币挖矿程序相关联:

只因放了一首歌,自己的电脑竟成了别人的“矿工”

基于Rand()的Shellcode加载程序

第三种加载程序使用基于rand()的解码算法来隐藏PE文件,样本具有如下特征:

只因放了一首歌,自己的电脑竟成了别人的“矿工”

为加载WAV文件,加载程序会使用到如下命令行:

与前一种加载程序类似,播放时只有白噪声,没有音乐。

执行后,加载程序会打开一个WAV文件,读取其数据,解码其内容,然后尝试执行shellcode。

与前两种WAV文件不同的是,第三种加载程序打开的WAV文件包含的代码与Metasploit相关联(可启动反向shell程序到指定的IP地址),而不是XMRig门罗币挖矿程序。

结论

攻击者使用了隐写术和其他一些编码技术来混淆他们恶意代码,这使得检测成为了一项艰巨的任务。此外,攻击者在执行代码的方法上也非常具有创意,包括使用不同文件格式的多个文件。

从攻击者使用的一些方法来看,它们与一些已知的黑客组织所使用的方法存在部分相似之处。这可能表明,攻击者试图通过模仿他人来妨碍研究人员的归因,避免暴露自己的身份。

相关文章