🔥Adquiere tu membresía:  acceso a todos los cursos, videos eliminados, contenidos protegidos, manuales y más. >> Ver Más

Cómo manipular y suplantar tokens para escalar privilegios en Windows con PYTMIPE

PYTMIPE (abreviatura de (PYthon library for Token Manipulation and Impersonation for Privilege Escalation). PYTMIPE es una biblioteca de Python 3 para manipular tokens de Windows y gestionar suplantaciones con el fin de obtener más privilegios en Windows. TMIPE es el cliente de Python 3 que usa la biblioteca pytmipe.

Contenido

  • Un cliente de Python: tmipe (python3 tmipe.py)
  • Una biblioteca de Python: pytmipe. Útil para incluir este proyecto en otro
  • Ejemplos de pytinstaller, para obtener archivos exes independientes

Principales características

MétodoPrivilegio (s) requerido (s)Sistema operativo (no exhaustivo)Objetivo directo (máximo)
Creación y suplantación de tokensUsuario y ContraseñaTodosAdministrador local
Suplantación de identidad/robo de tokensSeDebugPrivilegeTodos            nt authority\system
Suplantación de PID principal (controlar la herencia)SeDebugPrivilege>= Vista            nt authority\system
Servicio (SCM)Administrador local (y alto nivel de integridad si UAC está habilitado)Todosnt authority\system o cuenta de dominio
WMI EventAdministrador local (y alto nivel de integridad si UAC está habilitado)Todosnt authority\system
“Printer Bug” LPESeImpersonatePrivilege (cuenta de servicio)Windows 8.1, 10 y Server 2012R2/2016/2019nt authority\system
RPCSS Service LPESeImpersonatePrivilege (cuenta de servicio)Windows 10 y Server 2016/2019nt authority\system

Capacidades

La siguiente lista no exhaustiva muestra algunas características implementadas en la biblioteca de pytmipe:

  • Gestión de tokens y privilegios:
    • Obtener, habilitar o deshabilitar privilegios en el token para el hilo actual o remoto
    • Poder obtener información de token local o remoto
    • Obtener un token efectivo para el hilo actual (suplantación o token principal)
  • Obtener mucha información sobre los tokens seleccionados:
    • Tipo de elevación, tipo de suplantación, token vinculado con detalles, SID, ACL, grupos predeterminados, grupo principal, propietario, privilegios, fuente
  • Enumerar todos los tokens que son accesibles (tokens primarios y de suplantación) desde el hilo actual:
    • 2 métodos diferentes implementados: método “thread” y método handle (favorito)
    • Comprobar si se puede suplantar el token
    • Obtener información sobre cada token (tipo de elevación, tipo de suplantación, token vinculado, SID, etc.)
    • Obtener todos los tokens a los que se puede acceder por nombre de cuenta (SID)
  • Suplantar un token o usuario:
    • Hacer un token y suplantar (requiere credenciales de usuario)
    • Suplantación/robo de token (se requieren privilegios específicos): suplantar un token elegido
    • Crear proceso con un token (se requieren privilegios específicos): suplantar un token elegido y crear un nuevo proceso
    • Suplantar el primer token del nt authority\system encontrado
    • Suplantar el token primario del proceso remoto con PID

Métodos de escalada de privilegios:

  • Suplantación de PID principal: herencia de control
    • Administrador de servicios mediante comando directo o suplantación de tuberías con nombre: administrador local para el nt authority\system (u otra cuenta con privilegios)
    • Programador de tareas mediante comando directo o suplantación de tuberías con nombre: administrador local al nt authority\system
    • WMI Job mediante comando directo o suplantación de tubería con nombre: administrador local al nt authority\system
    • Printer Bug: SeImpersonatePrivilege al nt authority\system
    • RPCSSSeImpersonatePrivilege al nt authority\system
    • Volver a habilitar los privilegios mediante la programación de tareas y la suplantación de tuberías con nombre

Dependencias

ctypes se utiliza un máximo de tiempo. Muchas características de pywin32 se han vuelto a desarrollar en pytmipe para evitar el uso de pywin32 para una mejor portabilidad. Sin embargo, el módulo del Programador de tareas todavía usa pywin32 (más precisamente pythoncom) por falta de tiempo. Todos los demás módulos usan solo ctypes.

Cómo utilizarlo

Para el cliente de Python (llamado tmipe):

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 (quentin.hardy@protonmail.com)

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 la biblioteca de Python (llamada pytmipe), debes consultar el código fuente y los ejemplos. Normalmente, está bien documentado el código fuente … La mayoría de las funciones están documentadas.

Para obtener ejemplos de pyinstaller e independientes, debes consultar los archivos en las carpetas src/examples/.

Ejemplos

Este contenido se encuentra parcialmente protegido

Deja un comentario

Adquiere tu Membresía Anual Wiser

Adquiere tu Membresía Anual Wiser y adquiere grandes beneficios

Más información