vmware的检测与反检测

先说3种方法
代码:

#include <windows.h>
#include <stdio.h>

BOOL gInVMWARE, gInVirtualPC;

BOOL VMWareTest()
{
BYTE PortValue1,PortValue2;
__try
{
    __asm
    {
      pushad
      pushfd
      xor ebx,ebx
      mov ecx,0xa
      mov eax, 'VMXh'        ; EAX=magic    //564D5868
      mov dx, 'VX'            ; DX=magic
      in eax, dx            ; specially processed io cmd
      cmp ebx, 'VMXh'        ; also eax/ecx modified (maybe vmw/os ver?)
      sete al;
    movzx eax, al
      mov gInVMWARE, eax;
      popfd
      popad
    }
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
    gInVMWARE=FALSE;
}
return gInVMWARE;
}

BOOL VirtualPCTest()
{
__try
{
    __asm
    {
      pushad     
      mov ebx, 0 // Flag
      mov eax, 1 // VPC function number
      __emit 0Fh
      __emit 3Fh
      __emit 07h
      __emit 0Bh
      test ebx, ebx
    sete al
    movzx eax, al
      mov gInVirtualPC , eax;
      popad
    }

}
__except(EXCEPTION_EXECUTE_HANDLER)
{
    gInVirtualPC=FALSE;
}
return gInVirtualPC;
}

BOOL VMTest()
{
    ULONG xdt = 0 ;
    ULONG InVM = 0;
    __asm
    {
        push edx
            sidt [esp-2]
            pop edx
            nop
            mov xdt , edx
    }
    printf("idt = %08x\n" , xdt);
    if (xdt > 0xd0000000)
    {
        //printf("IDT Test :running in vm!\n");
        InVM = 1;
    }
    else
    {
        InVM = 0;
    }
    __asm
    {
        push edx
            sgdt [esp-2]
            pop edx
            nop
            mov xdt , edx
    }
   
    printf("gdt = %08x\n" , xdt);
   
    if (xdt > 0xd0000000)
    {
        InVM += 1;
    }
    else
    {
        InVM += 0;
    }
    return InVM;
}

int main()
{
    if (VMWareTest())
    {
        printf("In Vmware !!!");
    }
    else if (VirtualPCTest())
    {
        printf("In VirtualPC!!!!");
    }
    else if (VMTest())
    {
        printf("In VM !");
    }
    else
    {
        printf("In Host!");
    }
   
    getchar ();
    return 1;
}

OK,这样VMWare里面基本都能检测到
检测虚拟机,一般来说有3种方法:
1,是猥琐法,比如系统中有没有vmware类似的服务,进程等,检查BIOS的信息,虚拟设备的名称等等,这种方法是很猥琐的,优点是防不胜防,缺点就是不准确,而且都能修改(注意:BIOS也是能修改的)。
2,是模拟漏洞法,由于虚拟机毕竟不是真机,模拟上面是有一定的漏洞的,上面的VMTest就是漏洞法。优点是准确,基本上100%可以确定,因为是模拟的漏洞,所以不容易修改,缺点基本上没有。
3,是后门法,虚拟机需要和host进行通讯,利用通讯检测虚拟机,如上面的那个VMWare.GetVersion的后门。优点是准确,缺点是可以屏蔽掉后门。

所以,一般来说都是用后门法,高级一点用模拟漏洞。

随着硬件虚拟化技术的迅猛发展,模拟的漏洞越来越少,开了VT功能后,使用VMWare 6.0以上基本上灭掉了所有模拟的漏洞,后门法,patch一下主程序和guest的tools。

下面图是我修改过的开了VT-x的VMWare,用上面的代码是检测不出来的

注意红框,如果修改配置文件屏蔽后门,vmware tools是无法启动的。我这里是Patch了Vmware tools和vmware-vmx.exe的主程序实现的,后来想想,还是避不开猥琐的校验。。

能过99%的anti vmware,主要还是靠VT技术,实在太强大了。

由于某些原因,上面的模拟漏洞我只贴了MJ0011的代码,还有几个漏洞(暂时不公开写出来,当然无法对付VMWare的)可以对付其他几款虚拟机,比如VBox(开了VT也被检测)。

时间: 2024-09-22 08:17:14

vmware的检测与反检测的相关文章

javascript 特性检测并非浏览器检测

javascript 特性检测并非浏览器检测 详细出处参考:.net/article/21834.htm">http://www.111cn.net/article/21834.htm 起初前端工程师们就极力反对浏览器检测,他们认为类似user-agent嗅探的方法是很不好的,理由是它并不是一种面向未来的代码,无法适应新版的浏览器.更好的做法是使用特性检测,就像这样: 复制代码 代码如下: if (navigator.userAgent.indexOf("MSIE 7"

跟踪和检测行人-行人检测和跟踪方面饿问题

