
Exploit del driver Win10Pcap per abilitare alcuni privilegi nel token del nostro processo (escalation locale dei privilegi)
crediti a
https://twitter.com/R00tkitSMM ([email protected]) nome utente telegram : https://telegram.me/firozi
qualche giorno fa ho trovato una vulnerabilità nel driver Win10Pcap che può portare a un'escalation dei privilegi. Ho segnalato la vulnerabilità e ora il bug è stato corretto :
così ho deciso di pubblicare un exploit di esempio
Win10Pcap è una nuova libreria di cattura pacchetti Ethernet basata su WinPcap. A differenza dell'originale WinPcap, Win10Pcap è compatibile con il modello di driver NDIS 6.x per funzionare stabilmente con Windows 10. Win10Pcap supporta inoltre la cattura dei tag VLAN IEEE802.1Q.
quindi se installi Wireshark su Windows 10 ti serve questa merda :)
Il driver in modalità kernel di Win10Pcap non controllava gli indirizzi virtuali passati dalla modalità utente; l'IOCTL usa Neither Buffered Nor Direct I/O senza ProbeForWrite per validare l'indirizzo passato
devi trovare il nome esatto del dispositivo a runtime per inviare l'IOCTL; un nome di dispositivo hardcoded non porta al codice vulnerabile
L'handler IOCTL scrive una stringa all'indirizzo passato; la stringa è qualcosa come "Global\WTCAP_EVENT_3889023063_1"
c'erano molti modi per sfruttare questa vulnerabilità; ho deciso di impostare i privilegi nel TOKEN del processo sovrascrivendo _SEP_TOKEN_PRIVILEGES
sovrascrivendo il token all'indirizzo 0x034 con la stringa "Global\WTCAP_EVENT" è possibile impostare SeDebugPrivilege senza corrompere campi sensibili
81687cf8 cc int 3
2: kd> dt nt!_TOken
+0x000 TokenSource : _TOKEN_SOURCE
+0x010 TokenId : _LUID
+0x018 AuthenticationId : _LUID
+0x020 ParentTokenId : _LUID
+0x028 ExpirationTime : _LARGE_INTEGER
+0x030 TokenLock : Ptr32 _ERESOURCE
+0x034 ModifiedId : _LUID
+0x040 Privileges : _SEP_TOKEN_PRIVILEGES
+0x058 AuditPolicy : _SEP_AUDIT_POLICY
