Enumeración SSH y Acceso Basado en Claves

LinuxBeginner
Practicar Ahora

Introducción

Bienvenido a este laboratorio práctico centrado en la enumeración SSH y la explotación de autenticación débil basada en claves. Secure Shell (SSH) es un protocolo fundamental para la administración remota segura, pero las configuraciones erróneas pueden crear vulnerabilidades de seguridad significativas.

En este laboratorio, simulará una prueba de penetración contra un sistema objetivo. Comenzará verificando la conectividad de red, luego utilizará la potente herramienta nmap para enumerar el servicio SSH y recopilar información. A continuación, aprovechará una clave privada proporcionada para explotar una mala configuración común —permisos de archivo inadecuados— para obtener acceso a un shell sin contraseña. Finalmente, explorará el sistema objetivo para localizar y recuperar una bandera oculta.

Al finalizar, comprenderá cómo:

  • Verificar la conectividad de red usando ping.
  • Enumerar un servicio SSH con nmap.
  • Comprender los conceptos básicos de la autenticación SSH basada en claves.
  • Explotar permisos de claves débiles para obtener acceso no autorizado.
  • Navegar por un sistema remoto para encontrar información sensible.

Empecemos.

Verificar Conectividad con el Objetivo mediante Ping

En este paso, comenzará confirmando que su máquina puede comunicarse con el sistema objetivo. El comando ping es una herramienta de diagnóstico de red estándar que envía paquetes ICMP a un host para probar su accesibilidad. Este es el primer y más básico paso en cualquier reconocimiento de red.

Su entorno incluye un sistema objetivo accesible a través del nombre de host target.

Ejecute el siguiente comando en la terminal para enviar cuatro paquetes a target y verificar que está en línea:

ping -c 4 target

Debería ver una respuesta similar a la siguiente, confirmando que el objetivo es accesible y la conexión de red es estable. La dirección IP y los tiempos de respuesta pueden variar ligeramente.

PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.065 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms

--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.065/0.072/0.091/0.011 ms

Con la conectividad confirmada, puede proceder a la siguiente fase de enumeración.

Escanear Puertos Abiertos con Nmap

En este paso, utilizará nmap para escanear el objetivo en busca de puertos abiertos e identificar los servicios que se ejecutan en ellos. Nmap (Network Mapper) es una herramienta crítica para los profesionales de la seguridad, utilizada para el descubrimiento de redes y la auditoría de seguridad.

Realizaremos un escaneo dirigido al puerto 22, el puerto estándar para SSH, para recopilar información de versión y la clave del host.

Ejecute el siguiente comando en su terminal:

nmap -sV -p 22 --script ssh-hostkey target
  • -sV: Habilita la detección de servicios y versiones.
  • -p 22: Especifica que solo se debe escanear el puerto 22.
  • --script ssh-hostkey: Un script del Nmap Scripting Engine (NSE) que recupera las claves de host SSH del objetivo.

La salida será similar a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-19 11:56 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00020s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.78 seconds

El escaneo confirma que el puerto 22/tcp está abierto y ejecutando OpenSSH 8.9p1. Esta información es vital para el siguiente paso, donde intentará conectarse.

Conectar al Objetivo vía SSH

En este paso, utilizará la clave privada SSH proporcionada para conectarse al objetivo. La autenticación basada en claves SSH es generalmente más segura que la autenticación por contraseña, pero depende de que la clave privada se mantenga en secreto y de que los permisos de archivo tanto en el cliente como en el servidor estén configurados correctamente.

Un archivo de clave privada, id_rsa, se ha colocado en su directorio ~/project. Para que SSH utilice una clave privada, sus permisos deben ser restrictivos. Establezca los permisos correctos con el comando chmod:

chmod 600 id_rsa

Este comando asegura que solo el propietario del archivo tenga permisos de lectura y escritura, lo cual es un requisito para la mayoría de los clientes SSH.

Si se le solicita una contraseña a pesar de tener la clave correcta, el problema probablemente sean los permisos del lado del servidor. SSH requiere que el directorio de inicio del usuario no tenga permisos de escritura para el grupo u otros. Verifique los permisos actuales:

docker exec target-container ls -ld /home/testuser

Si ve permisos como drwxrwxrwx (777), corríjalos:

docker exec target-container chmod 755 /home/testuser

Ahora, use la clave privada para conectarse a target como el usuario testuser.

ssh -i id_rsa testuser@target
  • -i id_rsa: Especifica el archivo de identidad (clave privada) a utilizar para la autenticación.

Es posible que se le solicite confirmar la autenticidad del host. Escriba yes y presione Enter.

The authenticity of host 'target (172.17.0.2)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Debido a una mala configuración en el servidor (permisos inseguros en el directorio de inicio del usuario), el servicio SSH aceptará la clave y se le otorgará acceso sin contraseña. Iniciará sesión y verá el prompt de la shell del objetivo.

Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-48-generic x86_64)
...
testuser@target:~$

Ha obtenido acceso a la shell del sistema objetivo con éxito.

Explorar el Sistema Objetivo y Localizar la Bandera (Flag)

En este paso, su objetivo final es encontrar y leer el archivo de la bandera (flag). Ahora que tiene una shell en el sistema objetivo, puede explorar su sistema de archivos como si fuera una máquina local. Esta es la fase de post-explotación, donde un atacante busca datos valiosos.

Actualmente se encuentra en el directorio de inicio de testuser (/home/testuser). Utilice el comando ls para listar los archivos y directorios en esta ubicación.

ls

Verá el contenido del directorio de inicio, que debería incluir el archivo de la bandera.

testuser@target:~$ ls
flag.txt
testuser@target:~$

Ha localizado flag.txt. Ahora, utilice el comando cat para mostrar su contenido y revelar la bandera.

cat flag.txt

La terminal imprimirá el valor de la bandera.

testuser@target:~$ cat flag.txt
labex{ssh_k3y_b4s3d_acc3ss_fl4g}
testuser@target:~$

¡Felicitaciones! Ha enumerado con éxito el servicio SSH, explotado una vulnerabilidad de autenticación basada en claves y capturado la bandera. Copie el valor de la bandera para completar el laboratorio.

Para desconectarse del objetivo, escriba exit y presione Enter.

Resumen

En este laboratorio, ejecutó con éxito un ataque simulado dirigido a un servicio SSH mal configurado. Avanzó a través de las etapas clave de una prueba de penetración, desde el reconocimiento inicial hasta la post-explotación.

Aprendió a:

  • Utilizar ping para verificar que un objetivo está en línea.
  • Emplear nmap para realizar un escaneo detallado de un puerto SSH, identificando la versión del servicio.
  • Comprender los requisitos del lado del cliente para la autenticación basada en claves SSH, incluyendo los permisos adecuados para la clave privada (chmod 600).
  • Explotar una vulnerabilidad del lado del servidor relacionada con permisos de archivo inseguros para obtener acceso no autorizado a la shell.
  • Navegar por un sistema de archivos remoto para localizar y recuperar una bandera (flag).

Este ejercicio demuestra un principio de seguridad crítico: la seguridad es una cadena, y un único eslabón débil —en este caso, permisos de directorio inadecuados— puede comprometer todo el sistema, incluso cuando se utilizan mecanismos de autenticación sólidos como las claves SSH. Asegúrese siempre de que sus configuraciones SSH y los permisos de archivo estén reforzados según las mejores prácticas de seguridad.