
Explotar el driver Win10Pcap para habilitar algunos privilegios en nuestro token de proceso ( escalada local de privilegios )
Crédito a
https://twitter.com/R00tkitSMM ([email protected]) nombre de usuario de Telegram : https://telegram.me/firozi
Hace unos días encontré una vulnerabilidad en el controlador win10pcap que puede llevar a una escalada de privilegios. Reporté la vulnerabilidad y ahora el error está corregido :
así que decidí publicar un exploit de muestra
Win10Pcap es una nueva biblioteca de captura de paquetes Ethernet basada en WinPcap. A diferencia del WinPcap original, Win10Pcap es compatible con el modelo de controladores NDIS 6.x para funcionar de manera estable con Windows 10. Win10Pcap también admite la captura de etiquetas VLAN IEEE802.1Q.
así que si instalas Wireshark en Windows 10 necesitas esta mierda :)
El controlador en modo kernel de Win10Pcap no comprobaba las direcciones virtuales que se pasan desde el modo de usuario; el IOCTL utiliza Neither Buffered Nor Direct I/O sin ProbeForWrite para validar la dirección pasada
necesitas encontrar el nombre exacto del dispositivo en tiempo de ejecución para enviar el IOCTL; un nombre de dispositivo codificado no conduce al código vulnerable
El manejador de IOCTL escribe una cadena en la dirección pasada; la cadena es algo como "Global\WTCAP_EVENT_3889023063_1"
Había muchas maneras de explotar esta vulnerabilidad; decidí establecer privilegios en el TOKEN del proceso sobrescribiendo _SEP_TOKEN_PRIVILEGES
Sobrescribir el token en la dirección 0x034 con la cadena "Global\WTCAP_EVENT" puede establecer SeDebugPrivilege sin corromper campos sensibles
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
