
Exploiter le pilote Win10Pcap pour activer certains privilèges dans le jeton de notre processus (élévation de privilèges locale)
crédit à
https://twitter.com/R00tkitSMM ([email protected]) telegram username : https://telegram.me/firozi
Il y a quelques jours, j'ai trouvé une vulnérabilité dans le pilote win10pcap qui peut mener à une élévation de privilèges. J'ai signalé la vulnérabilité et le bug est maintenant corrigé :
j'ai donc décidé de publier un exemple d'exploit
Win10Pcap est une nouvelle bibliothèque de capture de paquets Ethernet basée sur WinPcap. Contrairement au WinPcap d'origine, Win10Pcap est compatible avec le modèle de pilote NDIS 6.x pour fonctionner de manière stable avec Windows 10. Win10Pcap prend également en charge la capture des tags VLAN IEEE802.1Q.
donc si vous installez Wireshark sur Windows 10, vous avez besoin de cette merde :)
Le pilote en mode noyau de Win10Pcap ne vérifiait pas les adresses virtuelles passées depuis le mode utilisateur. L'IOCTL utilise Neither Buffered Nor Direct I/O sans ProbeForWrite pour valider l'adresse passée.
Vous devez trouver le nom de périphérique exact à l'exécution pour envoyer l'IOCTL. Un nom de périphérique codé en dur ne conduit pas au code vulnérable.
Le gestionnaire d'IOCTL écrit une chaîne à l'adresse passée, la chaîne ressemble à "Global\WTCAP_EVENT_3889023063_1".
Il y avait de nombreuses façons d'exploiter cette vulnérabilité. J'ai décidé de définir un privilège dans le TOKEN du processus en écrasant _SEP_TOKEN_PRIVILEGES.
Écraser le token à l'adresse 0x034 avec la chaîne "Global\WTCAP_EVENT" peut définir SeDebugPrivilege sans corrompre les champs 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
