bitdefender/hvmi

GitHub: bitdefender/hvmi

基于 Intel VT-x 硬件虚拟化的虚拟机内存自省安全库,从 Hypervisor 层实现对客户机的高级威胁检测与防护。

Stars: 675 | Forks: 69

**此仓库已归档且不再维护。** # Hypervisor Memory Introspection ![logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/01fc0d023c184601.png) HVI 代表 Hypervisor Introspection。该术语与 HVMI 互换使用,HVMI 的含义更为具体,代表 Hypervisor Memory Introspection。 Virtual Machine Introspection 定义为从虚拟机外部分析客户虚拟机状态和行为的技术。此外,Introspection 还可以利用虚拟化扩展来提供安全性。 本项目的主要目的是利用 Intel VT-x 提供的硬件隔离,从虚拟机外部提供无与伦比的安全性。HVI 阻止的主要攻击类别包括: - 受保护进程内的二进制利用 - 受保护进程内的代码和注注入技术 - 受保护进程内指定系统 DLL 上的函数挂钩 - Rootkit(多种技术被阻止,例如内核或其他驱动程序内的 inline hooks、SSDT hooks、Driver-object hooks、系统寄存器修改等) - 内核利用 - 权限提升 - 凭据盗取 - 深度进程内省(如果父进程受到威胁,则阻止进程创建) - 无文件恶意软件(powershell 命令行扫描) 有关更多详细信息,请查看 [HVMI 规范](http://hvmi.readthedocs.io) 和 [HVMI 博客](https://bitdefender.github.io/hvmi-blog/)。 ## 支持的 Hypervisor HVMI 可以在任何 hypervisor 上运行,只要提供适当的 API(文档在[此处](https://hvmi.readthedocs.io/en/latest/chapters/1-overview.html#prerequisites-from-the-hv))。目前,它已集成并测试了以下 hypervisor: * [Napoca Hypervisor](https://github.com/bitdefender/napoca) - Bitdefender 针对 Intel CPU 的裸机 hypervisor * [Xen](https://xenbits.xen.org) - 著名的开源 hypervisor * [KVM](https://www.linux-kvm.org/page/Main_Page) - Linux Kernel Virtual Machine ## 仓库结构 - **introcore** - introcore 源代码和头文件 - **include** - 公共头文件和多个项目之间共享的头文件 - **cami** - [Guest 支持机制](#Guest-support-mechanism)文件 - **exceptions** - [例外](#Exceptions)文件 - **agents** - Windows 特殊代理项目文件 - **docs** - 文档 - **build_disasm** - 用于构建 [bddisasm](https://github.com/bitdefender/bddisasm) 依赖项的文件 - **deserialize** - 反序列化脚本,用于从序列化警报中提取有用信息 - **Doxygen** - Doxygen 设置 - **windows_build** - [Windows 构建](#Windows-build)期间使用的脚本 - **daemon** - Xen 和 KVM 的集成示例 ## 快速入门指南 - [Xen 上的 HVMI 演示设置](https://bitdefender.github.io/hvmi-blog/2020/08/10/getting-started-on-Xen.html)。 - [KVM 上的 HVMI 演示设置](https://bitdefender.github.io/hvmi-blog/2020/08/10/getting-started-on-kvm.html)。 - [添加自定义例外](https://bitdefender.github.io/hvmi-blog/2020/08/19/exceptions.html)。 ## 检出 通过运行以下命令获取 Introcore 及所有依赖项: ``` git clone --recurse-submodules https://github.com/bitdefender/hvmi.git ``` 这将克隆 HVMI 仓库和 [bddisasm](https://github.com/bitdefender/bddisasm) 子模块。 ## 构建 Introcore 既可以构建为 Windows DLL,也可以构建为 Linux 库。仅支持 64 位配置。 ### Linux 构建 要在 Linux 上构建项目,您需要: - gcc >= 7.0 - cmake >= 3.13 - make 要集成库(`libintrocore.so`),您可以使用由 `cmake` 生成的 `pkg-config` 文件(`introcore.pc`)。 通过从仓库根目录运行 cmake 来构建 Introcore: ``` # 生成 configuration cmake -H. -G -B -DCMAKE_BUILD_TYPE= -DCMAKE_INSTALL_PREFIX= -DCMAKE_LIBRARY_OUTPUT_DIRECTORY= -DCMAKE_TOOLCHAIN_FILE= ``` `CMAKE_INSTALL_PREFIX` 的默认值为 `/usr/local/`。 `CMAKE_LIBRARY_OUTPUT_DIRECTORY` 的默认值为 `$project_dir/bin`。 #### 构建 Debug 版本 ``` cmake -B_build -DCMAKE_BUILD_TYPE=Debug cd _build make ``` #### 构建 Release 版本 ``` cmake -B_build -DCMAKE_BUILD_TYPE=Release cd _build make ``` #### 安装 ``` # 安装 introcore 库 (debug) cd _build make install ``` 这将构建 [bddisasm](https://github.com/bitdefender/bddisasm) 依赖项,然后构建 **libintrocore**、[例外](#Exceptions)和 [Guest 支持机制](#Guest-support-mechanism)文件。使用 `make introcore` 仅构建 **libintrocore**。生成的二进制文件将位于 `bin/x64/Debug` 或 `bin/x64/Release` 中。 #### 生成 SDK 生成包含 **libintrocore** Debug 和 Release 版本以及公共头文件的 SDK,可以通过以下方式完成: ``` mkdir _build cd _build cmake .. -B. -DCMAKE_BUILD_TYPE=Debug make cmake .. -B. -DCMAKE_BUILD_TYPE=Release make make package ``` 这将在仓库根目录中创建一个 ZIP 文件,其中包含您构建的最新 **libintrocore** 以及 `include/public` 目录中的头文件。 ### Windows 构建 要在 Windows 上构建项目,您需要: - [Visual Studio 2019](https://visualstudio.microsoft.com/vs/) 并带有 **Desktop development with C++ workload** - [Windows SDK 10.0.18362.0](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/) - [python 3.6 或更新版本](https://www.python.org/downloads/release/python-360/) 当您首次打开 `hvmi.sln` 文件时,Visual Studio 应会提示您安装任何缺失的组件。可以直接从 Visual Studio 或使用 `build.cmd` 脚本构建 introcore: ``` # 构建 Debug build.cmd Debug # 构建 Release build.cmd Release ``` 这将在 `bin/x64/Debug` 或 `bin/x64/Release` 中创建 **introcore.dll** 和 **introcore.pdb**。 Windows 构建不支持 CMake。 ## 文档 Introcore 附带 Doxygen 代码文档,以及使用 [Sphinx](https://www.sphinx-doc.org/en/master/) 构建的规范。 ### Doxygen 要在 Linux 上生成 Doxygen 文档,请使用: ``` cmake -B_build cd _build make doxy ``` 对于 Windows,请使用: ``` make_doxy.cmd ``` 或者直接调用 Doxygen: ``` doxygen Doxygen/Doxyfile ``` 这假设您已经安装了 [Doxygen](https://www.doxygen.nl/index.html) 并将其添加到了您的路径中。 Doxygen 文档将位于 `docs/_static/Doxygen/html` 中。 ## 规范 要构建规范,您需要: - Python 3 - [Sphinx](https://www.sphinx-doc.org/en/master/) - [sphinx-bootstrap-theme](https://github.com/ryan-roemer/sphinx-bootstrap-theme) 要生成文档的 HTML 版本: ``` cd docs make html ``` 这也会构建 Doxygen 文档。结果将位于 `docs/_build/html` 中。 ## 例外 Introcore 具有一种例外机制,用于将合法的受保护结构访问列入白名单。 示例例外文件包含在 `exceptions` 目录中,这些文件应适用于 Windows 7(SP1 和 SP2)和 Windows 10 1809(RS5)的开箱即用安装。 要生成例外二进制文件,请使用: ``` cmake -B_build cd _build make exceptions ``` 有关更多信息,请参阅 [exceptions](exceptions/README.md)。 ## Guest 支持机制 Introcore 需要知道某些信息才能正确挂钩和保护操作系统(例如,某些内核结构的布局、在客户内存中查找函数的模式等)。这些信息包含在 CAMI 数据库文件中。可以在 `cami` 目录中找到为 Windows 7(SP1 和 SP2)、Windows 10 1809(RS5)、Ubuntu 18.04 和 CentOS 8 提供支持的示例文件。 要生成 cami 二进制文件,请使用: ``` cmake -B_build cd _build make cami ``` 有关更多信息,请参阅 [CAMI](cami/README.md)。 ## 联系我们 有几种方式可以联系我们: - [公开的 HVMI Slack](https://kvm-vmi.slack.com) - [在此加入](https://kvm-vmi.herokuapp.com)公开 Slack,与 Bitdefender 开发人员和其他社区成员公开或私下讨论想法 - Bitdefender HVMI OSS 团队联系方式 - hvmi-oss@bitdefender.com - 直接联系 Bitdefender 人员,处理任何不适合在公开 Slack 讨论的问题 - HVMI 安全 - hvmi-security@bitdefender.com - 报告安全问题和漏洞;我们恳请您遵循[此处](SECURITY.md)描述的指南
标签:0day挖掘, AMSI绕过, Bash脚本, Bitdefender, EDR, Hashcat, Hypervisor, Intel VT-x, KVM, SecList, VMI, Web报告查看器, Xen, YAML, 代码注入防护, 内存取证, 内核安全, 凭据窃取防护, 反Rootkit, 威胁检测, 安全库, 客户端加密, 客户端加密, 无文件恶意软件检测, 漏洞利用防护, 系统底层安全, 脆弱性评估, 虚拟化安全, 虚拟机自省, 逆向工具