自解压、免杀、P2P传播,全能挖矿病毒GroksterMiner来袭

2019-08-13 12,401

0x0 事件背景


近日,深信服安全产品监控到一个“ Lucio Dalla Discografia Completa ”的恶意文件,该恶意文件伪装成一个著名的意大利歌手唱片集合,诱惑歌迷运行,释放门罗币挖矿程序,并通过P2P网络传播,造成极大威胁。该挖矿蠕虫的持续化攻击手段比较单一,仅使用了自启动文件夹的方法,但为了降低被检测率,该蠕虫的作者使用了一些有趣的技术:


1、使用自解压程序隐藏恶意PE文件的内容;

2、使用文件加壳加文件拆分技术,将恶意文件加壳后拆分为多个部分,在使用时再将其组合起来;

3、通过P2P传播病毒文件的时候,将病毒文件DOS头中”program”替换为随机的7位字符,使文件在每次运行时出现不同的HASH值。


图片1.png 

 

0x1行为分析


母体程序是一个SFX格式(自解压)的文件,用7-Zip或者WinRAR打开后可以看见这个母体程序包含13个.tmp文件、1个.vbs脚本、1个.bat批处理脚本,1个setup文件。在图一的右侧可以看到,当该自解压程序被双击运行时会执行run.vbs脚本,并且该程序在释放文件时会覆盖当前目录下的任何同名文件而无需用户确认。

 

图片2.png 

 

run.vbs脚本比较简单,只是设置在自己退出后,以后台启动的方式运行installer.bat批处理脚本。


图片3.png 

 

Installer.bat 是将007.tmp文件备份并且改名为007.bat,然后启动007.bat批处理文件。


图片4.png 

 

007.bat该文件是由007.tmp文件改名后获得,这个批处理文件进行了很多行为,首先它获得当前文件的路径,将该文件夹中刚刚释放的文件拷贝一份到”#”文件夹下,并且将当前文件夹中的002.tmp,003.tmp,004.tmp,005.tmp,006.tmp分别重命名为7z.exe,7z.dll,Default.SFX,Rar.exe,sfx.conf。


图片5.png 

 

通过008.tmp,009.tmp,010.tmp三个文件组合生成001.tmp;

通过011.tmp,012.tmp,013.tmp组合生成32.tmp,

通过014.tmp,015.tmp,016.tmp组合生成64.tmp。

在后面001.tmp,32.tmp,64.tmp这三个文件会被重命名为.exe。

 

图片6.png

图片7.png

图片8.png 

 

使用二级制编辑器打开008.tmp,012.tmp,015.tmp文件,发现这三个文件内容相同,都是PE头的前半部分。


图片9.png 

 

009.tmp,012.tmp,015.tmp实际上生成一个7位的字符串,替换原始PE文件中的”This program cannot be run in DOS mode”中的 “program”。


图片10.png 

 

010.tmp,013.tmp,015.tmp是PE文件的后半部分。


图片11.png 

 

这步操作实际上是将PE文件拆分开存储,然后在使用时将它们拼接起来,每次生成时都将其DOS头中的”program”替换为随机的7位字符串,致使每次生成的新文件的HASH值都不同。增加了查杀难度。

 

之后脚本采用刚刚新建的Rar.exe和7z.exe在属于P2P平台的其他目录中创建新的自解压文件,使用这个手段在文件共享社区中传播攻击,这些操作针对每个系统驱动号执行的,从A盘到Z盘都执行一遍。


图片12.png 

 

然后根据不同的系统版本号执行不同的例程(从5.x到15.x)。


图片13.png 

 

这些例程执行的操作如下:

1、创建一个”%systemdrive%\AppCache\x86”目录并且立即隐藏;

2、将当前文件夹下的001.tmp复制到自启动文件夹下并重命名为”svchost.exe”;

3、将32\64.tmp复制到”"%systemdrive%\AppCache\x86\”文件夹下并且重命名为svchost.exe并且将其隐藏;

4、启动复制后的001.tmp文件。

 

 图片14.png

图片15.png

 

然后打开001.tmp,观察其导入表,发现这似乎是一个加过壳的程序,用ExeInfoPe查壳,果然是一个已知版本的UPX壳。


图片16.png 

 

使用脱壳工具脱壳后然后查看字符串,会发现刚才复制的32/64.tmp文件的文件路径。


图片17.png 

 

找到该字符串调用的地方,发现该程序尝试启动该程序,似乎这个进程才是真正的payload,启动svchost.exe进程传递命令行参数”-a m7 -o stratum+tcp://xcnpool.1gh.com:7333 -u CJJkVzjx8GNtX4z395bDY4GFWL6Ehdf8kJ.SERVER%RANDOM% -p x”。

-a 设置要使用的散列算法;

-o 设置要连接的挖掘服务器的URL;

-u 设置用于连接到挖掘服务器的用户名;

-p 设置用于连接到挖掘服务器的密码;

 

Stratum是加密矿工用于连接采矿池的标准协议。 

 

 图片18.png

 

0x2 Payload

打开x86/x64.tmp,可以发现其经过加壳处理。


图片19.png 

 

对这两个文件进行脱壳处理,发现其实际上是”MinerD”,这是一个在GitHub上公开的开源挖矿程序

https://github.com/m-pays/m-cpuminer-v2/releases。


图片20.png


*采矿池(Coin-Miner): TCP:// xcnpool.1gh.com

*端口号:7333

*密码:x

 

0x3 IOC

    MD5    :d6d388e0883f8cfea196ba1c8fb32043

    SHA256 :f9b2e61200addf760d7bd157c73201e97257b12d5177837a1bffb98f4064e76a

    钱包地址:

    CJJkVzjx8GNtX4z395bDY4GFWL6Ehdf8kJ.SERVER%RANDOM%%RANDOM%%RANDOM%

本文作者:Further_eye

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/110335.html

Tags:
评论  (0)
快来写下你的想法吧!

Further_eye

文章数:319 积分: 2105

深信服科技旗下安全实验室,致力于网络安全攻防技术的研究和积累,深度洞察未知网络安全威胁,解读前沿安全技术。

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号