我终于找到时间继续分析QBot了。在之前的博客中,已经介绍了脱壳方法和字符串解密算法,可以点击链接查看。
本博客将介绍QBot注入explorer.exe之前的整个执行过程。我会讲解QBot实现的抗分析方法并解释注入过程,最后会快速讲一下注入任务执行的脱壳过程。
在QBot注入explorer.exe之前,有一个很有意思的进程执行链。样本被脱壳后会检查是否有运行的已知反病毒程序,接着通过/C参数来探测是否在虚机里运行。(这一过程中所采取的所有抗分析方法将在下一部分说明。)
父进程通过调用WaitForSingleObject保持执行状态,直到子进程QBot.exe /C执行完成。
如果子进程检测到是在虚机里,会发送一个事件让父进程停止执行。如果检测到不是在虚拟机里,父进程会将自己和配置文件放入随机创建的文件夹Roaming/Microsoft中。
一旦执行了该文件夹中文件,开始的二进制文件就会被父进程用calc.exe覆盖,在系统上不会留下明显的恶意软件线索。
QBOt实现了大量抗分析方法来保护自己,一旦检查出任何分析行为都会杀掉自己的进程。
(1)反病毒程序
第一种检查方法是列举所有进程并搜索已知的恶意行为防护进程。值得注意的是不管QBot的参数是什么,这个方法都会执行。
首先,初始化一个解密字符串表,利用函数Process32Next列举所有进程,利用strcmpiA函数将进程与表中字符串一一比对,一旦有匹配上的进程QBot会立即停止。这是它要防护的进程列表:
ccSvcHst.exe avgcsrvx.exe avgsvcx.exe avgcsrva.exe MsMpEng.exe mcshield.exe avp.exe egui.exe ekrn.exe bdagent.exe vsserv.exe vsservppl.exe AvastSvc.exe coreServiceShell.exe PccNTMon.exe NTRTScan.exe SAVAdminService.exe SavService.exe fshoster32.exe WRSA.exe vkise.exe isesrv.exe cmdagent.exe MBAMService.exe ByteFence.exe mbamgui.exe fmon.exe
(2)虚拟机设备
虚拟机和沙箱会在系统中留下痕迹,这些痕迹可以在Windows的注册表中找到。QBot会列举设备列表并尝试从中找出以下设备:
VMware Pointing VMware Accelerated VMware SCSI VMware SVGA VMware Replay VMware server memory CWSandbox Virtual HD QEMU Red Hat VirtIO srootkit VMware VMaudio VMware Vista VBoxVideo VBoxGuest vmxnet vmscsi VMAUDIO vmdebug vm3dmp wdsk vmx_svga ansfltr sbtisht
(3)虚拟机进程
不只是反病毒进程会被检测,QBot还会检测沙箱环境中的普通进程:
vmtoolsd.exe vmacthlp.exe metsvc-server.exe windump.exe
(4)沙箱的DLL
例如沙箱中使用的SbieDll.dll,如果检测到这些DLL文件在运行,QBot就会停止。
ivm-inject.dll SbieDll.dll
(5)沙箱文件名称
你不能将一个正在运行的恶意软件样本命名为sample,因为恶意软件可能因为自己的名称是可疑名称而停止运行。这就是一个活生生的例子:
sample mlwr_smpl artifact.exe
(6)CPUID检查
Qbot还实现了CPUID检查。通过执行eax=1指令,其返回值会体现处理器的特性。
最后一位是0表示是物理机,1表示是虚拟机。
(7)用calc.exe覆盖自己
为了隐藏自己,QBot会利用以下命令用calc.exe覆盖自己的启动文件:
(qbot.exe的图形概况)
(覆盖qbot.exe的程序的图形概况)
一旦二进制文件被删除,QBot会创建一个挂起的进程explorer.exe并通过VirtualAlloc函数创建一个新的内存页。Qbot会注入到这个进程,挂起的线程会被ResumeThread调用。
如果注入成功,父进程会再次等待传入事件发生,如果失败则重新开始注入。
我已经将注入的代码与脱壳的QBot二进制代码进行了比较,并确定它将自己注入到explorer.exe而不是自定义代码。
现在介绍注入过程。一旦挂起的线程重新开始运行,脱壳程序也会开始运行。
重新分配内存,其进程权限设置为可执行。
到目前为止,我确定了至少一个影响脱壳过程的程序。我将在下一篇博客文章中讨论这个问题
(上述过程的图形概况)
我已经花了一些时间来逆向QBot,虽然还不能全部了解它,但已经取得了一些重大进展。从我的角度来看,我认为QBot试图检测虚拟机以及分析运行环境的方法是非常多的。如果你不这样认为,我很乐意听听你的意见。
下一篇博客中我会介绍脱壳过程。
SHA256: c23c9580f06fdc862df3d80fb8dc398b666e01a523f06ffa8935a95dce4ff8f4
原文链接:https://malwareandstuff.com/an-old-enemy-diving-into-qbot-part-2/
翻译:Green奇
校对:lumou
[推荐]看雪工具下载站,全新登场!(Android、Web、漏洞分析还未更新)
最后于 21小时前 被Green奇编辑 ,原因: