Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
antivmdetection — 使用 VirtualBox 创建模板以使虚拟机检测更困难的脚本 | Kitploit
工具/GitHubGitHub/nsmfoo/antivmdetection
IDS/IPS规避恶意软件分析反机器人
GitHubnsmfoo/antivmdetection

antivmdetection

使用 VirtualBox 创建模板以使虚拟机检测更困难的脚本

查看仓库
7771243年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Antivmdetection

背景

该脚本旨在帮助你创建模板,这些模板可与 VirtualBox 配合使用,使虚拟机检测变得更加困难。

我最早在 2012 年发表了关于此主题的文章,之后不定期更新。博客格式可能并不是发布信息的最佳方式,有些人确实基于这些内容制作了简洁且“易于应用”的脚本。

为了更方便地添加新内容,我决定也采用同样的做法。

此脚本的目的是利用现有设置,而不修改 VirtualBox 的底层。确实有人通过修补 Virtualbox 实现了非常巧妙的功能,但这超出了本脚本的范围。我认为这种方法有其优点,因为它(希望)不会随着每个 VirtualBox 新版本的发布而失效。 随着时间的推移,我还加入了一些并非直接与虚拟机相关的内容,而是恶意软件用于指纹识别安装环境的东西,希望你不会介意……

主脚本将创建以下文件:

  • 一个 Shell 脚本,可用作模板,从宿主机操作系统运行并应用于你想要修改的虚拟机。
  • 一个 DSDT 转储文件,将用于上述模板脚本中。
  • 一个 Windows PowerShell 文件,用于在客户机内部运行,处理无法从宿主机更改的设置。此脚本需运行两次:一次用于需要重启的更改,第二次用于那些重启后会恢复原状的顽固设置。

使用方法

从宿主机生成脚本

  • 安装依赖:sudo apt install python3-pip libcdio-utils acpica-tools mesa-utils smartmontools
  • 安装 Python 模块:sudo pip3 install -r requirements.txt
  • 下载以下 Windows 二进制文件并解压到 antivmdetection 目录:wget https://download.sysinternals.com/files/VolumeId.zip https://www.nirsoft.net/utils/devmanview-x64.zip(x64 版本)。
  • 创建计算机和用户文本文件:hostname > computer.lst,whoami > user.lst。如果要为虚拟机使用不同的机器名和用户名,请修改这些文件(建议在文件中填充一长串用户名和计算机名)。
  • 以 sudo 权限运行 Python 脚本:sudo python3 antivmdetect.py
  • 使生成的宿主机脚本对当前用户可执行:sudo chmod a+x xxxxx.sh
  • 如果收到以下消息:“ACPI tables bigger than 64KB (VERR_TOO_MUCH_DATA)”,这是由于 Virtualbox 的限制所致,更多上下文见此问题:https://github.com/nsmfoo/antivmdetection/issues/37。尚未验证其有效性,但 https://www.tonymacx86.com/dsdt-database 可能是一个不错的资源……

设置虚拟机

  • 创建虚拟机但不要启动它,同时退出 VirtualBox GUI。Shell 脚本需要在安装之前运行!
  • 确认已启用“I/O APIC”(系统 > 主板选项卡)。
  • 确认“半虚拟化接口”设置为“无”(系统 > 加速选项卡)。
  • 如果可能,将 CPU 数量更改为 2 或更多。
  • 设置虚拟机 IP(文件 > 主机网络管理器 > 手动配置适配器 > IPv4 地址)。
  • 脚本期望存储布局如下:+ IDE:主盘(磁盘)和从盘(CD-ROM) + * ATA:端口 0(磁盘)和端口 1(CD-ROM)
  • 以当前用户身份运行脚本(因为虚拟机位于当前用户的主目录下):/bin/bash xxxxx.sh my-virtual-machine-name
  • 安装 Windows 操作系统(支持 W7 和 W10)

在客户机内部运行脚本

  • 将批处理脚本(xxxx.ps1)移动到新安装的客户机中。

  • 在客户机内部运行该批处理脚本。请记住,大多数被修改的设置都会在每次重启后恢复。因此,如果需要,请使其在启动时运行。

  • 从版本 0.1.4 开始,某些应用更改需要重启。因此,先运行一次批处理脚本,客户机会重启。然后再次运行脚本以完成设置。

  • 在客户机内应用批处理脚本之前,请先禁用 UAC(需要重启),否则你将无法使用脚本修改注册表。

  • 对于 Windows 10 用户:以管理员身份运行 PS 脚本(右键点击 cmd.exe -> 以管理员身份运行,导航到 PS 脚本并执行)。

  • 如果正确应用,Pafish 运行的结果将如下所示(无需修改 Virtualbox)。

  • 请注意,此脚本还执行了一些 Pafish 未覆盖的操作(例如 W10 工件)。

alt text

备注

  • 当 antivmdetect 脚本找不到合适的值使用时,它会在新创建的脚本中将这些设置注释掉,添加一个“#”。这些设置需要手动审查,因为它们可能会影响虚拟机中显示的内容。

版本历史

  • 0.1.9:
    兼容 Python3
    首次尝试提取正确的磁盘,这一直是困扰很多人的问题(问题 #35 及其他几个旧问题,感谢 @oaustin)
    改进了 Shell 脚本中的字符串处理(问题 #35 和 #36 以及 PR #44,感谢 @oaustin、@dashjuvi 和 @corownik)
    添加了在线 DSDT 资源的链接(问题 #37,感谢 @MasterCATZ)
    更新了 README,使安装说明更清晰,感谢 @jorants(问题 #38)
    检查 DSDT 转储是否真的已创建,感谢 @nov3mb3r(问题 #42)
    添加了许可证声明,感谢 @obilodeau(问题 #43)
    代码清理:由于无法访问服务器硬件,移除了 RAID 磁盘支持……以及许多其他小的改进

  • 0.1.8:
    改进了对 Windows 10 的支持
    合并了 @bryant1410 的标记修复(PR #14)
    解决了使用 macOS + VBox/VMWare Fusion 创建模板的用户遇到的问题。
    无论如何,从虚拟机内部创建模板并不是最佳方式……(问题 #12 和可能的 #15)

  • 0.1.7:
    现在支持 Windows 10(欢迎反馈)
    为 W10 安装“修正”了几个新的工件
    新增依赖:mesa-utils
    合并了 @Fullmetal5 的 bug 修复(#10)
    杂项代码修复
    更新了 readme

  • 0.1.6:
    在第二次运行后添加了一个弹出窗口,以更清晰地提示你已经准备就绪
    添加了一个生成几个记事本实例的功能,该功能将在未来版本中扩展
    重写了 RandomDate 函数,感谢 @Antelox 让我意识到旧版本的问题(#8)
    旧版本 Ubuntu 附带的 acpidump 不支持“-s”开关。现在会显示错误消息来处理此问题。感谢 @Antelox 报告此问题(#7)
    Devmanview.exe 在第二次运行后未被删除,已修复

  • 0.1.5:
    添加了对关联和取消关联(默认禁用)文件扩展名的支持。参考:https://www.proofpoint.com/us/threat-insight/post/massive-adgholas-malvertising-campaigns-use-steganography-and-file-whitelisting-to-hide-in-plain-sight
    添加了对用户提供的剪贴板缓冲区的支持。如果未提供,将生成一个随机字符串。请将你选择的蜜罐令牌填入文件
    移除了 XP 支持
    将批处理脚本部分转换为 Powershell。将更多逻辑移至客户机脚本中,简而言之,因为更多项目在客户机上随机化,所以创建/重新生成模板的频率降低了。
    添加了随机化桌面背景图像的功能
    添加了在客户机上创建“各种”文档的功能
    添加了在客户机上创建“各种”文档并将其移至回收站的功能
    在两个更多位置随机化 DigitalProductId:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration\DigitalProductId
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey\DigitalProductId
    使用半虚拟化接口:无(已在 VBox 5.1.4 上验证)- 检查已更新以反映此更改。我猜 VBox 的这一变化归功于 TiTi87,谢谢!

  • 0.1.4:
    修复了使用 python-dmidecode 3.10.13-3 的用户的一个 bug,这完全是我的责任……
    添加了随机化 VolumeID 的功能(新增依赖:VolumeID.exe),例如 Rovnix 会收集此类信息
    添加了随机化用户名和计算机名/主机名的功能(新增依赖:用户名和计算机名列表)
    首次尝试向剪贴板缓冲区添加信息,想法(命令)来自 @shanselman 的一条推文。将在下一版本中改进
    更新了 readme:新增依赖项以及需要重启的新功能

  • 0.1.3:
    复制并设置 CPU 品牌字符串
    检查客户机是否连接了音频设备。参考:http://www.joesecurity.org/reports/report-61f847bcb69d0fe86ad7a4ba3f057be5.html
    检查操作系统架构与 DevManView 二进制文件是否匹配
    在两个更多位置随机化 ProductId:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration\ProductId HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey\ProductId 从注册表中清除 Windows 产品密钥(以防止他人窃取……) 编辑 DigitalProductId(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId)以匹配新的 ProductId

/Mikael

欢迎反馈!=)

下载工具



  • 0.1.2:
    检查是否正在使用旧版半虚拟化接口(使用旧版接口将减轻“cpuid 特性”检测)

  • 0.1.1:
    检查 CPU 数量(少于 2 则报警)
    检查内存大小(少于 2GB 则报警)
    检查 vboxnet0 是否使用了默认 IP/IP 范围(如果你不使用它,可以忽略该通知)
    随机化 ProductId
    合并了来自 r-sierra 的 PR #3(感谢你的帮助!)
    修复了 AcpiCreatorId 中的一个 bug(感谢 @Nadacsc 向我报告!)
    修复了 DmiBIOSReleaseDate 解析中的一个 bug
    修复了 DmiBIOSReleaseDate 中的一个 bug,使其同时处理“默认”拼写错误的变体和正确拼写(感谢 @WanpengQian 向我报告!)
    DevManView 的包含未能按预期工作,此版本应已修复
    也支持 SATA 控制器(之前仅修改了 IDE 设置)
    更新了 readme

  • 0.1.0:
    解决了由 HT 出名的 WMI 检测问题。将 DevManView.exe(体系结构自选)添加到了依赖项中

  • < 0.1.0 在此之前的版本历史未保留,总得有个开始吧。