WannaCry勒索病毒逆向和内网传播数据分析

由于周末没有加班,所以没有及时对这个病毒及时做分析,虽然网上已经有很多分析报告了,不过还是想写一下自己的分析,直接进入主题。

盛传的KillSwitch,如果域名访问成功则不执行加密,关于这个域名探测的目的,我个人更倾向于是antisandbox:

 1.jpg2.jpg

判断参数是否大于2个,大于则直接打开服务,小于则创建服务

 3.jpg

创建并启动名为“mssecsvc2.0”的服务,以“ -msecurity”为参数实现自启动:

 4.jpg

读取资源文件,释放到“C:\WINDOWS\tasksche.exe”,这个资源文件提供文件加密的功能:

 5.jpg

获取漏洞利用的payload

 6.jpg

绑445端口

7.jpg

建立socket进行漏洞利用

 8.jpg

再看这个用于加密的资源样本,仍包含了一个资源文件,改后缀为zip解压,[email protected][email protected]下:

9.jpg

msg文件夹下就是所有的语言包,这个多国语言还真是让我佩服了一下:

 10.jpg

b.wnry是bmp文件,也就是中毒后显示的桌面:

11.jpg

r.wnry文件中保存着提示信息:

12.jpg

s.wnry文件是个压缩包,里面保存着Tor

u.wnry是解密程序,[email protected]@.exe”的MD5也可验证。

分析加密主程序,创建名为“MsWinZonesCacheCounterMutexA”的互斥量,如果创建失败,则1秒钟后再次尝试,超过60秒如仍然失败,则返回0,成功为1:

 13.jpg

14.jpg

比特币帐号是hardcode到样本中,共三个,从中随机选出一个,然后将帐号信息写入到文件“c.wnry”中:

 15.jpg

16.jpg

设置DisplayName,伪随机,每次执行返回都一样,用于标识本机。

 17.jpg

获取kernel32.dll和advapi32.dll中的函数。

 18.jpg

读取资源文件,在内存解压后拷贝到当前目录,并通过“attrib+h”设置当前目录为隐藏属性,“icacls. /grant Everyone:F /T /C /Q”用于设置所有用户的访问权限。

 19.jpg

exe主程序通过调用dll的“TaskStart”导出函数来实现加密功能,这个DLL会被加载到内存中:

 20.jpg

来看一下这个DLL,和exe一样有一个获取kernel32.dll方法的函数,都是文件操作相关的函数,对文件加密时会频繁用到这里的函数:

 21.jpg

多种后缀的文件都会难逃被加密的厄运,下图只展示了一部分:

 22.jpg

通过FindFirstFileW、FindNextFileW遍历文件,如果遇到病毒自己释放的文件名则跳过不加密:

 23.jpg

判断后缀名,根据不同的后缀返回不同的标志,病毒根据不同的返回值来判断是否进行加密,返回值为1、6的文件直接跳过,后缀与返回值对应如下:

.exe.dll  1

文档图片类  2(具体的文件类型参看附一)

压缩包代码数据库媒体等  3(具体文件类型参看附二)

.WNCRYT  4

.WNCYR  5

.WNCRY  6

其他  0

如下路径中的文件将不会被加密:

 24.jpg

 生成随机密钥:

 25.jpg

写入文件进行加密:

 26.jpg

下面看看网络传播的数据,经过测试的两台win7系统其中一台成功被感染,另一台报srv.sys错误蓝屏,该样本利用了MS17-010漏洞,该漏洞正是srv.sys在处理SrvOs2FeaListSizeToNt的时候逻辑不正确导致越界拷贝,根据身边人的反馈,的确有一些中毒的机器出现蓝屏状况。

 27.jpg

通过分析样本可看到用于溢出的数据也都是hardcode写入的。

 28.jpg

通过抓包进行验证。

 29.jpg

上面这段数据仅仅是网络传输中的一部分。因此又有一个思路,针对这个病毒可以通过阻断网络中的通信流量来防御蠕虫式传播。自己写了两条规则,仅仅针对这个病毒的流量进行检测。

alert tcp $HOME_NET any -> $EXTERNAL_NET 445(msg:"Wanna Crypt"; flow:to_server; dsize:1460; content:"|00 0000 00 00 00 00 00|"; offset:0; depth:8; content:"|83 f3 68 36 61 674c 43 71 50 71 56 79 58 69 32|"; offset:652; depth:16; sid:20170000;rev:1;)
 alert tcp $HOME_NET any -> $EXTERNAL_NET 445(msg:"Wanna Crypt"; flow:to_server; dsize:1233; content:"|68 3544 48 30 52 71 73 79 4e 66 45 62 58 4e 54|"; offset:0; depth:16;sid:20170001; rev:1;)

 受到的启发:IPS厂商是否可以及时跟踪最新的漏洞,通过网络层面来防御威胁呢?

落实EHS方针必不可少的员工培训知识库动画视频版

猜您喜欢

中电信息安全与军民融合产业基地启动建设 许达哲宣布开工
微软停止更新,可能放缓:报告想哭 http://e365.learnatchina.com/201705192566.html
美兰机场荣获Future-S中国IT治理和管理践行最佳组织奖
网络安全法宣传视频系列001《网络安全法》背景知识
REVELY MYWILDALBERTA
各大部委表示未出台限制信息安全控管措施的政策
信息安全意识考试