• 本文作者: 漏洞应急响应中心
  • |
  • 2017年5月13日
  • |
  • 样本分析
  • |

WannaCryptor 勒索蠕虫样本深度技术分析_阿尔法实验室

阿尔法实验室 李喆 李燕春

一、 WannaCryptor 是如何传播?

WanaCrypotor在几周之前就被发现了,但是这款恶意勒索软件传播速度没那么严重,是什么造成了传播如此之快? ETERNALBLUE ,永恒之蓝,这个是影子经纪人泄露的NSA攻击工具,攻击window的smbv1协议,端口为445,在公网上这个端口基本屏蔽了,但是有些教育网还有内网是开放的。给 WannaCrypotor 带来了便利,因为其功能的影响性影响了很多设备。

 

w1

二 Wanna Decryptor 是如何加密一个电脑?

2.1 开始工作
当一款电脑被Wanna Decrypor 植入后,这个安装工具会解压缩一个嵌入的文件到安装器的相同目录,这个嵌入的文件是有密码保护的压缩文件zip,里面有Wanna Decrytor利用和执行的文件。密码为:WNcry@2ol7

w2

嵌入的有密码的zip文件

WannaDecryptor 会把他们加压到本地相同文件夹下,执行一些初始化安装工作,比如把恶意勒索的内容放到msg文件夹下,支持的本地化语言有:

Bulgarian, Chinese (simplified), Chinese (traditional), Croatian, Czech, Danish, Dutch, English, Filipino, Finnish, French, German, Greek, Indonesian, Italian, Japanese, Korean, Latvian, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Spanish, Swedish, Turkish, Vietnamese

2.2 预处理
接下来 WannaCryptor 会从https://dist.torproject.org/torbrowser/6.5.1/tor-win32-0.2.9.10.zip
下载一个木马客户端,然后加压到TaskData目录,这个木马客户端被用来和暗网下的服务器做通信:
gx7ekbenv2riucmf.onion,
57g7spgrzlojinas.onion,
xxlvbrloxvriy2c5.onion,
76jdd2ir2embyv47.onion,
cwwnhwhlz52maqm7.onion.

Wana Cryptor为了加密尽可能多的文件,会执行授权命令,如下:

w3

icacls . /grant Everyone:F /T /C /Q
这个命令是给每一个Wanna crypor用到的文件夹和子文件夹所有权限,他同时会把一些邮件服务器和数据库服务器进程关闭以做加密处理。关闭数据库命令如下:

taskkill.exe /f /im mysqld.exe
taskkill.exe /f /im sqlwriter.exe
taskkill.exe /f /im sqlserver.exe
taskkill.exe /f /im MSExchange*
taskkill.exe /f /im Microsoft.Exchange.*

然后就开始加密数据库和邮箱邮件用来进行勒索
2.3 开始加密
Wanna Decryptor 现在已经准备好可以开始加密了,它加密的文件只有这些,使用了AES和RSA加密算法:

w4

.der, .pfx, .key, .crt, .csr, .pem, .odt, .ott, .sxw, .stw, .uot, .max, .ods, .ots, .sxc, .stc, .dif, .slk, .odp, .otp, .sxd, .std, .uop, .odg, .otg, .sxm, .mml, .lay, .lay6, .asc, .sqlite3, .sqlitedb, .sql, .accdb, .mdb, .dbf, .odb, .frm, .myd, .myi, .ibd, .mdf, .ldf, .sln, .suo, .cpp, .pas, .asm, .cmd, .bat, .vbs, .dip, .dch, .sch, .brd, .jsp, .php, .asp, .java, .jar, .class, .wav, .swf, .fla, .wmv, .mpg, .vob, .mpeg, .asf, .avi, .mov, .mkv, .flv, .wma, .mid, .djvu, .svg, .psd, .nef, .tiff, .tif, .cgm, .raw, .gif, .png, .bmp, .jpg, .jpeg, .vcd, .iso, .backup, .zip, .rar, .tgz, .tar, .bak, .tbk, .PAQ, .ARC, .aes, .gpg, .vmx, .vmdk, .vdi, .sldm, .sldx, .sti, .sxi, .hwp, .snt, .onetoc2, .dwg, .pdf, .wks, .rtf, .csv, .txt, .vsdx, .vsd, .edb, .eml, .msg, .ost, .pst, .potm, .potx, .ppam, .ppsx, .ppsm, .pps, .pot, .pptm, .pptx, .ppt, .xltm, .xltx, .xlc, .xlm, .xlt, .xlw, .xlsb, .xlsm, .xlsx, .xls, .dotx, .dotm, .dot, .docm, .docb, .docx, .doc

