• Stars
    star
    1,438
  • Rank 31,563 (Top 0.7 %)
  • Language
    C++
  • License
    MIT License
  • Created about 8 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Intel VT-x based hypervisor aiming to provide a thin VM-exit filtering platform on Windows.

HyperPlatform

Introduction

HyperPlatform is an Intel VT-x based hypervisor (a.k.a. virtual machine monitor) aiming to provide a thin platform for research on Windows. HyperPlatform is capable of monitoring a wide range of events, including but not limited to, access to virtual/physical memory and system registers, occurrences of interrupts and execution of certain instructions.

Researchers are free to selectively enable and/or disable any of those event monitoring and implement their own logic on the top of HyperPlatform. Some potential applications are:

  • Analyzing kernel mode rootkit
  • Implementing virtual-machine-based intrusion prevention system (VIPS)
  • Reverse-engineering the Windows kernel

A simplified implementation of those ideas are available:

Advantages

HyperPlatform is designed to be easy to read and extend by researchers, especially those who are familiar with Windows. For instance:

  • HyperPlatform runs on Windows 7, 8.1 and 10 in both 32 and 64 bit architectures without any special configuration (except for enabling Intel-VT technology).
  • HyperPlatform compiles in Visual Studio and can be debugged though Windbg just like a regular software driver.
  • Source code of HyperPlatform is written and formatted in existing styles (Google C++ Style Guide and clang-format), and well commented.
  • HyperPlatform has no dependencies, supports use of STL and is released under a relaxed license.

For more details, see the HyperPlatform User Document and Programmer's Reference.

Build

To build HyperPlatform for x64 Windows 10 and later, the following are required.

  • Visual Studio Community 2022
  • Windows Software Development Kit (SDK) for Windows 10 (10.0.22621 or later)
  • Windows Driver Kit (WDK) 10 (10.0.22621 or later)

To build HyperPlatform for x86 and Windows 7 and 8.1, the following are required.

  • Visual Studio Community 2019
  • Windows Software Development Kit (SDK) for Windows 10 (10.0.22000)
  • Windows Driver Kit (WDK) 10 (10.0.22000)

Installation and Uninstallation

Clone full source code from Github with a below command and compile it on Visual Studio.

$ git clone --recursive https://github.com/tandasat/HyperPlatform.git

On the x64 platform, you have to enable test signing to install the driver. To do that, open the command prompt with the administrator privilege and type the following command, and then restart the system to activate the change:

>bcdedit /set testsigning on

To install and uninstall the driver, use the 'sc' command. For installation:

>sc create HyperPlatform type= kernel binPath= C:\Users\user\Desktop\HyperPlatform.sys
>sc start HyperPlatform

Note that the system must support the Intel VT-x and EPT technology to successfully install the driver. On Windows 10 RS4+ systems, this technology can automatically be disabled by the Windows kernel which results in the following error.

>sc start HyperPlatform
[SC] StartService FAILED 3224698910:

A hypervisor feature is not available to the user.

This is due to Windows Defender Credential Guard being enabled by default. To disable Windows Defender Credential Guard and enable the virtualization technology for HyperPlatform, follow this instruction.

For uninstallation:

>sc stop HyperPlatform
>sc delete HyperPlatform
>bcdedit /deletevalue testsigning

To install the driver on a virtual machine on VMware Workstation, see an "Using VMware Workstation" section in the HyperPlatform User Document.

Output

All logs are printed out to DbgView and saved in C:\Windows\HyperPlatform.log.

Supported Platforms

  • x86 and x64 Windows 7, 8.1 and 10
  • The system must support the Intel VT-x and EPT technology

Related Project(s)

SimpleVisor is a very (very) simple and readable Windows-specific hypervisor. I recommend taking a look at the project to learn VT-x if you are new to hypervisor development. It should give you a clearer view of how a hypervisor is initialized and executed.

  • hvpp

  • https://github.com/wbenny/hvpp hvpp is a lightweight Intel x64/VT-x hypervisor written in C++. This is about the same size as HyperPlatform in LOC yet written in a more polished matter with focus on x64, making the entire code base more readable. This project also addresses some issues remain unresolved in HyperPlatform and comes with educational comments and demonstration code to learn VT-x in more depth. Unless you are allergic to C++ or looking for x86 support, I strongly encourage you to study this project too.

  • ksm

  • https://github.com/asamy/ksm

ksm is lightweight-ish x64 hypervisor written in C for Windows for Intel processors. It demonstrates some advanced VT-x features like #VE and VMFUNC where HyperPlatform does not include.

Bareflank Hypervisor is an actively developed open source hypervisor. It comes with rich documents, tests, and comments, supports multiple platforms. The size of code is larger than that of HyperPlatform, but you will find it interesting if you are looking for more comprehensive yet still lightweight-ish hypervisors.

License

This software is released under the MIT License, see LICENSE.

More Repositories

1

DdiMon

Monitoring and controlling kernel API calls with stealth hook using EPT
C++
1,086
star
2

Hypervisor-101-in-Rust

The materials of "Hypervisor 101 in Rust", a one-day long course, to quickly learn hardware-assisted virtualization technology and its application for high-performance fuzzing on Intel/AMD processors.
Rust
935
star
3

