Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
MSRKit — Un concepto de usar una cadena ROP combinada con una primitiva WRMSR para llamar a funciones del kernel y mapear controladores no firmados mediante BYOVD (AmdTools64.sys) | Kitploit
Herramientas/GitHubGitHub/rurixis/msrkit
Escalada de PrivilegiosExplotaciónIngeniería InversaShellcodePost-ExplotaciónRed TeamingDesarrollo de PayloadsExplotación de Binarios
GitHubrurixis/msrkit

MSRKit

Un concepto de usar una cadena ROP combinada con una primitiva WRMSR para llamar a funciones del kernel y mapear controladores no firmados mediante BYOVD (AmdTools64.sys)

Ver Repositorio
9135hace 2 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

MSRKit

Una herramienta para llamar funciones del kernel y mapear controladores mediante una cadena ROP a través de una primitiva wrmsr en un controlador vulnerable (AmdTools64.sys).

Cómo funciona

  1. Carga AmdTools64.sys mediante NtLoadDriver (recurre a PnP devnode + interfaz de dispositivo basada en GUID si el enlace simbólico no está disponible)
  2. Lee IA32_LSTAR a través del IOCTL de lectura de MSR del controlador (0xFFF02804)
  3. Escanea ntoskrnl.exe en busca de gadgets ROP (pop rcx; ret, mov cr4, rcx; ret, wbinvd; ret, etc.)
  4. Sobrescribe IA32_LSTAR con el gadget de entrada, limpia AC en FMASK y emite syscall
  5. La cadena ROP limpia los bits SMEP/SMAP en CR4, despacha la función objetivo en la pila del kernel, restaura CR4 y LSTAR, y regresa a modo usuario mediante sysretq

El mapeo de controladores sigue la misma ruta: asigna un pool del kernel mediante ExAllocatePoolWithTag, copia la imagen PE preparada (reubicaciones aplicadas, importaciones resueltas, cookie de seguridad parcheada) y llama al punto de entrada mapeado.

Uso

CLI

root@kitploit:~
msrkit <driver.sys> call    <ExportName> [args...]
msrkit <driver.sys> call_at <address>    [args...]
msrkit <driver.sys> map     <unsigned.sys> [entry args...]
msrkit <driver.sys> unmap   <address>
  • call -- resuelve y llama a una exportación nombrada de ntoskrnl. Los argumentos se analizan como enteros (hexadecimal con prefijo 0x). Imprime el valor de retorno.
  • call_at -- llama a una dirección virtual arbitraria del kernel.
  • map -- mapea un controlador sin firmar en el pool no paginado y llama a su punto de entrada (ExAllocatePoolWithTag). Imprime la dirección base mapeada.
  • unmap -- libera un controlador previamente mapeado en la dirección base indicada.

Biblioteca

root@kitploit:~
#include "msrkit.h"

#pragma comment(lib, "msrkit.lib")

int main()
{
	MSRK::INIT(L"AmdTools64.sys");

	void* mptr = MSRK::CALL("ExAllocatePool2", 0x40ULL, 0x1000, 'Ruri');
	std::cout << "Memory allocate: " << mptr << std::endl;

	auto mptr23 = MSRK::MAP("driver.sys", 123, 456);
	std::cout << "Driver mapped: " << std::hex << (uintptr_t)mptr23 << "\n";

	// raw call
	std::vector<uint64_t>args = { 0x40ULL, 1024, 'Tagz' };
	void* mptr24 = MSRK::M_FUNCTION::CALL("ExAllocatePool2", args.data(), args.size());
	std::cout << "raw memory alloc : " << mptr24 << std::endl;

	std::vector<uint64_t>args2 = { 123, 456 };
	auto mptr25 = MSRK::M_DRIVERMAP::MAP( "driver.sys", args2.data(), args2.size() );

	MSRK::UNMAP(mptr23);	
	MSRK::CLEANUP();
}

Opcionalmente, pasa un handle de controlador existente para omitir la carga:

root@kitploit:~
MSRK::INIT("AmdTools64.sys", existing_handle);

Compilación

Requiere Visual Studio con MSVC (v143+) y MASM (ml64.exe).

root@kitploit:~
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

Salida: build/Release/msrkit.exe (CLI) y msrkit.lib (biblioteca estática).

CFG está deshabilitado (/guard:cf-). Las cookies de pila (/GS) están habilitadas.

Características

  • Soporte completo para todas las compilaciones de Windows 10 y 11
  • Compatible con KPTI
  • Sin soporte para HVCI (HVCI debe estar deshabilitado)
  • Soporte para controladores PnP / No PnP

Limitaciones

  • Ejecución en un solo núcleo únicamente -- el hilo se fija a la CPU 0 durante las llamadas al kernel
  • Los secuestros concurrentes de LSTAR desde procesos separados provocarán un BSOD (un llamador a la vez)
  • Los stubs de llamadas al sistema Zw/Nt no se pueden llamar desde el contexto de LSTAR (vuelve a entrar en KiSystemService)
Descargar herramienta