martes, marzo 27, 2018

Latch (Voice) Assistant: Controla tu casa con Latch, Siri y Alexa

El pasado jueves el área de CDO celebró la sexta edición del Equinox, un hackathon que realizamos cada 6 meses y que busca que sus participantes lleven a cabo un proyecto que han ideado, que tienen ganas de hacer, y que puedan realizar en 24 horas. Yo ya he participado en cuatro ediciones con ésta, solo he faltado a dos, y me sigue resultando apasionante.

Figura 1: Latch (Voice) Assistant: Controla tu casa con Latch, Siri y Alexa

En mi primera participación junto a Ioseba Palop hicimos el AirTick o también conocido como Air Profiling, en el que mediante la captura de tráfico hacíamos un perfilado de un dispositivo y de su propietario. Por aquella época WhatsApp tenía el leak del número de teléfono, lo cual hacía muy interesante el proyecto consiguiendo relacionar tu número de teléfono, tu foto de Facebook, tu nombre, tu sistema operativo, tu versión, algunas apps que utilizabas, tu historial de navegación, incluso, saber si tenías una cuenta bancaria en un banco :-) Este proyecto se vio traducido en un TFM de CDO Challenge y algunas cosas más.


Figura 2: LatchsApp

En la segunda participación junto a Álvaro Nuñez-Romero hicimos LatchsApp, un proyecto el cual hace de Latch una plataforma de exfiltración de datos a través del movimiento de sus cerrojos. Un nuevo Covert Channel con el que nos lo pasamos muy bien. Además, hicimos un módulo que integraba LatchsApp en DET. También se tradujo en parte de un TFM que realizaron alumnos que tutoricé.


Figura 3: LatchsApp en Data Exfiltration Toolkit

En la tercera participación junto realizamos un proyecto llamado LiLaS o Little Latch Snitch. Este proyecto fue realizado por un equipo más amplio en el que contábamos con Félix Brezo, Álvaro Nuñez-Romero, Carmen Torrano, Santiago Hernández, José Torres y servidor. El proyecto nos permitía bloquear protocolos de red a través de Latch, ya fuera por activación manual o por los indicadores de compromiso, transformados en reglas que se ejecutaban.


Figura 4: LiLaS

Es una experiencia realmente interesante como reflejaba vía Twitter mi compañero Félix Brezo.

Para esta cuarta participación estuve hablando con mi compañero Álvaro Nuñez-Romero y me comentó su intención de hacer que Siri pudiera abrir cerrojos en Latch. La idea y el reto me sedujo, y llegado el jueves del Equinox fuimos a por ello. La idea radicaba en hacer uso de Home Assistant como centro de operaciones. Al proyecto se unió a última hora nuestro nuevo compañero Enrique Blanco al que tenemos jugando con Inteligencia Artificial desde que se unió. Y lo de jugando es literal.

Latch Voice Assistant

Home Assistant proporciona una plataforma y framework que nos permite crear plataformas y componentes que hagan que cualquier dispositivo IoT pueda ser integrado en nuestra casa. Estuvimos viendo la plataforma HomeKit que proporciona HomeAssistant, la cual es una integración para poder hablarse con el HomeKit de Apple.

Figura 6: Home Assistant

Estuvimos estudiando la arquitectura de HomeAssistant, y tras un análisis de ello, entendimos que había una serie de plataformas y componentes. Nos pusimos a ver qué era cada cual, qué diferencia había, qué necesitábamos y así fuimos creando nuestro primer componente.

Figura 7: Arquitectura de Home Assistant

Este primer componente era capaz de leer señales que viajan por el bus de HomeAssistant. Este bus maneja las diferentes señales, eventos, estados, etcétera, que circulan por HomeAssistant y que vienen y van hacia los diferentes dispositivos que podemos tener en la casa. El primer componente nos permitía leer del bus y poder detectar ciertos eventos que nos interesaban.

A modo de ejemplo, y código de prueba en los primeros momentos, tenemos esto. El objeto hass representa a HomeAssistant. Dispone de la posibilidad de escuchar en el bus, como se puede ver en la última línea del código. Cuando el evento que se observa es el de cambio de estado, lanzamos el método handle_event.

Figura 8: Código para manejar el evento en HomeAssistant

El método handle_event ya trabajará con lo que significa el evento ‘State_Changed’. Aquí nuestra estrategia, cuando utilizamos Siri a través de HomeKit en HomeAssistant se generan diferentes eventos, entre ellos los ‘State_Changed’, ya que Siri activará o desactivará interruptores, encenderá o apagará luces, etcétera. Por ello, estudiamos los eventos y vimos como diferenciar un evento que viene del HomeKit.

Lo que hicimos fue crear un ‘mapping’ de un dispositivo en HomeKit con un Latch de nuestra cuenta. Esto en primera instancia. Si vemos el siguiente video, vemos un ejemplo de lo que queríamos.


Figura 9: Encendiendo y apagando luces con Latch (Voice) Assistant

Una vez comprobado que el componente nos funcionaba y conseguíamos integrar Latch llevamos a cabo la mejoría del código. Entendimos que la plataforma es lo que debíamos crear, ya que si queremos liberarlo en algún momento debería ser así. En la siguiente imagen se puede ver el código del método setup de la plataforma. El método setup es ejecutado en la carga de la plataforma, es decir, al arrancar HomeAssistant.

Figura 10: Método setup

Hicimos un segundo video, ya con la plataforma implementada. La plataforma es capaz de integrar los latches de una cuenta de Latch en HomeAssistant. Es decir, la plataforma hace login en tu cuenta de Latch y construye sobre HomeAssistant los diferentes latches. Posteriormente, se pueden relacionar e invocar desde HomeKit, por lo que desde Siri podemos abrir y cerrar los latches.


Figura 11: Integración e invocación de Latch desde HomeKit

Conseguida esta integración, una de las curiosidades que más nos gustó es poder abrir un latch desde el reloj de Apple, es decir, desde WatchOS.

Por último, quisimos jugar con Alexa. Gracias al Echo Dot que nuestro compañero Enrique tiene, y que prestó al proyecto, pudimos integrarlo con HomeAssistant y llevar a cabo la apertura y cierre de latches desde el altavoz inteligente de Amazon.


Figura 12: Integración de Latch con HomeAssistant y Alexa Echo

No se sabe si habrá tiempo para participar en otro Equinox, espero que sí, seguro que sí, pero lo que puedo decir es que es un evento interesante y pido desde aquí que mis compañeros más Seniors se atrevan a participar y dejarse contagiar por ello. Llevo 10 años entre Telefónica, ElevenPaths e Informáica64, pero quiero que cada día sea como el primero y el Equinox me deja volver a jugar…


Figura 13: El Equinox de Otoño de 2016 en fotos

En definitiva, muy orgulloso del Equinox, de la gente que hace posible esto y de sus participantes. Orgulloso de ser el responsable del equipo de ideas locas de CDO y poder exprimir nuestras ideas, pruebas de concepto, llevarlas a patente, llevarlas a producto, jugar, disfrutar, pero también, trabajar muy duro. Orgulloso del equipo que tengo conmigo, los cuales crecen cada día y aportan hasta el último granito que crean y hacen que las ideas puedan ser una realidad.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

No hay comentarios:

Publicar un comentario