加密算法如下:
使用AES-128-CBC算法,先用 CSPRNG生成AES key,再把AES key 用RSA-2048加密
加密后的文件,每个客户端收到的key都是唯一的,文件被加密后没有Key的情况不能解密:每一个被加密的文件最后都会带上.WNCRY 的后缀名。

w5

2.4 禁用开机恢复功能,提示付款勒索屏幕
最后, WannaCryptor 会执行一个命令,删除卷影副本,禁用window开机启动恢复,清除
Windows 服务备份文件,命令如下:
C:\Windows\SysWOW64\cmd.exe /c vssadmin delete shadow /all /quiet & wmic shadowcopy delete & bcdedit /set {default} boostatuspolicy ignoreallfailures & bcdedit /set {default} recoveryenabled no & wbadmin delete catalog -quiet

这些命令需要管理员权限,受害者会收到一个UAC 弹框提示如下:

w6

如果点击确认,Wanna Decryptor 2.0 锁屏就会蹦出来:

w7

屏幕显示:该勒索软件提供免费解密数个加密文件以证明攻击者可以解密加密文件,“点击 按钮,就可以免费恢复一些文档。”该勒索软件作者在界面中发布的声明表示,“3天内付款正常,三天后翻倍,一周后不提供恢复”。
点击Check Payment 查询支付状态,恶意软件会发送一个请求到暗网的一台服务器确认是否付款,如果确认付款了,恶意软件会马上恢复你的文件,如果没付款,就会弹出如下提示:

w8

三、 Wanna Cryptor 样本介绍

WanaCryptor 通过 NSA攻击工具进行传播,
持久性:
禁用了开机启动修复功能,使用icals 修改自启动功能,设置写入注册表感染很多进程,试图使启动出错。
样本哈希:
SHA256: ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa
相关样本文件:
主程序执行后生成文件并调用执行
\00000000.eky
\00000000.pky
\00000000.res
\@WanaDecryptor@.exe 主程序
\@WanaDecryptor@.exe.lnk
\b.wnry
\c.wnry
\f.wnry
\msg\ 本地语言化
\msg\m_bulgarian.wnry
\msg\m_chinese (simplified).wnry
\msg\m_chinese (traditional).wnry
\msg\m_croatian.wnry
\msg\m_czech.wnry
\msg\m_danish.wnry
\msg\m_dutch.wnry
\msg\m_english.wnry
\msg\m_filipino.wnry
\msg\m_finnish.wnry
\msg\m_french.wnry
\msg\m_german.wnry
\msg\m_greek.wnry
\msg\m_indonesian.wnry
\msg\m_italian.wnry
\msg\m_japanese.wnry
\msg\m_korean.wnry
\msg\m_latvian.wnry
\msg\m_norwegian.wnry
\msg\m_polish.wnry
\msg\m_portuguese.wnry
\msg\m_romanian.wnry
\msg\m_russian.wnry
\msg\m_slovak.wnry
\msg\m_spanish.wnry
\msg\m_swedish.wnry
\msg\m_turkish.wnry
\msg\m_vietnamese.wnry
\r.wnry
\s.wnry
\t.wnry
\TaskData\ 木马客户端程序
\TaskData\Data\
\TaskData\Data\Tor\
\TaskData\Tor\
\TaskData\Tor\libeay32.dll
\TaskData\Tor\libevent-2-0-5.dll
\TaskData\Tor\libevent_core-2-0-5.dll
\TaskData\Tor\libevent_extra-2-0-5.dll
\TaskData\Tor\libgcc_s_sjlj-1.dll
\TaskData\Tor\libssp-0.dll
\TaskData\Tor\ssleay32.dll
\TaskData\Tor\taskhsvc.exe
\TaskData\Tor\tor.exe
\TaskData\Tor\zlib1.dll
\taskdl.exe
\taskse.exe
\u.wnry
\wcry.exe

注册表修改项:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\[random] “安装目录\tasksche.exe”
HKCU\Software\WanaCrypt0r\
HKCU\Software\WanaCrypt0r\wd 安装目录
HKCU\Control Panel\Desktop\Wallpaper “安装目录\Desktop\@WanaDecryptor@.bmp”

