
Libreria Python e client per manipolazioni e impersonificazioni di token per escalation di privilegi su Windows
PYTMIPE (libreria Python per manipolazione dei token e impersonificazione per escalation dei privilegi) è una libreria Python 3 per manipolare i token di Windows e gestire le impersonificazioni al fine di ottenere maggiori privilegi su Windows. TMIPE è il client Python 3 che utilizza la libreria pytmipe.
Slides "Manipolazione dei token di Windows, impersonificazione ed escalation dei privilegi" (inglese): link
Articolo su MISC 112 (francese): link
| Metodo | Privilegi richiesti | SO (non esaustivo) | Destinatario diretto (massimo) |
|---|---|---|---|
| Creazione e impersonificazione token | nome utente e password | Tutti | amministratore locale |
| Impersonificazione/rubrica token | SeDebugPrivilege | Tutti | nt authority\system |
| Parent PID spoofing (ereditarietà handle) | SeDebugPrivilege | >= Vista | nt authority\system |
| Servizio (SCM) | Amministratore locale (e livello di integrità alto se UAC abilitato) | Tutti | nt authority\system o account di dominio |
| Evento WMI | Amministratore locale (e livello di integrità alto se UAC abilitato) | Tutti | nt authority\system |
| « Printer Bug » LPE | SeImpersonatePrivilege (account di servizio) | Windows 8.1, 10 e Server 2012R2/2016/2019 | nt authority\system |
| RPCSS Service LPE | SeImpersonatePrivilege (account di servizio) | Windows 10 e Server 2016/2019 | nt authority\system |
Il seguente elenco non esaustivo mostra alcune funzionalità implementate nella libreria pytmipe:
ctypes è utilizzato il più possibile. Molte funzionalità di pywin32 sono state risviluppate in pytmipe per evitare l'uso di pywin32 per una migliore portabilità. Tuttavia, il modulo Task Scheduler utilizza ancora pywin32 (più precisamente pythoncom) per mancanza di tempo. Tutti gli altri moduli usano solo ctypes.
Per il client Python (chiamato 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 ([email protected])
positional arguments:
{cangetadmin,printalltokens,printalltokensbyname,printalltokensbypid,printsystemtokens,searchimpfirstsystem,imppid,imptoken,printerbug,rpcss,spoof,impuser,runas,scm}
Scegli un comando principale
cangetadmin Verifica se l'utente può ottenere accesso amministratore
printalltokens Mostra tutti i token accessibili dal thread corrente
printalltokensbyname
Mostra tutti i token accessibili dal thread corrente per nome account
printalltokensbypid Mostra tutti i token accessibili dal thread corrente per pid
printsystemtokens Mostra tutti i token di sistema accessibili dal thread corrente
searchimpfirstsystem
Cerca e impersona il primo token di sistema
imppid Impersona il token primario del pid selezionato e prova ad avviare cmd.exe
imptoken Impersona token primario o di impersonificazione del pid/handle selezionato e prova ad avviare cmd.exe
printerbug Sfrutta il "printer bug" per ottenere una shell di sistema
rpcss Sfrutta "rpcss" per ottenere una shell di sistema
spoof Parent PID Spoofing ("handle inheritance")
impuser Crea processo con credenziali tramite impersonificazione
runas Crea processo con credenziali come runas
scm Crea processo con Service Control Manager
optional arguments:
-h, --help mostra questo messaggio di aiuto ed esce
--version mostra il numero di versione del programma ed esce
Per la libreria Python (chiamata pytmipe), vedere il codice sorgente e gli esempi. Normalmente, ho ben documentato il codice sorgente... La maggior parte delle funzioni è documentata.
Per esempi pyinstaller e standalone, vedere i file nella cartella src/examples/.
Se vuoi sapere come usare la libreria pytimpe, vedere la cartella src/examples per molti esempi.
Per impersonare il primo token system e ottenere un prompt cmd.exe come system dal client Python (tmipe):
python.exe tmipe.py searchimpfirstsystem -vv
Per fare la stessa cosa direttamente con la libreria pytmipe, vedere il file src/examples/searchAndImpersonateFirstSystemToken.py:
from impersonate import Impersonate
from utils import configureLogging