安全路透社
当前位置:安全路透社 > 安全客 > 正文

【木马分析】揭秘达芬奇密码 – 新型敲诈者分析

http://p3.qhimg.com/t0125d065b91eef304f.jpg

0x00 前言


达芬奇密码(. da_vinci_code)敲诈者是今年下半年刚出现的一款敲诈者木马,最早出现在国外的报道,并未影响国内用户。但自今年九月开始,360白名单分析组发现该木马在国内开始出现并逐步活跃,而且还出现了多个变种。由于此类敲诈者木马会将你所有的文档、文件和图片等个人生活与工作的重要数据通通加密保存,如果你不在48小时内通过暗网支付比特币赎金,你的重要数据将永久被加密保存,并且该变种频繁更新,一旦在国内爆发会带来巨大危害。

http://p9.qhimg.com/t01e6c1183a4bd79c87.png

图1下半年截止到10月22号捕获的达芬奇密码敲诈者部分变种

感染达芬奇密码敲诈者后,电脑中文档,压缩包,图片等文件均遭到加密,并修改文件后缀为“da_vinci_code”,并在每个磁盘目录和桌面下生成10个README.txt。图2显示的是感染达芬奇密码敲诈者后的桌面截图。

http://p3.qhimg.com/t0137924010c7956683.png

图2达芬奇密码敲诈者感染后的桌面

README.txt主要内容如下:

http://p2.qhimg.com/t01e8d09df80728f211.png

图3达芬奇密码敲诈者提示用户信息


0x01 基本流程


达芬奇密码敲诈者的功能主要分为安装包解密,ShellCode执行,勒索者本体三部分。大致的过程如下图所示:

http://p8.qhimg.com/t01fba2fadca67cda94.jpg

图4达芬奇密码敲诈者恶意代码流程


0x02 安装包解密


2.1 利用nsis脚本的IntOp和IntFmt函数拼接出System.dll::Call的调用参数,然后调用Call来执行。

http://p8.qhimg.com/t013362e099672bd11d.png

图5 NSIS脚本内容

执行的主要函数如下:

