2017年WannaCry爆发一年后,在亚洲仍然有大量被恶意软件感染未修复的机器。2018年11月中旬开始,研究人员发现了NSRminer加密货币挖矿机的最新版本。NSRminer挖矿机使用Eternal Blue漏洞在本地网络中有漏洞的系统中传播,主要活跃区域在亚洲。大多数受感染的系统位于越南。
2018年11-12月NRSMiner按国家的感染数据
NRSMiner除了下载加密货币挖矿机到受感染的机器外,还可以下载更新的模块,并删除之前版本安装的文件和服务。
本文分析最新NRSMiner版本如何感染系统、修复建议等。
NRSMiner传播方式
NRSMiner最新版本感染系统的方式有两种:
· 下载updater模块到已感染NRSMiner的系统上;
· 如果系统被修复,并且局域网内有机器感染NRSMiner。
方法1:通过Updater模块感染
如果系统感染了NRSMiner之前的版本,就会连接到tecate[.]traduires[.]com来下载updater模块到%systemroot%\temp文件夹中,下载后的文件名为tmp[xx].exe,其中[xx]是GetTickCount() API的返回值。
Updater模块执行后,就会从因编码的IP地址下载另一个文件到相同的文件夹:
不同updater模块文件中的IP地址列表
下载的文件/x86和/x64以WUDHostUpgrade[xx].exe文件的形式保存在%systemroot%\temp文件中,其中[xx]是GetTickCount() API的返回值。
WUDHostUpgrade[xx].exe
WUDHostUpgrade[xx].exe首先检查mutex {502CBAF5-55E5-F190-16321A4}来确定系统是否感染最新的NRSMiner。如果感染,WUDHostUpgrade[xx].exe就会删除自己。否则,删除MarsTraceDiagnostics.xml、snmpstorsrv.dll和MgmtFilterShim.ini文件。
然后,该模块会从resource部分提取MarsTraceDiagnostics.xml和snmpstorsrv.dll文件到%systemroot%\system32或%systemroot%\sysWOW64文件夹。
然后复制svchost.exe的CreationTime、LastAccessTime和LastWritetime属性值,并用复制的值更新MarsTraceDiagnostics.xml和snmpstorsrv.dll的相同属性。
最后,WUDHostUpgrade[xx].exe会安装名为snmpstorsrv的服务,并用snmpstorsrv.dll注册为servicedll,然后删除自己。
WUDHostUpgradexx.exe动作的伪代码表示
Snmpstorsrv service
新创建的Snmpstorsrv服务会从svchost.exe -k netsvcs开始,然后加载snmpstorsrv.dll文件,snmpstorsrv.dll文件会常见多个线程来执行恶意活动。
Snmpstorsrv服务执行的活动
Snmpstorsrv服务首先会在%systemroot%\system32文件夹中创建名为MgmtFilterShim.ini的文件,写入+,修改创建时间、最后访问时间、最后写入时间为svchost.exe中的值。
然后,Snmpstorsrv服务会从MarsTraceDiagnostics.xml中提取出恶意URL和加密货币挖矿机的配置文件。
MarsTraceDiagnostics.xml文件中的恶意URL和挖矿机配置信息
在感染了老版本NRSMiner的系统中,恶意软件在更新NRSMiner前会删除老版本NRSMiner的所有组件。为了移除老版本的组件,新版本NRSMiner会引用一些可以在snmpstorsrv.dll文件中找到的字符串形式的服务、任务和文件;为了移除所有的snmpstorsrv.dll老版本,恶意软件引用了MarsTraceDiagnostics.xml文件中的列表。
要被删除的服务、任务、文件和文件夹列表
老版本的服务、任务、文件和文件夹被删除后,Snmpstorsrv服务会检查连接到下面的地址来更新挖矿机的组件:
· reader[.]pamphler[.]com/resource
· handle[.]pamphler[.]com/modules.dat
如果更新的挖矿机组件不可用,就下载和写入MarsTraceDiagnostics.xml文件。在下载了新的模块后,%systemroot%\system32\TrustedHostex.exe中的老版本挖矿机文件会被删除。新版本的挖矿机会在内存中解压缩,并将新提取出的挖矿机配置数据写入。
最新更新的挖矿机文件会被注入到svchost.exe中来进行加密货币挖矿。如果注入失败了,服务就会将挖矿机写入%systemroot%\system32\TrustedHostex.exe,然后执行。
内存中解压缩的挖矿机
然后,Snmpstorsrv服务会解压缩wininit.exe文件并将其注入到svchost.exe。如果注入失败,就将wininit.exe写入到%systemroot%\AppDiagnostics\wininit.exe中并执行。该服务还会打开端口60153并开始监听。
在其他2个线程中,服务会发送受感染的系统详情到地址:
· pluck[.]moisture[.]tk– MAC地址、IP地址、系统名、操作系统信息
· jump[.]taucepan[.]com– 处理器和内存特定信息
转发到远程站点的系统信息
根据发送的信息,恶意软件会下载和执行一个新的updater文件,该文件会执行上面Updater Module描述的活动。Updater模块会被用于用最新的NRSMiner感染系统。
方法2:通过Wininit.exe和漏洞利用感染
在最新的NRSMiner版本中,wininit.exe负责处理漏洞利用和传播活动。wininit.exe会解压缩压缩的数据到%systemroot%\AppDiagnostics\blue.xml,并解压文件到AppDiagnostics文件夹。这些解压缩的文件中有一个是svchost.exe,这是Eternalblue – 2.2.0的漏洞利用文件。然后删除blue.xml文件并将x86.dll和x64.dll文件写入AppDiagnostics文件夹。
Wininit.exe会在TCP 445端口扫描本地网络来寻找其他可访问的系统。扫描后,会执行Eternalblue可执行文件来利用有漏洞的系统。利用信息保存在process1.txt文件中。
如果有漏洞的系统被成功利用,Wininit.exe会执行spoolsv.exe。spoolsv.exe是DoublePulsar – 1.3.1可执行文件,该文件会在被漏洞利用的系统中安装DoublePulsar后门。根据目标的操作系统类型,Wininit.exe会移动x86.dll或x64.dll文件,然后用spoolsv.exe后门注入目标系统的lsass.exe。
感染方法
x86.dll/x64.dll
x86.dll/x64.dll会创建socket连接,并从受感染系统中的%systemroot%\system32文件夹中获取MarsTraceDiagnostics.xml文件。提取snmpstorsrv.dll,然后在新感染的系统中创建并开启Snmpstorsrv服务,然后重复整个感染循环,并找出其他有漏洞的机器。
挖矿机模块
NRSMiner使用XMRig Monero CPU挖矿机来生成Monero门罗币。使用的参数有:
挖矿机参数
-o, –url=URL ,挖矿服务的URL -u, –user=USERNAME,挖矿服务器的用户名 -p, –pass=PASSWORD,挖矿服务器的密码 -t, –threads=N,挖矿机线程数 –donate-level=N,默认5% (5 minutes in 100 minutes) –nicehash,启用nicehash.com支持