Miles de Tarjetas Bip! o Analizando la Tarjeta Bip!

Supe gracias a Internet que Metro de Santiago activó una campaña publicitaria con el objetivo de enseñar buenos hábitos en los usuarios del sistema de transporte público Transantiago, mientras que, al mismo tiempo, por osmosis, denuncian los arquetipos de santiaguinos más indeseados de la capital. Me parece ridículo; es una medida que, a todas luces, tratará infructuosa y erróneamente de remediar los efectos de un sistema mal pensado, y no sus causas… ¿De qué sirve apuntar con el dedo a esa persona que corre a sentarse en cuanto se abren las puertas del vagón, si éste, de una u otra manera, terminará atestado de gente, con vendedores ambulantes de dobladitas con queso, mientras oyes la voz del conductor hipócrita por alto parlante: “(…) Metro de Santiago agradece su preferencia (…)”?

¿Qué ocurre con la falta de seguridad, la ausencia de baños, y esa lista interminable de faltas como la limpieza, por ejemplo? Palomas literalmente pintando de blanco el andén con su mierda, estaciones inundadas en invierno, ratones en la vía férrea y un gran número de personas dejando su comprobante de carga en el mesón o tirándolo al suelo…

Números, números, y más números

Fue así que decidí recolectar comprobantes de pago con alma ecológica, hasta que empecé a cuestionarlos: ¿qué información podría obtener de ellos? ¿Existe un patrón X? ¿Datos personales? ¿El origen de la vida? Lo primero que advertí es que no son todos los comprobantes iguales e incluyen información clave de atención al usuario como el número de la operación, del cajero y de la terminal de ventas:

Comprobantes de Carga Tarjeta Bip! Transantiago

Pero no sólo esos números llamaron mi atención, y me hice las mismas preguntas que tal vez te surgieron a ti ahora: ¿cuántas tarjetas Bip! existen y están activas? ¿Existe correlación numérica para los digitos de N° de chip o N° de tarjeta? ¿Qué uso tienen o les podemos dar?

Si las numeraciones de las tarjetas Bip!, en teoría (basados en los comprobantes de pago que recolecté), se componen de 8 digitos y queremos conocer un total especulativo de numeraciones, tenemos que saber cuál es la primera numeración asignada, así que consulté el saldo del N° de tarjeta Bip! 00000001:

Tarjeta Bip! Transantiago N° 00000001

La N° de tarjeta arrojó el estado de no disponible para carga y con saldo $0. Entonces probé con las siguientes numeraciones hasta llegar al N° de tarjeta Bip! 00000004:

Tarjeta Bip! Transantiago N° 00000004

El N° de tarjeta Bip! 00000004 no se puede cargar pero figura con un saldo disponible de $1,700 desde el 8 de Octubre del año 2003. Curioso, pero ya tenemos, al parecer, el N° de tarjeta Bip! que por primera vez tuvo saldo, y comprobamos que sí, efectivamente, existe una correlación numérica en las tarjetas.

Miles de Tarjetas Bip!

Para comprobar la correlación numérica de 8 digitos, realicé todas las combinaciones posibles de 8 cifras por bloque (bloques de numeración que comienzan por “1”, “2”, “3”, y bloques que tienen menos de 8 digitos, ya que las numeraciones han sido asignadas de esta manera, tal vez por las cantidades de tarjetas que se producen y asocian a números de chip concretos)… Con la ayuda de excel online y fórmulas, logré obtener miles de posibles números de tarjetas Bip!:

Númeración de Tarjetas Bip! Transantiago

Para comprobar las numeraciones tomé varias de ellas al azar y consulté su saldo. En este caso, la numeración 8780415, correspondiente a la celda B5 de la captura:

Tarjeta Bip! Transantiago N° 8780415

¡Tarjeta válida! Saldo disponible de $5,780, con fecha 10/03/2016. Pero, vaya, es una numeración de 7 digitos (olvidé que había mezclado los bloques numéricos y ordenado de mayor a menor algunas de las columnas en el excel). Probé con otra numeración, ahora de 8 digitos; 11157916, celda A7: ¡tarjeta válida!

Tarjeta Bip! Transantiago N° 11157916

