Auditando la seguridad de los juguetes inteligentes
Cómo algunos podrán saber, hace ya 2 años soy padre de una hermosa niña, una de las causantes (junto con la creación de la empresa) que cada vez escriba menos en el blog, pero una gran alegría en mi vida, que a su vez hace que me fije en cosas a las que no les ponía tanto cuidado antes de su nacimiento, como a la seguridad de los monitores de bebés (antes de comprar uno) o de los juguetes interactivos, de lo que les quiero hablar hoy.
Todo empieza cuando estábamos de vacaciones y decidí entrar a una juguetería con mi esposa y mi hija, estábamos viendo los productos, cuando pasó lo inevitable... la pequeña se enamoró de una muñeca; A simple vista la muñeca parecía normal, me puse a mirar la caja para cuestionarme la compra y me llamó la atención una etiqueta que decía, "I'll call you, Just download the APP" algo así como "Te llamaré, Solo descarga la APP", la muñeca era la Gabby Chatsters Interactive Doll y en ese momento no se la compramos porque era para niñas de más de 5 años y sus frases estaban todas en inglés, pero tomé nota de la aplicación para examinarla después.
Cuando empezaron a salir las noticias por todos lados (hasta medios nacionales se hicieron eco) sobre los juguetes que ponían en riesgo la privacidad de los niños, recordé la muñeca y busqué la aplicación (para iOS y Android), la bajé y empecé a analizarla de forma estática (basado en el código fuente) y dinámica (analizando la aplicación en ejecución), aunque la aplicación solicitaba una gran cantidad de permisos en el teléfono (cámara, internet, micrófono, alarmas, entre otros) solo revisando el código fuente y detallando el anuncio del juguete me di cuenta de su verdadero funcionamiento.
Lo primero que me pareció raro es que pedía permisos de Internet, pero no hacia conexiones a servidores propios, lo que me causo curiosidad, me puse a revisar un poco más y me di cuenta que el permiso de Internet se usaba para el modulo de publicidad (admob) y de estadísticas del framework de desarrollo (unity), lo que me generó la pregunta ¿qué hacen con los datos recolectados por estos sistemas?, encontraría la respuesta literalmente en la palma de mi mano, presionando el botón "privacy policy" de la misma aplicación, donde a grandes rasgos nos dicen que van a recolectar información de nuestros hijos de diferentes formas, la podrán compartir con terceros dentro y fuera de los estados unidos y que podrán cambiar las políticas de privacidad cuando les dé la gana quieran.
Luego de ver que el Internet se usaba con fines de publicidad y estadísticas, me preguntaba cómo funcionaban entonces las opciones principales como la llamada telefónica anunciada en la caja y los mensajes de texto que se intercambiaban con la muñeca, solo después de un rato de revisar las aplicaciones, descubrí que se trata de un "efecto placebo" para las niñas, me explico, sin importar si estás o no cerca de la muñeca (yo no la tenía por ejemplo) se podía "interactuar con ella" mandando mensajes, hablando por "teléfono" y siempre teníamos respuestas.
Pero... en los comerciales y en los reviews del juguete se veía cómo "gabby" reaccionaba a la aplicación, e internamente me preguntaba ¿cómo lo hace?, no se solicitaban permisos de bluetooth por lo que descartaba esa opción de comunicación, entonces busqué dentro del código alguna función que manipulara de alguna forma el wifi, de pronto encontrando comando en los SSID, emitiendo nombres de redes especiales como en la Nintendo 3DS o algo parecido, pero la solución era mucho más simple. La muñeca tiene incorporado un micrófono que le permite escuchar e identificar sonidos y palabras específicas para que pueda reaccionar a ellas, también detecta las pausas en una charla y da la sensacional real de conversación, es por este motivo que en la configuración de la aplicación nos pedían voltear el teléfono o tableta, subir al máximo el volumen y poner el dispositivo cerca de la muñeca, para garantizar que esta pudiera detectar el sonido e "interactuar", justo como vemos en el siguiente vídeo.
No me agrada que la muñeca tenga un micrófono a la escucha siempre que este prendida, ni que se puedan sacar estadísticas de uso y compartirlas con otras compañías. Pero ya con esta información en mis manos podría tomar una decisión a conciencia y saber de forma más acertada lo que le estoy entregando a mi hija.
El caso es que la semilla del interés ya estaba sembrada y me preguntaba ¿cuantos padres harán esto?, no muchos creo, pero posiblemente serian más si tuvieran una pequeña guía, lo más simple y entendible posible para que un padre de familia revise la seguridad de los juguetes inteligentes que piensan darle a sus hijos.
Para hacer la guía era necesario generar primero algo de conciencia en los padres, mostrando algunos presedentes de este tipo en la industria de los juguetes "inteligentes" y es que parte de lo que me motivó a generar esta entrada, es que los medios, especializados o no especializados se enfocaron todos a generar terror al rededor de los acontecimientos, pero ninguno se aventuró a dar una posible solución a los padres preocupados por la seguridad de sus hijos.
Algunos Precedentes
Seguramente te estarás cuestionando que tan frecuente pasan incidentes con los juguetes inteligentes y pensarás que son casos aislados, pero la realidad es muy diferente, siempre que un investigador de seguridad pone su mirada en uno de estos dispositivos, encuentra algo perturbador; En diciembre pasado se publicó un documento donde se examinaban 3 productos con características "inteligentes" y se evaluaba principalmente su manejo de datos y su política de privacidad, pero también algunos aspectos superficiales en cuanto a seguridad.
Estos no son los únicos juguetes para niños con problemas de seguridad conocidos, el siguiente es un pequeño listado de algunos productos y empresas con casos reportados:
- Hello Barbie: El primero caso mediático que escuché, ya que se trataba de uno de los productos más emblemáticos de la gigante Mattel, Barbie, en ese caso era posible a un atacante ponerse en la mitad de la comunicación entre los servidores de ToyTalk, permitiéndole escuchar lo que la muñeca escucha e incluso hacer que la muñeca dijera cualquier cosa que quisiera el atacante, hay un informe técnico muy interesante que si te gusta la lectura de este tipo de material deberías ver.
- i-Que y MyFriendCayla: Desde el año pasado ya habían noticias de los problemas de privacidad / seguridad del robot i-Que y la muñeca "mi amiga cayla", e incluso hace poco la Agencia Federal de Redes de Alemania ha prohibido en el país la muñeca y el robot, por considerar que la conexión de bluetooth y el micrófono del juguete lo puede convertir potencialmente en un instrumento de espionaje penalizado por la ley.
- V-Tech: Este no es un producto como tal, es una compañía fabricante de juguetes, que en el 2015 reportaba una intrusión en sus sistemas que comprometía millones de cuentas con información muy sensible de los niños y sus padres, como la fecha de cumpleaños, fotos de los pequeños, la dirección de la casa, el correo electrónico y hasta un log de los chats realizados, casi 200GB de información,
- CloudPets: Lo de cloudpets es el último escándalo que ha tenido la industria de los "juguetes inteligentes" y es increíble la verdad, esta empresa que se dedica a comercializar peluches desde los cuales los padres e hijos podían enviarse mensajes de audio, tenía una base de datos MongoDB sin autenticación y publica en internet, gracias a ella se filtraron más de 2 millones de mensajes de audio y datos personales de sus usuarios.
El impacto de este tipo de problemas es bastante grande y más hablando de una población tan vulnerable como son los pequeños, por eso deberías saber cómo analizar un dispositivo inteligente antes de entregárselo a un niño.
¿Cómo auditar la seguridad de los juguetes inteligentes?
Trataré de hacer que esta guía paso a paso sea tan simple que cualquier persona pueda seguir, dándole prioridad a los servicios en línea y evitando al máximo la instalación de software o entornos de laboratorio, que pueda complicar a un lector inexperto, garantizando de esta forma que el mayor número de personas, independiente de su conocimiento o los recursos que tienen disponible, puedan hacer una auditoria básica de los juguetes que piensan dar a sus hijos.
A tener en cuenta:
Trata que no sea una compra impulsiva: Después que tengas comprado el dispositivo (aunque esto te facilitaría mucho la etapa de análisis), si llegas a encontrar problemas, es poco lo que puedes hacer para arreglarlo, ya que normalmente estos problemas se encuentran físicamente en el juguete o en la infraestructura de la compañía, podrías reportarlo, pero dependes de terceros para su solución.
Recolección de información: Como todo proceso de auditoria debes iniciar con una recolección de información, la mayoría de esta información la sueles encontrar en la página oficial del producto, en la descripción de las aplicaciones (si las tienen), en reviews de consumidores en YouTube y en los comerciales del producto.
Los puntos claves que deberías recolectar son:
- Funcionalidades del producto: Pon especial cuidado con funcionalidades que incluyan conexiones (wifi, bluetooth, rfid, etc...), servicios web, aplicaciones móviles, en este tipo de productos suelen destacar bastante estas funciones ya que serían su factor diferenciador versus productos tradicionales.
- Las políticas de privacidad: Puede ser tedioso leer estas políticas, pero normalmente te dan pautas sobre los datos que capturan y lo que hacen con esos datos.
- ¿Ya fue comprometido?: Los investigadores de seguridad están buscando constantemente fallos de seguridad en dispositivos "inteligentes", te recomiendo busca en google palabras como hacked, hack, privacy acompañadas del nombre del producto, de esta forma te darás cuenta si alguien más ha encontrado problemas en el producto que quieres analizar.
Auditando las aplicaciones móviles de los juguetes inteligentes, sin comprarlos
El análisis de las aplicaciones móviles que acompañan los productos inteligentes, pueden darnos una buena idea de su funcionamiento sin tener que adquirirlos previamente, estas aplicaciones normalmente suelen ser de descarga gratuita, identifica en las tiendas donde se encuentran y descargarlas para iniciar el proceso.
En este post nos enfocaremos en el uso de servicios web o frameworks automatizados que permitan a una persona con pocos conocimientos, sacar la información necesaria de estas aplicaciones para tomar una decisión de comprar o no de un juguete "inteligente" y proteger de esta forma la seguridad y privacidad de sus hijos.
Lo primero que necesitamos es conseguir los archivos .APK (Android) o .IPA (iOS) según la plataforma, para descargar aplicación .APK de la PlayStore podemos utilizar el servicio de APKPure, solo necesitas pasarle la url oficial de la PlayStore y conseguir el archivo .APK, he verificado esta herramienta y no hace ningún cambio a la aplicación descargada por lo que hasta la fecha es un servicio confiable.
Para descargar las aplicaciones de iOS es recomendable hacerlo desde la aplicación iTunes con tu cuenta, ya que la mayoría de las tiendas alternativas en iOS suelen modificar las aplicaciones para eliminar las restricciones de Apple o para añadir "funcionalidades no solicitadas" como publicidad o malware, al bajarte la aplicación desde iTunes el archivo ipa quedaría en las siguientes rutas:
Windows:
- C:\Users\(USUARIO)\Music\iTunes\iTunes Media\Mobile Applications\
Mac OS X:
- /Users/(USUARIO)/Music/iTunes/iTunes Media/Mobile Applications/
Le daremos más prioridad a los servicios online, ya que cualquiera con un navegador podría usarlos, pero si quieres montar en tu maquina un pequeño laboratorio de auditorías automatizadas a aplicaciones, te recomendaré algunos frameworks que tienen todo lo necesario para el análisis dinámico y estático de apps móviles.
La plataforma más abierta para realizar análisis de sus aplicaciones es Android y nos enfocaremos en ella, porque hacer un análisis de aplicaciones iOS se suelen tener limitantes propios del ecosistema cerrado de Apple, uno de los requerimientos más frecuentes es el uso XCode y sus herramientas para el análisis y la emulación de aplicaciones, que solo funciona en Mac OS X (nativo o emulado), teniendo en cuenta esto te recomiendo las siguientes herramientas:
- Mobile Security Framework (MobSF): Es LA herramienta, la que recomiendo abiertamente para el análisis dinámico y estático de apps, independiente de la plataforma (Android o iOS), si vas a realizar el análisis de aplicaciones móviles habitualmente esta herramienta no puede faltar en tu arsenal.
- Quick Android Review Kit o QARK: Es un framework de análisis automatizado de aplicaciones android que tiene poco tiempo de vida, esta enfocado al análisis de aplicaciones android y cuenta con muy buenas funcionalidades.
[box type="info"] No son las únicas aplicaciones (aquí un buen listado para el análisis de apk´s enfocado al análisis de malware), son las que recomiendo para un análisis automatizado.[/box]
Asumiendo que ya tenemos nuestro archivo APK vamos a utilizar diferentes servicios online que están enfocados al análisis de malware pero que serán muy útiles para identificar lo que hacen las aplicaciones, de cada servicio podremos sacar información útil para nuestro propósito.
SandDroid (informe de ejemplo): Es una de las mejores herramientas online que podemos tener para el análisis automático de aplicaciones android, realiza análisis dinámico y estático, además de darnos un puntaje de riesgo basado en la información que logra recolectar.
De esta herramienta podemos sacar mucha información útil, pero en el contexto en el que nos encontramos pondremos especial cuidado en:
- Risk Score: Un puntaje de riesgo que con base en la información recolectada arroja la herramienta, esta información nos da un indicio de lo que encontraremos más abajo a lo largo del informe generado.
- Risky Behaviors: Un listado de comportamientos potencialmente riesgosos detectado en el análisis.
- Classification: Nos muestra algunas gráficas que nos dan a grandes rasgos cual es el porcentaje de uso que hace la aplicación de los diferentes recursos del teléfono.
- Permissions: El listado de permisos solicitados por la aplicación, con esto nos daremos cuenta que recursos del teléfono piensa utilizar la aplicación, con una interesante tabla que nos dice entre otras cosas si realmente se usaron los permisos solicitados o no.
- Urls: Peticiones a servidores web realizados por la aplicación.
- ScreenShots: Algunos pantallazos tomados en el proceso de análisis dinámico.
reverse.it (informe de ejemplo): Es una herramienta que también permite el análisis dinámico y estático de aplicaciones android de forma automatizada, es una especialmente útil cuando buscamos comportamientos anómalos dentro de las aplicaciones móviles.
Reverse.it se enfoca más en el análisis de comportamientos, lo que nos será muy útil para identificar lo que hace la aplicación del juguete a analizar, en la información que nos enfocaremos es:
- Threat Score: De nuevo la herramienta con base en la información obtenida nos arroja un puntaje que nos indica que tan potencialmente maliciosa es la aplicación.
- Risk Assessment: En este apartado "evaluación de riesgos", nos detallan las funcionalidades detectadas en la aplicación que pueden ser riesgosas.
- Indicators: El apartado esta compuesto a su vez por otros 3 (Malicious Indicators, Suspicious Indicators, Informative) en ellos nos detallan los indicadores maliciosos o sospechosos de la aplicación.
- File Permissions: Listado de los permisos que pide la aplicación, nos ayuda a hacernos una idea de qué recursos del teléfono piensa utilizar la aplicación.
- Extracted Strings: Un listado de las cadenas de texto encontradas dentro de la aplicación, podríamos llegar a encontrar contraseñas hardcodeads o información útil para nuestro propósito de análisis.
Estas herramientas arrojan mucha más información útil, como la posibilidad de descargar un archivo .pcap con el tráfico generado por la aplicación, solo te sugiero poner especial cuidado en esas partes del informe para el uso que le estamos dando en este artículo, pero tienes libertad para utilizar el resto de información a criterio propio.
Cuando queremos ver un poco más bajo el capó de las aplicaciones podemos usar los siguientes servicios web:
Dexter: Para un análisis más detallado podemos usar (previo registro gratuito) esta herramienta, enfocada en el análisis de software que nos permite de forma colaborativa visualizar el funcionamiento de la aplicación con un potente buscador que nos ayudará a encontrar fácilmente funciones interesantes en las cuales centrar nuestra atención.
javadecompilers: Es una herramienta online que nos permite decompilar aplicaciones online abriendo la posibilidad de examinar su código fuente desde un simple navegador, si con Dexter encontraste funciones interesantes que analizar, con javadecompilers puedes examinar sus entrañas para ver su funcionamiento a nivel de código.
Y si tengo el juguete en mis manos.. ¿cómo lo analizo?
Esto se saldría del alcance que pretendo darle a la entrada, pero no puedo terminar este articulo sin darte por lo menos algunos concejos o recomendaciones a seguir para que puedas examinar el juguete que finalmente llegaría a manos de tus pequeños.
Dependiendo de la recolección inicial que realizaste te enterarás las tecnologías que utiliza el dispositivo y te deberías enfocar en esas tecnologías, te plantearé algunos escenarios típicos y algunas de las cosas que deberías hacer.
Si el dispositivo pide una conexión a Internet:
- Identifica su dirección IP e intenta capturar todo el tráfico que envía o recibe el juguete, si incluye una opción de proxy te facilitaría la vida, pero puede que tengas que engañar al dispositivo con los típicos ataques de red para ponerte en la mitad de la comunicación (dependiendo de cada dispositivo).
- Analiza los paquetes capturados, podría ser de ayuda utilizar los filtros para los protocolos más comunes, pero sin limitarte a identificar otro tipo de comunicaciones que pueda realizar el dispositivo en protocolos poco conocidos.
- Si el juguete utiliza otro dispositivo de intermediario (como el caso de cloudpets que usaba el teléfono para recibir las grabaciones y las enviaba al peluche por bluetooth) es necesario que captures esa comunicación también.
- Si estas en la mitad de la comunicación, intenta modificar los paquetes que envía o recibe el dispositivo para intentar causar reacciones tanto en el emisor como el receptor.
Si el dispositivo tiene una conexión bluetooth:
- Identifica si el dispositivo permanece a la escucha siempre que este prendido o se activa puntualmente con una acción ( una de las consecuencias negativas que permanezca activo es que podrían utilizar la señal para identificar donde se encuentra el juguete y hacerle seguimiento a tu hijo gracias a esto)
- Identifica que tipo de señal se emite para ver el vector de ataque a utilizar y realizar bluetooth sniffing (por ejemplo si se usa Bluetooth Low Energy o BLE, podrías intentar atacar por fuerza bruta el sistema de pareado con crackle).
- Intenta ataques de tipo replica (capturando paquetes y re-transmitiéndolos) para ver la reacción del dispositivo y evaluar si usa o no los tokens en cada comunicación.
- De nuevo analiza los paquetes capturados, identificando archivos transmitidos, posibles comandos o información que nos sea útil.
Si el dispositivo realiza peticiones a servicios web:
- Si en el análisis de paquetes previo identificaste peticiones a servicios web, revisa si esta comunicación se realiza cifrada o no, si está cifrada intenta atacar primero esa barrera.
- Ponerte en la mitad de la comunicación seria de ayuda para examinar el comportamiento del juguete o del servidor modificando parámetros en las peticiones que intercambian.
- Revisar el top 10 de OWASP seria esencial, pero no debes limitarte a estos fallos comunes y piensa fuera de la caja, te sorprenderás lo que se puede llegar a encontrar cuando se auditan desarrollos realizados por industrias que tradicionalmente habían sido cerradas, pero que se aventuran a ofrecer servicios web (¿crees que tuvieron en cuenta que pasaría si un dispositivo como un juguete pone una simple comilla en una de sus consultas?).
Con esto simples consejos termino esta entrada, esperando sinceramente que te ayude a tomar una decisión acertada a la hora de comprar un juguete "inteligente", si te ha ayudado (o simplemente llegaste hasta el final del post 🙂 ) me gustaría que dejaras un comentario.