Muchas personas buscan mejorar la seguridad de sus hogares u oficinas mediante la instalación de cámaras “inteligentes”. Con una conexión directa a Internet, la transmisión de esas cámaras está disponible en cualquier momento y a solo unos pocos clics. Sin embargo, esta herramienta tan útil puede convertirse rápidamente en un dolor de cabeza si la cámara sufre algún tipo de fallo de seguridad que deja la puerta abierta al ingreso de actores no autorizados. Tal como lo demostraron investigadores de ESET, este es el caso de la cámara en la nube D-Link DCS-2132L, que permite a un atacante no solo interceptar y ver los registros de video, sino también manipular el firmware de los dispositivos.

El asunto más serio con la cámara D-Link DCS-2132L es la transmisión del video se produce sin cifrado, y corre sin cifrado entre ambas conexiones –entre la cámara y la nube y entre la nube y la aplicación para monitorear la cámara que tiene el cliente- lo que ofrece un escenario propicio para realizar un ataque de Man in the Middle (MitM) y permitir que un intruso espíe lo que las cámaras transmiten.

Figura 1 - Imagen ilustra la vulnerabilidad en la transmisión de datos y posible vector de ataque "Man in the Middle"

La aplicación de monitoreo y la cámara se comunican a través de un servidor proxy en el puerto 2048, utilizando un túnel TCP basado en un protocolo de enrutamiento personalizado de D-Link. Desafortunadamente, solo parte del tráfico que corre a través de estos túneles es cifrado, dejando parte de la información más sensible –como la solicitud de la IP de la cámara y direcciones MAC, información de la versión, transmisiones de audio y video, así como otra información de la cámara- sin cifrado.

La vulnerabilidad responsable de esto y algunos otros temas descritos anteriormente en este artículo pueden explicarse por una condición de dentro del archivo request.c (parte del código fuente del servidor web de código abierto boa personalizado en D-Link) que gestiona las solicitudes HTTP a la cámara. Todas las solicitudes HTTP de 127.0.0.1 son elevadas a nivel administrador, garantizando a un potencial atacante acceso completo al dispositivo.

Figura 2 - Condición en el código fuente del servidor web boa. Todas las solicitudes entrantes son elevadas a nivel de administrador

Interceptando transmisiones de audio y video

Un ataque del tipo “Man in the Middle” en el que un criminal intercepta tráfico de red entre la aplicación de monitoreo y la nube o entre la nube y la cámara, puede utilizar los datos transmitidos de la conexión TCP en el puerto servidor (nube) 2048 para ver las solicitudes HTTP de los paquetes de audio y video. Esto puede ser reconstruido y reproducido por el atacante, en cualquier momento, para obtener la actual transmisión de audio o video de esa cámara. En nuestros experimentos, obtuvimos el video transmitido en dos formatos crudos (RAW), más específicamente M-JPEG y H.264.

Para reconstruir la transmisión de video, se necesitan seguir determinados pasos (los cuales pueden ser fácilmente automatizados a través de un simple programa o script):

  1. Identificar el tráfico que representa la transmisión de video. Este tráfico consiste en múltiples bloques de datos, en los que cada bloque tiene un encabezado específico y una longitud definida.
  2. Separe las partes de datos de los encabezados.
  3. Finalmente, las partes del video se fusionan en un archivo.

Reproducir los archivos de video obtenidos puede ser resultar un poco complicado, ya que están en un formato de transmisión cruda en lugar un formato de archivo contenedor. Sin embargo, algunos reproductores multimedia son compatibles con estos formatos crudos si se ejecutan con la línea de comando adecuada (por ejemplo, MPlayer puede manejar archivos M-JPEG y VLC puede manipular archivos H.264).

Plug-in defectuoso

Otro problema serio que se encontró en la cámara estaba oculto en el plugin para el navegador web “service mydlink”. Este complemento es uno de los formatos que tiene la aplicación de monitoreo disponible para el usuario.

El plugin para el navegador web controla la creación del túnel TCP y la reproducción del video en tiempo real en los navegadores del cliente, pero también es responsable de reenviar solicitudes de transmisión de audio y video a través de un túnel, el cual escucha en un puerto generado dinámicamente en el host local.