El % de error es bastante bajo, así que me vi frente a miles de posibles numeraciones de tarjetas Bip! ¿Y ahora qué? ¿De qué me sirve conocer la numeración, el saldo y la validez de miles de tarjetas Bip!? En ese momento percaté que se puede generar un random o especie de fuzzing por método GET, a través de la siguiente URL de la página de cargas de Metro de Santiago, y tomar masivamente todos los datos de estas miles de numeraciones:

http://www.metrosantiago.cl/contents/guia-viajero/includes/consultarTarjeta/11157916

Tarjeta Bip! Transantiago Random o Fuzzing

¿Quién eres, a qué te dedicas, dónde vives o has estado?

Quedé abrumado por esta información ya que al tratarse de miles de numeraciones, las posibilidades para procesar estos datos son muchas: si eres mal intencionado puedes hacer un leak de todas las numeraciones, utilizarlas como datos cuantitativos o cualitativos para diferentes fines, y todo lo que la imaginación nos permite hacer. Sin embargo, utilizando sólo herramientas libres y públicas, y las miles de numeraciones generadas sin acceso a la base de datos de Transantiago y Metro, podemos tratar de determinar quién es el dueño de la tarjeta, a qué se dedica, dónde vive y dónde ha estado durante ciertos rangos de tiempo (horas, días, semanas y meses). En el caso de la tarjeta Bip! con numeración de siete digitos 8780415, del ejemplo anterior, obtenemos el siguiente historial:

Historial de Tarjeta Bip! Transantiago N° 8780415

Tomando el día 22 de Febrero de 2016, sabemos que el usuario de la tarjeta cargó un saldo de $4,000 a las 12:17 pm en Avenida Alfredo Silva Carvallo N° 1401, en la comuna de Maipú. Luego, usó su tarjeta 22 minutos después, en el validador de la micro con patente BJFB-22, N° de recorrido T506. Con esta data y gracias a Google y el fotógrado Ariel Cruz, sabemos ahora que el usuario se subió a un troncal del Transantiago a las 12:39 pm, en la intersección de calle Hernán Olguín y Avenida Alfredo Silva Carvallo: https://goo.gl/maps/WLwnZ4bjzBm

Intersección calle Hernán Olguín con Avenida Alfredo Silva Carvallo en la comuna de Maipú

Troncal Recorrido 506 Transantiago

Fotografía de Ariel Cruz: https://www.flickr.com/photos/empezardecero/6332321199

¿Por qué el usuario se subió al troncal en dicha intersección? Por la sencilla razón de que es el paradero más cercano al Servipag en donde realizó la carga de su tarjeta. Esto significa que la micro demoró 20 minutos en pasar por el paradero, o que el usuario estuvo 20 minutos de compras al interior del supermercado Unimarc.

Ahora bien, ¿por qué no hay más historial del usuario en ese día y sólo hay un nuevo historial el 1o de Marzo de 2016? Posiblemente regresó en automóvil la tarde del 22 de Febrero de 2016, y en base al historial previo, en donde vemos una constante de uso de la tarjeta en los horarios de las 10:00 am y las 13:30 pm, y parcialmente similares rangos de tiempo por la tarde, que concuerdan con los horarios de entrada y salida de muchas escuelas en Chile, existe una alta probabilidad de que la señora y la niña sentadas en la banca del paradero en cuestión, sean las personas de las que hemos estado hablando (si no lo son, cumplen con el perfil); en todo caso, queda al barrunto de cualquiera.

TNE (Tarjeta Nacional Estudiantil) aka Pase Escolar

Luego de entender un poco más para que podríamos utilizar las numeraciones de estas miles de tarjetas Bip!, ¿y el pase escolar? ¿Tendría las mismas características? ¿De dónde obtendría una TNE o Pase Escolar 2016 válido? Pues bueno, con la ayuda de Google:

Pase Escolar 2016

Esta imagen es tomada del conocido periódico online soychile.cl: http://www.soychile.cl/Concepcion/Sociedad/2016/02/23/377130/Cerca-de-18-mil-estudiantes-del-Biobio-recibiran-el-pase-escolar-en-las-proximas-semanas.aspx

Pase Escolar 2016

