如何判断当前程序是否运行在虚拟机中?


=Start=

缘由:

突然想到的一个点,觉得有必要收集整理一下,方便以后使用。

正文:

参考解答:

这里只简单谈一谈应用层面的判断,太底层的我也不会、也不了解,就不说了,如果有懂的还请多指点一下。

# Windows

systeminfo | findstr /i model
wmic baseboard get manufacturer,product
Win+R => msinfo32 => 'System Manufacturer'

# Mac 

ioreg -l | grep -e 'Manufacturer'

# Linux

核心思路基本上就是通过在 dmesg输出或是/proc/cpuinfo 等文件中查找关键字来进行判断(不同版本可能不一样,所以可以借助一些工具或脚本来加速查找,比如 virt-what)。

dmidecode -t system | egrep -i 'manufacturer|product'
dmidecode -s system-product-name

sudo lshw -class system

dmesg | egrep -i 'hypervisor|vmware'

systemd-detect-virt

grep -q '^flags.*hypervisor' /proc/cpuinfo

大致内容如上,想到了再补充。

参考链接:

=END=


《 “如何判断当前程序是否运行在虚拟机中?” 》 有 9 条评论

  1. 如何根据机器的mac地址来判别该机器是否为vmware的虚拟机
    How to recognise a VMware’s virtual machine by its MAC address?
    https://macaddress.io/faq/how-to-recognise-a-vmwares-virtual-machine-by-its-mac-address
    `
    # Range or Prefix Vendor Virtual Machine
    1 00:50:56 VMWare VMware vSphere, VMware Workstation, VMware ESX Server
    2 00:50:56:80:00:00 → 00:50:56:BF:FF:FF VMWare VMware vSphere managed by vCenter Server
    3 00:0C:29 VMWare Standalone VMware vSphere, VMware Workstation, VMware Horizon
    4 00:05:69 VMWare VMware ESX, VMware GSX Server
    5 00:1C:14 VMWare VMWare
    `

  2. How to recognise an Oracle Virtual machine by its MAC address?
    https://macaddress.io/faq/how-to-recognise-an-oracle-virtual-machine-by-its-mac-address
    `
    # Range or Prefix Vendor Virtual Machine
    1 08:00:27 Pcs Systemtechnik GmbH Oracle VirtualBox 5.2
    2 52:54:00 (Exact MAC: 52:54:00:C9:C7:04) N/A Oracle VirtualBox 5.2 + Vagrant
    3 00:21:F6 Oracle Corp Oracle VirtualBox 3.3
    4 00:14:4F Oracle Corp Oracle VM Server for SPARC
    5 00:0F:4B Oracle Corp Oracle Virtual Iron 4
    `

  3. 7 ways to find your MAC address in Windows
    https://www.digitalcitizen.life/4-ways-learn-mac-address-windows-7-windows-81/
    `
    # Windows 下获取mac地址的命令
    getmac

    wmic nic where PhysicalAdapter=True get MACAddress,Name

    ipconfig /all

    ==
    1. Find your MAC address using the getmac command in Terminal, PowerShell, or Command Prompt
    2. How to find your MAC address with the “get-netadapter” command in PowerShell
    3. Get your MAC address by running the ipconfig command in Windows Terminal, PowerShell, or Command Prompt
    4. How to find your MAC address using the “wmic nic get” command in Windows Terminal, PowerShell, and Command Prompt
    5. How to get your MAC address in Windows using the Settings app
    __1. Identify your MAC address using Settings in Windows 11
    __2. Identify your MAC address using Settings in Windows 10
    6. Find the MAC address of any of your network adapters using System Information
    7. How to find the MAC address of the active network adapter from the Control Panel
    `

    Get mac address from command line (CMD)
    https://www.windows-commandline.com/get-mac-address-command-line/

    Windows: Command to Find MAC Address
    https://www.technipages.com/windows-find-mac-address

  4. 根据设备的mac地址来判别该设备的网卡是属于哪家公司的

    Devices with MAC addresses that start with 00-50-56 were manufactured by VMware, Inc.
    https://www.cleancss.com/mac-lookup/00-50-56
    `
    以下列字符串开头的MAC地址列表就是属于 VMware 公司的:
    Related MAC Addresses:
    00-1C-14
    00-0C-29
    00-05-69
    `

    Devices with MAC addresses that start with 00-10-E0 were manufactured by Oracle Corporation
    https://www.cleancss.com/mac-lookup/00-10-E0
    `
    以下列字符串开头的MAC地址列表就是属于 Oracle 公司的(virtual box等):
    Related MAC Addresses:
    00-14-4F
    08-00-20
    00-0F-4B
    00-03-BA
    00-00-7D
    00-13-97
    00-A0-A4
    2C-C2-60
    00-21-28
    00-10-4F
    00-07-82
    00-21-F6
    00-20-F2
    00-01-5D
    `

  5. OUI Lookup Tool
    https://rst.im/oui/00-50-56-C0-00-08
    https://rst.im/oui/VMware,%20Inc.
    https://rst.im/oui/Oracle%20Corporation
    `
    Manufacturer(VMware, Inc.):
    MAC Address Prefix 001C14 00-1C-14 00:1C:14
    MAC Address Prefix 005056 00-50-56 00:50:56
    MAC Address Prefix 000C29 00-0C-29 00:0C:29
    MAC Address Prefix 000569 00-05-69 00:05:69

    Manufacturer(Oracle Corporation):
    MAC Address Prefix 0021F6 00-21-F6 00:21:F6
    MAC Address Prefix 002128 00-21-28 00:21:28
    MAC Address Prefix 00A0A4 00-A0-A4 00:A0:A4
    MAC Address Prefix 001397 00-13-97 00:13:97
    MAC Address Prefix 000F4B 00-0F-4B 00:0F:4B
    MAC Address Prefix 00104F 00-10-4F 00:10:4F
    MAC Address Prefix A8698C A8-69-8C A8:69:8C
    MAC Address Prefix 2CC260 2C-C2-60 2C:C2:60
    MAC Address Prefix 00144F 00-14-4F 00:14:4F
    MAC Address Prefix 080020 08-00-20 08:00:20
    MAC Address Prefix 000782 00-07-82 00:07:82
    MAC Address Prefix 00007D 00-00-7D 00:00:7D
    MAC Address Prefix 0003BA 00-03-BA 00:03:BA
    MAC Address Prefix 00015D 00-01-5D 00:01:5D
    MAC Address Prefix 0010E0 00-10-E0 00:10:E0
    MAC Address Prefix 0020F2 00-20-F2 00:20:F2
    `

  6. 什么是云真机?如何检测云真机游戏挂机?
    https://dun.163.com/news/p/893e904e90d14a52a5cb3bd5198a4c0a
    `
    近几年,云真机的出现方便了一些玩家挂机,也让一些游戏饱受挂机工作室的困扰,本文主要介绍什么是云真机、云真机的危害以及如何检测云真机。

    一、云真机有哪些危害?

    云真机是可以脱离平台、脱离真实手机实现24小时在线挂机的设备。

    云真机有哪些功能呢?云真机一般自带ROOT、支持批量操控;支持模拟点击类脚本。

    云真机危害一般体现在以下方面:1. 云真机玩家占比过多,会损害游戏平衡;2. 云真机自带ROOT+24小时挂机,再加上模拟点击类软件等,可以不停刷金!

    因此,云真机的检测对游戏平衡至关重要。

    二、云真机游戏挂机有哪些常见检测方法?

    云真机检测常规的方式有两种,一种是结合游戏运营,由游戏内部数据出发,找到长时间挂机玩家;第二种是规则检测,根据云真机的机型型号特征,进行检测。

    1.游戏运营检测:游戏运营自己检测云手机玩家,进行封号,这不仅非常依赖游戏运营的个人经验,还大大增加了游戏运营的工作难度和工作量。一个DAU百万级的游戏,在不做防护的情况下,云真机数量可能达到50%以上,这明显超出了人工范围。并且云手机支持定制化机型等,等你抓到一个典型,云真机又换了一个机型继续。仅蓝光云一个品牌云真机旗下就有这么多设备,大家看看,并且支持xposed设备,可以很方便进行Hook。

    2.规则检测: 规则检测是安全业界较常规的一种方式。通过识别云真机特定的型号、机型等进行检测。这种检测的优势是可以自动化,对于DAU较大的游戏,一旦规则确定了,不需要太多人工介入,而它的缺点则是,不能识别新型的云真机,也就是换了个马甲就不认识了。

    常规的检测云真机方法费时费力,并且效果也不一定好。

    三、易盾云真机检测

    易盾针对云真机有四层防护:底层检测、风险感知、机器学习、反馈相似性检测。

    1.底层检测

    对底层进行检测,这样即使是使用xposed空间进行设备修改,也逃不过易盾的火眼金睛。

    易盾业界首创云真机底层检测,精准打击,有效防护。底层检测可以帮助运营减轻很多压力,首次接入易盾反云真机的客户,都反馈非常良好。

    2.风险感知

    风险感知即使用易盾数据中心服务,为游戏客户提供侦查,利用线上数据进行云手机的风险排查,标记出云手机用户。

    这一步是通过规则去检测,也是业界做的最多的方式,使用规则的好处是没有误报,但是其坏处是有新型的云真机出现时,往往检测不到。俗称换了个马甲也不认识了。

    3.机器学习

    机器学习是易盾云手机检测的重点。面临着市场上层出不穷,变化多端的各种云真机机型,使用机器学习去“学习”云手机用户的特定行为模式,才能够以不变应万变。

    云手机用户的行为模式主要有两点:1.长时间挂机2.配合脚本刷金 围绕着这个行为模式进行建模分析。

    (1)特征提取

    通过分析云手机玩家的规律,我们大概分为这样几类维度:

    o 用户的登录行为:1.登录频次;2.登录地点;3.登录IP;

    o 机型的可疑行为:1.是否改机;2.是否有其他可疑行为;

    (2)模型训练

    将以上的粗略维度再进一步细化为特征向量后,我们将标记好的正常玩家/云手机玩家数据,分别用支持向量机进行分类。

    (3)模型评估

    支持向量机的准确率、召回率、正确率分别如下所示:

    (4)模型运用

    易盾将机器学习模型标记的云真机置为疑似云真机,保证云手机玩家的可疑数据被标记,利用了机器学习的模式学习能力,能够有效地防御新型云真机。即使是云真机换个马甲,例如业界有披着华为外衣的云真机,易盾也能识别。

    易盾结合自身对抗反外挂经验,总结出云手机玩家特性,并根据此特性,设计了一套适合云手机的特征工程,此特征提取工程结合了易盾工程师对云真机数年的研究,加上易盾底层检测的优势,深耕反外挂多年,拥有大量游戏客户,沉淀了海量的反外挂数据,反外挂数据日均过亿条,这是易盾使用机器学习模型的优势所在,也使得易盾模型精确度更高。

    4.反馈跟踪

    易盾的反馈处理的原则即是:我们所有的工作,都不能治标不治本,毕竟我们的口号是没有外挂。

    易盾对于客户反馈的漏报问题采取的模式是客户反馈一个样本,挖掘异常玩家相似性,返回一批相似用户,用户确认后,对以后用户进行标记。 那么我们就成功达到了“抓贼抓一窝”的效果,如下图所示。

    最后一张图说明易盾云真机的层层防护。第一层是底层识别,易盾从安卓底层识别云手机和真实手机的不同;第二层是风险感知,实时反馈用户异常玩家;第三层是机器学习,依托网易海量数据库,模型精准,识别新型云真机;第四次是反馈跟踪,根据用户反馈异常,进行相似性搜索,排查一批异常云手机玩家。
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注