四、Wanna Cryptor 逆向深入分析样本
逆向分析了母体安装,解压缩资源,预处理,加密,和设置弹窗和桌面背景等操作流程

4.1 是否执行恶意操作开关
下面的网址是个开关,如果连接成功则退出,不执行任何恶意功能,否则开始执行恶意功能:

w9

 

4.2 传播和安装后再加密和其他辅助恶意操作
检查命令行参数个数,如果没有参数,则执行相关的安装操作(4.2.1),否则说明样本以服务的方式启动,执行服务的派遣例程(4.2.2)。

w10

4.2.1 安装操作分为2个步骤:
创建并启动服务(服务带参数,启动的服务执行步骤4.2.2操作):

w11

加载资源,写入文件C:\WINDOWS\tasksche.exe,并执行(负责磁盘文件加密等恶意操作):

w12

4.2 服务的派遣例程(利用SMB漏洞进行传播):

w13

w14

 

4.3 以下为新创建的进程tasksche.exe的操作:
拷贝样本到C:\Intel\hhuypkdu230目录:

w15

首先这个进程会尝试两种方式执行解压缩和加密等相关操作,如果两个方式任意一种成功,本进程都会退出,否则由本进程执行相关操作。

第一种尝试方式:
为新目录的样本文件创建服务,并启动之:(此服务负责执行加密磁盘等操作)

w16

 

等待互斥体Global\\MsWinZonesCacheCounterMutexA0,如果等待失败,则说明上一步启动的服务没有完成加密的任务:

w17

第二种方式:
启动新目录的文件,继续等待互斥体Global\\MsWinZonesCacheCounterMutexA0:

w18

如果新创建的进程依然没有完成加密磁盘的任务,则本进程亲自执行。

4.4 解压缩资源文件,模拟加载PE文件,调用其导出函数TaskStart去执行加密操作
设置注册表HKLM\SOFTWARE\WanaCrypt0r\wd,值为当前进程样本所在目录:

w20

w21

创建cmd进程:

w22

w23

读取t.wnry的内容,验证后解密,模拟LoadLibrary加载,获取并调用其导出函数TaskStart:

w24

模拟LoadLibrary加载后进入模块入口:

w25

调用导出函数TaskStart:

w26

4.5 TaskStart加密等操作:

检查互斥体MsWinZonesCacheCounterMutexA,如果存在则进程退出:

w27

获取互斥体Global\\MsWinZonesCacheCounterMutexW,如果成功,则进一步获取互斥体Global\\MsWinZonesCacheCounterMutexA0(前文中提到过):

w28

如果此处检查不通过,或者存在文件00000000.dky,说明已经加密完成,则:创建通知线程,线程中循环执行如下操作:
创建taskse.exe进程(以@WanaDecryptor@.exe路径为参数):

w29

taskse.exe的作用:枚举所有Session,在每个Session中创建传入的参数进程:

w30

创建@WanaDecryptor@.exe进程:

w31

创建cmd.exe进程写入注册表,实现样本自启动:

w32
如果检查通过:
循环创建taskdl.exe进程
,删除加密过程中的临时文件:

w33

w34

创建多个线程,遍历并加密磁盘文件。

w35

创建上上面用于提示的线程

将解压缩得到的u.wnry拷贝为@WanaDecryptor@.exe:

w36

当前目录下创建随机名称.bat文件,向其中写入批处理脚本,执行之:

w37

批处理脚本用于创建@WanaDecryptor@.exe的快捷方式:

w38

关闭数据库和邮箱系统的进程:

w39

删除影卷备份,禁止开机启动修复等持久化操作过程

w40

设置桌面背景和弹窗

w41

五、防御方案和修复方法
1、及时更新操作系统补丁
2、关闭445等端口(其他关联端口如: 135、137、139)的外部网络访问权限,在服务器上关闭不必要的上述服务端口
3、加强对445等端口(其他关联端口如: 135、137、139)的内部网络区域访问审计,及时发现非授权行为或潜在的攻击行为
4、定期在不同的存储介质上备份信息系统业务和个人数据
5、 window停止更新的系统补丁,xp补丁已经验证,请尽快下载打好补丁
由于本次Wannacry蠕虫事件的巨大影响,微软总部刚才决定发布已停服的XP和部分服务器版特别补丁https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
6、开启防火墙

 

Written by 漏洞应急响应中心