前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hacking Team分析(二) 沙箱对抗分析

Hacking Team分析(二) 沙箱对抗分析

作者头像
安恒信息
发布2018-04-11 15:25:43
1.6K0
发布2018-04-11 15:25:43
举报
文章被收录于专栏:安恒信息安恒信息
0x00背景

在Hacking Team泄露的文件中含有不少后门、木马的源码,其中就包含有一些反虚拟机反沙箱的代码, 如scout-win-master中就涉及到了这类代码,主要由三部分组成,分别为: AntiCuckoo、AntiVBox、AntiVMWare(其中Cuckoo为一个虚拟化沙箱系统,VBOX和VMWare则为我们熟悉的两款虚拟机)。安恒安全研究团队对这部分进行了分析。分析如下。

0x01 AntiCuckoo

AntiCuckoo的具体代码如下图所示:

我们先分析cuckoomon中hooking相关的源码:

可以从源码中看到DllMain()中调用了sethooks()函数,sethooks()函数中调用了hook_api()函数,关键部分就在该函数中。其中有如下代码:

可以看到函数中创建了trampoline和pre_tramp,

然后通过ret = hook_types[type].hook(h,addr,h->pre_tramp)插入了一个hook,即被hook的函数执行时要先跳转到pre_tramp,pre_tramp部分代码如下:

其中FS:[0x44]为一段可以自定义的空间,这里将其定义为hook_info_t 结构。

在AntiCuckoo()中,将fs:[0x44]空间内存填充为1,扰乱了pre_tramp正常执行,导致程序异常,不能继续执行,从而绕过了cuckoo沙箱。

加载cuckoomon.dll到测试程序进行调试分析,关键过程如下:

程序执行在AntiCuckoo空间中,经过前面部分的指令的执行,fs:[0x44]空间内存已被填充为1,然后准备进入CreateThread()函数。

因为CreateThread()函数是被hook的函数,所以跳转到pre_tramp中去执行,

执行到如下这句,交换esp和eax+8的内容,而此时eax的地址指为fs:[0x44],fs:[0x44]空间内存仍被1填充,所以eax+8的内容为0x01010101,交换后esp的地址为0x01010101,栈地址被破坏。

再往下执行push ebx时由于栈地址被破坏直接异常退出。从而,绕过了Cuckoo。

0x02 AntiVBox

AntiVBox的主要代码如下图所示:

它先创建COM对象,连接root\cimv2,然后通过select * from Win32_PnPEntity 查询 DeviceID,然后通过HASH编码等方式 ,然后校验是否有PCI\\VEN_80EE&DEV_CAFÉ,

如果存在,则说明在VBOX虚拟机中,bVBoxFound返回TRUE。并且如果ploc->ConnectServer()函数调用失败,则也假定运行在虚拟机中,bVBoxFound返回TRUE。

0x03 AntiVMWare

AntiVMWare的主要代码如下图所示:

同AntiVBox类似,这里查找SerialNumer,经过hash加密后校验是否为VMWare,并检查是否是VMWARE_WHITELISTED,如果不是VMWARE_WHITELISTED,则说明是在虚拟机中,bVMWareFound返回TRUE。

并且如果pLoc->ConnectServer()函数调用失败,则也假定运行在虚拟机中,bVMWareFound返回TRUE。

0x04 总结

恶意程序能够利用这些反沙箱反虚拟机的方法,使其在特定虚拟机或沙箱环境下不正常执行,从而绕过沙箱的行为分析和检测。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安恒信息 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00背景
  • 0x01 AntiCuckoo
  • 0x02 AntiVBox
  • 0x03 AntiVMWare
  • 0x04 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档