bitdefender/hvmi
GitHub: bitdefender/hvmi
基于 Intel VT-x 硬件虚拟化的虚拟机内存自省安全库,从 Hypervisor 层实现对客户机的高级威胁检测与防护。
Stars: 675 | Forks: 69
**此仓库已归档且不再维护。**
# Hypervisor Memory Introspection

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, 威胁检测, 安全库, 客户端加密, 客户端加密, 无文件恶意软件检测, 漏洞利用防护, 系统底层安全, 脆弱性评估, 虚拟化安全, 虚拟机自省, 逆向工具