挖矿原理,门罗币挖矿病毒原理是什么样的

背景介绍

挖矿原理,门罗币挖矿病毒原理是什么样的

近日挖矿原理,金山毒霸安全研究团队追踪到一个利用永恒之蓝漏洞传播的挖矿程序,其具备高度的模块化和较强的传播能力,在短短数日就感染了数万台用户电脑。针对该突发情况,金山毒霸安全中心迅速组织应急工作,最终使得目前的感染情况受到控制,下文为样本分析。

挖矿原理,门罗币挖矿病毒原理是什么样的

感染量

挖矿原理,门罗币挖矿病毒原理是什么样的

从微软发布ms17-010(永恒之蓝漏洞)的修复补丁到现在已经过去四个月了,相继爆发的利用该漏洞传播的WannaCry,Petya勒索病毒更是给我们上了一课。但目前来看,还是有不少用户没有及时更新补丁或者做相应的缓解措施,同时Shadow Brokers把从Equation Group偷来的全套针对该漏洞的利用工具开源,这使得人人有了一套核武器,导致发动攻击的门槛极度降低。综合上述原因,可以推测该漏洞在很长一段时间之内,还会有不同程度的活跃。目前,根据全网监控数据可知,各地区感染该例样本量占比情况如下:

挖矿原理,门罗币挖矿病毒原理是什么样的

挖矿原理,门罗币挖矿病毒原理是什么样的

样本分析

挖矿原理,门罗币挖矿病毒原理是什么样的

1.感染症状

挖矿原理,门罗币挖矿病毒原理是什么样的

该样本分为两个模块,分别为挖矿程序与永恒之蓝攻击程序,感染后的用户机器,通常会有如下症状:

挖矿原理,门罗币挖矿病毒原理是什么样的

a. 监听26571端口

挖矿原理,门罗币挖矿病毒原理是什么样的

挖矿原理,门罗币挖矿病毒原理是什么样的

b.存在C:\Windows\IME\Crypt文件夹

挖矿原理,门罗币挖矿病毒原理是什么样的

挖矿原理,门罗币挖矿病毒原理是什么样的

c.访问其他主机的445端口

挖矿原理,门罗币挖矿病毒原理是什么样的

挖矿原理,门罗币挖矿病毒原理是什么样的

2.传播方式

挖矿原理,门罗币挖矿病毒原理是什么样的

挖矿原理,门罗币挖矿病毒原理是什么样的

如上图所示,是整个样本的攻击流程图,受害者之间的样本投送分工为:

挖矿原理,门罗币挖矿病毒原理是什么样的

· 攻击方,挖矿程序搭建web服务器(端口26571),等待特定的GET请求

挖矿原理,门罗币挖矿病毒原理是什么样的

· 被攻击方,payload访问攻击方提供的web服务器,通过GET请求得到样本(含挖矿程序和永恒之蓝EXP程序)

挖矿原理,门罗币挖矿病毒原理是什么样的

3.样本特性

挖矿原理,门罗币挖矿病毒原理是什么样的

通过前文已知,该样本是分为挖矿程序与永恒之蓝攻击程序,下面针对不同模块进行分析。

挖矿原理,门罗币挖矿病毒原理是什么样的

3.1挖矿程序

挖矿原理,门罗币挖矿病毒原理是什么样的

挖矿程序的调用者是内核后门注入到lsass.exe中的payload所生成并调起的。

3.1.1 创建计划任务

程序在启动时,创建计划任务,达到开机自启动的目的,命令如下:

schtasks.exe /create /TN "\Microsoft\Windows\UPnP\Services" /RU SYSTEM /TR "%WinDir%\IME\Microsoft\svchost.exe" /SC ONSTART

3.1.2 释放挖矿程序

创建线程,完成从资源bin中释放挖矿程序到系统根目录下功能,文件名称为ServicesHost.exe

之后传递参数-o stratum+tcp://:45560 -u dashcoin@protonmail.com -t 1 --donate-level=1执行,同时尝试解析系统根目录下的settings7283.dat数据文件。

3.1.3 开启WEB服务

创建线程,搭建一个WEB服务器,提供文件下载功能,方便被攻击方快速下拉恶意代码

其中,回调函数Url_parser只处理两种请求,分别为:

· POST方式接收到的Hell World?

· GET方式接收到的/dnsclientprovider_userdata.mof

当POST方法得到的请求数据是Hell World?,则当前挖矿进程会退出,逻辑如下:

其中dnsclientprovider_userdata.mof文件目前没有捕获到,但根据之后的payload的请求数据来看,该文件是一个ZIP包,里面包含了挖矿程序和攻击程序,故达到了利用漏洞传播的效果。

3.1.4 执行攻击程序&攻击信息上报

开启新线程,执行C:\Windows\IME\Microsoft\spoolsv.exe,实为payload从攻击方下拉后解压生成的攻击程序。开启新线程,每隔900s向服务器上报信息。

3.2永恒之蓝攻击程序

3.2.1 攻击流程

攻击程序执行由挖矿程序进行调起,运行后,首先释放自身资源bin到%\\IME\\TMP20D1.TMP中,之后进行Unzip操作,解压缩完成后的文件列表如下:

其中核心模块如下:

接下来,读取xml配置信息、Payload程序到内存,方便之后攻击时进行参数配置,然后扫描开放445端口,但未开放26571端口的机器(防止重复感染),如下:

得到扫描结果之后,格式化Eternalblue需要的xml配置信息(ip即可),之后创建进程,将Eternalblue执行结果重定向到stage1.txt中,方便stage2阶段的筛选。

从stage1.txt中可以得到攻击是否成功,以及目标机器的CPU架构信息,通过查找指定关键字,得到需要的信息,例如:得到目标机器平台是否为x86(x64原理相同)

实际stage1.txt的内容:

当查找成功之后,构造Doublepulsar利用工具的xml信息spoolsv.xml,同时通过特征码定位payload中需要填写的配置参数(攻击方ip,payload通过该ip访问web服务,下拉样本程序)

所有工作完成之后,调用Doublepulsar执行后门利用(通过内核级注入payload到lsass.exe进程(默认进程名))

以上就是攻击程序的执行流程,接下来是payload的功能分析。

3.2.2 payload功能

payload分为x64.dll和x86.dll,完成功能相同,这里以x86.dll为例进行分析。其导出函数有Func1,Func2,代码相同,如下 :

访问攻击端架设的WEB服务器,下载dnsclientprovider_userdata.mof(若本地系统根目录存在该文件,则先删除),然后进行解压,同时将解压后的下列文件移动到C:\Windows\IME\Microsoft\下

最后,执行挖矿程序(此处svchost.exe是挖矿程序)

至此,第二个用户已经完成感染。

2022-06-11

2022-06-11