首页
社区
课程
招聘
[原创]GlobeImposter3.0 勒索分析
发表于: 2019-11-3 10:48 5149

[原创]GlobeImposter3.0 勒索分析

2019-11-3 10:48
5149

木马从app.any.run下载而来,是GlobeImposter勒索病毒
图片描述

木马MD5:C120F323C78D046C991F0EFE45F3819C

tip:如何在app.any.run下载木马
首先访问https://app.any.run/,然后点击又下角的trojan
图片描述

然后把这里的trojan叉掉,在右边输入样本md5
图片描述

然后点击出来的结果
图片描述

图片描述

分析机器,win7x64
分析完成了,说一下木马特点:
RSA加密,私钥在攻击者手里,所以被加密的文件在没有私钥的情况下无法解密。
加密完成后会删除卷影备份以及登录信息
好像没什么特别的了...

在虚拟机中使用火绒剑进行行为监测,首先将该木马更名为777.exe,然后设置进程过滤
图片描述

接着运行777.exe
发现木马首先会将自身拷贝到%LOCALAPPDATA%路径中
图片描述

然后将自身写入到开机自启动
图片描述

生成neuser.ini文件
图片描述

生成勒索提示文件:
图片描述
然后就是文件加密,以及最后删除自身,由于该勒索行为实在太多太多,不能进行详细分析,所以只暂时分析了一个大概。

从start函数进来:
图片描述

我们可以看到程序首先会通过GetModuleFileNameW获取当前的路径
然后调用了sub_408B19函数,参数分别为MultiByteStr和sub_4017E8
查看了一下sub_408B19函数,貌似是解密函数。
通过动态调试发现的确是解密函数,MultiByteStr解密出来就是加密后缀名.Snake4444
图片描述

然后尝试获取LOCALAPPDATA,如果LOCALAPPDATA不存在则获取APPDATA环境变量,如果获取失败则退出进程,如果成功,则调用PathAddBackslashW尝试在路径最后加上反斜杠。
图片描述
接着往下看,我们可以知道程序获取了环境变量路径之后,是尝试将文件拷贝过去。

根据if判定条件的&&优先级可以知道,如果LOCALAPPDATA获取成功,后面部分则不会运行,所以直接查看靶机上面的LOCALAPPDATA路径,可以看到777.exe已经拷贝过来。
图片描述

根据上面一张代码清单还可以得知,当路径v0不为空的时候会执行sub_409624,跟进到该函数:
图片描述
可以看到,sub_409624是注册表操作函数,将当前的exe写入到开机自启动。

接着往下走
图片描述

程序会尝试获取环境变量public或环境变量ALLUSERSPROFILE存放到v3,有了上面那部分的经验,我们直接查看运行后的public路径:
图片描述

可以看到多了两个文件,一个是一串十六进制文本,还有一个是勒索的提示信息,之后我们再分析这个十六进制文件名到底是什么。

路径获取完成之后,会将路径v6作为参数,传递到一个循环中
图片描述

通过调试得到v6路径
图片描述

可以看到,该循环应该会执行10次,但是由于循环次数还由v8决定,而v8的值由sub_409B4B决定,所以跟进到sub_409B4B函数。
图片描述

该函数可以得知,程序首先会创建一个文件,路径为传入进来的v6,if分支是v4获取到GetLastError的时候,所以我们直接看else分支。
在else分支中,可以看到最后是一个关键的wireFile。而前面的函数通过静态分析暂时还没有得到有用的信息,于是使用x64dbg调试。
成功创建文件,文件名是黑客的公钥信息。
图片描述

调用sub_40A116时文件参数如下:
图片描述
图片描述

这里还有一个关键参数,nullsub_1,查看该参数对应的内存地址:401148
图片描述

发现暂时不知道是啥玩意儿,查看一下nullsub_1的调用
图片描述

看地址应该是第二条,跳过去:
图片描述

是在函数最开的地方,我当时没有分析这两部分,现在回过头去看发现是计算用户ID的,所以这个nullsub_1存储的是用户ID信息。
所以这里是将用户ID、public路径名、加密后缀、勒索提示文件名作为参数传进来了
跟进到40A116函数,根据rsa_genkey关键字可以大概得知,该函数是用于生成RSA秘钥对的。
图片描述

