La “No Privacidad” del Internet de las cosas de: @lramonserrano

A causa de un trabajo que me han encargado (está destinado a producir en México), he vuelto a practicar soft-pentest de las comunicaciones inalámbricas.

El objetivo es saber qué smartphones (su conectividad wireless) están activados en un área determinada por la potencia del dispositivo wifi conectado a una raspberri pi. Pongamos unos 75 metros de radio, que no está mal.

Low Cost, fácil de sustituir y máxima disponibilidad.

Me dicen que está destinado a hacer un seguimiento de la actividad de los clientes de las zonas  y centros comerciales: fidelidad, zonas en las que permanecen más tiempo, circulación ..  Un trabajo bonito y relativamente sencillo. Y desde casa, ¡aunque bien poco me hubiera importado hacerlo in situ!

Conforme va avanzando el proyecto, me van dan dando más datos para completarlo: si se puede añadir un campo GPS manual (sí, claro, así sean todos los problemas) y cuánta información más se puede obtener.

Me empiezan a llamar la atención varios temas; que el trabajo se me encargue inmediatamente (supongo que el precio les pareció competitivo), el goteo de información y que el producto ya existe en el mercado sin partir desde cero. En cualquier caso, no es mi problema. Es razonable que vayan suministrando la información a medida de que se toma confianza. Además los productos que hacen esto son propietarios, costosos y requieren de personal formado.

Durante la negociación se dejó claro que el producto sería de propiedad del cliente, que tendrían acceso a la programación y que no necesitarían grandes conocimientos para poder modificarlo, llegado el momento. Con un editor de textos (también de win2), puedes cambiar lo necesario sin tener que acceder al sistema de ficheros linux, ext4, ilegible para windows (¿Aún?)

Al final, la información de la que provee el producto es ésta:

BSSID

¿Qué es lo que se ve?

HOSTPI: Nombre del equipo que toma los datos. Se prevé de que haya más de uno.

TIME: El momento en que el dispositivo se detecta.

GPS: El geoposicionamiento del dispositivo monitor, introducido de forma manual. Hay ampliaciones de Rasp que lo hacen. De todas formas, y teniendo que editar parámetros por cada dispositivo, introducirlo manualmente reduce significativamente el costo.

strength: La relación de potencia del dispositivo detectado contra el producto. Menor cifra, más lejos. -45dB cerca, >-90dB casi fuera de cobertura. Pero depende de ambos aparatos, monitor  y “cliente”.

STATION: La MAC Address del dispositivo detectado.

BSSID: La búsqueda del dispositivo de los puntos de acceso, a los que se ha conectado para intentarlo otra vez.

Estos aparatos que llevamos en los bolsillos, las SmartTv, las Tablets, los gadgets en general, están diseñados para tener la máxima conectividad. Esto no es noticia nueva, es de dominio público. Pero no nos cuentan cuando los adquirimos, que tienen implícita esa función de “desesperación” por conectarse a internet.

Según ello y, basándonos en que sólo lo intenta con los puntos de acceso con los que se autenticado alguna vez, se puede sacar un mapa de los hábitos del propietario del dispositivo. Así de sencillo. Puedo saber dónde va de vez en cuando o ha ido, si es vecino, dónde trabaja probablemente y sus horarios, dónde toma cañas y, seguramente, deducir cual es el nombre del punto de acceso de su casa.

Un ejemplo reciente. El primer campo es la hora en la que se inserta el registro en la base de datos, ya que el formato de captura hace engorroso la inserción en tiempo real de los datos en ella, así que no me queda otra opción, de momento, que grabar en un fichero que después trato. Uno de los últimos, ya en MySql:

En realidad, ¡¡ya hay más de 200.000 registros!! Porque estábamos en fiestas del Pilar y las charangas pasan por debajo de casa todos los días… ¡Arg!

Estos registros son solo una mínima parte de los que se han ido grabando durante 4-5 días de prueba del producto. Este que muestro se supone que es un Sony Ericsson Mobile. (Las 3 primeras cifras de la MAC ya pueden orientarnos sobre el modelo de terminal). Puesto que ningún AP de los que busca este terminal está en mi zona, es un ejemplo perfecto para observar su comportamiento. Voy a buscar alguno otro curioso ..

Mac address: 84:7A:88