问题描述 行人检测和跟踪方面饿问题 我在行人检测和跟踪,利用adaboost分类器来检测行人,可是有时候有人时候检测不出行人,有时候没人的区域检测出有人,不知怎么调试分类器,求高人指点 解决方案 行人跟踪和检测 解决方案二: 用opencv来识别

javascript 特性检测并非浏览器检测_javascript技巧

我大致翻译了部分文章,可能有理解错误的地方,敬请指正.值得一提的是,评论部分的争论亦值得一看. 特性检测 起初前端工程师们就极力反对浏览器检测,他们认为类似user-agent嗅探的方法是很不好的,理由是它并不是一种面向未来的代码,无法适应新版的浏览器.更好的做法是使用特性检测,就像这样: 复制代码 代码如下: if (navigator.userAgent.indexOf("MSIE 7") > -1){ //do something } 而更好的做法是这样: 复制代码 代码如

机器视觉检测与人工检测的优势对比

在科技不断发达的今天,机器视觉检测是现代工业生产中十分普遍的, 机器视觉能够更好的检测出生产流程中的错误,能够将产品的质量问题更好的检测出来,提高工业生产的效率和生产的自动化程度,并且将工业生产的精确度提高,使得工作的进程加快,节省时间,而人工视觉检测却失误率较高. 在现代工业生产中,很多人都不看好人工视觉检测,因为人肉眼会疲惫,瞬间的疲惫可能就会造成一个重大的损失. 1.效率:工业自动化的快速发展,使生产效率大幅提升,从而对检测效率提出了更高的要求.人工检测效率是在一个固定区间,无法大幅提升,

一种自动化检测Flash中XSS方法的探讨

0x00 前面的话对于如何检测Flash 中的XSS,每个人都有自己的方法,无论是使用成型的自动化工具(比如 swfscan)还是自己开发自动化工具(先反编译,再对 actionscript 代码审计)还是直接人工对代码进行审计.都能够检测到 Flash 中存在的 XSS 漏洞. 但是这些方法会存在一些问题,如:自动化工具属于静态分析,误报比较高,需要投入 大量人工精力去加以分析完全人工效果 最好,但是也更加耗费精力在这里我们来探讨一种动态检测 Flash 中 XSS 的方法,该方法有自己的 优

app安全-刚检测下新开发的APP漏洞,发现分数不高,求指教

问题描述 刚检测下新开发的APP漏洞,发现分数不高,求指教 最近刚开发完一个APP,用APP漏洞检测平台测试了下结果,把我吓尿了,才32分,怎么破,求大神指点指点?小生在此谢谢了! 补充说明:用的爱内测的APP漏洞检测平台进行检测的:http://www.detect.cn/ 解决方案 我觉得你得逐个去解决,如Activity安全,你可以参考以下 http://www.360doc.com/content/13/0527/15/12229927_288551760.shtml 解决方案二: 用n

人脸检测发展:从VJ到深度学习(下)

雷锋网按:本文作者邬书哲, 中科院计算所智能信息处理重点实验室VIPL课题组博士生,研究方向:目标检测,尤其关注基于深度学习的目标检测方法. |深度学习给目标检测带来的变革      人脸检测作为一种特定类型目标的检测任务,一方面具有其自己鲜明的特点,需要考虑人脸这一目标的特殊性,另一方面其也和其它类型目标的检测任务具有一定的共性,能够直接借鉴在通用目标检测方法上的研究经验.     目标检测任务作为一个分类问题,其不仅受益于计算机视觉领域相关技术的不断发展,在机器学习领域的研究进展同样也对目标

中国人工智能学会通讯——智能机器人检测技术与平台

我觉得能够在这里跟大家分享我们的技术和成果,我个人感觉到非常光荣.今天跟大家分享的题目是<智能机器人检测技术与平台>.我今天跟大家汇报三个内容,讲一下技术和成果所呈现的平台建设的意义和它的实施情况,以及现在取得的一些成果. 关于意义,我简单说一句.因为这个论坛叫测评分论坛,所以说一下测评的对象是什么,是机器人.机器人实际上前面各位专家都分享了非常精彩的演讲,大家也都认知到了机器人其实是一个融合技术的产品.它实际上突破了我们传统的机器和电子,已经进入到了自动化技术.计算机技术,人工智能也是它很有

高级持续性威胁检测无法检测出自定义恶意软件?

Nick Lewis(CISSP,GCWN))是一名信息安全分析师.他主要负责风险管理项目,并支持该项目的技术PCI法规遵从计划.2002年,Nick获得密歇根州立大学的电信理学硕士学位;2005年,又获得Norwich大学的信息安全保障理学硕士学位.在他09年加入目前的组织之前,Nick曾在波士顿儿童医院.哈佛医学院初级儿科教学医院,以及Internet2和密歇根州立大学工作. 最近的一项测试显示,有些知名威胁检测产品无法检测出自定义恶意软件.如果说这些系统没有用,企业是否仍然应该将它们加入到