病毒分析技术_14_Wannamine2.0挖矿病毒

前言

         Wannamine2.0是wannamine家族的变种。该家族特征是使用NSA泄露的eternalblue漏洞利用工具包+扫描传播模块+挖矿木马,一切未打ms17-010漏洞补丁的机器都将是其目标,对于网络中存在ms17-010漏洞的机器而言,它是不可忽视的安全威胁。该挖矿木马为了躲避杀毒软件查杀,特地将主控程序加密并放到资源EnrollCertXaml.dll中。样本通过MS17-010(永恒之蓝)漏洞进行传播,其漏洞利用模块是使用的NSA工具包eternalblue和doublepuls,即2017年影子经纪人所公开的NSA工具包,定时和C&C进行连接接受命令和更新模块,主要目的为挖掘门罗币。

一:目录

  • 1.目录
  • 2.样本信息
  • 3.样本分析
  • 4.防御手段

二:样本信息

  • 1.样本名称:spoolsv.exe
  • 2.样本md5:97911A1DA380F874393CF15982C6B1B9
  • 3.是否加壳:无壳
  • 4.编译语言:Microsoft Visual C++ v14 - 2015 - x64
  • 5.样本来源:客户受感染主机

三:样本分析

母体文件

  • 首先,获取系统信息和进程线程ID,进行运算,产生标志,这一点和WanaCry一致。

  • 接着初始化网络。创建一个名为{F5175396-40C2-0218-278D6EE}的互斥体。

  • 然后,程序创建了五个线程,分别执行查找指定文件,链接445端口,进行局域网内传播,获取主机名和同一网段内的其他主机IP验证是否可以通过445端口链接,开辟存储TCP表,从task.attendecr.com:80/task处读取文件到内存,访问读取error.ttemdecr:8080/log,或者scan.attendecr.80/status内容。


  • Thread_1:

    • 连接字符串,c:\windows\System32\EnrollCertXaml.dll,判断c:\windows\System32\EnrollCertXaml.dll是否存在,如果存在,则读取入内存,

    • 如果不存在,创建C:\Windows\SpeechsTracing\Crypt”目录,然后释放病毒文件到C:\Windows\SpeechsTracing\Misresoft
    • 删除源目录
    • 拼接字符串,读取svchost的配置信息
    • 释放x86.dll和x64.dll文件到C:\Windows\SpeechsTracing\Microsoft\中

    • 根据上面的print函数(相当于赋值操作),创建了两个进程,执行c:\windows\SpeechsTracing\Microsoft\svchost.exe操作,

    • 读取并写入stage1.txt,判断攻击是否成功
    • 然后,通过CreateProcessA函数启动spoolsv.exe安装后门程序,同时将这个行为特征记录在stage2.txt。
    • 调用CreateThread,创建一个线程。
  • Thread_2

    • 遍历每个IP地址
    • 创建线程,每创建64个线程,暂停500ms
    • 连接445端口和63257端口,
    • 进入关键区,将可以被利用的地址保存,
  • Thread_3

    • 获取用户名和主机名
    • 如果不是本地回环,则将ip地址传入sub_14000C110,目的是交给线程2
  • Thread_4

    • 存放已经可以被利用的IP的Tcp表,
  • Thread_5

    • 从task.attendecr.com:80/tasks读取文件到内存
  • Thread_6

    • 从访问读取error.ttemdecr:8080/log,或者scan.attendecr.80/status处读取文件

x86.dll(x64.dll)

         x64.dll和x86.dll针对不同的架构,但是其功能是相同的。所以为了篇幅期间只分析x86.dll。
         可以看到x86.dll有三个导出函数,分别是DllRegisterServer,DllUnregisterServer,DllEntryPoint,从名字上来看这只是只是注册服务和删除服务的导出函数。

  • 创建了互斥体名为{B3DD837C-473B}的互斥体

  • 初始化网络,创建了线程,主要用于释放病毒,这里释放的是关于上文所述的EnrollCertXaml.dll,然后解压

  • 将恶意代码数据写入SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost中的netsvcs中,而svchost是用来加载成组服务的,netsvcs 是一组服务的集合,不是单个的服务,具体哪些服务在netsvcs里,由此我们可以知道,病毒写入此注册表的目的是为了启动服务。从而实现常驻。
  • 以c:\windows\System32\svchost.exe -k netsvcs参数创建服务。
  • 设置服务的描述和文件信息,servicedll指向dll文件的路径。

备注

         由于样本不全,无法对病毒的关键逻辑进行分析。

四:防御手段

1.打ms17-010补丁

2.封堵445端口

  • 防火墙禁用445端口
  • 组策略445端口
  • 禁用SMB服务

3.安装安全软件

  • 进过测试,国内大部分安全厂商具备查杀此类病毒的能力
  • 建议:查杀时,最后隔离网络,避免交叉感染

4.如何判定是否安装补丁

  • 1)控制面板-程序和功能-卸载程序-补丁更新
  • 2)cmd命令行-输入systeminfo
  • 3)win+R 输入regedit,依次展开,查看注册表项:
    HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\Currentversion\hotfix

5.安全意识

  • 不下载、不运行未知来源的软件,不点开不明链接,要有网络安全防范意识。