Autor: Javier Espinosa
Ingeniero "Latch" en Eleven Paths
Desde que se lanzó
Latch hace ya un año, incontables han sido los comentarios de gente que se han preguntado si es posible utilizar
Latch con los servicios de Internet más utilizados como
Facebook,
Gmail,
Twitter, o para cuándo estaría
Latch
disponible en estos servicios. Es difícil de decir, cuando esas
compañías integra cada una de ellas sus propias soluciones - y algunas
de ellas no están disponibles ni tan siquiera en todos los países - como
el
OTP de
Twitter en
España y
Latinoamérica.
A nosotros nos encantaría que lo hicieran, pero mientras tanto, como
también nos gusta jugar con la tecnología y aportar soluciones, yo me he
hecho un
hack para que si en algún momento alguien quiere ser avisado vía
Latch en el momento en que alguien acceda a tu
Facebook.
|
Figura 1: Un "hack" con Latch para controlar accessos a Facebook |
Como sabéis
Latch es sumamente fácil de integrar gracias a sus
plugins y SDKs,
por eso su variedad de usos y utilidades llegan tan lejos como las
ideas de aquellos que decidan integrarlo. En este sentido ya hemos visto
integraciones muy interesantes, desde para
controlar cerrojos físicos a securizar un lector de
DNIe en el acceso a un recinto, pasando por
integrar los routers OpenWRT, el
uso de conexiones bluetooth,
un servidor FTP,
archivos con dos llaves, los propios
sistemas OS X, el
hot-plug de dispositivos USB o el
login en Active Directory. Por eso decidimos
premiar los mejores plugins en el concurso que termina esta semana.
Sesiones Activas en Facebook
Hoy vamos a ver cómo podemos añadir una protección extra en nuestra cuenta de
Facebook sin necesidad de que este servicio haya realizado la integración con
Latch, haciendo un hack para los amigos de hacer cosas curiosas con la tecnología. Para ello, vamos a hacer uso de la función
“Dónde has iniciado sesión” que incorpora
Facebook
en su área de seguridad, dentro del perfil del usuario. En esta
sección podemos ver información de que sesiones tenemos abiertas en
cada momento, y desde qué dispositivos y plataformas se han abierto;
pero sobre todo y lo más importante, incorpora unos enlaces que nos
permite cerrar bien todas las sesiones abiertas o bien aquellas
concretas que deseemos.
|
Figura 2: Sesiones abiertas en Facebook |
Esto es lo que vamos a utilizar como comprobación y reacción a
Latch.
Es fácil caer en la cuenta que lo único que tenemos que hacer es
monitorizar esta página y en el momento en que se detecte una nueva
sesión, realizar una consulta a
Latch para determinar si la mantenemos abierta o la invalidamos.
Paso 1: Creación de aplicación Latch para Facebook y el pareado
Por supuesto, lo primero que tenemos que hacer es crear nuestra aplicación en el área de desarrolladores de
Latch para obtener tanto un
Application Id como un
Secreto, la configuraremos con
OTP deshabilitado porque no vamos a hacer desafío respuesta con un código.
|
Figura 3: Creando la aplicación Latch en el Area de desarrolladores de Latch |
Con la aplicación creada y, o bien mediante una llamada
cURL o bien mediante cualquiera de los
SDKs de Latch, realizaremos un pequeño
script de pareado donde emparejaremos nuestra cuenta de
Latch con esta nueva aplicación. Sirva de ejemplo el siguiente código
PHP.
|
Figura 4: Código de PHP para obtener un pareado con un usuario de Latch |
Tras ejecutar el
script, obtendremos el
AccountId de este usuario. Éste será el
AccountId que debemos guardar ya que será sobre el que se deberán realizar las consultas de estado a los servidores de
Latch posteriormente.

