
Async BOF zum automatischen Extrahieren oder Erneuern von Kerberos-TGTs auf einem Zielsystem.
Dieses Repository enthält zwei asynchrone Beacon-Objektdateien (BOF). Die erste, tgt-monitor, überwacht das System auf Kerberos-Anmeldeereignisse und weckt den Agenten auf, sobald ein neues Kerberos-TGT erfasst wird. Ähnlich wie Rubeus' monitor-Befehl läuft dieser BOF unbegrenzt und überprüft periodisch den LSA-Ticket-Cache des Systems. Wenn ein neues TGT erkannt wird, werden die Ticket-Metadaten ausgegeben und ein base64-kodierter Kirbi-Blob ausgegeben, der für Lateral-Movement-Angriffe per Pass-the-Ticket verwendet werden kann. Der zweite, tgt-renew, verlängert automatisch TGTs auf dem System, wenn deren verbleibende Lebensdauer unter einem festgelegten Schwellenwert (z. B. 15 Minuten) liegt.
[!Important] Die BOFs in diesem Repository erfordern asynchrone Objektdatei-Ladefähigkeiten. Diese Funktionalität wird durch das Conquest-Framework bereitgestellt.
Beide BOFs müssen im Kontext von NT AUTHORITY\SYSTEM ausgeführt werden. Die Berechtigungen werden nach derselben Logik überprüft.
SeImpersonatePrivilege). Der BOF wird beendet, wenn auch dies keinen SYSTEM-Zugriff ergibt.Die folgenden Schritte werden in einer Schleife wiederholt, bis der BOF über das Stopp-Ereignis abgebrochen wird. Ein benutzerdefiniertes Intervall legt die Verzögerung zwischen den Abfragen fest.
--user-Argument angegeben wurde, werden nur Sitzungen mit diesem Benutzernamen berücksichtigt.BeaconWakeup()-Aufruf, um den Agenten zu zwingen, sich zu melden und die Ausgabe zurückzugeben.
--user-Argument angegeben wurde, werden nur Sitzungen mit diesem Benutzernamen berücksichtigt.RenewUntil-Zeit überschritten hat, wird es als abgelaufen markiert und eine erneute Authentifizierung ist erforderlich.BeaconWakeup()-Aufruf.
Der Ticket-Verlängerungsprozess umfasst die folgenden Schritte:
Dieses Repository enthält ein Conquest-Modul, das die folgenden zwei Befehle implementiert.
Der tgt-monitor-BOF warnt, wenn neue TGTs erfasst werden, und gibt sie als Base64-kodierten Blob zurück. Die folgenden Argumente müssen an die Objektdatei übergeben werden:
| Name | Typ | Beschreibung |
|---|---|---|
interval | int | Zeitüberschreitung zwischen den Prüfungen in Sekunden. |
targetUsers | string | Groß-/Kleinschreibung-unabhängige, kommagetrennte Liste der Zielbenutzernamen. Wenn dieses Feld gesetzt ist, werden nur TGTs für die angegebenen Benutzer abgerufen. Andernfalls werden TGTs für alle Benutzer gesammelt. Beachten Sie, dass Computerkonten mit $ enden müssen. |
Usage: tgt-monitor [--interval interval] [--user user]
Example: tgt-monitor --interval 5 --user DC01$
Optional arguments:
--interval interval INT Polling interval in seconds (default: 60).
--user user STRING Comma-separated list of target usernames (default: all users).

Das kodierte Ticket kann direkt mit Rubeus.exe ptt /ticket:<base64> oder impacket-ticketConverter für weitere Lateral-Movement-Angriffe verwendet werden, wie im folgenden Screenshot gezeigt. In Conquest ist es möglich, den ptt-Befehl zu verwenden, um das Ticket direkt in die aktuelle Anmeldesitzung zu injizieren und den Zielbenutzer zu impersonieren.

Der tgt-renew-BOF verlängert automatisch Tickets, die bald ablaufen, bis sie nicht mehr verlängert werden können. Die folgenden Argumente müssen an die Objektdatei übergeben werden:
| Name | Typ | Beschreibung |
|---|---|---|
interval | int | Zeitüberschreitung zwischen den Prüfungen in Sekunden. |
threshold | int | Verlängerungsschwellenwert in Minuten. Das Ticket wird verlängert, wenn die Zeit bis zum EndTime unter diesem Schwellenwert liegt. |
targetUsers | string | Groß-/Kleinschreibung-unabhängige, kommagetrennte Liste der Zielbenutzernamen. Wenn dieses Feld gesetzt ist, werden nur TGTs für die angegebenen Benutzer verlängert. Andernfalls werden TGTs für alle Benutzer verlängert. Beachten Sie, dass Computerkonten mit $ enden müssen. |
targetLuids | string | Groß-/Kleinschreibung-unabhängige, kommagetrennte Liste der Ziel-LUIDs. Wenn dieses Feld gesetzt ist, werden nur TGTs für die angegebenen LUIDs verlängert. |
Usage: tgt-renew [--interval seconds] [--threshold minutes] [--user user] [--luid luid]
Example: tgt-renew --luid 0x3e4 --interval 300 --threshold 30