zoukankan      html  css  js  c++  java
  • WannaCrypt0r分析报告

     

    病毒分析报告

     

    样本名

    WannaCrypt0r

    版本

    原版

    时间

    2018-05-08

    平台

    Windows 7-32位

     

    目录

    1.样本概况... 3

    1.1 样本信息... 3

    1.2 测试环境及工具... 3

    1.3 分析目标... 3

    1.4 样本行为分析... 3

    1.4.1查壳... 3

    1.4.2 原样本分析... 4

    1.4.3 tasksche.exe分析... 6

    1.4.3 crypt.dll分析... 12

    2,感谢... 17

     

    1.样本概况

    1.1 样本信息

    病毒名称:  永恒之蓝

    所属家族:  勒索性病毒/蠕虫病毒(Worm) 

    大小:       3723264 bytes

    MD5值:     DB349B97C37D22F5EA1D1841E3C89EB4

    SHA1值:    E889544AFF85FFAF8B0D0DA705105DEE7C97FE26

    CRC32:     9FBB1227

     

    1.2 测试环境及工具

    Win7 32位、OD/IDA/x64DBG/火绒剑/ExeiofoPE/

    1.3 分析目标

    分析病毒利用漏洞方式,网络连接,病毒的恶意行为

    1.4 样本行为分析

    1.4.1查壳

     

    Exeinfo 可查是该程序无壳,使用的是vc++/MFC 程序编写

    1.4.2 原样本分析

    进入WinMain后,可以发现入口处程序会尝试连接一个域名:

    http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com

     

    成功连接则程序不展开相关行为;否则执行sub_408090;

     

    在sub_408090函数内部,分为两个模块:

     

    在第一轮程序执行的是条件为false的模块,其功能主要是创建服务,释放并执行一个tasksche.exe /i。

    创建服务:

    创建是一个名为mssecsvc2.0,服务说明为“Microsoft Security Center (2.0) Service”的是服务:

     

    原始样本会从资源中加载,释放一个名为tasksche.exe的文件,并且以tasksche.exe/i的方式启动:

     

    接着分析tasksche.exe;

    1.4.3 tasksche.exe分析

    tasksche.exe启动后,首先,会将自身拷贝到C:intellgxbrzjmuzoytl531

     

    检查命令行参数中是否有/i这个参数:

     

    sub_401B5F中:检查并尝试在ProgramData目录 或 Intel目录 或 Temp系统临时目录 下创建前面以计算机名算出的标识的目录:

     

    将创建的目录设置为6即为隐藏和系统:(FILE_ATTRIBUTE_HIDDEN 和 FILE_ATTRIBUTE_SYSTEM )

     

    复制自己并重命名为tasksche.exe:

     

    将taskche.exe以服务方式启动,如果失败就以普通方式(/i)启动,这样启动的入口点不一样了,内部实现的逻辑就不一样了:

     

    互斥体检测启动是否成功:

     

    上面几项都成功完成后才能继续,否则退出

    创建注册表项HKEY_CURRENT_USERSoftwareWanaCrypt0rwd,写入当前路径值:

     

    然后就从资源中释放加密过的taskdlexe、taskse.exe,有比较复杂的解密函数,key为Wncry@2ol7:

     

    在当前目录下读取c.wnry文件:

     

    如果读取到了c.wnry文件,就会把13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94通过随机数加密后写入c.wnry,而这串数字就是比特币的地址,也就是说c.wnry文件中保存着加密后的比特币地址:

     

    下图是c.wnry的加密算法:

     

    执行这两句命令:

    attrib +h .

    icacls . /grant Everyone:F /T /C /Q

    attrib命令:将DisplayName工作目录设置为隐藏

    icacls命令:开放目录的用户权限

     

    接着,会读取前期释放的一个名为t.wnry的文件,并对其中的内容进行解密,解密后的内容为一个dll文件,但是该dll文件并不会写入磁盘,而是在内存中直接执行:

     

    将该文件从内存中dump 出来,重命名为crypt.dll,再次分析

    1.4.3 crypt.dll分析

    Crypt.dll仅有一个自定义的导出函数,这个导出函数是其行为展开的入口:

     

    先加载了kernel32.dll,动态获取后续需要的API:

     

    创建互斥体,用于判断自身重入问题:

     

    然后创建了四个线程:

     

    分析后作用分别是:

    1.将tasksc.exe加入到HKCUSOFTWAREMicrosoftWindowsCurrentVersionRun项,用于开机自启动

    2.遍历驱动器,并检查是否有U盘等移动存储插入

    3.循环调用taskdl.exe

    4.写入并执行vbs脚本

    遍历文件并加密文件:

     

    所加密的文件类型约有两百多种:

    罗列出部分加密文件的后缀名:

     

    加密方法:

    1,遍历到要感染的文件,被AES加密,AES加密使用的KEY,是根据每个文件随机生成的。随机生成的Key,之后会被下一步的RSA 2048加密。

    2,样本在针对每一台机器上,会随机生成一对RSA 2048密钥,其中公钥保存在00000000.pky中,用于加密上一步的AES KEY,私钥将被加密后存在文件00000000.eky中

    3,上一步的RSA私钥,会被另一个RSA 2048公钥加密,该加密后的私钥仅勒索者本人知道。、

     

    文件加密以WANACRY为特征头:

     

    知道以上思路后,就比较容易理解该样本的加密流程了:

    1,新建文件,新文件名为原始文件名.WANACRYT(T表示临时文件,用于临时处理文件加密)

    2,在新的文件头部写入8字节的WANACRY!加密标志

    3,写入4字节的长度标识,表示后面紧跟的加密后的文件加密密钥的长度

    4,写入256字节长度的加密后的文件加密密钥(该密钥解密后为16字节长度的字符串,使用该字符串AES加密文件)

    5,写入4字节长度的 勒索者作者定义的类型,不为4的文件类型记录到f.wnry文件中,用于后期免费解密。

    6,写入8字节长度的原始文件长度

    7,使用随机生成的16位字节的密钥利用AES加密算法进行加密,并写到上述内容之后。

    8,修改新文件的文件时间为源文件的时间。

    9,删除原文件,并将新文件重命名为WANACRY。

    10,     若文件为可免费恢复的文件,则将文件名记录到f.wnry文件中。

     

    至此,分析基本结束。

    上次有人问我,如果针对永恒之蓝该怎么做到抑制它,而不专杀掉:

    抑制构思如下,

    1,微软补丁

    2,它有检测互斥体的位置,可以从这里入手,Hook 或者注入

    3,它利用的CVE-2017-0143------CVE-2017-0148漏洞传播自身,而此漏洞需要使用445端口传播,在组策略中关闭此端口

    2,感谢

    Freebuff的epsky: http://www.freebuf.com/vuls/134602.html

    看雪的白小菜:    https://bbs.pediy.com/thread-217636.htm

  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/by-clark/p/9126911.html
Copyright © 2011-2022 走看看