首页 / 知识
关于虚拟化:如何识别您正在VM下运行?
2023-04-13 22:28:00

How to identify that you're running under a VM?有没有办法从VM内识别您的代码是否在VM内运行? 我猜大概有一些简单的方法可以识别特定的VM系统,尤其是在VM已安装了提供程序的扩展名(例如VirtualBox或VMWare)的情况下。 但是,是否有一种通用方法可以确定您不是直接在CPU上运行? 关于此的大量研究致力于检测所谓的"蓝色药丸"攻击,即恶意的管理程序正在积极尝试逃避检测。 检测VM的经典技巧是填充ITLB,运行必须虚拟化的指令(当它将对虚拟机管理程序的控制权交给虚拟机时,必须清除此类处理器状态),然后运行更多代码以检测ITLB是否仍在填充。它的第一篇论文位于这里,研究人员的博客和替代Wayback Machine对该博客文章的链接进行了相当丰富的解释(图像已损坏)。 讨论的底线是,总有一种方法可以检测到恶意的虚拟机管理程序,而检测未隐藏的虚拟机管理程序要简单得多。
红帽有一个程序可以检测正在哪个虚拟化产品下运行( 从长远来看,使用这种第三方维护的工具比尝试使用自己的检测逻辑(例如,更多的眼睛(针对更多的虚拟化产品进行测试)等等)是一种更好的策略。 一种更经验的方法是检查已知的VM设备驱动程序。您可以编写WMI查询来定位VMware显示适配器,磁盘驱动器,网络适配器等。如果您只需要担心环境中已知的VM主机类型,那么这将是合适的。这是在Perl中执行此操作的示例,可以将其移植到您选择的语言中。 这取决于您所追求的:
这是一个(java + Windows)解决方案,用于识别基础计算机是物理的还是虚拟的。 虚拟机示例: 制造商
模型
您可以使用输出来确定它是VM还是物理机: 物理机输出:
BIOS序列号:2HC3J12 虚拟机输出:
BIOS序列号:0 我曾经遇到一个汇编代码片段,该片段告诉您您是否在VM中。...我用Google搜索,但找不到原始文章。 我确实发现了这一点:检测您的程序是否在虚拟机中运行。 希望能帮助到你。 在大多数情况下,您不应该尝试这样做。除了少数特定情况外,您无需关心是否有人在VM中运行您的代码。
如果需要,在Linux中,最常见的方法是查看 在Linux系统中,您可以尝试在/ proc上搜索公用文件。 例如,存在的/ proc / vz /告诉您是一个OpenVZ。 这是完整的指南,用于检测Linux下VM的环境,而无需"喝药" :) TrapKIT提供了ScoopyNG(一种用于VMware识别的工具),它试图解决规避技术,但不一定要针对VMware以外的任何虚拟化软件。源代码和二进制文件均可用。 通过查看网络连接的MAC地址,您也许可以识别您是否在虚拟机中。例如,Xen通常建议使用特定范围的地址00:16:3e:xx:xx:xx。 这不能保证,因为系统管理员可以指定他们喜欢的MAC地址。 一个很好的例子是,显然是在对主板制造商进行WMI查询,如果返回" Microsoft",则表示您在VM中。以为我相信这仅适用于VMWare。每种VM主机软件可能有不同的判断方法。 本文http://blogs.technet.com/jhoward/archive/2005/07/26/407958.aspx提供了一些不错的建议,并提供了一些链接来检测您是否在VM中(VMWare和VirtualPC位于最小)。 如果VM能够很好地完成工作,则客户端应该看不到它已被虚拟化。但是,可以看看其他线索。 我可以想象,寻找特定于VM环境的已知驱动程序或软件将是最好的方法。 例如,在运行Windows的VMWare客户端上,vmxnet.sys将是网络驱动程序,显示为VMware加速的AMD PCNet适配器。 |
最新内容
相关内容
备份用命令linux系统?
备份用命令linux系统?,系统,信息,设备,数据,软件,认证,命令,文件,备份,目录,Linux查看数据库备份脚步的配置信息命令连接上相应的linux主机,进linux自动运行命令?
linux自动运行命令?,服务,系统,时间,代码,周期性,第一,命令,管理,在线,状态,linux计划任务(自动化执行任务的利器)1、Linux计划任务是一种自动linux系统中管道命令?
linux系统中管道命令?,标准,系统,工作,命令,信息,通讯,管道,流向,连续,工具,Linux第二章-Linux常用命令1、linux常用命令有pwd命令、cd命令、llinux开启运行命令?
linux开启运行命令?,系统,服务,工作,管理,状态,命令,标准,情况,环境,工具,linux中如何开机启动运行指定的应用程序或指令?1、开机启动时自动运linux系统命令记不住?
linux系统命令记不住?,系统,工作,基础,地址,网络,服务,命令,第一,名称,目录,学LINUX基础命令总是记不住怎么办?1、按命令的单词意义来记忆是最linux运行wps命令?
linux运行wps命令?,软件,官网,名称,时间,电脑,系统,工具,环境,项目,数据,wps支持linux命令行下word转pdf吗?1、通过浏览器进入到wps官网,然后点linux系统刻盘命令?
linux系统刻盘命令?,系统,软件,设备,工具,盘中,电脑,数据,官网,信息,网络,请问如何把GRUB2做到光盘中?1、进入windows上网下载grub2 for dos,照linux系统还原的命令?
linux系统还原的命令?,系统,数据,工具,软件,地址,工作,情况,信息,命令,位置,如何使用fsck命令修复文件系统错误在单个分区上进行错误检查 在终linux系统命令都没了?
linux系统命令都没了?,系统,单位,软件,命令,分析,第一,权威,公司,工作,异常,我的Linux系统上没有tree命令,我该如何安装?1、get install tree;linux命令安装新系统?
linux命令安装新系统?,系统,软件,工作,管理,在线,电脑,信息,基础,发行,数据,Linux安装基本命令1、linux系统常用操作命令linux系统常用操作命linux运行cmd命令?
linux运行cmd命令?,电脑,系统,状态,情况,环境,命令,单位,管理,设备,数据,电脑运行命令怎么打开电脑运行命令需要同时按下“win图标”键和“R”命令访问linux系统?
命令访问linux系统?,系统,地址,信息,软件,命令,时间,工具,网络,管理,电脑,linux文件系统常用命令linux常用命令:查看内核版本:uname-a。图形界面