
Эксплуатация драйвера Win10Pcap для включения некоторых привилегий в токене нашего процесса (локальное повышение привилегий)
автор:
https://twitter.com/R00tkitSMM ([email protected]) telegram username : https://telegram.me/firozi
некоторое время назад я обнаружил уязвимость в драйвере win10pcap, которая может привести к повышению привилегий. Я сообщил об уязвимости, и теперь ошибка исправлена:
поэтому я решил опубликовать пример эксплойта
Win10Pcap — это новая библиотека захвата Ethernet-пакетов на основе WinPcap. В отличие от оригинального WinPcap, Win10Pcap совместим с моделью драйверов NDIS 6.x для стабильной работы с Windows 10. Win10Pcap также поддерживает захват тегов IEEE802.1Q VLAN.
так что если вы устанавливаете Wireshark на Windows 10, вам нужно это дерьмо :)
Драйвер режима ядра Win10Pcap не проверял виртуальные адреса, передаваемые из пользовательского режима; IOCTL использует метод Neither Buffered Nor Direct I/O без ProbeForWrite для проверки переданного адреса
вам нужно найти точное имя устройства во время выполнения, чтобы отправить IOCTL; жёстко заданное имя устройства не приводит к уязвимому коду
Обработчик IOCTL записывает строку в переданный адрес; строка выглядит примерно так: "Global\WTCAP_EVENT_3889023063_1"
Существовало много способов эксплуатации этой уязвимости; я решил установить привилегию в TOKEN процесса, перезаписав _SEP_TOKEN_PRIVILEGES
Перезапись токена по адресу 0x034 строкой "Global\WTCAP_EVENT" позволяет установить SeDebugPrivilege без повреждения чувствительных полей
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
