首页
社区
课程
招聘
[翻译]QBot恶意软件样本分析(第二部分)
发表于: 2020-5-25 19:07 13880

[翻译]QBot恶意软件样本分析(第二部分)

2020-5-25 19:07
13880

我终于找到时间继续分析QBot了。在之前的博客中,已经介绍了脱壳方法字符串解密算法,可以点击链接查看。

本博客将介绍QBot注入explorer.exe之前的整个执行过程。我会讲解QBot实现的抗分析方法并解释注入过程,最后会快速讲一下注入任务执行的脱壳过程。


QBot注入explorer.exe之前,有一个很有意思的进程执行链。样本被脱壳后会检查是否有运行的已知反病毒程序,接着通过/C参数来探测是否在虚机里运行。(这一过程中所采取的所有抗分析方法将在下一部分说明。)

父进程通过调用WaitForSingleObject保持执行状态,直到子进程QBot.exe /C执行完成。

如果子进程检测到是在虚机里,会发送一个事件让父进程停止执行。如果检测到不是在虚拟机里,父进程会将自己和配置文件放入随机创建的文件夹Roaming/Microsoft中。

一旦执行了该文件夹中文件,开始的二进制文件就会被父进程用calc.exe覆盖,在系统上不会留下明显的恶意软件线索。

QBOt实现了大量抗分析方法来保护自己,一旦检查出任何分析行为都会杀掉自己的进程。


1)反病毒程序

第一种检查方法是列举所有进程并搜索已知的恶意行为防护进程。值得注意的是不管QBot的参数是什么,这个方法都会执行。

首先,初始化一个解密字符串表,利用函数Process32Next列举所有进程,利用strcmpiA函数将进程与表中字符串一一比对,一旦有匹配上的进程QBot会立即停止。这是它要防护的进程列表:

2)虚拟机设备

虚拟机和沙箱会在系统中留下痕迹,这些痕迹可以在Windows的注册表中找到。QBot会列举设备列表并尝试从中找出以下设备:

3)虚拟机进程

不只是反病毒进程会被检测,QBot还会检测沙箱环境中的普通进程:

4)沙箱的DLL

例如沙箱中使用的SbieDll.dll,如果检测到这些DLL文件在运行,QBot就会停止。

5)沙箱文件名称

你不能将一个正在运行的恶意软件样本命名为sample,因为恶意软件可能因为自己的名称是可疑名称而停止运行。这就是一个活生生的例子:

6CPUID检查

Qbot还实现了CPUID检查。通过执行eax=1指令,其返回值会体现处理器的特性。

最后一位是0表示是物理机,1表示是虚拟机。

7)用calc.exe覆盖自己

为了隐藏自己,QBot会利用以下命令用calc.exe覆盖自己的启动文件:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-5-25 19:10 被Green奇编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
666
2020-5-26 09:46
0
雪    币: 210
活跃值: (631)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
3
这篇文章我本来也想翻译的
2020-5-27 09:33
0
雪    币: 234
活跃值: (217)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看来分析QBot的还挺多又找到2个,能否翻译一下? 作为一个系列

https://www.fortinet.com/blog/threat-research/deep-analysis-of-a-qbot-campaign-part-1
https://www.fortinet.com/blog/threat-research/deep-analysis-qbot-campaign
2020-7-17 02:45
1
游客
登录 | 注册 方可回帖
返回
//