Cómo analizar dispositivos IoT: vulnerabilidades más comunes y cómo encontrarlas

Compartimos algunas técnicas para analizar dispositivos IoT y descubrir vulnerabilidades.

Según una encuesta realizada por ESET a principios de 2018, el El 70% de los usuarios cree que los dispositivos IoT no son seguros. Sin embargo, el 62% aseguró que los compraría igual. Estas cifras se reflejan en la cantidad de dispositivos IoT que se encuentran actualmente en los hogares y en las compras de los usuarios, dado que en 2018 las ventas de dispositivos inteligentes superaron la cantidad de equipos móviles vendidos. De hecho, para 2020, según una proyección de Gartner, se estima que habrá 20 mil millones de dispositivos IoT en el mundo, lo que equivale a 3 dispositivos por habitante.

La variedad de dispositivos IoT es sumamente amplia y accesible para cualquier usuario. Desde asistentes de voz, enchufes inteligentes, cámaras IP, luces, o termostatos, hasta los nuevos "wearables" (dispositivos utilizables) que llegan incluso monitorar el estado de nuestro organismo; todo tipo de dispositivos se pueden conseguir por precios que van de 30 a 500 dolares. A diferencia de tecnologías anteriores, el análisis de seguridad de dispositivos IoT presenta una gran complejidad debido a la gran variedad de dispositivos y software existentes en el mercado.

Sin embargo, si bien su análisis puede resultar complejo, es bueno comentar por algunas vulnerabilidades conocidas y por algunas técnicas muy útiles para obtener información.

Divulgación de información

bajo primero que debe buscar a la hora de analizar un dispositivo IoT es toda aquella información que se encontró a simple vista. Muchos dispositivos nupciales -a veces a propósito y otras por error- información acerca de su configuración, interacciones, tráfico u otros archivos que pueden ser útiles para conocer mejor su función, el entorno donde están conectados o incluso información personal del usuario. En estos casos esta información se encuentra a simple vista y es solo una pregunta de saber buscarla.

Algunas cosas que podrian revisar son:

  • buscadores: no todo en Internet son páginas web. Asi como existe Google para ayudarnos a encontrar los sitios que necessitamos, tambien hay otros buscadores que en lugar de indexar sitios se dedican a escanear y recopilar puertos y servicios públicos en Internet, muchos de los cuales pertenecen a dispositivos IoT. Servicios como Shodan o Cencys son definitivamente un buen lugar donde puedes comenzar a buscar dispositivos para investigar.
  • Protocolos no cifrados: equipos que se comunican mediante HTTP o cualquier otro protocolo no seleccionado suelen ser muy sencillos de espiar, ya que basta con utilizar un proxy como intermediario para poder ver todo el tráfico de estos dispositivos.
  • metadatos: son aquellos datos que hablan de los datos, es decir, describe el contenido de los archivos o la información de los mismos, como la calidad, condiciones, historia, disponibilidad y otras características de los datos. En el caso de los dispositivos IoT podemos encontrar, por ejemplo, información sobre la red del usuario o incluso sus hábitos y consumos.
  • API públicas: una API es una interfaz que especifica de qué manera deben interactuar distintos componentes de software. Cuando estas API son públicas, es decir, que cualquiera dentro de la red puede tener acceso a ellas, pueden ser utilizadas para integrar la función del equipo con servicios externos, o bien, para obtener información del mismo. Las API son muy diversas y cada una está implementada de forma diferente, sin embargo, basta con conocer sus métodos y su interfaz para poder interactuar con ella. En las API públicas, esta información normalmente está disponible en Internet de forma pública para los desarrolladores. Por ejemplo, en algunos dispositivos de Google, como el Chromecast o el asistente de voz, podemos encontrar una API HTTP que utiliza métodos GET y POST y formatos JASON para interactuar con otros equipos. Si bien no es una API oficialmente documentada, ya se han publicado investigaciones con la sintaxis que se debe utilizar. En la siguiente imagen se puede ver información de un dispositivo Google Mini, como la versión y la red donde está conectado, así como también los horarios del despertador:

Información de un dispositivo Google Mini, como la versión, red a la que está conectado y los horarios del despertador.

Ingeniería inversa de aplicaciones y firmwares

En muchos casos conseguir el dispositivo IoT que queremos analizar resulta complicado o incluso costoso. Sin embargo, esto no tiene por qué detener el análisis, ya que no todo pasa por analizar el equipo. Todos los dispositivos IoT son controlados a través de aplicaciones que pueden descargar ya las que le podemos aplicar ingeniería inversa. De hecho, a veces es mejor comenzar con el análisis de las aplicaciones que controlan los dispositivos inteligentes para ver cuáles son más vulnerables y podrían permitirnos realizar una mejor investigación.