kernel32::CreateFileW(t '\', i 0x80000000, i 0x7, i 0, i 3, i 0x80, i 0) i .r7
kernel32::VirtualAlloc(i 0, i , i 0x3000, i 0x40) p .r8
kernel32::ReadFile(i r7, p r8, i , t.,)
kernel32::CloseHandle(i r7)::(t '\')

2.2 Call执行功能

kernel32::CreateFileW打开"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\

Ggm0KQEbU4UcJiEbNYAXOTz.jsiDbvtAQ8jS"

http://p9.qhimg.com/t016cf7a88c54bb68f6.png

图6创建ShellCode解码文件

kernel32::VirtualAlloc申请一段空间,大小为0xCC84D

http://p4.qhimg.com/t01871d769f27bb7a50.png

图7申请固定大小空间

kernel32::ReadFile读取Ggm0KQEbU4UcJiEbNYAXOTz.jsiDbvtAQ8jS文件至新申请的空间

http://p7.qhimg.com/t01e146b977cdee65de.png

图8读ShellCode解码文件

kernel32::CloseHandle关闭句柄,然后跳转新申请的空间去执行ShellCode。


0x03 ShellCode执行


解出勒索者本体

3.1 双层异或算法解密出执行代码

http://p9.qhimg.com/t012aa26060d39d9d8a.png

图9 ShellCode解密部分

http://p0.qhimg.com/t01e97d43be7e534c5e.png

图10 ShellCode解密算法

3.2 动态获取API并利用INT 2E调用相关API 

通过API名字的hash值获取函数地址:

http://p1.qhimg.com/t01c9bf9189b0fd49b6.png

图11获取函数地址

获取的具体函数如下:

http://p8.qhimg.com/t016589be1c608bf2c0.png

图12获取函数列表

利用INT 2E调用相关API:

http://p2.qhimg.com/t01a5c82a3d107f7eeb.png

图13利用INT 2E调用相关API

3.3 解出勒索者本体  

http://p9.qhimg.com/t01f3573b311f947f8f.png

图14 Shellcode执行部分

http://p3.qhimg.com/t01b29999d981772d47.png

图15 解密勒索本体过程

从Ggm0KQEbU4UcJiEbNYAXOTz.jsiDbvtAQ8jS的偏移0x35处读取0xC7360字节的数据进行AES256解密。

密钥是通过文件名(UNICODE)的MD5生成的,以下是它的生成过程:

http://p3.qhimg.com/t01d4b1a07d0b0ad03a.png

图16 解密密钥生成

最后将解密之后的数据进行Zlib解压缩,得到勒索者本体:

http://p4.qhimg.com/t017dd7567e6fb69e5a.png

图17 解密得到的PE数据

3.4 执行勒索者

创建傀儡进程执行勒索者,宿主是安装包进程:

http://p6.qhimg.com/t011953704bb95ef6ac.png

图18 创建傀儡进程


0x04 勒索者本体


4.1 利用AES256解密出API名称,然后调用LoadLibrary和GetProcAddress动态获取API地址:

http://p0.qhimg.com/t017b5c3d44dbf1f8c1.png

图19 解密API名称

4.2 获取当前计算机名+处理器核数+系统所在卷序列号+系统版本并计算其MD5作为计算机特征码,并保存在注册表的xi值中。

http://p2.qhimg.com/t012a2940ae4db8d880.png

图20 计算机特征码生成算法

4.3 拷贝自身到C:\Documents and Settings\All Users\Application Data\Windows\csrss.exe位置,并添加注册表自启:

http://p5.qhimg.com/t017ada17079368118a.png

图21 拷贝自身

http://p4.qhimg.com/t017c9fa68033623f92.png

图22 添加启动项

4.4 通过Tor网络匿名与服务器进行通讯:

http://p5.qhimg.com/t01eb278da46d42fe69.png

图23 与服务器通讯

4.5 生成的公钥及其相关的配置信息保存在注册表。

注册表的数值如下:

http://p9.qhimg.com/t01edc489616f5cd799.png

图24 注册表保存重要数据

4.6 加密以下后缀名的文件。

木马会对以下类型的文件进行加密:

http://p5.qhimg.com/t017be1707d77b19beb.png

图25加密的后缀名

不对系统关键文件加密,从而保证系统的正常启动:

http://p7.qhimg.com/t011d279a01b324cc35.png

图26忽略加密的文件

4.7 AES256加密密钥生成算法

初始化随机种子srand(_time64+当前线程ID+clock),随机生成两个256位的密钥,用于文件名和文件内容加密。

http://p1.qhimg.com/t019e2a7fe057a54877.png

图27用于AES256加密的生成算法

4.8 文件名加密算法

对原始文件名(UNICODE)进行AES256加密再通过Base64加密,得到加密文件名第一部分:

Ciphertext_1=Base64(AES256_Encrypt(UNICODE (Original_FileName)))

再通过计算机特征码前0x14字节转换为UNICODE得到第二部分:

Ciphertext_2= UNICODE(ComputeCode(0x14) )

最后的加密文件名就是第一部分加上第二部分加上”.da_vinci_code”

Encrypt_ FileName= Ciphertext_1+ Ciphertext_2+”.da_vinci_code”

http://p9.qhimg.com/t01eba449c54f33f0d8.png

图28文件名加密生成算法

http://p6.qhimg.com/t0171b6352a01809279.png

图29 加密前的文件名

http://p4.qhimg.com/t014fbb0b2644ffb82c.png

图30 加密后的文件名

4.9 文件加密算法

程序将生成的两个密钥和其他关键数据以RSA加密的方式保存在加密文件的前0x180字节中。

加密文件内容的过程如下:

http://p4.qhimg.com/t01fca71be24a50e561.png

图31 文件数据加密算法

http://p0.qhimg.com/t01ec904aab710230f6.jpg

图32 文件数据加密过程图示

http://p2.qhimg.com/t01d85e578656744656.png

图33 密钥相关的数据块KeyData在内存中的布局

4.10 删除卷影 

http://p2.qhimg.com/t018001920615d919dd.png

图34删除文件卷影


0x05 解密过程


当勒索者收到赎金后,会提供给受害者RSA的私钥,通过这个私钥可以解密文件前0x180字节数据块,分别拿到文件名的解密密钥和文件内容的解密密钥。

从而继续解密得到文件名和文件内容,再将文件尾部的0x180字节覆盖文件开头的解密块数据,这样就完成对一个文件的解密。


0x06 查杀情况以及如何防范


提醒广大网友:重要数据应定期备份,软件的漏洞补丁应及时安装,可以免疫绝大多数来自恶意网页或客户端的挂马攻击。此外,他人发来的可疑程序或脚本(如exe、scr、js等)不要双击运行,这样就能最大限度的避免中招。同时360白名单分析组会通过已有的样本收集系统,第一时间查杀该木马变种。当前360安全卫士可以全面拦截此类敲诈者病毒,最新版本11.0中的“反勒索服务”还能为受害用户提供一站式的代缴赎金及文件解密服务,全面保障用户财产和数据的安全。

http://p8.qhimg.com/t01600767b15f01ca7e.png

图35  2016年11月14号达芬奇密码敲诈者的查杀情况


本文地址:http://bobao.360.cn/learning/detail/3233.html

未经允许不得转载:安全路透社 » 【木马分析】揭秘达芬奇密码 – 新型敲诈者分析

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册