
Rusty Hypervisor - Hipervisor Tipo 2 Blue Pill de kernel do Windows em Rust (Codinome: Matrix)
Blog: https://memn0ps.github.io/hypervisors-for-memory-introspection-and-reverse-engineering/
Um hipervisor de pesquisa tipo-2 baseado em Rust, leve, seguro em relação à memória e extremamente rápido, com hooks para Intel VT-x, focado no estudo dos conceitos centrais de virtualização.
Nota: O hipervisor Illusion (Hipervisor Windows UEFI Blue Pill Tipo-1 em Rust) é mais estável, suporta mais recursos e é, no geral, melhor projetado. O hipervisor Matrix (Hipervisor Windows Kernel Blue Pill Tipo-2 em Rust) é uma versão mais antiga e experimental, não sendo destinado ao uso em produção. Ambos os projetos servem como modelos para ajudar as pessoas a começarem no desenvolvimento de hipervisores em Rust.
Figura 0: Extended Page Tables (EPT) Hooks (Matrix)
ExceptionOrNmi (#GP, #PF, #BP, #UD), Cpuid, Getsec, Vmcall, Vmclear, Vmlaunch, Vmptrld, Vmptrst, Vmresume, Vmxon, Vmxoff Rdmsr, Wrmsr, Invd, Rdtsc, EptViolation, EptMisconfiguration, Invept, Invvpid, Xsetbv.int3) compatíveis com PatchGuard.rustup toolchain install nightly e rustup default nightly.winget install LLVM.LLVM.cargo install cargo-make cargo-expand cargo-edit cargo-workspaces.WDKContentRoot para apontar para o caminho da sua instalação do WDK, caso não tenha sido definida automaticamente durante a instalação do WDK:[System.Environment]::SetEnvironmentVariable("WDKContentRoot", "C:\Program Files (x86)\Windows Kits\10", [System.EnvironmentVariableTarget]::User)
cargo make --profile development.cargo make --profile release.bcdedit.exe /set testsigning on.bcdedit.exe /bootdebug {bootmgr} on
bcdedit.exe /bootdebug on
bcdedit.exe /debug on
Configuração: bcdedit.exe /dbgsettings net hostip:w.x.y.z port:n.
regedit.exe.HKLM\SYSTEM\CurrentControlSet\Control\Session Manager.Debug Print Filter com o DWORD DEFAULT = 8.$serialPort = New-Object System.IO.Ports.SerialPort COM2,9600,None,8,One; $serialPort.Open().Use o Service Controller (sc.exe) para criar e gerenciar o serviço do hipervisor:
sc.exe create matrix type= kernel binPath= C:\Windows\System32\drivers\matrix.sys
sc.exe query matrix
sc.exe start matrix
Configuração para VMware Workstation
Compile o Projeto: Siga as instruções de compilação fornecidas nas seções anteriores para compilar o projeto.
Configurar o VMware Workstation
Configure a porta serial do VMware para depuração.
Figura 1: Configurações da Porta Serial no VMware
Certifique-se de que "Virtualize Intel VT-x/EPT or AMD-V/RVI" esteja habilitado e que "Virtualize IOMMU (IO memory management unit)" esteja habilitado.
Figura 2: Configurações de Processadores no VMware
Copiar o Driver
Copie o driver matrix.sys para o diretório C:\Windows\System32\drivers.
Depuração da Porta Serial no VMware
Execute o script PowerShell na seção Depuração da Porta Serial para abrir a porta serial.
Carregar o Hipervisor
Use o script PowerShell load.ps1 mostrado na seção Gerenciamento do Serviço para criar e iniciar o serviço do hipervisor.
Figura 3: Carregar Hipervisor
Figura 4: Configuração do PoC com Logs e Windbg
Figura 5: Execução do PoC com Logs e Windbg
Muito obrigado às pessoas e recursos incríveis que moldaram este projeto. Um agradecimento especial a todos listados abaixo. Embora eu não tenha utilizado todos esses recursos no meu trabalho, eles têm sido minas de ouro de informação, super úteis para qualquer pessoa que esteja mergulhando no desenvolvimento de hipervisores, inclusive eu.