MiniVisorPkg

The research UEFI hypervisor that supports booting an operating system.
C
478
star
4

SimpleSvmHook

SimpleSvmHook is a research purpose hypervisor for Windows on AMD processors.
C++
313
star
5

PgResarch

PatchGuard Research
C++
282
star
6

SimpleSvm

A minimalistic educational hypervisor for Windows on AMD processors.
C++
262
star
7

ExploitCapcom

This is a standalone exploit for a vulnerable feature in Capcom.sys
C++
258
star
8

MemoryMon

Detecting execution of kernel memory where is not backed by any image file
C++
239
star
9

DotNetHooking

Sample use cases of the .NET native code hooking technique
C#
202
star
10

scripts_for_RE

Python scripts for reverse engineering.
Python
173
star
11

GuardMon

Hypervisor based tool for monitoring system register accesses.
C++
141
star
12

UefiVarMonitor

The runtime DXE driver monitoring access to the UEFI variables by hooking the runtime service table.
C
132
star
13

SmmExploit

The report and the exploit of CVE-2021-26943, the kernel-to-SMM local privilege escalation vulnerability in ASUS UX360CA BIOS version 303.
122
star
14

EopMon

Elevation of privilege detector based on HyperPlatform
C++
119
star
15

Sushi

a Japanese food keeps you sane
C++
115
star
16

findpg

Windbg extension to find PatchGuard pages
C++
113
star
17

UEFI-BIOS-Security

Security Camp 2021 & GCC 2022
107
star
18

hvext

The Windbg extension that implements commands helpful to study Hyper-V on Intel processors.
JavaScript
105
star
19

WinIoCtlDecoder

IDA Plugin which decodes Windows Device I/O control code into DeviceType, FunctionCode, AccessType and MethodType.
Python
102
star
20

HelloSmm

This is an instruction to run your own SMM code.
C
95
star
21

DebugLogger

A software driver that lets you log kernel-mode debug output into a file on Windows.
C++
95
star
22

WPBT-Builder

The simple UEFI application to create a Windows Platform Binary Table (WPBT) from the UEFI shell.
C
91
star
23

FU_Hypervisor

A hypervisor hiding user-mode memory using EPT
C
90
star
24

CVE-2023-36427

Report and exploit of CVE-2023-36427
C++
89
star
25

kraft_dinner

Tool to dump UEFI runtime drivers implementing runtime services for Windows
C
85
star
26

HelloAmdHvPkg

HelloAmdHvPkg is a type-1 research hypervisor for AMD processors.
C
83
star
27

Hello-VT-rp

A simple hypervisor demonstrating the use of the Intel VT-rp (redirect protection) technology.
Rust
80
star
28

RemoteWriteMonitor

A tool to help malware analysts tell that the sample is injecting code into other process.
C++
73
star
29

Scavenger

A minifilter driver preserves all modified and deleted files.
C
71
star
30

meow

nyā
C++
70
star
31

HelloIommuPkg

The sample DXE runtime driver demonstrating how to program DMA remapping.
C
57
star
32

DumpVTable

Generates a Python script to give public interface names in an ActiveX file to an IDB file.
C++
45
star
33

DrvLoader

A command line tool to load and unload a device driver.
C++
42
star
34

CVE-2022-25949

A years-old exploit of a local EoP vulnerability in Kingsoft Antivirus KWatch Driver version 2009.3.17.77.
C++
35
star
35

cs_driver

A sample project for using Capstone from a driver in Visual Studio 2015
C
34
star
36

CVE-2014-0816

CVE-2014-0816
C++
24
star
37

CVE-2024-21305

Report and exploit of CVE-2024-21305.
C++
24
star
38

hyperplatform_log_parser

User-mode program parsing logs created by HyperPlatform
C++
18
star
39

tandasat.github.io

HTML
17
star
40

ProjectLoadTimeMonitor

The Visual Studio extension that measures load time of each project when a solution file is opened.
C#
16
star
41

CheckSDL

A tool evaluates security configurations of a given PE based on SDL without source code
C++
12
star
42

ListWorkItems

Lists work items being queued currently.
C++
12
star
43

DeviceOpener

A command line tool to check if a specified device is accessible.
C++
10
star
44

windbg_init

Windbg Init Script
9
star
45

win32_debugout

Shows debug strings on DebubView from an attached process by win32_remote.exe.
C++
8
star
46

ping_vmm

A user-mode program knocking at HyperPlatform's "backdoor"
C++
7
star
47

List-UEFI-Configuration-Tables

List UEFI Configuration Tables
Rust
7
star
48

ScopedResource

Scoped Resource - Generic RAII Wrapper for the Standard Library by Peter Sommerlad and Andrew L. Sandoval
C++
6
star
49

SecRuntimeSample

A sample usege of SecRuntime.dll on Windows Phone
C++
4
star
50

blog

Ruby
4
star
51

CopyFiles

Copy files onto the IsolatedStorage so that you can download them using IsoStoreSpy.
C#
3
star
52

mylight

Using LED of Samsung Galaxy Ace S5830
Java
2
star
53

tandasat

2
star
54

shared

Manages files that are shared with multiple boxes.
Vim Script
1
star