吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12282|回复: 26
收起左侧

[PC样本分析] 一款勒索软件的详细分析

  [复制链接]
cainiao123 发表于 2017-10-31 00:42
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 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个字节作为密钥,
[C] 纯文本查看 复制代码
byte_rsc ^= byte_rsc[i%16]; //(i>=16)

      密钥为:FB B3 05 48 41 7E DE A7 35 DD 8B 2F FD 5E BD BE, 称为密钥1
    ii.解密完成后数据如下:
      

图1. 解密后资源值

图1. 解密后资源值
(不包括前16个字节)
    iii.经过分析,上图中的值可分为以下部分:
      

图2.值的说明

图2.值的说明

  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,
[C] 纯文本查看 复制代码
密钥2[i] = 密钥2[i] ^ (B1 rol i); //i∈[0,15] 并存储到[406585,406595),称为密钥3

     viii.接下来,根据图2中那5个字节的开关中的某个字节,有二种加密方式. 在本样本的资源设定中, 会选择加密方式2.设读入文件数据data, 数据长度len
         ①加密方式一:
           对(len/4)个DWORD, DWORD_data^= 密钥1[i%4]   i∈[0,len/4]
         ②加密方式二:
           对(len/8)个2个DWORD,
            3.JPG
           显然该算法可逆.
         ③加密方式二的解密方式:(该解密函数就在加密的旁边,BYTE_406550为0时,病毒为加密模式;为1时,病毒为解密模式)
            对(len/8)个2个DWORD,
            

图4.解密加密方式二

图4.解密加密方式二

     ix.将加密后的数据写入受害文件,并设定文件的创建修改访问时间为vi中获得的值, 避免操作暴露.
     x.利用MoveFileA正式重命名文件, 开始下一次遍历.
  7\用SHGetSpecialFolderPath得到特殊目录,并在其中创建勒索信息文件,之后弹出勒索信息对话框,
  8\加载资源中名为pussylicker(龌蹉的名字)的bmp资源, 并以此创建bmp文件,之后设为桌面背景.
  9\至此, 第一次执行流程结束.
以后打开.EnCiPhErEd文件,会执行以下流程:
  1\执行上述的1.2.3
  2\执行到3后,发现自身已经存在于临时目录后,创建勒索密码输入窗口.之后开始等待输入.
  3\窗口回调中的关键代码如下:
   

图5.验证勒索密码流程

图5.验证勒索密码流程

   

图6.五次MD5加密

图6.五次MD5加密

    该过程不可逆,网上查询也无结果. 不过不影响大局. 文件可以解锁.
   
0x3病毒样本及分析idb文件
   virus.7z (61.5 KB, 下载次数: 81)
  密码52pojie
转眼间已经在15PB毕业了, 本人菜鸟, 如有疏漏之处多多指教!!
            

免费评分

参与人数 10威望 +2 吾爱币 +17 热心值 +10 收起 理由
503514256 + 1 热心回复!
firelee691 + 1 + 1 用心讨论,共获提升!
siuhoapdou + 1 + 1 用心讨论,共获提升!
a5606495 + 1 + 1 用心讨论,共获提升!
FORIT + 1 + 1 用心讨论,共获提升!
废宅小五 + 1 谢谢@Thanks!
Three_fish + 1 + 1 谢谢@Thanks!
SomnusXZY + 1 + 1 我很赞同!
Hmily + 2 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
junshang + 1 + 1 用心讨论,共获提升!

查看全部评分

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

爱飞的猫 发表于 2017-10-31 07:17
本帖最后由 jixun66 于 2017-10-31 07:18 编辑

代码片段建议使用代码框包起来。。。

[C++] 纯文本查看 复制代码
密钥2[i] = 密钥2[i] ^ (B1 rol i); //i∈[0,15] 并存储到[406585,406595),称为密钥3


或者用 Markdown 的语法高亮:
密钥2[i] = 密钥2[i] ^ (B1 rol i); //i∈[0,15] 并存储到[406585,406595),称为密钥3
 楼主| cainiao123 发表于 2017-10-31 14:27
本帖最后由 cainiao123 于 2017-10-31 14:28 编辑
Hmily 发表于 2017-10-31 14:05
能把当时出错的代码放到本文里上传上来吗?我好测试找下问题,上面这个代码没有出错。

就是这一句.
[C] 纯文本查看 复制代码
密钥2[ i ] = 密钥2[ i ] ^ (B1 rol i); //i∈[0,15] 并存储到[406585,406595),称为密钥3

你 看你回复我的帖子, 密钥2后面的
[C] 纯文本查看 复制代码
[ i ]
消失了

把i左右的空格去掉, 就消失了.. 我特意加上空格,不然都打不出来

点评

好了,把这块代码删除了,这下不会有了,代码还是建议直接用代码框处理下,也不会有这样问题。 谢谢@jixun66 帮助,也周知下问题解决了。  详情 回复 发表于 2017-11-1 11:42
 楼主| cainiao123 发表于 2017-10-31 01:00
好像出BUG了,
密钥2[i] = 密钥2[i] ^ (B1 rol i); //i∈[0,15] 并存储到[406585,406595),称为密钥3
我加上这一句,后面字体全变斜体了..

点评

能把当时出错的代码放到本文里上传上来吗?我好测试找下问题,上面这个代码没有出错。  详情 回复 发表于 2017-10-31 14:05
discuz很恶心,在discuz里是斜体的意思,结尾是[ /i]多了一个空格,防止被转换,但如果只有开头系统会自动把结尾补上,一直没找到这编辑器代码如何修改可以取消这个功能,太恶心了。。。  详情 回复 发表于 2017-10-31 12:08
diting789 发表于 2017-10-31 10:07
路过学习
Hmily 发表于 2017-10-31 12:08
cainiao123 发表于 2017-10-31 01:00
好像出BUG了,
密钥2 = 密钥2 ^ (B1 rol i); //i∈[0,15] 并存储到[406585,406595),称为密钥3
我加上这一 ...

discuz很恶心,[i ]在discuz里是斜体的意思,结尾是[ /i]多了一个空格,防止被转换,但如果只有开头系统会自动把结尾补上,一直没找到这编辑器代码如何修改可以取消这个功能,太恶心了。。。
时光不老时 发表于 2017-10-31 13:19
学习了,感谢分享
Hmily 发表于 2017-10-31 14:05
cainiao123 发表于 2017-10-31 01:00
好像出BUG了,
密钥2 = 密钥2 ^ (B1 rol i); //i∈[0,15] 并存储到[406585,406595),称为密钥3
我加上这一 ...

能把当时出错的代码放到本文里上传上来吗?我好测试找下问题,上面这个代码没有出错。
jore 发表于 2017-10-31 22:31
学习了,感谢分享
ajm3 发表于 2017-10-31 23:54
源码是怎么看到了呢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-28 05:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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