Saltando de un equipo a otro con la autenticación por llaves del SSH

Munchas veces nos encontraremos en un proceso de auditoria donde conseguimos acceso por medio de un fallo remoto en algún servicio y queremos poder acceder a otros equipos dentro de la red que no estaban tan débiles en un principio, lo típico es buscar en el .bash_history del usuario para ver qué cosas ha hecho y con qué equipos han interactuado, que archivos han tocado etc...

Es muy común ver scripts en cron que hacen Backups por ssh sin necesidad de contraseñas, porque tienen configurado la autenticación por llaves, para confirmar si esto es así, revisamos la carpeta .ssh y podemos encontrar lo siguiente:

  • .ssh/authorized_keys - Archivo con la firma de la clave pública de cualquier cliente autorizado
  • .ssh/id_rsa - Guarda la clave privada para el cliente
  • .ssh/id_rsa.pub - Guarda la clave pública para el cliente
  • .ssh/known_hosts: contiene una lista de firmas de hosts de hosts a las que el cliente se ha conectado previamente

Lo siguiente es probar a cuáles del host conocidos, permiten la autenticación con estas llaves, encontré un scriptsito que automatiza el proceso y es muy útil, la verdad no recuerdo de donde lo he tomado, pero siempre lo tengo a mano para automatizar esta tarea.

for i in $(awk -F ‘[ ,]’ ‘{print $1}’ known_hosts);do echo -n “$i “;ping -n $i -c 1 2>&1 >/dev/null && ssh $i “echo -n yes” ;echo; done

Básicamente lo que hace el script es revisar los host conocidos, les hace un ping y luego intenta conectarse a ellos, si la conexión es exitosa, te imprime la ip y un "yes" delante.

Espero que les sirva comunidad.

Accede o Regístrate para comentar.