Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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
PINKPANTHER — Shellcode in modalità kernel per Windows x64 realizzato artigianalmente per il furto di token | Kitploit
Strumenti/GitHubGitHub/winterknife/pinkpanther
Escalation di PrivilegiShellcodePost-ExploitSviluppo PayloadBinary Exploitation
GitHubwinterknife/pinkpanther

PINKPANTHER

Shellcode in modalità kernel per Windows x64 realizzato artigianalmente per il furto di token

Vedi Repository
5176172 anni faRevisionato da Kitploit

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

PINKPANTHER

Sommario

Shellcode kernel-mode x64 per Windows realizzato artigianalmente per sostituire il token di accesso primario del processo in esecuzione con il token di processo SYSTEM per Elevation of Privilege (EoP).

Versioni del sistema operativo supportate

  • Windows 7/Windows Server 2008 R2 Build 7601
  • Windows 8/Windows Server 2012 Build 9200
  • Windows 8.1/Windows Server 2012 R2 Build 9600
  • Windows 10 1507/TS1 Build 10240
  • Windows 10 1511/TS2 Build 10586
  • Windows 10 1607/RS1/Windows Server 2016 Build 14393
  • Windows 10 1703/RS2 Build 15063
  • Windows 10 1709/RS3 Build 16299
  • Windows 10 1803/RS4 Build 17134
  • Windows 10 1809/RS5/Windows Server 2019 Build 17763
  • Windows 10 1903/19H1 Build 18362
  • Windows 10 1909/19H2 Build 18363
  • Windows 10 2004/20H1 Build 19041
  • Windows 10 2009/20H2 Build 19042
  • Windows 10 2104/21H1 Build 19043
  • Windows 10 2110/21H2 Build 19044

Compilazione e distribuzione

I prerequisiti per compilare questo progetto sono:

  1. Visual Studio 2019(any edition will do fine)
  2. Windows 10 SDK, version 2004
  3. Windows 10 WDK, version 2004
  4. Python3

Va notato che puoi cavartela avendo solo un assembler (questo progetto usa MASM) perché tecnicamente è tutto ciò che serve.

Dopo aver installato quanto sopra, dovrebbe essere sufficiente aprire la soluzione con Visual Studio e compilare per la destinazione x64.

Dopo una compilazione riuscita, i binari si trovano nella directory Bin sotto l'apposita sottodirectory per architettura.

In alternativa, puoi scaricare shellcode indipendente dalla posizione pronto per la distribuzione da Releases.

Per favore, NON tentare di distribuire il payload su una macchina su cui fai affidamento per lavorare se non sei sicuro di come funziona.

Fai riferimento alla documentazione Microsoft per qualsiasi informazione aggiuntiva.

Test

Per scopi di test, consiglio vivamente di usare flare-kscldr per distribuire lo shellcode kernel-mode su una VM di test e la guida di CodeMachine per la configurazione del sistema per lo sviluppo del kernel e il debug per configurare una VM Hyper-V Guest con pieno supporto al debug del kernel.

Opzionalmente, puoi anche considerare di automatizzare il processo con kdbg-driver-vagrant per avviare rapidamente una VM di test con debug del kernel completo usando Vagrant.

Schermate

demo

Avvertenze

Come mi è stato fatto notare da Dmytro Oleksiuk(@d_olex), ci sono alcune race condition non proprio sottili nel codice, in particolare relative a:

  1. Attraversare manualmente le strutture nt!_EPROCESS collegate tra loro tramite lista doppiamente linkata circolare senza usare una sorta di primitiva di sincronizzazione/meccanismo di lock
  2. Riferimenti non sicuri a questi oggetti di processo mentre li manipoliamo

Attualmente mancano di qualsiasi protezione contro le modifiche apportate mentre ci stiamo lavorando.

È un problema? Sì, le race condition sono sempre problematiche e possono causare ogni sorta di comportamenti indefiniti/spiacevoli bugcheck.

L'uso di questo payload influirà sulla stabilità del mio exploit? Potrebbe.

E qual è la soluzione? La soluzione è in due passaggi.

La parte 1 prevede l'acquisizione di un lock di tipo wait, come i Pushlock - nt!PspActiveProcessLock (puntatore pushlock) per l'accesso esclusivo usando nt!ExAcquirePushLockExclusive, prima di attraversare la lista dei processi (la consegna normale delle APC del kernel deve essere disabilitata in anticipo), e nt!ExReleasePushLockExclusive per rilasciare il lock una volta terminato l'uso della lista, punto in cui la consegna normale delle APC del kernel dovrebbe essere riabilitata.

Tuttavia, poiché questa variabile globale non è esportata dal kernel nt, un approccio molto più decoroso e sicuro sarebbe usare l'API nt!ZwQuerySystemInformation con SYSTEM_INFORMATION_CLASS == SystemProcessInformation per trovare il PID dall'ImageName e nt!PsLookupProcessByProcessId per ottenere nt!_EPROCESS VA dal PID.

Se però sei curioso di sapere come il kernel fa la prima cosa, ti chiederei di guardare nt!PsGetNextProcess in un disassembler.

La parte 2 prevede di riferire in modo sicuro gli oggetti usando la famiglia di API nt!ObReferenceObject per incrementare il conteggio dei riferimenti sull'oggetto processo, così che non possa essere eliminato finché non lo decrementiamo esplicitamente alla fine, una volta terminato con esso, usando nt!ObDereferenceObject.

Nota che incrementare manualmente il conteggio dei riferimenti è ridondante, poiché una chiamata a nt!PsLookupProcessByProcessId, se andata a buon fine, lo fa per noi.

Implementare queste correzioni, tuttavia, richiederebbe trovare l'indirizzo di base di ntoskrnl.exe e risolvere i simboli al suo interno attraversando la EAT per trovare i puntatori alle funzioni usando un algoritmo di hashing delle stringhe, il che aumenterebbe drasticamente le dimensioni del payload.

Potrei decidere di implementarlo un giorno o semplicemente scrivere in C e riempire l'output del compilatore :)

Ringrazio Dmytro Oleksiuk(@d_olex) e Paul L.(@am0nsec) per aver segnalato gli errori e anche per aver suggerito la soluzione.

Lavori correlati

  1. Sviluppo di Exploit: Panic! At The Kernel - Payload per il furto di token rivisitati su Windows 10 x64 e bypass di SMEP
  2. Iniziare con lo sfruttamento del kernel di Windows – parte 3 – rubare l'Access Token
  3. [Sfruttamento del kernel] 2: Payload
  4. Shellcode del kernel di Windows - un compendio
  5. Shellcode del kernel di Windows su Windows 10 – Parte 1
  6. Windows Kernel Shellcode : TokenStealer
  7. Escalation dei privilegi del kernel x64
Scarica lo strumento