La inversión inversa se utiliza para entender cómo funciona una aplicación a partir de su ejecutable o empaquetado. En el caso de las aplicaciones móviles podemos, incluso, llegar a obtener el código fuente de estas, lo cual resulta muy útil para analizar sus funciones, entender cómo recibir y enviar información, encontrar usuarios y claves hardcodeadas y hasta descubrir vulnerabilidades y como explotarlas. En algunos casos, incluso se pueden encontrar los descarga del firmware, al cual, una vez descargado, también se le puede aplicar inversión ingeniería.

En el caso de las aplicaciones móviles, uno de los descompiladores más utilizados es JADX, que cuenta con una interfaz muy amigable para el análisis. En el siguiente ejemplo se capturó este decompilador para obtener el código fuente de una aplicación que controla los enchufes inteligentes. Las funciones más interesantes que se encontraron en este caso fueron las que se encargaban de cifrar y descifrar el tráfico entre la aplicación y el dispositivo, y desde estas funciones se podía controlar el equipo de forma remota y sin autenticación.

Ejemplo de uso del decompilador JADAX para obtener el código fuente de una aplicación que controla enchufes inteligentes.

Ejemplo de uso de JDAX para obtener el código fuente de una aplicación que controla enchufes inteligentes.

Análisis de tráfico y MiTM

Una gran cantidad de información viaja desde y hacia los dispositivos, por lo que poder controlarla nos dará una amplia ventaja a la hora de controlar el dispositivo que estamos investigando. Ya sea porque el dispositivo se comunica a través de protocolos inseguros o porque pudo descifrar la comunicación (como en el caso anterior), a partir del analisis del trafico de red no podemos solo obtener informacion sensible sino tambien entender y analizar protocolos de comunicacion. Muchas veces podremos, además, alterar los paquetes enviados y recibidos o hasta evenos generar nuevos. Es decir, que manipulando el tráfico de un equipo pudimos llegar a controlarlo.

La mejor manera de capturar estos paquetes es mediante el uso de un proxy, por ejemplo, Burp Suite. Algunas veces, la captura de tráfico puede ser un poco más tediosa de analizar y deberemos recurrir a herramientas como Wireshark para facilitarnos el trabajo.

Como ejemplo, en las siguientes imágenes vemos el tráfico entre una cámara web y la aplicación móvil que la controla. En este caso, el tráfico se envía en texto plano a través de HTTP y no solo podemos obtener información de la cámara, sino también las imágenes captadas por ella:

Análisis del tráfico entre una cámara web y la aplicación móvil que la controla.

Análisis del tráfico entre una cámara web y la aplicación móvil que la controla.

En este caso, si además consiguiéramos obtener el código fuente de la aplicación mediante ingeniería inversa, podríamos incluso entender cómo se forman los paquetes que se envían para controlar el dispositivo, generarlos desde un ordenador remoto e interceptar la respuesta del ordenador. con imágenes tomadas.

Configuraciones inseguras

Por último, muchos dispositivos se vuelven seguros por los usuarios que no prestan atención a las configuraciones. Es muy común (lo puedes comprar en Shodan), encontrar puertos y servicios habilitados por defecto, incluso algunos obsoletos o que no están siendo utilizados. Además, seguro que has oído hablar de los usuarios y contraseñas por defecto que tampoco cambian (puedes consultarlas en Shodan) y los protocolos inseguros que te hemos detallado en casos anteriores.

Incluso, a veces los desarrolladores olvidan deshabilitar la función de puración, la cual le permite a un atacante poder interoperar con la firma o sistema operativo del equipo. Este es el caso de algunos dispositivos Android que salieron al mercado asiático con el puerto ADB (Android Debug Bridge) activado por defecto y que permitía a un minero de criptomonedas infectar el ordenador y utilizar sus recursos.

Si tiene dispositivos que desea analizar, sabe dónde comenzar su análisis para encontrar vulnerabilidades. Por otro lado, si eres de los que disfrutan de una casa inteligente, pero prioriza la seguridad, hay algunas medidas de seguridad que debes considerar:

  • Mantén tus dispositivos actualizados. Muchas vulnerabilidades son reportadas y corregidas en poco tiempo, por lo que si te mantienes en la última versión de las aplicaciones y el firmware será menos vulnerable.
  • Investigue y analice que equipos comprar. En Internet hay muchas revisiones y análisis de seguridad publicados sobre varios dispositivos. Incluso puede utilizar la ingeniería inversa para analizar aplicaciones antes de comprar un dispositivo y elegir el modelo más seguro.
  • Si eres desarrollador, incluye seguridad desde el diseño de tu aplicación y realiza auditorías que incluyan pruebas de seguridad.
  • Toma un tiempo para configurar tus dispositivos correctamente. Deshabilita puertos y servicios que no utilices, evita las configuraciones por defecto y cambia las contraseñas.

Recuerda lo que dijo un gran philosophe y matemático francés: Configura, luego enchufo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
error: Content is protected !!