Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
MSRKit — Un concetto che utilizza una catena ROP abbinata a una primitiva WRMSR per chiamare funzioni del kernel e mappare driver non firmati tramite BYOVD (AmdTools64.sys) | Kitploit
Strumenti/GitHubGitHub/rurixis/msrkit
Escalation di PrivilegiExploitReverse EngineeringShellcodePost-ExploitRed TeamingSviluppo PayloadBinary Exploitation
GitHubrurixis/msrkit

MSRKit

Un concetto che utilizza una catena ROP abbinata a una primitiva WRMSR per chiamare funzioni del kernel e mappare driver non firmati tramite BYOVD (AmdTools64.sys)

Vedi Repository
91352 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

MSRKit

Uno strumento per chiamare funzioni del kernel e mappare driver tramite una catena ROP attraverso una primitiva wrmsr in un driver vulnerabile (AmdTools64.sys).

Come funziona

  1. Carica AmdTools64.sys tramite NtLoadDriver (ricade su PnP devnode + interfaccia dispositivo basata su GUID se il symlink non è disponibile)
  2. Legge IA32_LSTAR tramite l'IOCTL di lettura MSR del driver (0xFFF02804)
  3. Scansiona ntoskrnl.exe alla ricerca di gadget ROP (pop rcx; ret, mov cr4, rcx; ret, wbinvd; ret, ecc.)
  4. Sovrascrive IA32_LSTAR con il gadget di ingresso, cancella AC in FMASK ed esegue syscall
  5. La catena ROP cancella i bit SMEP/SMAP in CR4, esegue la funzione target sullo stack del kernel, ripristina CR4 e LSTAR, e ritorna in modalità utente tramite sysretq

La mappatura del driver segue lo stesso percorso: alloca un pool del kernel tramite ExAllocatePoolWithTag, copia l'immagine PE preparata (rilocazioni applicate, import risolti, security cookie patchato) e chiama il punto di ingresso mappato.

Utilizzo

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 -- risolve e chiama un export nominato di ntoskrnl. Gli argomenti vengono interpretati come interi (esadecimale con prefisso 0x). Stampa il valore di ritorno.
  • call_at -- chiama un indirizzo virtuale arbitrario del kernel.
  • map -- mappa un driver non firmato nel pool non paginato e chiama il suo punto di ingresso (ExAllocatePoolWithTag). Stampa l'indirizzo base mappato.
  • unmap -- libera un driver precedentemente mappato all'indirizzo base specificato.

Libreria

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();
}

Opzionalmente è possibile passare un handle di driver esistente per saltare il caricamento:

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

Compilazione

Richiede Visual Studio con MSVC (v143+) e MASM (ml64.exe).

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

Output: build/Release/msrkit.exe (CLI) e msrkit.lib (libreria statica).

CFG è disabilitato (/guard:cf-). Gli stack cookie (/GS) sono abilitati.

Funzionalità

  • Supporto completo per tutte le build di Windows 10 e 11
  • Compatibile con KPTI
  • Nessun supporto HVCI (HVCI deve essere disabilitato)
  • Supporto per driver PnP / Non PnP

Limitazioni

  • Esecuzione solo su singolo core -- il thread è vincolato alla CPU 0 durante le chiamate al kernel
  • Hijack concorrenti di LSTAR da processi separati causeranno un BSOD (un chiamante alla volta)
  • Gli stub delle syscall Zw/Nt non possono essere chiamati dal contesto LSTAR (rientra in KiSystemService)
Scarica lo strumento