病毒分析技术(13) ---WannaCry勒索病毒

前言

WannaCry(又叫Wanna Decryptor),一种“蠕虫式”的勒索病毒软件,大小3.3MB,由不法分子利用NSA(National Security Agency,美国国家安全局)泄露的危险漏洞“EternalBlue”(永恒之蓝)进行网络端口扫描攻击,目标机器被成功攻陷后会从攻击机下载WannaCry木马进行感染,并作为攻击机再次扫描互联网和局域网其他机器,行成蠕虫感染大范围超快速扩散。木马母体为mssecsvc.exe,运行后会扫描随机ip的互联网机器,尝试感染,也会扫描局域网相同网段的机器进行感染传播,此外会释放敲诈者程序tasksche.exe,对磁盘文件进行加密勒索。木马加密使用AES加密文件,并使用非对称加密算法RSA 2048加密随机密钥,每个文件使用一个随机密钥,理论上不可逆向破解。

一:目录

  • 1.目录
  • 2.样本信息
  • 3.行为分析
  • 4.样本分析
  • 5.技术总结

二:样本信息

  • 1.样本名称:mssecsvc.exe
  • 2.样本md5:db349b97c37d22f5ea1d1841e3c89eb4
  • 3.是否加壳:无壳
  • 4.编译语言:vc++
  • 5.样本来源:来自于网络收集

三:行为分析

  • 行为分析:

    四 样本分析

    mssecsvc.exe(母本文件)

  • 存在一个switch,如果联网访问该网址http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com,恶意代码不会执行
  • 根据启动参数判断,是否第一次感染,如果第一次感染,创建服务,然后释放恶意代码到C://windows/tasksche.exe,并以/i参数执行恶意程序tasksche.exe。

  • 如果不是第一次被感染,则使得服务的ServiceMain函数连接到服务控制管理器上,成为服务控制调度程序线程。

  • ServiceMian函数作用:利用MS17_010漏洞漏,先读取自身的存在的payload的利用代码,根据系统不同需要读入两套不同的payload。


  • 利用多线程,分别对内网和外网扫描。对于公网,病毒首先产生随机IP,然后连接到445端口,进行传播。

  • 对于内网,选取同一网段的所有IP,然后利用445端口,进行传播。

tasksche.exe(释放模块)

  • 判断传入参数是否是/i。
  • 向c://intel//xxxxx//中释放同一个恶意文件,实现多备份。
  • 利用cmd.exe /c以不显示的方式执行tasksche.exe。之后创建服务。并启动服务


  • 创建互斥体,然后创建tasksche.exe创建服务。
  • 创建注册表,然后利用WNcry@2ol7参数,释放多个文件。
    • taskse.exe:将权限提升至SeTcbPrivilege权限

    • taskd.exe:删除.WnCy文件

    • b.wnry:图片bmp
    • c.wncy: 洋葱浏览器地址和洋葱路由信息,黑客团伙利用比特币转账,减少被抓获的风险
    • r.wncy:问答信息
    • s.wncy:洋葱路由器安装包和数据.rar
    • t.wncy:后期恶意dll的加密版本
    • u.wncy:文件感染后的提示界面
  • 向c.wncy中写入比特币钱包地址,利用暗网进行交易
  • 调用attrib.exe +h来设置文件隐藏属性
  • 调用icacls.exe来设置所有用户具有完全控制权限
  • 读取t.wncy文件到内存,解密出其中的一部分信息,寻找文件头,然后复制节区信息,形成完整的PE文件。



  • 创建刚刚复制到内存中的dll文件的导入函数。然后调用导入函数。操作在内存中进行,文件不落地,有效规避了杀毒软件的查杀。

Inject.dll(感染模块)

  • 此部分由tasksche.exe由t.wncy进过解密拷贝到内存,分析的时候把内存数据dump到内存,操作如下:首先定位到内存空间,od显示的内存段是整个DLL驻留的地方,不需要考虑其大小。将所有的hex选中后,然后右键复制到二进制,粘贴就可以了。
  • 感染模块首先初始化一些操作,例如创建互斥体,获取函数地址,初始化加密模块。
  • 然后创建5个线程:
    • 第一个线程:写入文件数据。
    • 第二个线程:读取解密文件数据
    • 第三个线程:遍历和加密文件
    • 第四个进程:间隔特定时间创建taskdl.exe进程,然后终止。
    • 第五个线程:写入自启动项run,实现自启动。
  • 复制解密程序,提取洋葱浏览器
  • 利用kill命令杀死指定进程,防止加密的时候文件占用

  • 只加密本地硬盘的文件。

  • 排除以下文件路径和释放出来的文档说明


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    \ProgramData
    \Intel
    \WINDOWS
    \Program Files
    \Program Files (x86)
    \AppData\Local\Temp
    \Local Settings\Temp
    @WanaDecryptor@.bmp
    @WanaDecryptor@.exe.lnk
    @Please_Read_Me@.txt
  • 移动三个说明文件。

  • 重新创建文件,用来加密原始文件,加密完毕后将原始文件删除。


五 技术总结

1 如何转储shellcode

  • OD,和其他dump软件可能没有对该段具有读写权限,导致dump失败
  • 首先定位到内存空间,od显示的内存段是整个DLL驻留的地方,不需要考虑其大小。
  • 将所有的hex选中。
  • 然后右键复制二进制,粘贴就可以了。

2 传播技术

3 加密流程