首页
论坛
课程
招聘
[原创]GlobeImposter家族的病毒样本分析
2021-7-19 22:14 3358

[原创]GlobeImposter家族的病毒样本分析

2021-7-19 22:14
3358

GlobeImposter家族的病毒样本分析

0x00 基础信息

病毒背景:

 

这个勒索病毒关键在于加密文件

 

运行环境:win10

 

一个勒索病毒 去微步下个样本回来

 

0x01 简单分析

1.DIE查壳 无壳

 


大部分都是 创建文件 注册表相关的操作

 

2.简单运行:

 

在这里插入图片描述

 

 

 

 

发现后缀名.Snake4444

 

HOW_TO_BACK_FILES.txt

 

E9...........文件:

 

根据提示消息 发现 E9.。。。。。文件的 后部分内容就是personal id

0x02 进一步分析

start函数---> 跟进函数 sub_409C6B----->

 

 

 

跟进sub_408B19 函数 以下是加密解密相关的

 

学了AES RSA 继续分析后

sub_408B19 函数

结论:用AES内置的密钥解密出内置的RSA公钥

 

分析:

 

sub_4088F4函数

结论:计算解密出来的RSA公钥的SHA256

 

分析:

 

下一步分析

 

可以看到GetModuleFileNameW 函数:获取当前程序运行的路径

 

接着调用两次sub_408B19函数(AES解密函数):传入RSA公钥的SAH256值作为AES的密钥

 

第一次调用:

 

 

动调发现解密出.Snake4444 ,经过简单运行观察到,这是被加密文件的后缀名

 


第二次调用:

 

动调发现解密出HOW_TO_BACK_FILES.txt

 

sub_409ABF函数

结论:解密函数 内部有408B19 函数 还是一个 AES解密函数

 

分析:

 

第一次调用:

 

还看到下面有关于逗号的操作,不重要,不重点分析

 

动调: 跟到解密出的数据 是一些文件名

 

 

图:

 

第二次调用:同理 是利用AES解密

 

动调观看解密出的内容:

 

图:是一些目录名

 

接着分析

发现调用GetEnvironmentVariableW函数:
从调用该函数的进程的环境变量中,返回指定的变量名的值 参数:lpName:要获取值的变量名字符串指针.lpBuffer:接收变量值的字符串指针nSize:接收变量值的内存大小. 函数成功执行返回字符数量

 

PathAddBackslashW函数:对应路径加上反斜杠 构成正确语法

 

 

这部分内容就是,判断运行文件的路径是否为LOACLAPPDATA环境变量路径,如果不是的话,路径后加\ 构成合理语法,根据运行程序的路径 ,获取文件名,接着拼接到路径上,之后 比较环境变量的路径值和当前程序运行的目录,判断运行文件的路径是否是LOACLAPPDATA环境变量路径 ,如果不是则把文件复制过去。如图

 

sub_409624函数

结论:设置注册表的自启动

 

分析:路径相同 goto_lable_8

 

跟进函数:

 

 

发现都是注册表相关的函数,

 

RegOpenKeyExW

 

RegQueryValueExW

 

RegCreateKeyExW :创建指定的注册表项。如果键已经存在,函数将打开它。

 

RegSetValueExW:RegSetValueEx函数在注册表项下设置指定值的数据和类型。

 

 

总结就是 必须先通过RegOpenKey来找到Key,然后再通过RegQueryValueEx来找到这个Key中包含的Valuename。

 

如果传进来的参数(路径)不等于 根据RegQueryValueExW这个函数找到的数据 (也就是自启动没有这个路径)就创建

 

总结: 这个就是实现程序开机自启动的

接着分析

 

运行文件的路径是否为Public环境变量路径 ,如果是

 

{

 

sub_402828:用rsa-sha256 做参数 做些改变 然后存进一段堆空间中 也是把rsa公钥的sha256 转为字符串

 

sub_409408:转换

现在lpstring2 就是根据rsa公钥的SAH256值 做改变后的字符串

 

 

sub_4017E8 在前面分析过 是HOW_TO BACK_FILE.txt
HOW_TO BACK_FILE.txt 复制给lpstring1
路径加反斜杠 与lpstring2进行拼接
拼接后内容 C:\用户\public\E93F1BcB76F796........ E93F1BcB76F796........ 是 解密出的rsa的sha256的值
}

 

v7 v8 控制循环次数

