## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MISTYFIR-CVE-2024-21338-EXPLOIT
# CVE-2024-21338 Exploit
## Descrizione del progetto
Questo è un POC per CVE-2024-21338, una vulnerabilità di escalation dei privilegi nel driver AppLocker di Windows (appid.sys), sfruttata come 0day dal gruppo Lazarus per l'escalation dei privilegi locale su Windows.
## Contesto della vulnerabilitĂ
CVE-2024-21338 è una vulnerabilità di escalation dei privilegi divulgata nel Patch Tuesday di Microsoft del 13 febbraio 2024, sfruttata dal gruppo hacker Lazarus per ottenere accesso al kernel e distribuire il rootkit FudModule.
La vulnerabilità risiede nel codice di controllo `0x22A018` del driver appid.sys: un utente malintenzionato può inviare richieste IOCTL appositamente predisposte per attivare la vulnerabilità , ottenendo una chiamata di callback arbitraria e, infine, l'accesso in lettura e scrittura al kernel.
## Principio della vulnerabilitĂ
### Posizione della vulnerabilitĂ

La vulnerabilitĂ si trova nella funzione `AppHashComputeImageHashInternal` del driver appid.sys. `AipDeviceIoControlDispatch`, quando elabora la richiesta `0x22A018`, non controlla correttamente `PreviousMode`, consentendo a un processo in modalitĂ utente di attivare funzioni di callback in modalitĂ kernel.
### Processo di sfruttamento
1. **Ottenere i privilegi di Local Service** : la vulnerabilitĂ richiede i privilegi di Local Service per accedere al dispositivo `\\Device\\AppID`, quindi lo strumento individua e impersona innanzitutto un processo Local Service.
2. **Costruire la richiesta IOCTL** : lo strumento costruisce una richiesta IOCTL speciale, contenente un puntatore a funzione controllabile e i relativi parametri.
3. **Attivare la vulnerabilitĂ ** : inviando la richiesta IOCTL, si attiva la vulnerabilitĂ , chiamando una funzione gadget nel kernel che modifica il campo `PreviousMode` del thread corrente, portandolo da modalitĂ utente a modalitĂ kernel.
4. **Ottenere accesso in lettura/scrittura al kernel** : dopo aver modificato `PreviousMode`, il processo in modalità utente può utilizzare `NtReadVirtualMemory` e `NtWriteVirtualMemory` per leggere e scrivere memoria arbitraria del kernel.
## Struttura del progetto
## Istruzioni per l'uso
### Compilazione
Utilizzare Visual Studio 2026 per compilare il progetto. Sono richiesti Windows SDK e un compilatore C++.
### Esecuzione
1. Su un sistema Windows non aggiornato (ad esempio Windows 10 1709), abilitare il servizio Application Identity.
2. Eseguire il file eseguibile compilato con privilegi di amministratore.
3. Lo strumento troverĂ automaticamente un processo Local Service e lo impersonerĂ .
4. Lo strumento caricherĂ il driver appid.sys e costruirĂ una richiesta IOCTL per attivare la vulnerabilitĂ .
5. Una volta attivata la vulnerabilitĂ , lo strumento chiederĂ di inserire l'indirizzo del kernel da modificare e il nuovo valore, consentendo la modifica della memoria del kernel.
## Disclaimer
Questo progetto è solo per scopi educativi e di ricerca, non deve essere utilizzato per scopi illegali.
## Riferimenti
1. Windows AppLocker Driver Elevation of Privilege (CVE-2024-21338)
2. Lazarus and the FudModule Rootkit: Beyond BYOVD with an Admin-to-Kernel Zero-Day
3. Microsoft Security Advisory CVE-2024-21338