Base16 encoding: 847A88

registrar name: HTC Corporation

No. 23, Xinghua Rd, Taoyuan City
Taoyuan County 330
TAIWAN, PROVINCE OF CHINA

select DISTINCT BSSID from datos where macaddress=’84:7a:88:xx:xx:xx';

Bueno. O es médico o paciente, pero de costumbres fijas, adulto, ya que no tiene tantos AP almacenados como el anterior ejemplo, parece tener algo de “educación” de dónde debe o no conectarse y seguro tiene 4/3G. Vamos a por sus hábitos: BSSID

select DISTINCT BSSID from datos where macaddress=’84:7a:88:xx:xx:xx';

+—————————+
| BSSID |
+—————————+
| |
| WLAN_DEBB |
| WIFI_CCAUGUSTA |
| WIFI_ QUIRON ZONA_2 |
| Orange-E5E9 |
| Orange-pazmiM-CM-1o |
| Centro Comercial GranCasa |
+—————————+
7 rows in set (0.14 sec)

No varía mucho… ¿Podría averiguar sus horarios, y si es vecino?

select DISTINCT time from datos where macaddress=’84:7a:88:xx:xx:xx';

50 rows in set (0.15 sec)

Se podrían sacar algunas conclusiones. No es alguien de paso. Por lo menos en 3 días ha estado por la zona en horas similares, aunque no es muy amplio el espectro de información a analizar.  Y por los BSSID que busca, el de su casa creo que es uno de estos dos:

| WLAN_DEBB |
| Orange-E5E9 |

¿Está cerca de la mía?

iwlist wlan0 scanning | grep “Orange-E5E9″

iwlist wlan0 scanning | grep “WLAN_DEBB”

No, no lo está. Pero, ¿Y si eligiese alguno de los puntos de acceso que SEGURO están a mi alcance? No, no lo voy a hacer.

Solo con unos cuantos de estos monitores diseminados por la ciudad se sabría dónde va cualquiera, a qué hora sale, a qué hora llega, su ESSID.. Hasta podría activar un HoneyAP para conseguir la clave de acceso a su router y, a partir de ahí, tiempo y paciencia hasta obtener algo más que su acceso a internet ..

Esto es una ínfima información y nos da una idea de lo que se puede obtener de un sólo smartphone. Voy a sacar una lista de los BSSID.

select DISTINCT BSSID from datos INTO OUTFILE ‘/tmp/BSSID';
Query OK, 1163 rows affected (4.51 sec)  ( ¿Pasa toda Zaragoza por aquí?)

Como NO atento contra la privacidad, cuelgo la lista aquÍ :BSSID

Sé que voy a dejar el artículo como sin terminar, que tendría más “chicha” si hiciera un seguimiento a uno de ellos, o explicase cómo hacerlo. Pero creo que con el ejemplo anterior es suficiente. Además, con solo un punto de monitorización es poco para lo que se podría hacer. El mensaje es además de gastar batería, ya sabes que te pueden seguir por los lugares donde has estado conectado, etc …

¿Para que tienes activado el wifi de tu smartphone?

Ejemplos de uso:

  • Calles comerciales
  • Centros comerciales
  • Detectives
  • Fuerzas y Cuerpos de Seguridad del Estado

Así que, amiguetes, pensadlo 2 veces antes de dejar el smartphone con la conectividad a full-time….

PD: ¿Será éste nuestro próximo Gran Hermano?

2 thoughts on “La “No Privacidad” del Internet de las cosas de: @lramonserrano

  1. Me ha entrado miedito Ramón. Pero no se de qué me asombro si hasta en google puedes ver el recorrido por dias que se ha hecho. Voy a borrar el número del zapato que llevo, porque cualquier dia me vienen a casa a venderme justo mi número.

    A mi me queda una duda, y despues de recoger e interpretar todo eso en realidad qué quieren hacer? publicidad personalizada e individualizada? Puede, supongo que será eso, pero lo que sobretodo para mi es un cotilleo mayúsculo, vamos un patio de porteras. Menos mal que mi vida es muy insulsa, que si no….

    Un post muy interesante Ramón, siempre aprendiendo contigo

    Besotes!!

  2. Pingback: un poco de seguridad... un poco de locura

Deja un comentario

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