导语:QuantLoader是地下论坛比较火的一款木马下载器,在很多攻击活动中服务不同的恶意软件,包括勒索软件,银行木马,RAT等。本文分析的是QuantLoader服务后门的一个实例。
本文将介绍恶意软件的行动流程、运行和网络功能,其中包括分析恶意软件如何运行以及如何与C2连接和通信,还有恶意软件的一些有趣的调用,比如调用和执行netsh命令来改变本地防火墙的规则。
最新的QuantLoader版本是服务钓鱼活动,该活动开始的时候以钓鱼邮件来向用户传播JS下载器。该恶意软件使用的SMB协议而不是常用的HTTP协议,可能的原因是为绕过一些代理和防火墙的检测。
分析
首先,该活动的流图为:
Phish > JS downloader > QuantLoader (> C2) > Payload (Backdoor) > C2
其中JS下载器的代码都是被混淆过的:
打印出main函数的输出,及获得了第二阶段的URL:
这是对JS下载器的快速分析来获取URL。
QuantLoader可执行文件
然后分析可执行文件的执行流:
汇编码:
然后,会在执行前将自己拷贝到上面的位置:
设定正确的权限:
用户权限被设定为可读read。
栈:
下面看一下进程执行和驻留机制。
该进程会在将自己拷贝到不同的位置之后衍生出一个新的进程。不要将该进程与Windows的桌面窗口管理器进程dwm.exe相混淆。驻留就这样开始了。
下面是生成的新进程,以及如何生成新进程。
首先,创建目录:
目录创建完成后,调用CreateFile来创建空文件。
现在这是一个空的文件,大小是0字节,之后会被拷贝。
拷贝文件:
该文件被拷贝后,大小变成了46080字节:
该进程会从这个位置启动。
可以随意修改:
进程成功启动后,下一个比较重要的步骤就是调用WININET dll来建立与admin的连接。
执行后,会尝试与admin服务器建立连接,连接如下:
TCP localhost:49690 49.51.228.205:http ESTABLISHED
这就是加载到栈内的主机。
下面是如何做栈内打开:
第一步是通过调用LoadLibrary加载WININET DLL:
下面是一些我们随后会进行分析的函数:
在栈内可以看到上面函数的执行:
下面看一下WINHTTP.dll:
下面是被调用的函数:
上图中所有的函数都是WinHttp。
下面是一些有趣的函数:
WinHttpCreateUrl
WinHttpCreateUrl可以将host和路径结合起来组成完整的URL。
调用jsproxy.dll组成的完成的URL,
最后,是内存复制,也就是URI如何被加载到内存中。
下图是栈的截屏,可以看到URL被加载到栈内,然后被调用。
可以看到内存中URL已经成功加载了,可以随时使用URLDownloadToFile调用。
上图中的ASCII码是恶意软件向防火墙中添加规则。该规则是确保恶意软件向外的请求能够通过。
下面是栈的视图:
下面是CPU视图:
使用的命令是 netsh。
下面是进程镜像:
下面是创建并成功应用的防火墙规则:
其他的调用有:
一旦与admin C2服务器建立连接,恶意活动的管理员将可以拿到payload,而且payload的形式是多种多样的。在本活动中,payload的形式是后门。可以很容易从内存中提取下载payload的URL。
结论
QuantLoader的代码与其他普通的恶意软件有所不同,比如操作本地防火墙规则的代码等。恶意活动的admin可以改变最后的payload并用同样的下载器去运营不同的活动。
QuantLoader最初是被告为勒索软件,可能是因为内存字符串中含有一个Locky相关的参考,看起来像是从其他活动的变种。
Z:\var\www\4test\files\cryptors\admin\Loc2.exe
另外一个比较有意思的就是使用的是SMB协议而不是常见的HTTP协议。