一款勒索软件的详细分析
本帖最后由 cainiao123 于 2017-10-31 13:32 编辑0x0基本信息
报告名称: 一款勒索软件的详细分析
报告更新日期:2017-10-30
样本类型: WIN32 EXE
样本文件大小:12288字节/被加密文件大小无变化
样本文件MD5:f9154b290dc8fbf1bc82065d656b6590
样本文件SHA-1:cca6c6b00d6072f08aad735cb559839f333fcb9a
第一次发现日期:2012-01-30 00:19:03
0x1简介
该样本是一款加密算法可逆的勒索软件.
i被感染后系统症状:
1\正常文件名后添加.EnCiPhErEd扩展名
2\双击打开1中文件,出现勒索信息弹出框,以及解密密码输入框.
3\桌面壁纸变为勒索信息图片(该样本信息图片缺失,故变为黑屏)
ii文件系统变化:
1\%TMP%目录下出现名为ZFe6iILss4arp10.exe的病毒复制体
2\从A盘到Z盘,所有指定类型的大于8字节大小的文件会被加密
3\各个目录下会创建3个勒索说明文件(功能残缺,未出现,但包含代码)
iii注册表变化:
1\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加一项名为Alcmeter的REG_SZ值,值为ii-1中病毒全路径
2\HKEY_CLASSES_ROOT\YPZEZHCHKRGLOLF及其子项
3\HKEY_CLASSES_ROOT\.EnCiPhErEd
iv网络症状:
无
0x2详细分析:
样本开始运行后会进行如下行为:
1\加载自身位图资源到内存,在内存中对其进行解密.解密完成的数据放到内存的相应位置.
i.解密方式如下:
以前16个字节作为密钥,byte_rsc ^= byte_rsc; //(i>=16)
密钥为:FB B3 05 48 41 7E DE A7 35 DD 8B 2F FD 5E BD BE, 称为密钥1
ii.解密完成后数据如下:
(不包括前16个字节)
iii.经过分析,上图中的值可分为以下部分:
2\将密钥1分为4个DWORD,每个DWORD字节逆序后存放在[406595,4065a5),称为密钥2
3\得到explorer.exe的创建修改访问时间, 将自身重命名并放入到%TMP%目录下,并更名为ZFe6iILss4arp10.exe,设置该EXE的三个时间为前面得到的时间
4\在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下创建名为Alcmeter的REG_SZ值, 并赋值为新病毒文件的完整路径,实现开机自启动.
5\在注册表创建一些列项值HKEY_CLASSES_ROOT\YPZEZHCHKRGLOLF及其子项, HKEY_CLASSES_ROOT\.EnCiPhErEd, 实现.EnCiphErEd文件的关联打开方式为新病毒.
6\开始循环遍历硬盘, 从Z盘开始到A盘:
i.如果遍历到目录,那么拼装路径继续递归
ii.如果遍历到文件,那么比较文件名是否为三个勒索说明的文件名.是则开始下一次遍历.
iii.在该目录下创建三个勒索说明文件
iv.对文件后缀名进行匹配,如果不在列表中,则开始下一次遍历
v.在列表中,那么在内存中给文件名加上.EnCiPhErEd后缀
vi.打开文件,得到文件的创建修改访问时间, 读取文件*lDistanceToMove处nNumberOfBytesToRead个字节的值.
vii.文件名的第一个字节,设为B1, 密钥2 = 密钥2 ^ (B1 rol i); //i∈ 并存储到
viii.接下来,根据图2中那5个字节的开关中的某个字节,有二种加密方式. 在本样本的资源设定中, 会选择加密方式2.设读入文件数据data, 数据长度len
①加密方式一:
对(len/4)个DWORD, DWORD_data^= 密钥1 i∈
②加密方式二:
对(len/8)个2个DWORD,
显然该算法可逆.
③加密方式二的解密方式:(该解密函数就在加密的旁边,BYTE_406550为0时,病毒为加密模式;为1时,病毒为解密模式)
对(len/8)个2个DWORD,
ix.将加密后的数据写入受害文件,并设定文件的创建修改访问时间为vi中获得的值, 避免操作暴露.
x.利用MoveFileA正式重命名文件, 开始下一次遍历.
7\用SHGetSpecialFolderPath得到特殊目录,并在其中创建勒索信息文件,之后弹出勒索信息对话框,
8\加载资源中名为pussylicker(龌蹉的名字)的bmp资源, 并以此创建bmp文件,之后设为桌面背景.
9\至此, 第一次执行流程结束.
以后打开.EnCiPhErEd文件,会执行以下流程:
1\执行上述的1.2.3
2\执行到3后,发现自身已经存在于临时目录后,创建勒索密码输入窗口.之后开始等待输入.
3\窗口回调中的关键代码如下:
该过程不可逆,网上查询也无结果. 不过不影响大局. 文件可以解锁.
0x3病毒样本及分析idb文件
密码52pojie
转眼间已经在15PB毕业了, 本人菜鸟, 如有疏漏之处多多指教!!
本帖最后由 jixun66 于 2017-10-31 07:18 编辑
代码片段建议使用代码框包起来。。。
密钥2 = 密钥2 ^ (B1 rol i); //i∈ 并存储到
或者用 Markdown 的语法高亮:
```
密钥2 = 密钥2 ^ (B1 rol i); //i∈ 并存储到[406585,406595),称为密钥3
``` 本帖最后由 cainiao123 于 2017-10-31 14:28 编辑
Hmily 发表于 2017-10-31 14:05
能把当时出错的代码放到本文里上传上来吗?我好测试找下问题,上面这个代码没有出错。
就是这一句.
密钥2[ i ] = 密钥2[ i ] ^ (B1 rol i); //i∈ 并存储到
你 看你回复我的帖子, 密钥2后面的[ i ]消失了
把i左右的空格去掉, 就消失了.. 我特意加上空格,不然都打不出来 好像出BUG了,
密钥2 = 密钥2 ^ (B1 rol i); //i∈ 并存储到[406585,406595),称为密钥3
我加上这一句,后面字体全变斜体了.. 路过学习 cainiao123 发表于 2017-10-31 01:00
好像出BUG了,
密钥2 = 密钥2 ^ (B1 rol i); //i∈ 并存储到[406585,406595),称为密钥3
我加上这一 ...
discuz很恶心,在discuz里是斜体的意思,结尾是[ /i]多了一个空格,防止被转换,但如果只有开头系统会自动把结尾补上,一直没找到这编辑器代码如何修改可以取消这个功能,太恶心了。。。 学习了,感谢分享 cainiao123 发表于 2017-10-31 01:00
好像出BUG了,
密钥2 = 密钥2 ^ (B1 rol i); //i∈ 并存储到[406585,406595),称为密钥3
我加上这一 ...
能把当时出错的代码放到本文里上传上来吗?我好测试找下问题,上面这个代码没有出错。 学习了,感谢分享 源码是怎么看到了呢