可以看到,该函数最后返回的是V9,而v9的值是由sub_409FDE函数决定的,动态调试得到参数就是用户ID
图片描述

跟进到该函数,发现是rsa加密:
图片描述

经过分析,这部分(sub_409B4B)的功能是:在public路径下写入文件,文件名为黑客公钥,写入内容为经过RSA加密的用户ID。
外层wireFile写入的时候,参数2的ebp指向的就是经过加密的用户ID的内存
图片描述

CloseHandle后查看文件,发现有两行内容
第一行是内层函数里面写入的随机生成RSA公钥信息,第二行是刚才写入的加密后的用户ID
图片描述

接着往下走,跟进到这个call
图片描述
看到遍历磁盘操作

图片描述

然后根据遍历的结果创建线程:
图片描述

图片描述

这里面是一个dowhile大循环,循环条件是FindNextFile,很明显这里是遍历所有文件加密了,根据分支结构来看,加密函数应该是sub_408D88,进入到该函数,函数非常长,在中间的位置找到了之前对之前RSA加密的调用:
图片描述
接下来动态调试验证一下:
直接在创建线程的地方下断点,F9过来:
图片描述

然后直接在我们之前看好的RSA加密函数处下断点,然后F9运行,跑过来
图片描述

第二次断
图片描述

最开始是加密桌面的link
先看一下原始桌面:
图片描述

加密后
图片描述

多断几次,我的7z安装包也被加密了
图片描述

现在已经摸清楚循环加密的流程了,接着往后面走,返回到最外层的函数调用,也就是start进来的sub_409C6B,现在已经分析完了sub_4099A3的功能,接着看sub_409449
图片描述

40449这个函数功能不复杂
看样子就是创建并执行了一个bat文件,动态调试去拿到这个bat文件
图片描述

直接在sub_409449入口处下断点,等了一段时间断下来的时候已经加密完成了
图片描述

创建路径:
图片描述

创建成功,还未写入数据:
图片描述

图片描述
这里因为sub_409305里面有CreateProcess,所以猜测sub_409305是执行bat,sub_408B19是填充bat
图片描述

这里填充了一部分,还不能打开,显示正在占用,估计还没处理完,接着往下走,该函数(409449)执行完,程序最后还会jmp到409509,跳转过去:
图片描述

409509
图片描述
可以看到409509的确还在对bat进行处理

然后shellExecuuteExw之后,删除了勒索文件:
图片描述

最后进程结束,bat可以打开了:
图片描述

可以看出来,这个bat的功能主要是删除卷影副本,清除远程登入日志。

木马加密流程:

 
 
 
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (4)
雪    币: 26205
活跃值: (63307)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2019-11-3 13:16
0
雪    币: 17428
活跃值: (5009)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
3
分析完成了,说一下木马特点:
RSA加密,私钥在攻击者手里,所以被加密的文件在没有私钥的情况下无法解密。

作者你好,据我分析该勒索采用的是AES CBC模式加密文件的,RSA只是加密AES密钥放置文件末尾。如分析不对,感谢指正。
2019-11-22 09:03
0
雪    币: 968
活跃值: (6818)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
4
jishuzhain 分析完成了,说一下木马特点: RSA加密,私钥在攻击者手里,所以被加密的文件在没有私钥的情况下无法解密。 作者你好,据我分析该勒索采用的是AES CBC模式加密文件的,RSA只是加密AES密钥 ...
感谢指正
之前分析到后面没太搞清楚,重新看了一下,的确是RSA+AES,RSA用于加密秘钥,真正实现是AES,在AES函数中使用了sub_402C2F函数的模式,本算法渣不太看得出来是CBC还是ECB模式,再跟进学习一下
2019-11-22 09:31
0
雪    币: 11
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享
最后于 2020-2-29 16:08 被snappyjack编辑 ,原因:
2020-2-29 13:58
0
游客
登录 | 注册 方可回帖
返回
//