GlobeImposter家族的病毒样本分析
2021-07-31 19:02:14 Author: mp.weixin.qq.com(查看原文) 阅读量:51 收藏

本文为看雪论坛优秀文章
看雪论坛作者ID:pyikaaaa
病毒背景:这个勒索病毒键在于加密文件。
 
运行环境:win10
 
一个勒索病毒,去微步下个样本回来:

1

简单分析
1. DIE查壳 无壳
 

大部分都是创建文件、注册表相关的操作。
 
2. 简单运行:
 
 
 
 
 
发现后缀名.Snake4444
 
HOW_TO_BACK_FILES.txt
 
E9...........文件:
 
根据提示消息,发现 E9文件的后部分内容就是personal id。

2

进一步分析
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函数:

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

3

总结流程

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

2. 把自己复制到localappdata路径

3. 设置自启动

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

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

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

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

8. 自我删除

 

4

动调过程

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:pyikaaaa

https://bbs.pediy.com/user-home-921642.htm

*本文由看雪论坛 pyikaaaa 原创,转载请注明来自看雪社区

# 往期推荐

1. CVE-2010-2553 堆溢出漏洞分析

2. 使用unidbg破解孤挺花字符串混淆并修复so

3. MTCTF-PSA-Writeup

4. 【分析记录】疑似Confucius组织组件CuoliVXaRAT分析

5. WOW怀旧服 明文发包获取和HOOK

6. X86内核笔记_2_驱动开发

公众号ID:ikanxue
官方微博:看雪安全
商务合作:[email protected]

球分享

球点赞

球在看

点击“阅读原文”,了解更多!


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458389414&idx=1&sn=5ae5ebb6005b1395db7cd310450a63c5&chksm=b18f3b2c86f8b23a6e9196eec5281832febeb81a69b77b718bf2f580a8bb88a72d09e04c6791#rd
如有侵权请联系:admin#unsafe.sh