sub_409B4B函数

结论:生成user-rsa密钥对 ,并把生成的公钥和计算生成的personalid写入E93F1BcB76F796........ 文件中

 

分析:

 

把拼接后的路径作为参数传入sub_409B4B函数

 

创建个文件名是拼接的内容的文件 ,直接看else的内容,(因为getlasterror() 返回值只有是0的时候 操作功能完成)

 

sub_40A116函数

跟进sub_40A116函数

 

观察参数 有解密后的RSA公钥,有拼接后的路径名,有加密后缀Snake4444,有HOW_TO_BACK_FILES.txt

 

看到有rsa_genkey 这是个有关于RSA函数

 

跟进sub_409FC8--->sub_409FC8---> 然后调用Wirtefile 向c:..E9... 文件中写入lpstring

 

lpstring 是 生成的user rsa pub

 

根据最初简单运行时发现的HOW_TO_BACK_FILES.txt 中的提示信息可以知道 第二部分是personalid

 

personal id 的生成(

 

用生成的 user-rsa-public 和 私钥 与 一个字符串进行拼接

 

拼接后的 字符串 被内置的黑客的 rsa公钥加密

 

加密后当做personal id 存进E9.....文件中

 

总结:sub_409B4B函数作用 利用RSA加密生成用户的公钥和私钥

 

然后把生成的personalid写入拼接后的文件

 

####

sub_4099A3函数

跟进函数,

 

 

遍历盘符,为每一个盘符创建一个线程,跟进startaddress---》

 

 

 

遍历文件 ,比较是不是.snake4444 是不是HOW..文件,是不是保存用户id的文件,获取当前运行的文件的路径,看是否是当前的文件本身,如果都不是,

 

跟进函数sub_408D8B

 

有个用rsa加密的函数 猜测这个函数与加密有关

 

所以是遍历文件进行加密 ,加密成功之后,会对文件拼接一个.snake4444 后缀

 

确定sub_408D8B 函数 就是对文件及进行加密的函数

 

跟进函数sub_40935E

sub_40935E函数

结论:释放how_to_back_file.txt在相应目录

 

sub_409449函数

结论:创建.bat文件 (内容是解密后写进去的)执行这个文件

 

 

调用8B19函数 对数据进行解密,写进bat文件中,

 

sub_409305函数:跟进有个creatprocess函数 ,应该是执行这个bat文件

 

作用:Bat会删除远程桌面连接信息文件 default.rdp,并通过wevtutil.execl命令删除日志信息

 

sub_409509函数:

结论:执行当前运行的程序的自我删除

 

0x0x总结流程

1.解密一些东西 为之后加密文件做准备

 

2.把自己复制到localappdata路径

 

3.设置自启动

 

4.生成名为RSA公钥的sha256的文件 文件内容是生成的user_rsa_public 和 personal id

 

5.遍历磁盘 遍历文件加密

 

6.把HOW_TO_BACK_FILE.txt文件释放到每个对应的文件下

 

7.创建个批处理文件 解密内容 执行操作

 

8.自我删除

 

##

动调过程:

00409c84:调用MYAESDecode() 解密出 不被加密的RSA值

 

00409cfe:调用MYAESDecode() 解密出 被加密文件的后缀名.Snake4444
00409d13:调用MYAESDecode() 解密出 HOW_TO_BACK_FILES.txt
00409ad5:调用 MYAESDecode() 解密出 不被加密的文件名
00409ad5:调用 MYAESDecode() 解密出 不被加密的目录名

 

004094b8:调用 MYAESDecode() 解密出.bat文件的内容

 

00409fa0:把生成的user_rsa_piublic 写进e9.。。文件中

 

0040A2AF:把生成的user 密钥 与 字符串进行拼接

 

0040A2DD:使用内置的rsa公钥 加密拼接好的密钥字符串


[培训] 优秀毕业生寄语:恭喜id:一颗金柚子获得阿里offer《安卓高级研修班》火热招生!!!

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 639
活跃值: 活跃值 (405)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
pyikaaaa 活跃值 2021-7-19 22:18
2
0
因为之前图床的问题,只好在图片上在截图,造成个别图片模糊,非常抱歉!!!!
雪    币: 217
活跃值: 活跃值 (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
allex02 活跃值 2021-7-20 07:26
3
0
强!!
游客
登录 | 注册 方可回帖
返回