一个利用“永恒之蓝”漏洞传播的挖矿程序分析

Posted 小小猫钓小小鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个利用“永恒之蓝”漏洞传播的挖矿程序分析相关的知识,希望对你有一定的参考价值。

背景介绍

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

感染量

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

技术分享

样本分析

1.感染症状

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

1.  监听26571端口

 

技术分享

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

 

 技术分享

3.访问其他主机的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://xmr.pool.minergate.com:45560-u [email protected] -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 操作,解压缩完成后的文件列表如下:

 

技术分享

 

其中核心模块如下:

 

文件名称 功能说明
svchost.exe 永恒之蓝攻击程序(Eternalblue-2.2.0.exe)
spoolsv.exe doublepulsar后门利用程序(Doublepulsar-1.3.1.exe)
svchost.xml 永恒之蓝攻击程序配置文件
spoolsv.xml doublepulsar配置文件
x64.dll 64位Payload DLL文件
x86.dll 32位Payload DLL文件

接下来,读取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是挖矿程序 )。

 

技术分享

 

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

 

总结

 

该样本所使用的绝大多数都是开源模块,其中WEB服务器使用开源项目mongoose ,挖矿程序使用开源项目https://github.com/xmrig/xmrig, 永恒之蓝 漏洞利用工具地址 https://github.com/Eitenne/EternalPulse

以上是关于一个利用“永恒之蓝”漏洞传播的挖矿程序分析的主要内容,如果未能解决你的问题,请参考以下文章

永恒之蓝漏洞发现与利用

Linux应急响应:挖矿病毒

永恒之蓝 MS17-010漏洞复现

MS17-010(永恒之蓝)漏洞复现和分析

MS17-010永恒之蓝漏洞利用

EternalBlue永恒之蓝漏洞复现