吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10094|回复: 18
收起左侧

[PC样本分析] wannacry逆向分析初探(二)

[复制链接]
hercs 发表于 2018-6-15 11:26
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 hercs 于 2018-8-7 16:44 编辑

这次我们来看看解密要内存加载的dll的过程,这个解密过程和后面的文件加密采用的都是RSA+AES的方法,RSA加密AES的秘钥,嵌在文件头部,AES秘钥随机生成。
一、解密大致流程
KeyStruct是一个包含了解密需要的一些资源和信息的结构体,在解密开始前会初始化他,如图。
解密初始化3.png
解密初始化2.png
目前发现该结构体有这些成员,分别命名如上图,并在IDA离新建该结构体。
结构体初始化后就是加密函数的初始化,其实也是用的Window自带的加密函数。打开InitEncryptFunc函数如下
InitEncryptFunc.png
里面会调用GetAndTransferRSAKey函数获取RSA的Key,利用该Key通过RSA算法加密密就可以的到后面AES算法的Key了。
GetAndTransferRSAKey会分别依次调用Windows自带的CryptAcquireContextA和CryptImportKey,这两个函数的地址都是通过之前的GetRequiredSysApi保存在全局变量里的,在这里直接调用即可。
GetAndTransferRSAKey.png
到这里初始化就结束了,接下来就是通过DecryptDll解密了,第一步当然还是要先通过RSA解密出AES的秘钥,其中未解密的AESKey是从t.wnry文件中获取的,t.wnry头部结构为WANACRY!标识(8字节),秘钥大小(4字节),秘钥(256字节),加密类型(4字节),原始文件长度(8字节)。
获取到AESkey后,利用前面获得的系统解密函数还有RSAkey来解密出AESkey.
DecryptDll.png
RSADecryptAESKey.png
后面会调用AesExpandKey来对AESkey进行扩展,然后在用该key解密dll。关于具体的扩展和加密细节,下次再说,我们这次在探索一下dll里面的加密大致流程。
一、Dll加密大致流程
dll中TaskStart先会执行是否运行在系统权限下,单例检查,Key检查等操作,然后会开一个线程检查是否运行在系统权限并提权,然后在注册表写入自启动。
1.png
系统权限提升通过taskse.exe
RUNTASKEXE.png
随后会检查秘钥是否已生成,若没有则初始化,分别保存在00000000.pky,00000000.eky
通过CryptGenRandom产生8字节随机值写入00000000.res。
随后会开启5个线程,执行一些任务,这个以后在分析,现在直接看后面的EncyptFile_100057C0()函数
首先会执行CreateShortCut函数,该函数如下
2.png
首先会复制u.wnry到@WanaDecryptor@.exe,然后在创建一个@WanaDecryptor@.exe.lnk的快捷方式,创建的BAT如下
BAT.png
然后会调用Create_Please_Read_Me__txt_10004DF0创建勒索文本文件
3.png
勒索文本如下
勒索文本.png
然后执行ExcuteEncryption,该函数最终会调用EncrptAllFilesInThisFolder,该函数会跳过以下目录和下面三个文件
要跳过的目录.png
jumpfile.png
然后CheckIfThisFileShouldBeEncrypted,该函数检查文件名后缀,符合以下类型则应当加密,将该文件加入一个加密链表的结构体中,OD截图如下
要加密的文件类型3.png 要加密的文件类型2.png 要加密的文件类型1.png

然后会执行EncryptFileInDifferentCases,该函数根据四种不同情况来进行处理,case1直接返回,case2是直接删除,case3加密文件,加一个后缀WNCYR,移除链表,case4加密链表中剩余的文件。
case3,4都会执行EnCryptFile函数,不管3,4最后都会执行到LABEL_8,然后执行加密函数EncryptFile_10001960,如下
4.png
EncryptFile_10001960中间加密策略如下图,如果caseNum=3,则
5.png
如果caseNum=4,则进行随机值检查,根据结果选择不同加密算法,然后写入加密文件头部数据
file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\455482753\QQ\WinTemp\RichOle\Q_WXLVC~YGYNA{NM`PJIFPI.png
6.png
如果是遇到的case3生成的WNCRY文件,则将尾部10000读取到头部,然后每次对后面的data中的100000字节进行加密。
7.png

解密初始化.png

免费评分

参与人数 5吾爱币 +6 热心值 +5 收起 理由
堂前燕 + 1 + 1 我很赞同!
drw168 + 1 + 1 谢谢@Thanks!
夏雨微凉 + 2 + 1 热心回复!
pds201401 + 1 + 1 我很赞同!
lzy学霸 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yssun 发表于 2018-6-15 12:18
高手哦。  感谢楼主分享
回忆成辉 发表于 2018-6-15 13:08
mosou 发表于 2018-6-15 13:11
v_king 发表于 2018-6-15 16:32

高手哦。  感谢楼主分享
yryinrui 发表于 2018-6-15 18:04
emmmmmThanks
bianqi 发表于 2018-6-15 21:15


高手哦。  感谢楼主分享
mxqqw 发表于 2018-6-15 21:28
也就是说其实私钥还是留在本地的?
4everlove 发表于 2018-6-15 21:36
感谢楼主分享分析逆向流程. 学习了
jmpengbo 发表于 2018-6-15 22:41
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 07:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表