EternalBlue vía IoT (PoC)

Introducción

No cabe duda de que el mundo está en estado de alerta tras los últimos acontecimientos relacionados con la infección masiva del Ransomware WannaCry2.0, y la adición de características de gusano a una variante de ransomware nos lleva directamente a una nueva era para la ciberseguridad. Sin embargo, muchas veces las medidas que se toman son simplemente parches para la contención inmediata de la amenaza, sin llevar a cabo aquellas que subsanen la vulnerabilidad de forma total.

En el siguiente post se especifica el modo de unir los dos ataques de las amenazas más conocidas, las cuales han tenido incidencia a nivel mundial durante estos últimos meses. Por un lado, la vulnerabilidad en los dispositivos IoT, y por el otro el CVE-17-0144 asignado al exploit EternalBlue.

Premisa del ataque

A pesar de que el gran énfasis en la infección de dispositivos IoT ha recaído en la vulnerabilidad que presentan las credenciales por defecto, lo cierto es que existe otro factor a tener en cuenta. La implementación del protocolo UPnP para el acceso a estos dispositivos, implementando el nateo de la red para la exposición de los puertos 23 o 2323 y permitiendo el acceso desde cualquier punto de Internet al interior de la red. Ese factor, unido al gran número de dispositivos con credenciales por defecto, permiten que sea un blanco perfecto para una gran variedad de malware, entre los que podemos destacar Mirai, Gafgyt o Hajime

Así pues, en este post se va a llevar a cabo la prueba de concepto de la explotación de dispositivos IoT no como objetivo final, sino como vector de entrada a una red para la posterior infección vía EternalBlue, siendo éste utilizado para un DoS.

Elementos de la Red

Para esta prueba de concepto se ha desarrollado una arquitectura basada en servidor CnC, tomando como referencia la de la botnet Mirai.

Estos son los elementos:

  • Bot / Linux 1:
    • Escáner de puertos TELNET desarrollado en el lenguaje Go para una posible cross-compilation en arquitectura ARM que permitiría propagación en dispositivos IoT. Es ejecutado desde una máquina virtual con SO Debian 8.
    • Ejecuta sobre el login las credenciales por defecto de Mirai y, en el caso de acceder con éxito, reporta al servidor CnC mediante una petición POST con las credenciales válidas y la IP vulnerable.
    • Tiene asignada una única dirección IP 10.0.2.4
  • Servidor CnC / Linux 2:
    • Servidor HTTP desarrollado en Go. Es ejecutado desde una máquina virtual con SO Debian 8.
    • Una vez el bot ha contactado con él, éste parsea la información y ejecuta el ataque donde accede con las credenciales correctas. Tras ello, descarga el exploit del servidor dlr, le otorga permisos de ejecución y lo ejecuta.
    • Tiene una única dirección IP 10.0.2.6
  • Servidor dlr /Linux 3:
    • Servidor HTTP desarrollado en Go que proporciona el exploit. Es ejecutado desde un VPS externo.
    • Proporciona los ficheros necesarios para llevar a cabo el ataque a los dispositivos Windows.
    • Tiene asignada una única IP.
  • Dispositivo / Linux 4:
    • Emulación de puerto TELNET vulnerable mediante el honeypot Hontel.Es ejecutado desde una máquina virtual con SO Debian 8.
    • Es el dispositivo que llevará a cabo el escaneo y posterior ataque a la red interna.
    • Tiene asignada dos IP, una de ellas 10.0.2.5 (simulando una IP pública emulando el nateo del protocolo UpnP) y una privada 192.168.1.21.
  • Víctima 1 / Windows 1:
    • Máquina virtual Windows conectada a la misma red que Víctima 2, Víctima 3 y Dispositivo IoT.
    • Tiene el puerto 445/TCP abierto y aplicado el parche de seguridad MS17-10
    • Forma parte de la red local con IP 192.168.1.6
  • Víctima 2 /Windows 2:
    • Máquina virtual conectada a la misma red que Víctima 1 y Víctima 3.
    • Tiene el puerto 445/TCP abierto y es vulnerable a EternalBlue.
    • Forma parte de la red local con IP 192.168.1.9
  • Víctima 3 / Windows 3:
    • Máquina virtual conectada a la red compartida por la Víctima 1, Víctima 2 y Router Mikrotik.
    • Tiene el puerto 445/TCP abierto y es vulnerable a EternalBlue.
    • Forma parte de la red local con IP 192.168.1.12

Otros

Ejecución del ataque

Fase 1: En el caso del escenario real, el bot ejecutaría peticiones TELNET sobre el login de IPs generadas aleatoriamente, utilizando credenciales por defecto de dispositivos IoT. Sin embargo, en la prueba llevada a cabo, se ha forzado a que la IP contra la que se ejecuta el escaneo fuera una máquina virtual con sistema operativo Debian 8.

Fase 2: Una vez el bot encuentra un dispositivo vulnerable, reporta al servidor CnC la IP del dispositivo vulnerable, como también el usuario y contraseña, mediante una petición POST al puerto 8000.

Fase 3: El servidor CnC parsea la información y ejecuta el ataque con la información proporcionada por el bot.

Fase 4: El servidor CnC ejecuta la petición de descarga del exploit desde el dispositivo IoT hacia el servidor dlr, le otorga permisos y lo ejecuta.

Fase 5: El dispositivo IoT lleva a cabo un reconocimiento de su red local y ejecuta el exploit EternalBlue contra todos los equipos con el puerto 445 abierto, provocando la DoS de todos los equipos vulnerables.

Ejemplo de arquitectura de red real

 

Arquitectura de red implementada

 

 

Conclusiones

A pesar de que el alcance del Ransomware WannaCry está relativamente acotado debido al tipo de propagación, pronto se descubrirán nuevos vectores de ataque que permitirán ampliar el alcance de este u otros ransomware. Esta prueba de concepto tiene como objetivo demostrar que, incluso aquellos entornos donde no tengan el puerto 445 expuesto a Internet, podrían llegar a ser infectados si WannaCry mutara su vector de ataque.

En los momentos de la escritura de este artículo, se encuentran más de 5,6 millones de puertos TELNET abiertos a Internet, mientras que, según Shodan, sólo existen 1,2 millones de puertos 445 abiertos. Basándonos en estos datos, si un ciberdelincuente utilizara este nuevo método de propagación, el alcance potencial sería alrededor de cuatro veces mayor.