Paso 2: Obteniendo las sesiones abiertas en Facebook
Configurada la cuenta de
Latch, lo que tenemos que hacer es un servicio que constantemente consulte la siguiente
URL, parsear su contenido y extraer en nuestro programa la información de las sesiones abiertas en
Facebook:
Este trabajo también podemos realizarlo sobre la
URL para la versión de móviles, cuyo contenido es menor y por tanto el proceso será mucho más eficiente en tiempo:
Para realizar esta tarea tenemos múltiples posibilidades, desde
scripts que hagan llamadas
curl a herramientas de automatización como por ejemplo el
Webdriver de Selenium;
lógicamente esta última opción ofrece peor performance puesto que
estamos innecesariamente renderizando el contenido, pero ilustra mejor
esta prueba de concepto. Hay que tener en cuenta que haciendo esto,
estamos abriendo una nueva sesión que no deberemos cerrar, para
mantener activo el servicio. En cada iteración y carga de dicha
URL nuestro servicio deberá:
1. Comprobar las sesiones activas
2. Si aparece una sesión que no tuviéramos almacenada, realizar una llamada de status
a la API de Latch.
3. Si la llamada devuelve status “off”, terminar la nueva sesión, en caso contrario
almacenarla como sesión abierta.
4. Comprobar si alguna de nuestras sesiones abiertas ya no existe, para eliminarla.
5. Repetir el proceso volviendo a cargar el contenido.
Paso 3: Automatizando con Selenium
Como se ve a continuación podemos realizar en pocas lineas esta tarea con
Selenium utilizando el
WebDriver de
Mozilla Firefox.
El propio programa se encargara de lanzar el navegador, únicamente necesitamos tener instalado
Firefox en nuestro equipo.
El código completo de esta prueba de concepto puede consultarse aquí
Hack de Latch para Facebook:
|
Figura 5: Automatización de Selnium para consultar Latch y bloquear sesiones Facebook |
Con esto no estamos bloqueando el acceso a nuestra cuenta, pero si que
nos servirá a modo de alertas para saber cuando se ha producido un
acceso no autorizado y mitigar su efecto invalidando la sesión y
dándonos prisa para cambiar todas las contraseñas.
El usuario será expulsado a los pocos segundos automáticamente o si
intenta realizar cualquier acción como por ejemplo leer los mensajes se
le redirigirá a la pantalla de
login. En el siguiente vídeo podéis ver el funcionamiento de la monitorización con
Selenium (parte izquierda) y de un intento de acceso teniendo
Latch bloqueado (parte derecha
).
Figura 6: Vídeo demostrativo de esta Prueba de Concepto de bloqueo de Facebook con Latch
Este
hack se podría utilizar como sistema de alerta, no necesariamente con
Selenium, sino con cualquier programa a medida que dejemos funcionando en un servidor en la cloud que nos sirva de "
Vigilante" y que pueda usarse, por ejemplo, como forma de
Control Parental del uso de Facebook en menores. Recuerda que en
Facebook puedes activar el
Generador de códigos de la
app de
Facebook para el terminal móvil, que protege contra conexiones infrecuentes.
Otros hacks posibles con Latch de forma similar
Adicionalmente podríamos utilizar todo el potencial de
Latch,
añadiendo operaciones para distintos tipos de sesiones dependiendo de
dispositivos móviles, equipo de conexión, horas, ubicaciones o
direcciones
IP ya que toda esta información está disponible. Este mismo concepto, se puede aplicar también de forma análoga en cuentas de
Google /
Gmail, donde en la parte inferior de nuestra bandeja de entrada, encontraremos un enlace “
Información detallada”.
|
Figura 7: Actividad de cuenta de Google (Gmail) |
A través de este enlace podemos abrir una ventana con información de
las sesiones activas. En este caso, no podemos cerrarlas
individualmente, pero sí podremos invalidarlas todas, haciendo clic en
el botón. Cómo veis las posibilidades de integración con
Latch son múltiples. En una próxima entrada veremos cómo establecer un sistema de alertas en nuestra cuenta de
Twitter con Latch, mientras tanto recordar que aún quedan algún tiempo para participar en el
Concurso de plugins de Latch, donde se pueden ganar hasta
10.000$ con ideas - tal vez - como esta.
Fuente