Así, me fui a consultar el saldo y la vigencia de la Tarjeta Nacional Estudiantil (TNE) de la señorita en la fotografía:

Pase Escolar 2016

Si realizamos los mismos ejercicios anteriores para la generación masiva de numeración de tarjetas y validación, obtendremos, nuevamente, una buena cantidad de numeraciones de TNE o Pases Escolares:

Pase Escolar 2016

Pase Escolar 2016

Celda M33 del excel, numeración 83268597 de tarjeta TNE o Pase Escolar válido. Ahora bien, con la finalidad de certificar aún más esto, gracias al pase escolar que una persona conocida me facilitó, pude constantar que el bloque de numeraciones correspondiente a los iniciados en “7”, también son de los pases escolares.

Cuenta RUT Banco Estado

Sin ir más allá, las numeraciones de las tarjetas Cuenta RUT de Banco Estado, también obedecen a la misma correlación numérica. La generación la hice con el bloque asociado a los que inician con “5”.

¿Cómo explotar vulnerabilidades RFID y otros?

Con la finalidad de sugerirte ideas de estudio respecto de esto, adjunto documento de Marcelo Rocha, el cual será presentado en el MeetUp PROIN de Programadores.cl

 TNEBIP.py, el script de s1kr10s

Son pocos los desarrolladores chilenos especialistas en seguridad que dedican tiempo a crear aplicaciones para explotación. Yo no soy desarrollador, pese a que últimamente le he dedicado más tiempo a la programación del que debo asignarle; aunque bueno, ese ya es otro tema…

En ese camino, hay profesionales de la seguridad que demuestran con hechos su expertise de manera particular, yendo mucho más allá de crear un scanner para WordPress (risas); son éstos los developers a los cuales se les debe temer, pues finalmente terminan creando exploits como el famoso BlackHole.

El chileno s1kr10s, nos muestra sus skills con TNEBIP.py, un script en Python que explota la obtención de información privada de la tarjeta TNE BIP!, más conocido como pase escolar. TNEBIP.py está disponible para su descarga en el siguiente repositorio de Github, y es relativamente fácil de usar.

Para probar su funcionamiento necesitaremos el RUN (mal llamado RUT) de algún chileno o chilena que esté cursando estudios escolares, medios, técnico o universitarios. Para estos fines, en esta ocasión, contamos con el gentil auspicio de la Universidad Andrés Bello UNAB, la cual ha filtrado generosamente en Google los RUN de cientos de sus alumnos través de archivos excel que puedes ver, por ejemplo, en la siguiente URL: https://www.google.cl/#q=unab.cl+xls+rut

RUN Alumonos UNAB Universidad Andrés Bello

Como pueden ver, a diferencia de muchos paranoicos de la seguridad, muchas veces, no es necesario usar “dorks” para lograr dar con información “interesante”…

Volviendo a lo nuestro, descargamos entonces TNEBIP.py de su repositorio, y lo ejecutamos (por supuesto, teniendo instalado previamente Python) seleccionando al azar un RUN del archivo excel, en este caso, el RUN 7.769.727-6, y vemos cómo nos entrega el N° de la TNE asociado al RUN:

TNEBIP.py Pase Escolar TNE Chile

Si quedaste con dudas, te dejo un pequeño vídeo que ejemplifica cómo usar TNEBIP.py:

¡Conclusiones!

Por favor, no botes el comprobante de pago de tu Tarjeta BIP!, en primer lugar, porque es mala educación, y porque en base a él cualquier persona, común y corriente, podrá hacer un historial de dónde vives, has estado, o qué haces en tu rutina diaria. Si no quieres perder tu privacidad, por favor, ¡no seas sucio!

No publiques en ningún lugar fotografías de tu Cédula de Identidad (RUT, RUN, etc), Pase Escolar, Permiso de Circulación, etc., porque es relativamente fácil procesar tu información gracias a las diversas herramientas online que existen hoy en día.

¡Este pequeño análisis puede hacerlo cualquiera! Sin embargo, ¿qué ocurre si llevamos este tipo de análisis a planos directamente relacionados, como por ejemplo, la clonación de tarjetas y RFID? Lo dejo a tu imaginación.