El túnel está disponible para todo el sistema operativo, con lo cual cualquier aplicación o usuario en la computadora del cliente puede acceder simplemente a la interfaz web de la cámara a través de una simple solicitud (solo durante la transmisión de video en tiempo real) a hxxp://127.0.0.1:RANDOM_PORT/.

No se necesita autorización, ya que las solicitudes HTTP al servidor web de la cámara son elevadas automáticamente a nivel administrador cuando se accede a ellas a través de una IP de localhost (localhost de la aplicación de monitoreo está enrutada al localhost de la cámara ).

Esta vulnerabilidad también permite na cualquier atacante reemplazar el firmware legítimo con su propia falsificada o bakdooreada.

El siguiente video consiste en una demostración de la ya solucionada falla de seguridad en el plugin:

Reemplazo ilítico del firmware

Al momento de escribir este artículo, los inconvenientes con el plugin “mydlink services” han sido reparados de manera satisfactoria por el fabricante.

Sin embargo, el reemplazo del firmware malicioso aún es posible a través de una vulnerabilidad en el protocolo de enrutamiento personalizado de D-Link descrito anteriormente en este artículo. Para lograr esto, un atacante necesita modificar el tráfico enrutado mediante el reemplazo de la solicitud GET de transmisión de video con una solicitud POST específica que carga y ejecuta una falta actualización del firmware.

En este punto, es importante aclarar que la realización de tal ataque no es trivial, ya que tendría que seguir todas las reglas del protocolo de enrutamiento, dividiendo el archivo de firmware en bloques con encabezados específicos y de cierta longitud máxima.

Sin embargo, la autenticidad del binario del firmware no se verifica durante el proceso de actualización. De este modo, se podría cargar en el dispositivo un firmware personalizado con algunas características adicionales "ocultas" como mineros de criptomonedas, backdoors, programas de espionaje, botnets u otros troyanos. Además, la falta de comprobaciones de autenticidad significa que un actor malintencionado podría "bloquear" el dispositivo deliberadamente.

UPnP exponiendo el puerto HTTP a Internet

D-Link DCS-2132L también tenía algunos otros problemas menores, pero aún preocupantes. Puede configurar el reenvío de puerto a sí mismo en un enrutador doméstico, mediante el uso de Universal Plug and Play (UPnP). Esto expone a Internet su interfaz HTTP en el puerto 80, lo cual puede ocurrir sin el consentimiento del usuario e incluso con sin que los campos "Habilitar presentación UPnP" o "Habilitar reenvío de puerto UPnP" estén marcados en la configuración.

No está claro por qué la cámara usa un ajuste tan peligroso. Actualmente, se pueden encontrar cerca de 1,600 cámaras D-Link DCS-2132L con el puerto 80 expuesto a través de Shodan, la mayoría de ellas en los Estados Unidos, Rusia y Australia.

Figura 3 - Resultado de la búsqueda en Shodan para DCS-2132L en el puerto 80

La forma más sencilla de mitigar este riesgo actual es deshabilitar UPnP en el enrutador del usuario.

Plugin arreglado, otros problemas persisten

Como parte de un proceso de divulgación responsable, ESET informó los problemas detectados a D-Link el 22 de agosto de 2018, incluyendo una vulnerabilidad de comunicación sin cifrado en la nube; la insuficiencia de mensaje de autenticación en nube y la comunicación LAN sin cifrar.

D-Link respondió de inmediato, informando a ESET que los informes de vulnerabilidad se habían enviado a sus equipos de investigación y desarrollo, prometiendo un seguimiento.

Desde entonces, algunas de las vulnerabilidades se han mitigado, de acuerdo con nuestras pruebas, el plugin "servide mydlink" ahora está debidamente protegido, aunque persisten otros problemas. Al momento de escribir, la versión más nueva del firmware disponible para descargar era de noviembre de 2016 y no solucionaba las vulnerabilidades, lo que permitía el reemplazo malicioso del firmware de la cámara, así como la intercepción de secuencias de audio y video.

La cámara D-Link DCS-2132L todavía está disponible en el mercado. Se recomienda a los propietarios actuales del dispositivo que comprueben que el puerto 80 no esté expuesto a Internet de forma pública y que reconsideren el uso del acceso remoto si la cámara está monitoreando áreas altamente sensibles de su hogar o empresa.

Autores: Milan Fránik and Miloš Čermák, Investigadores de Malware de ESET