吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6295|回复: 11
收起左侧

[PC样本分析] GlobelImposter及C4H变种分析

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

1、概述
globelImposter出来已经有很长时间了,目前其C4H后缀的变种依旧有老哥中招,该家族可谓是经久不衰,且就在投稿前几天火绒发紧急通告说该家族又在活跃。尽管在坛子上也globelImposter相关的分析文章,但主要的加密部分可能因为时间关系分析得较简略或有点错误,毕竟勒索病毒精髓就是加密的部分。若文中有错误的地方望大伙指出,谢谢。

2、样本信息
样本名           globelImposter.exe
样本大小        51,712 bytes
MD5            
C120F323C78D046C991F0EFE45F3819C

SHA1            
C6CBF8DD6DDA8388A6B5860A62091808E2B4D2BF


3. 实验环境
windows xp 32位

4. 简要运行

相关注册表操作:
4.png

相关文件操作:
5.png

6.png

已被加密的文件:
7.png

5、详细分析

5.1 解密出内置的RSA公钥并计算其SHA256
首先跟进MyAESDecode_408B19()函数:
8.png

该函数用内置的AES密钥解密出内置的RSA公钥:
图片 1_2.png

先调用aes_setkey_enc()设置内置的密钥,再跟进aes256_crypt()函数,该函数使用ECB模式解密,函数详情如下:
图片 2.png

其中aes_crypt_ecb()中,当a2=1时进行加密操作,a2=0时进行解密操作:
1.png

内置的AES密钥:
2.png

内置被加密的RSA公钥:
图片 3.png

解密后的RSA公钥:
图片 6.png

然后申请空间存放计算出RSA公钥的SHA256:
图片 2_2.png

跟进ClacSha256_4088F4(),该函数负责计算解密出来的RSA公钥的SHA256:
图片 3_2.png

存放的地址:
图片 9.png

5.2 用RSA公钥的解密出相关字符串

先获取当前程序运行路径:
图片 10.png

图片 11.png

接着调用MyAESDecode_408B19()函数,传入RSA公钥的SHA256的值作为AES的密钥分别解密出后缀名和how_to_back_files.txt
图片 3_3.png

图片 12.png

再调用DecodeStrList_409ABF()函数,传入RSA公钥的SHA256作参数,解密出相关不加密的字符串:
图片 14.png

图片 15.png

图片 16.png

判断运行文件的路径是否为LOACLAPPDATA环境变量路径,如果不是,则把文件复制过去:
图片 17.png

图片 19.png

并在注册表把路径值设置为开机启动项:
图片 20.png

5.3生成UserID的txt文档


把RSA公钥的进行SHA256后的字符串与ALLUSERPROFILE环境变量对应的路径拼接:
图片 22.png

紧接着把路径传人CalcIDAndCreateTxt_409B4B()函数并调用:
图片 4.png

跟进该函数,函数中把公钥和计算生成的UserID写入Txt文件创建拼接后的文件:
图片 37.png

图片 50.png

然后申请堆空间,并调用CreateUserRSAAndWrite_40A116()函数生成加密用户所需的RSA密钥,并把公钥写入堆空间
图片 5.png

跟进CreateUserRSAAndWrite_40A116()函数,在该函数中首先调用rsa_gen_key__40741D()生成USER_RSA1024密钥对
图片 6_2.png

然后调用Wirtefile 向txt文件写入生成的RSA公钥:
图片 7.png

图片 40.png

把Rsa_P、Rsa_Q与字符串拼接:
图片 8.png

拼接后的字符串如下:
图片 46.png

接着调用rsa_encrypt_409FDE()函数,传入内置的rsa公钥对拼接后的字符串进行加密:
图片 49.png

被加密后的字符串:
图片 47.png

把加密后的字符串十六进制转为ASC字符串后,并写入txt文件中,以此作为用户ID:
图片 52.png

图片 51.png

所生成的文件内容:
图片 53.png

5.4开始加密文件:
下面进入文件加密的函数StartEncryptFiles(),参数为用户ID和生成的Rsa公钥:
图片 54.png

跟该加密含塑,首先获得判断磁盘类型,2、3、4表示支持移动移动硬盘、硬盘、网络硬盘:
图片 55.png

对每个盘符开启一个线程进行加密,参数为用户ID和生成的Rsa公钥:
图片 56.png

进入线程函数StartAddress,首先解析出函数参数:
图片 57.png

开始拼接盘符c:\* 遍历文件:
图片 58.png

经过一系列的比较文件名,最终调用加密函数startEncrypt_408D8B():
图片 78.png

进入startEncrypt_408D8B,先调用ctr_drbg_random_40667A()生成32字节的随机sec_key:
图片 9_2.png

生成的32字节的随机sec_key如下:
图片 81.png

初始化digest向量:
图片 10_2.png

把向量和文件路径作填充消息:
50.png

所生成的32字节的hash如下
: 51.png

然后把生成的hash前16字节和sec_key作填充消息,做两次hash运算后的值作为AES加密的key:
52.png

所生成的AES的密钥为:
53.png

用参数传入的RSA公钥加密生成AES的sec_key,其中off_40111C为公钥指数e:固定为0x010001:
54.png

加密后的sec_key:


55.png

把加密后的sec_key和计算生成的用户ID字符串写入文件:
56.png

然后调用AES_EnCryptFile()执行文件加密:
57.png

