Wannamine2.0是利用与 NSA 相关的 EternalBlue (“ 永恒之蓝 ” )漏洞进行传播的加密挖矿蠕虫。尽管该漏洞已曝光许久,但国内仍然有不少公司和机构感染并蒙受损失,并且这类蠕虫病毒不断有新的变种出现,因此我们对该类型的安全问题也极为重视,并进行了追踪研究。
鉴于win32平台的病毒样本研究已有不少文章,因此我们这次分析的是x64系统的版本。
木马概述
Wannamine2.0是wannamine家族的变种。该家族特征是使用NSA泄露的eternalblue漏洞利用工具包+扫描传播模块+挖矿木马,一切未打ms17-010漏洞补丁的机器都将是其目标,对于网络中存在ms17-010漏洞的机器而言,它是不可忽视的安全威胁。
该挖矿木马为了躲避杀毒软件查杀,特地将主控程序加密并放到资源EnrollCertXaml.dll中。样本通过MS17-010(永恒之蓝)漏洞进行传播,其漏洞利用模块是使用的NSA工具包eternalblue和doublepuls,即2017年影子经纪人所公开的NSA工具包,定时和C&C进行连接接受命令和更新模块,主要目的为挖掘门罗币。
下面是该木马传播流程示意图:
这次只详细分析Spoolsv.exe(64位),即
c:\\windows\\SpeechsTracing\\Spoolsv.exe
也许在以后的文章中我们会对其余部分进行更详细的分析。
功能:扫描同网段存活的445端口,并启动两个程序进行攻击。
① 前期准备阶段
② 攻击阶段一:启动svchost.exe > stage1.txt(c:\\windows\\SpeechsTracing\\Microsoft\\svchost.exe )
③ 攻击阶段二:启动spoolsv.exe >stage2.txt(c:\\windows\\SpeechsTracing\\Microsoft\\spoolsv.exe )
详细分析
进入Main函数后,创建互斥量{F5175396-40C2-0218-278D6EE}
此处诸多的CreateThread便是主要的恶意行为了。
1、sub_1400067B0线程
功能:用来查找C:\\windows\\System32\\EnrollCertXaml.dll,若不存在则尝试打开文件夹c:\\windows\\SpeechsTracing\\及其子文件夹
c:\\windows\\SpeechsTracing\\Microsoft,然后退出线程。
若存在,则通过getfilesize获取C:\\windows\\System32\\EnrollCertXaml.dll文件大小,接着分配文件大小内存,读取文件到内存。
接着是释放一系列的子病毒的过程。
首先从C:\Windows\SpeechsTracing\Crypt解压出NSA工具包
释放完毕后,删除C:\Windows\SpeechsTracing\Crypt。随后拼接字符串,找到配置文件svchost.xml与spoolsv.xml,随后将其读入内存。
接着就是查找C:\Windows\SpeechsTracing\Crypt,若C:\Windows\SpeechsTracing\Crypt存在则释放x64.dll和x86.dll。
攻击阶段一
通过createprocess创建cmd.exe /c %s/svchost.exe > stage1.txt,若存在则将输出重定向到文本文件。作为日志记录。
读取配置信息
接着CreateProcessA启动进程
接着由c:\\windows\\SpeechsTracing\\Microsoft\\svchost.exe启动攻击的第一个阶段
Svchost.exe写入回显。
攻击阶段二
根据回显判断是否成功,判断目标靶机的x86/x64架构,若成功则决定启动第二阶段的payload x86/x64.dll对目标进行感染。由于本文暂不分析payload这部分,暂时留白,请关注后续文章。
2、sub_14000C8C0线程
功能:连接各个IP,判断是否存活,存活则交给第一个线程进行攻击。如果发现局域网内开放的445端口,就会将相应的IP地址和端口号写入到EternalBlue攻击程序svchost.exe的配置文件svchost.xml中。
函数14000C740进行连接。Ip是从sub_1400B550线程所提供的信息。
线程LOCK指令加锁,最高40个线程并发socket连接
3、sub_14000B550线程
功能:用来获取本机名和同网段IP,通过共享内存将信息交给sub_14000C8C0线程。
判断是否为127开头,是则线程睡眠。不是则继续
加锁然后循环写入ip交给第二个线程进行连接判断存活IP。
4、sub_140009C90线程
功能:连接C2域名,下载内容
拼接字符串得到C2域名,访问其task.attendecr.com:80/tasks目录获取信息。如果有内容会下载下来。
5、sub_140007F10线程
功能:第二次连接C2 task.attendecr.com/status目录或task.attendecr.com:8080端口的/error、/log目录。
线程协同
各线程间使用临界区和自定义的flag对内存进行访问控制,线程之间协同完成攻击。
线程间关系
分析总结
如文章开头所述,未打ms17-010漏洞补丁的设备都将面临这类挖矿蠕虫的安全威胁,换言之,打过该补丁则不会面临此类病毒的威胁。从漏洞公开的2017年3月份到如今2018年6月,已经过去整整十五个月,仍然有各行各业的企业、机构因为ms17-010漏洞不断中招。这显然不是缺乏防御的技术手段,而是企业自身的安全建设和制度存在问题,对安全问题不够重视所致。
从细处着眼,无非是这些原因
1、企业批量使用ghost镜像,但运维人员并不会时常关注并更新相关ghost镜像补丁
2、使用msdn,i itell you站的纯净版镜像,站内所有提供下载的镜像都是很老的版本且并不提供补丁,需要自己去打补丁
3、国内盗版系统盛行,基本不连接微软的补丁更新服务器进行补丁更新
4.手动更新繁琐,缺乏人手专门推进补丁更新的工作,也没有相应的制度来确保补丁的更新
5.许多企业缺乏漏洞管理与运营的平台,缺乏对自己网络内存在漏洞的机器的定位与统计,很容易存在漏网之鱼
6.员工网络安全意识缺乏,企业更是缺乏对员工网络安全意识的培训
解决的方案就蕴含在问题之中,我们真诚地希望企业能够重视起安全问题,不再心存侥幸,安全虽然要付出不小的成本,但它更是一项投资,而不是纯粹的“烧钱”事业。