频道栏目
首页 > 安全 > 网络安全 > 正文

360天眼:WannaCry(想哭勒索蠕虫)技术分析

2017-05-19 10:46:00      个评论      
收藏   我要投稿

360天眼:WannaCry(想哭勒索蠕虫)技术分析。

一、 事件时间线

1) 2017年5月12日

Malware Tech在twitter上发布了一条通过SMB传播的勒索软件WannaCrypt,之后相关kill switch url被注册监管,之后该twitter作者编写了文章“How to Accidentally Stop a Global Cyber Attacks”,在该文章中记录了他是如何第一时间注意到这次攻击事件,并迅速做出相应的过程。

\

2) 2017年5月12日

360发布紧急通告,对一种利用MS17-010进行传播勒索蠕虫进行了预警。

\

Malwarebytes发布相关分析的报告

\

思科talos intelligence发布相关的分析报告

\

同日英国大量医院感染WannaCry蠕虫。

\

3) 2017年5月13日

360发布对WannaCry勒索蠕虫的技术分析。

http://bobao.360.cn/learning/detail/3853.html

\

二、 蠕虫变种监测

事件发生以来,包含360公司追日团队在内多家安全研究机构对蠕虫的技术细节做了详细分析,可见文后参考引用。在原始版本的蠕虫泛滥以后,360威胁情报中心观察到了大量基于修改的变种,数量达到数百个,在情报中心的图关联搜索中可以很直观地看到部分关联:

\

其中几个相对比较有特点的变种如下:

1) d5dcd28612f4d6ffca0cfeaefd606bcf

新版本变种和第一版差别不大,只是修改了一开始KILL SWITCH URL(修改为http://www.ifferfsodp9ifjaposdfjhgosurijfaewrwergwea.com ),如下所示:

\

目前发现有多个变种采用了这种通过简单二进制Patch的方式修改开关域名,与原始版本相关,整个恶意代码只有域名部分的字节被修改:

\

我们看到部分样本及对应开关域名如下:

\

总体来说,由于随着系统漏洞的修补,这类样本对整体感染影响不大,下图是原始开关域名与其中一个修改后域名的解析量对比:

\

从上图还可以看到,开关域名对蠕虫的传播影响非常大,在域名被安全研究者注册形成有效解析和访问以后初始的指数级感染趋势很快被抑制,之后基本再也没有超过最早快速上升阶段形成的高峰。

2) d724d8cc6420f06e8a48752f0da11c66

样本通过对原始样本二进制Patch直接去除了检查开关域名以停止加密的功能,可以直接进入感染流程。下图为修改前后的比较:

\

但是勒索的部分可能是由于作者疏忽,样本里硬编码的用于解压zip的密码还是WNcry@2ol7, 这个密码并不能解压成功,导致勒索流程被废掉了。接来下的变种可能会修复这个“Bug”,而使攻击的威胁程度大增。

360威胁情报中心会对出现的变种蠕虫做持续跟踪,更新进展。

三、 原始蠕虫分析

作为补充,以下是360威胁情报中心对追日团队的技术分析报告基础上进行的分析确认,补充可能看到的一些细节。

样本为一个标准的网络蠕虫,通过MS17-010进行传播,不同于传统的蠕虫在于,该样本中附加了对应的勒索软件,以寻求利益的最大化,整体的感染流程如下所示:

\

样本运行之后会对内网,外网445端口进行扫描之后,通过MS17-010漏洞上传并执行payload进行传播,之后释放ransom样本,ransom执行初始化之后,再次释放对应的加密模块ransommodule对文件进行加密。

蠕虫整体分为三部分

Worm MD5:DB349B97C37D22F5EA1D1841E3C89EB4

Ransom MD5:84C82835A5D21BBCF75A61706D8AB549

RansomModule MD5:9849852166fe1d494496c1c5482498fd

Worm

主体模块

该部分为蠕虫的主体,样本运行之后会通过函数InternetOpenUrlA首先访问http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com这个地址,如果访问成功则放弃之后的运行,如下图所示,否则进入fun_enterCry,即蠕虫的主流程,这个地方对于kill switch域名的作用,主要有以下两种解释:

1. 作者用于控制样本的传播开关(但是不幸的是该域名之后被以为安全研究员注册并接管)

2. 该域名用于检测蜜罐的认证(部分蜜罐环境会接管样本的网络流量,如HTTP访问都返回成功,因此通过一个不存在的域名来校验是否运行在蜜罐环境下)

\

进入fun_enterCry之后通过判断参数的个数来执行相应的流程。

当参数

当参数>=2,进入服务流程。

\

安装流程中通过函数fun_starWormservice会创建一个服务mssecsvc2,参数为当前路径 –m security。

通过函数fun_releaseRansom从资源中释放出Ramsom。

\

扫描模块

在服务流程中如下所示,首先在函数fun_initial中实现初始化(网络和payload生成),之后生成线程对内外网进行扫描,

内网一个线程,扫描整个网段。

外网128个线程循环扫描随机生成的ip。

\

在fun_initial中会调用函数用于生成对应的payload如下所示,分别在固定偏移根据平台获取x86或x64的payload,如下图所示实际上是拷贝到v11[]中,之后读取蠕虫本身并拷贝到payload后面因此整个载荷应该是payload+蠕虫的格式。

\

如下图所示为对应的payload的x86版本,可以看到这是一个pe文件。

\

Dump出来可以看到该段代码就是一个单的loader,用于加载资源中的蠕虫。

\

如下图所示为对应的内网感染代码的实现,通过函数fun_getipduan获取当前ip段,针对每个ip通过函数fun_starAttack发起一次攻击。

\

在fun_starAttack中首先通过fun_initalSmbcontect函数探测目标ip的445端口是否开启。

\

如果目标机器开启了445端口,则进入fun_enterBlueattack,该函数中通过NSA泄露的enterblue实现远程攻击,并传播对应的蠕虫样本,如下所示通过fun_tryExpfirst/second实现exploit,该次exploit之后会在目标机器中运行一段内核loader(接受来自doublespular上传的payload,并在user层运行),之后通过fun_doublespularInstall,fun_doubelspluarRunpayload将之前的payload上传并运行,这段payload被内核loader加载,并释放其中资源中的蠕虫运行。

\

下图为外网的情况下进行的扫描,此时通过随机生成ip进行攻击。

\

Ransom释放

扫描服务启动之后,样本中资源中先解压出对应的ransome,并移动当前 C:\WINDOWS\tasksche.exe到 C:\WINDOWS\qeriuwjhrf

上一篇:IEEE802.11w无线安全协议剖析
下一篇:互联网安全 - 每日安全知识热点
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训

版权所有: 红黑联盟--致力于做实用的IT技术学习网站