Hoy en día muchos hogares cuentan con dispositivos Xiaomi destinados a la domótica y mi casa no es una excepción. La pregunta que me hacía es ¿cuántos dispositivos de Xiaomi tengo en casa?. Estos pueden ser bombillas, centralitas de alarma o cámaras IP. Por ello en este artículo de hoy os voy a enseñar cómo se pueden descubrir los dispositivos de este fabricante a través del protocolo MDNS o directamente con el uso de sockets.
La primera opción es muy rápida si dispones de un sistema operativo GNU/Linux y haces uso de Avahi. Este post va a ser bastante rápido y directo, para llegar lo antes posible al objetivo marcado en el título, así que solo se va a dividir en dos pequeñas secciones que traten justo esos temas. Vamos a ello.
Descubriendo dispositivos Xiaomis con MDNS
Para hacer la búsqueda de dispositivos usando MDNS aprovechándonos de Avahi, podemos utiliar el siguiente comando:
Para finalizar la búsqueda basta con presionar CTRL^C. ¿Pero esto lo podemos hacer con algún script en Python? La respuesta es sí, que nuestro querido Python está hecho para los pentesters, así que lo podemos hacer uso de la librería zeroconf, el script básico se puede ver a continuación:
El script son solo dieciséis líneas y ya lo tenemos montado. El código lo puedes adaptar fácilmente a que se termine con un una señal SIGINT en vez de un Time-Out. Y el resultado ya nos muestra más información que con el ejemplo de Avahi:
Con la búsqueda de dispositivos Xiaomi mostrada aquí no he conseguido que descubra el 100% de los dispositivos, de 8 tipos probados en total han salido 7. El producto que se resiste es la lámpara de escritorio. Cuando hablamos de descubrimientos, normalmente existen varias opciones, y ésta no es la excepción. Vamos con la segunda parte.
Descubriendo dispositivos Xiaomis con sockets
Este método utiliza la librería socket de Python, y el descubrimiento no es nada del otro mundo. Lo único que hemos hecho es el script se puede ver a continuación donde recorremos el esquema de direcciones IP por los puertos de los dispositivos Xiaomi para luego usar alguna información de fingerprinting - basada en banner-grabbing u otra similar - que nos permita detectarlos.
Para desarrollar el código se ha tenido en cuenta python-miio. No llega a ser el doble de líneas, pero de esta forma solo obtenemos la dirección IP. Ya es un comienzo para luego ir obteniendo más datos con otras herramientas de fingerprinting, o como no, haciendo uso de Python. Y el resultado es el siguiente:
Los tres dispositivos que estaban conectados a la hora de hacer la prueba son descubiertos, al igual que en la anterior opción. Y como habéis visto, podéis haceros sabiendo Python cualquier script que necesites para tus tareas de investigación. Rápido y sencillo. Nos vemos en la próxima entrada.
¡Hasta pronto!
Autor: Josué Encinar García, autor del blog Boomernix y Security Researcher en ElevenPaths y en el equipo de Ideas Locas de la unidad CDO de Telefónica.
Figura 1: Cómo descubrir los dispositivos 'Inteligentes' de Xiaomi que ya se te han colado en tu casa |
La primera opción es muy rápida si dispones de un sistema operativo GNU/Linux y haces uso de Avahi. Este post va a ser bastante rápido y directo, para llegar lo antes posible al objetivo marcado en el título, así que solo se va a dividir en dos pequeñas secciones que traten justo esos temas. Vamos a ello.
Descubriendo dispositivos Xiaomis con MDNS
Para hacer la búsqueda de dispositivos usando MDNS aprovechándonos de Avahi, podemos utiliar el siguiente comando:
avahi-browser _miio._udpY cuando se ejecute, podremos ver por la pantalla todos los dispositivos que se van encontrando:
Figura 2: Dispositivos descubiertos |
Para finalizar la búsqueda basta con presionar CTRL^C. ¿Pero esto lo podemos hacer con algún script en Python? La respuesta es sí, que nuestro querido Python está hecho para los pentesters, así que lo podemos hacer uso de la librería zeroconf, el script básico se puede ver a continuación:
Figura 3: Usando zerconf con un script en Python |
El script son solo dieciséis líneas y ya lo tenemos montado. El código lo puedes adaptar fácilmente a que se termine con un una señal SIGINT en vez de un Time-Out. Y el resultado ya nos muestra más información que con el ejemplo de Avahi:
Figura 4: Lanzando nuestro script en Python |
Con la búsqueda de dispositivos Xiaomi mostrada aquí no he conseguido que descubra el 100% de los dispositivos, de 8 tipos probados en total han salido 7. El producto que se resiste es la lámpara de escritorio. Cuando hablamos de descubrimientos, normalmente existen varias opciones, y ésta no es la excepción. Vamos con la segunda parte.
Descubriendo dispositivos Xiaomis con sockets
Este método utiliza la librería socket de Python, y el descubrimiento no es nada del otro mundo. Lo único que hemos hecho es el script se puede ver a continuación donde recorremos el esquema de direcciones IP por los puertos de los dispositivos Xiaomi para luego usar alguna información de fingerprinting - basada en banner-grabbing u otra similar - que nos permita detectarlos.
Figura 5: Script para detectar dispositivos |
Para desarrollar el código se ha tenido en cuenta python-miio. No llega a ser el doble de líneas, pero de esta forma solo obtenemos la dirección IP. Ya es un comienzo para luego ir obteniendo más datos con otras herramientas de fingerprinting, o como no, haciendo uso de Python. Y el resultado es el siguiente:
Figura 6: Dispositivos descubiertos con el escaneo de sockets |
Los tres dispositivos que estaban conectados a la hora de hacer la prueba son descubiertos, al igual que en la anterior opción. Y como habéis visto, podéis haceros sabiendo Python cualquier script que necesites para tus tareas de investigación. Rápido y sencillo. Nos vemos en la próxima entrada.
Figura 7: Python para Pentesters & Hacking con Python |
¡Hasta pronto!
Autor: Josué Encinar García, autor del blog Boomernix y Security Researcher en ElevenPaths y en el equipo de Ideas Locas de la unidad CDO de Telefónica.
Solo comentar que así descubres dispositivos IP. Imagino que todo lo que son sensores de movimiento, pulsadores, sensores de puertas y ventanas, sensores sísmicos o de golpes, de temperatura, CO2, u muchos mas; todo lo que no es IP .NO aparecera en este tipo de búsquedas.
ResponderEliminarO sea, más completo sera mirar en la app todo lo que tengo, no?
El post podría llamarse: descubrir dispositivos ip......
Pq vamos.