Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
PINKPANTHER — Созданный вручную шеллкод режима ядра Windows x64 для кражи токенов | Kitploit
Инструменты/GitHubGitHub/winterknife/pinkpanther
Повышение привилегийШелл-кодПост-эксплуатацияРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubwinterknife/pinkpanther

PINKPANTHER

Созданный вручную шеллкод режима ядра Windows x64 для кражи токенов

Репозиторий
5176172 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

PINKPANTHER

Краткое описание

Windows x64 собственноручно написанный шеллкод режима ядра для замены основного токена доступа выполняющегося процесса на токен процесса SYSTEM для повышения привилегий (EoP).

Поддерживаемые версии ОС

  • Windows 7/Windows Server 2008 R2 Build 7601
  • Windows 8/Windows Server 2012 Build 9200
  • Windows 8.1/Windows Server 2012 R2 Build 9600
  • Windows 10 1507/TS1 Build 10240
  • Windows 10 1511/TS2 Build 10586
  • Windows 10 1607/RS1/Windows Server 2016 Build 14393
  • Windows 10 1703/RS2 Build 15063
  • Windows 10 1709/RS3 Build 16299
  • Windows 10 1803/RS4 Build 17134
  • Windows 10 1809/RS5/Windows Server 2019 Build 17763
  • Windows 10 1903/19H1 Build 18362
  • Windows 10 1909/19H2 Build 18363
  • Windows 10 2004/20H1 Build 19041
  • Windows 10 2009/20H2 Build 19042
  • Windows 10 2104/21H1 Build 19043
  • Windows 10 2110/21H2 Build 19044

Сборка и развёртывание

Предварительные требования для сборки этого проекта:

  1. Visual Studio 2019(any edition will do fine)
  2. Windows 10 SDK, version 2004
  3. Windows 10 WDK, version 2004
  4. Python3

Здесь следует отметить, что можно обойтись и просто наличием ассемблера (в этом проекте используется MASM), поскольку технически это всё, что нужно.

После установки вышеперечисленного достаточно открыть решение в Visual Studio и собрать его для целевой платформы x64.

После успешной сборки бинарные файлы можно найти в каталоге Bin в соответствующем подкаталоге разрядности.

Как вариант, можно загрузить готовый к развёртыванию позиционно-независимый шеллкод из Releases.

Пожалуйста, НЕ пытайтесь развернуть полезную нагрузку на машине, которая нужна вам для работы, если вы не уверены в том, как она работает.

За дополнительной информацией обращайтесь к документации Microsoft.

Тестирование

Для целей тестирования я настоятельно рекомендую использовать flare-kscldr для развёртывания шеллкода режима ядра на тестовой VM и руководство CodeMachine по настройке системы для разработки и отладки ядра для настройки Hyper-V Guest VM с полной поддержкой отладки ядра.

При желании можно также рассмотреть автоматизацию процесса с помощью kdbg-driver-vagrant, чтобы быстро поднять тестовую VM с полной отладкой ядра, используя Vagrant.

Скриншоты

demo

Предостережения

Как мне указал Дмитрий Олексюк(@d_olex), в коде есть довольно явные состояния гонки, связанные конкретно с:

  1. Ручным обходом структур nt!_EPROCESS, связанных между собой через двунаправленный циклический список, без использования какого-либо примитива синхронизации/механизма блокировки
  2. Небезопасными ссылками на эти объекты процессов во время их изменения

В настоящее время в них отсутствует какая-либо защита от изменений, которые могут происходить, пока мы с ними работаем.

Проблема ли это? Да, состояния гонки всегда проблематичны и могут вызывать всевозможное неопределённое поведение/неприятные багчеки.

Повлияет ли использование этой полезной нагрузки на стабильность моего эксплойта? Возможно.

Ну и каково исправление? Исправление состоит из двух шагов.

Часть 1 включает получение блокировки типа ожидания, такой как pushlock — nt!PspActiveProcessLock (указатель на pushlock) для эксклюзивного доступа с помощью nt!ExAcquirePushLockExclusive перед обходом списка процессов (обычную доставку APC ядра необходимо предварительно отключить) и nt!ExReleasePushLockExclusive для снятия блокировки после завершения работы со списком, после чего следует снова включить обычную доставку APC ядра.

Однако, поскольку эта глобальная переменная не экспортируется ядром nt, гораздо более корректным и безопасным подходом было бы использование nt!ZwQuerySystemInformation API с SYSTEM_INFORMATION_CLASS == SystemProcessInformation для поиска PID по ImageName и nt!PsLookupProcessByProcessId для получения VA структуры nt!_EPROCESS по PID.

Если вам, однако, любопытно, как ядро выполняет первое, я предложил бы вам посмотреть на nt!PsGetNextProcess в дизассемблере.

Часть 2 включает безопасные ссылки на объекты с помощью семейства nt!ObReferenceObject API для увеличения счётчика ссылок на объект процесса, чтобы его нельзя было удалить, пока мы явно не уменьшим его в конце после завершения работы с ним с помощью nt!ObDereferenceObject.

Обратите внимание, что ручное увеличение счётчика ссылок избыточно, поскольку вызов nt!PsLookupProcessByProcessId, если он успешен, делает это за нас.

Однако реализация этих исправлений потребовала бы поиска базового адреса ntoskrnl.exe и разрешения символов в нём путём обхода EAT для поиска указателей на функции с использованием какого-либо алгоритма хеширования строк, что в совокупности значительно увеличило бы размер полезной нагрузки.

Возможно, я когда-нибудь решу это реализовать или просто напишу на C и заспамлю вывод компилятора :)

Спасибо Дмитрию Олексюку(@d_olex) и Полу Л.(@am0nsec) за указание на ошибку(и) и предложение исправления.

Связанные работы

  1. Exploit Development: Panic! At The Kernel - Token Stealing Payloads Revisited on Windows 10 x64 and Bypassing SMEP
  2. Starting with Windows Kernel Exploitation – part 3 – stealing the Access Token
  3. [Kernel Exploitation] 2: Payloads
  4. Windows Kernel Shellcodes - a compendium
  5. Windows Kernel Shellcode on Windows 10 – Part 1
  6. Windows Kernel Shellcode : TokenStealer
  7. x64 Kernel Privilege Escalation
Скачать инструмент