首页
社区
课程
招聘
[原创]GlobeImposter家族的病毒样本分析
发表于: 2021-7-19 22:14 12204

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

2021-7-19 22:14
12204

病毒背景:

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

运行环境:win10

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

1.DIE查壳 无壳


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

2.简单运行:

在这里插入图片描述

发现后缀名.Snake4444

HOW_TO_BACK_FILES.txt

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

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

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

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

学了AES RSA 继续分析后

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

分析:

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

分析:

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

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

第一次调用:

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


第二次调用:

动调发现解密出HOW_TO_BACK_FILES.txt

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

分析:

第一次调用:

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

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

图:

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

动调观看解密出的内容:

图:是一些目录名

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

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

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

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

分析:路径相同 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 控制循环次数

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

分析:

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

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

跟进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写入拼接后的文件

####

跟进函数,

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

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

跟进函数sub_408D8B

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

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

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

跟进函数sub_40935E

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

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

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

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

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

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

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

2.把自己复制到localappdata路径

3.设置自启动

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

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

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


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 2219
活跃值: (5495)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
因为之前图床的问题,只好在图片上在截图,造成个别图片模糊,非常抱歉!!!!
2021-7-19 22:18
0
雪    币: 217
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
强!!
2021-7-20 07:26
0
雪    币: 1068
活跃值: (1110)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
大佬可以上传一下病毒附件吗?
2021-9-3 11:16
0
雪    币: 2219
活跃值: (5495)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
5
fickle 大佬可以上传一下病毒附件吗?
微步下载,样本我删了
2021-9-6 08:58
0
游客
登录 | 注册 方可回帖
返回
//