情报背景
近期,CrowdStrike研究人员对GuLoader的木马演进进行了分析,Guloader是一个以文件下载为主要功能的恶意软件,常使用多态shellcode规避安全检测等,技术迭代快。该恶意软件在演进过程中实现了较罕见的反虚拟机技术,本文将对该技术进行剖析。
组织名称 | 无 |
相关工具 | GuLoader |
战术标签 | 防御规避 |
技术标签 | 反分析 反虚拟机 |
情报来源 | https://www.crowdstrike.com/blog/guloader-dissection-reveals-new-anti-analysis-techniques-and-code-injection-redundancy/ |
01 攻击技术分析
亮点:匹配进程内存中虚拟机信息对抗分析
在以往的反虚拟机技术中,可见的虚拟机检测技术包括但不限于: 检测虚拟机特有的MAC地址、用户名、特定程序是否存在等,是较为通用的静态特征。
而GuLoader在攻击演进中采取了一种不一样的对抗虚拟机分析的技术,在内存中检测虚拟机信息的方式进行反虚拟机:
1. 利用NtQueryVirtualMemory函数对当前进程内存进行遍历,获取到页面信息
2. 在页面信息中寻找经过DJB2哈希计算后的字符串的值,进行对比匹配。如字符串:VMSwitchUserControlClass VM3DService VMDisplayChangeControlClass vmtoolsdControlWndClass
3. 如果匹配成功,则表示检测到虚拟机环境并退出
其伪代码如下:
do
{
MemBufferSize += 0x1000; #
status = ntd11::NtoueryVirtualMemory(
oxffffffff, # 获取当前进程
NULL,
ntd11::MemoryBasicInformation ,
MemoryInformation, # 获取有关进程虚拟地址空间中页面范围的信息
MemBufferSize,
NULL);
Memory_Scan Base address = MemoryInformation[1]
For i in Memory_Scan Base address # 循环遍历字符串
If( i is string)
djb2= DJB2value() # 进行DJB2 hash计算
if(djb2 == VM related strings[]) # 与虚拟机特定字符串hash匹配
exit() # 匹配成功则退出
}
while (status == STATUS INFO LENGTH MISMATCH);
尝试使用process hacker 在VMWare虚拟机中抓捕字符串,也捕获到了如下字符串:
由此可见,该方法具有一定的可行性。
与常见方式相比,该方法有如下优点:
1.这是一种通用特征,场景覆盖度较广,具有普遍性
2.相较于虚拟机中的静态特征(如MAC地址 用户名之类),在内存中的特征不容易去除和篡改,相对稳定
02 总结
本文对该反虚拟机技术进行了简单的分析,从该方法我们也可以看见:在反分析技术与特征检测中,可以尝试从内存中入手,挖掘在内存中的特征,既给分析人员带来了更高的分析成本,又有更稳定的,不易篡改的反分析能力。
绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。
研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。
M01N Team公众号
聚焦高级攻防对抗热点技术
绿盟科技蓝军技术研究战队
官方攻防交流群
网络安全一手资讯
攻防技术答疑解惑
扫码加好友即可拉群
往期推荐