被访问的网站能否检测到我是否在使用虚拟机,例如VMware、VirtualBox等?

6

如果我访问一个网站,它能检测到我是否使用虚拟机?

更具体地说,是VMware镜像吗?

如果该网站能够检测到,我该如何防止呢?

谢谢,Chinchila


虽然我预计浏览器不会告诉网站你是否在虚拟化环境中运行,但是Flash、ActiveX或(可能?)Silverlight插件或(可能?)Java小程序可以检测到你是否在虚拟化环境中运行。因此,请小心处理你的插件。 - sarnold
3个回答

10
接受的答案并不完全正确。有时,可以通过检测屏幕分辨率来检测窗口操作系统,甚至只需使用JavaScript,如下所述: http://carnal0wnage.attackresearch.com/2009/04/detecting-vmware-with-javascript-or-how.html 或通过检测您的MAC地址 (VMware 使用固定的 MAC 范围) 如下所述: http://jeremiahgrossman.blogspot.co.il/2009/08/web-pages-detecting-virtualized.html
为了避免这些问题,不要使用调整大小的窗口,并更改您计算机的 MAC 地址。还有其他方法可以检测您是否处于虚拟机中,例如 Java applets,可能是 ActiveX 插件以及可能还有其他东西...

1
挺有趣的。但通常你必须选择运行Java小程序和ActiveX插件(或者完全禁用它们),而屏幕分辨率只是一种启发式方法(虽然是个聪明的方法)。在现代时代,我处理过的每个虚拟机都会适应你的物理显示器大小,并且有各种各样的屏幕尺寸。我坚持认为,网页服务器没有一种_简单_的方法来检测你是否正在使用虚拟机。 - Jacob
可能有其他基于计时(某些任务在虚拟机上速度较慢)或通过检测机器频率(http://www.securitygalore.com/site3/vmd1-advisory)的检测方法。 - Tal Jerome

5

有几种方法可以确定您是否在虚拟机上,以下是最常用的方法

  1. 通过WebGL: WebGL是一个JavaScript API,随浏览器一起提供,如Google Chrome,Firefox等。它将泄漏渲染器的GPU名称和厂商名称。当使用虚拟机时,它会泄漏与在物理机上使用浏览器时不同的渲染数据。例如,Google Chrome显示渲染器名称为“Google SwiftShader”(它用于没有3D图形硬件的计算机),Firefox显示渲染器名称为“llvmpipe”(这也是软件渲染器)。这将导致网站了解您正在使用虚拟机。有关WebGL的更多信息,请查看此链接

  2. 通过WebRTC: 它将向网站泄漏本地IP地址(Tested on chrome),但firefox不知何故没有泄漏
    enter image description here
    此外,Virtual box会在摄像头名称前缀中添加字符串“VirtualBox”。假设您正在使用虚拟机并给予某个网站访问摄像头的权限,它将能够看到带有前缀“VirtualBox”的摄像头名称。为了防止这种情况,您可以尝试此解决方案(https://askubuntu.com/a/1357986/699463)

如果您想了解更多关于此类泄漏的信息,请一定使用此网站https://browserleaks.com/执行泄漏测试,如WebRTC、WebGL等。它还将显示避免此类泄漏的方法。


-5

Web服务器只能通过用户代理字符串了解有关Web浏览器的详细信息。除非您使用特殊的Web浏览器(不太可能)来检测它是否在虚拟机中运行,否则Web服务器不应该知道。无论如何,UA字符串很容易更改为任何您想要的内容,因此您始终可以假装成自己不是。

请查看这篇有用的维基百科文章


那么,如果我使用没有插件的普通浏览器,就不能被检测出来正在使用虚拟机吗? 我已经在一个网站上读到了,他们甚至可以看到我的活动用户名、计算机名等等…… 我也很担心这个问题,想让我的电脑名称保持未被发现状态。 - Important
不,除非您安装了一些恶意插件/扩展程序,否则他们不应该能够看到您的用户名或计算机名称。通常,UA字符串只会提供您正在使用的Web浏览器及其版本以及您的操作系统版本。IE还会发送您的.NET版本。 - Jacob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接