sábado, septiembre 20, 2014

Comprobar el certificado digital SSH por canal paralelo

Durante este mes se ha publicado en la lista de Bugtraq una pequeña herramienta vía web que realiza una comprobación paralela a la firma del certificado que se sirve por SSH. Esto es útil cuando hablamos de una primera conexión, en la que el certificado aún no está guardado y pineado en la base de datos local del cliente y, por tanto, no puede garantizarse que sea el servidor correcto. Un atacante podría hacer un man in the middle y entregar otro certificado digital.

Figura 1: Error de reconocimiento de clave en conexión SSH

Lo que propone la herramienta es tener en un servidor web una segunda verificación, que por medio de una comprobación por medio de otro canal se compruebe el certificado. Si el fingerprinting de los certificados no es el mismo, se estaría ante un ataque de man in the middle y habría que evitar realizar esa conexión. Esa disponible es CheckSSH.com y lo único que hay que hacer es enviarle la dirección IP o el nombre de dominio del servidor que se quiere comprobar, y la herramienta devuelve el fingreprinting que ella ve.

Figura 2: Servicio Check SSH

En el debate se planteaban muchas cosas, como por ejemplo que el atacante tuviera un man in the middle en el canal de conexión a la web, además de en el canal de la conexión al servidor SSH, que hubiera un bug en el servidor web donde se aloja este código de comprobación o simplemente que los que gestionan este servicio sean los que están haciendo el man in the middle. En cualquier caso de estos, la víctima tendría una falsa sensación de seguridad que ayudaría al éxito del ataque.

Figura 3: Código fuente del servicio CheckSSH para que lo pongas en tu servidor

Con el objeto de disipar las dudas, el servicio lleva HTTPs con un certificado de validación extendida y podrías hacer un Certifiacte Pinning con él. Pero el 100% de certeza, tal y como se plantea el mundo hoy en día es casi imposible. No obstante, han publicado el código fuente del servicio que corre en la web, así que puedes montártelo en tu propio servidor y diseñarte el esquema de seguridad que más se adapte a tus requerimientos gestionándolo tú mismo.

Saludos Malignos!

3 comentarios:

Anónimo dijo...

Por lo que veo también es factible hacerlo desde la terminal con las herramientas que la suite ssh ofrece como dice esta web.

https://www.busindre.com/clave_publica_fingerprint_de_servidor_ssh

Desde luego algo de mucha utilidad.

Saludos desde Bélgica

Guille dijo...

Interesante, también escogería la opción de montarlo en local.

Anónimo dijo...

Gracias, interesante artículo.

https://tools.ietf.org/html/rfc4255
https://spaces.internet2.edu/display/~benchoff@vt.edu/DNSSEC+and+SSH+Key+Fingerprints

También es posible comprobar los ssh fingerprint mediante dns.
A modo resumido, se publican unos registros dns de tipo SSHFP (SSH fingerprint) con los fingerprint de los servidores que se quieran validar.

Después, en el cliente se utiliza la opción -oVerifyHostKeyDNS.

Si además se está usando dnssec es todavía mas seguro.

Saludos

Entrada destacada

Infraestructuras Críticas y Sistemas Industriales: Auditorías de Seguridad y Fortificación de @0xWord

Desde hoy está disponible a la venta un nuevo libro de 0xWord centrado en la seguridad de los Sistemas Industriales y las Infraestructuras...

Entradas populares