0x01 背景介绍
GuLoader是一个使用VB语言编写的恶意软件下载器。它通常从Google Drive、Microsoft OneDrive、MediaFire等托管站点下载恶意代码执行。常见的后续恶意远控程序有:LokiBot、Remcos RAT和Agent Tesla等等。 GuLoader本身具有较为复杂的执行流程,较强的反调机制使得当前部分在线沙盒无法精确检测恶意行为,同时也给分析人员造成一定阻碍。
360-CERT监测到今年以来使用GuLoader恶意软件的网络攻击活动呈现不断增加的态势。我们在此发布该恶意软件风险分析,提示用户及时防范规避安全风险。
0x02 样本动态分析
攻击者使用伪装成“顺丰速运”的恶意钓鱼邮件下发钓鱼链接。
该钓鱼链接指向MediaFire下载GuLoader恶意软件压缩包(链接信息部分隐藏)。
hxxps[:]//www[.]mediafire[.]com/file/ifu***empc/SF342012300120.7z/file
一旦用户下载该恶意软件压缩包,并且无意执行恶意程序,整个恶意流程被立即激活。
恶意代码进入shellcode首先进行一系列的调试和虚拟化环境的检测,shellcode入口如下:
加载DLL以及获取即将调用的函数地址(例如:ZwQueryVirtualMemory)
调用ZwQueryVirtualMemory在内存0x10000 ~ 0x7FFFF000范围内通过校验HASH的方式比较字符串。
例如查找字符串“vmtoolsdControlWndClass”
一旦检测到虚拟机环境,将对以下字符串进行解密,并调用MessageBoxA进行输出。
枚举顶层串口句柄,当句柄值小于0x0C时结束进程。
调用ZwProtectVirtualMemory函数修改DbgBreakPoint和DbgUiRemoteBreakin所在内存地址的属性,并修改它们的函数实现。
修改DbgBreakPoint函数字节码。
修改DbgUiRemoteBreakin函数字节码。
调用ZwSetInformationThread函数,利用传入参数HideThreadFromDebugger(对应数值:0x11)隐藏进程。
调用CreateFile函数,以GENERIC_READ(对应数值:0x80000000)方式打开指定路径(C:\ProgramData\qemu-ga\qga.state)文件,检测QEMU环境。
利用cpuid指令检测虚拟机。
调用ZwGetContextThread函数获取进程上下文并比较DR寄存器的值判断是否处于调试环境。
然后以挂起的方式开启傀儡进程。
一边检测DR寄存器一边执行一系列操作将msvbvm60.dll映射到傀儡进程并注入shellcode然后恢复进程。
恢复执行傀儡进程后,重新执行前文的所有检测,然后进行联网操作,下载RAT载荷解密执行。
0x03 防护建议
- 360安全卫士
360-CERT建议用户安装360安全卫士进行防护
- 临时解决方案
用户可以在指定路径创建特定文件对该版本GuLoader恶意软件进行临时防护
C:\ProgramData\qemu-ga\qga.state
0x04 IOCs
- MD5
4F97FF7B772E9C31D9620EC8110A3094
5FEEDDE4790C300C6CEBC20684F79987
- URL
hxxps[:]//www[.]mediafire[.]com/file/ifuhhu63u37empc/SF342012300120[.]7z/file
hxxps[:]//www[.]mediafire[.]com/file/6mukpc6m24uifiu/fresh_rLANVHaEFt60[.]bin/file