跟进AES_EnCryptFile()中,其中调用EncryptFile_408A3F()进行加密, v12为原来内容 a10为加密后的内容:
58.png

跟进EncryptFile_408A3F()函数,该函数为主要加密操作函数,加密方法为:采取隔行加密策略,先异或16个字节,再用AES的ecb模式加密:
59.png

加密前传入内容:
60.png

进行前16个字节异或后:
61.png

再用AES的ecb模式加密异或后的16字节:
62.png

加密完文件后把AES的密钥再次做hash运算,并把前面生成hash的前16字节也复制在后面,再把这0x30个字节复制到加密后文件内容的后面
63.png

64.png

最终加密后的文件内容结构如下:第一部分为文件加密的内容:
65.png

第二部分为AES密钥被生成RSA公钥加密后的内容
66.png

第三部分为所生成RSA公钥:
67.png

第四部分为部上hash的0x30个字节:
68.png

5.5 相关的后续工作:
在WriteHowBackFile_40935E()函数中释放how_to_back_file.txt在相应目录:
69.png

内容如下:
70.png

在CreateAndRunBat()调用MyAESDecode_408B19()解密bat,清除登录日志:
71.png

解密的aes密钥:
72.png

Bat内容如下:
73.png

执行自删除操作:
74.png

命令如下:
75.png

76.png

6、CCH4变种对比

名称:C4H.exe
大小:56832 字节
MD5:3AF2E34E2B5E3632C0C99DE82AC5A6E4
SHA1:6041C4AB11FF14D20F71072A04AD78F0B7D4BEDA

bindiff总体对比图:
77.png

差异一:
RSA的公钥写在文件中:
78.png

直接将其计算SHA256:
79.png

80.png

差异二:解密的字符串的方式,C4H不同与globelImposter的直接采用根据RSA的SHA256值解密作AES的密钥解密出相关字符串,其采用自定义解密的方式根据RSA的SHA256值解密出相应的文件名:
81.png

解密出的字符串:
82.png

83.png

获得的加密后缀名为.C4H:
84.png

85.png

自定义的解密方式如下:
86.png

差异三:
C4H生成RSA时没有用到随机数接口,该数值却直接写在文件中:
87.png

88.png

89.png

而加密文件AES密钥生成方式是一样的,只是C4h将IV和secret key一起hash了 2000次,再作为AES的key:
90.png

但文件的加密方式不同,取消了原来的隔行AES_ECB加密,全部均异或后再AES_ECB加密:
91.png

加密前的文件数据:
92.png

加密后的文件数据:
93.png

差异四:注册表的键值不同:
49.png

----完结,谢谢大家观看------


图片 1_3.png
54.png

免费评分

参与人数 9吾爱币 +9 热心值 +8 收起 理由
Ah0NoR + 1 + 1 谢谢@Thanks!
gaosld + 1 + 1 谢谢@Thanks!
poisonbcat + 1 + 1 谢谢@Thanks!
lucid + 1 我很赞同!
fengbolee + 2 + 1 用心讨论,共获提升!
jiuyue2532 + 1 我很赞同!
北极狼Clifton + 1 + 1 用心讨论,共获提升!
woshicp + 1 + 1 膜拜大佬,光看分析就已经跟不上了
azcolf + 1 + 1 用心讨论,共获提升!

查看全部评分

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

Hmily 发表于 2021-2-7 18:26
mai1zhi2 发表于 2021-2-7 18:25
我再编辑更新过还是这样,话说之前发的贴子也有这种情况,在编辑状态下帖子的后面已经没有图了 ...

确实有这样bug,所以刚刚我update了下按说应该可以在上传图片那显示出来了。
 楼主| mai1zhi2 发表于 2021-2-7 18:25
Hmily 发表于 2021-2-7 18:12
我刚更新了下,你再点下,看看是不是传多了?

我再编辑更新过还是这样,话说之前发的贴子也有这种情况,在编辑状态下帖子的后面已经没有图了,但当帖子发出来后面却跟着一两副图。

点评

确实有这样bug,所以刚刚我update了下按说应该可以在上传图片那显示出来了。  详情 回复 发表于 2021-2-7 18:26
arq2020 发表于 2021-2-7 16:42
huyifan311 发表于 2021-2-7 17:39
感谢楼主,拿走了,
Hmily 发表于 2021-2-7 17:56
@mai1zhi2 文章末尾有2个图是不是忘了插入正文了?
 楼主| mai1zhi2 发表于 2021-2-7 18:12
Hmily 发表于 2021-2-7 17:56
@mai1zhi2 文章末尾有2个图是不是忘了插入正文了?

老哥,图帖子有的,不知道为什么后面多出來了

点评

我刚更新了下,你再点下,看看是不是传多了?  详情 回复 发表于 2021-2-7 18:12
Hmily 发表于 2021-2-7 18:12
mai1zhi2 发表于 2021-2-7 18:12
老哥,图帖子有的,不知道为什么后面多出來了

我刚更新了下,你再点下,看看是不是传多了?
WoShiXXX 发表于 2021-2-7 18:31
楼主,样本的MD5和SHA1咋是一样的,是不是写错了?
 楼主| mai1zhi2 发表于 2021-2-7 18:33
本帖最后由 mai1zhi2 于 2021-2-7 18:36 编辑
WoShiXXX 发表于 2021-2-7 18:31
楼主,样本的MD5和SHA1咋是一样的,是不是写错了?

复错了马上改回来
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 12:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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