Travelling like a Sir

Buenas compañeros y compañeras,

Hoy os traigo una breve entrada sobre códigos QR. Esos códigos que tanto vemos en carteles por las calles, tickets de conciertos, tarjetas de embarque y un largo etcétera. Algunas empresas utilizan este tipo de imágenes para guardar información de sus clientes, redireccionar a páginas web e incluso dar acceso a zonas restringidas. El problema que tienen estos códigos es que suelen estar siempre en texto plano, como por ejemplo: las tarjetas de embarque de las líneas aéreas.
A continuación, vamos a ver qué contienen y de qué manera podríamos crear nuestra propia tarjeta de embarque con asiento en clase Business (bastante interesante, ya que dependiendo de la compañía aérea podremos acceder a algunas salas V.I.P. de aeropuertos).
Vale, vale… ya sé que no es nuevo y ya se mostró en la Def Con 24 del 2016 y se lleva hablando del tema desde el 2003. Pero es algo que sigue sin solucionarse y que quería desarrollar un poco más.
Lo primero que vamos a ver, es qué tipo de códigos se utilizan para la creación de las tarjetas de embarque. La mayoría son PDF417 o Aztec. El primero se utiliza en las tarjetas de embarque impresas, mientras que el segundo es más común en las aplicaciones móviles:

Imagen PDF417

Imagen Aztec

Ahora que tenemos identificados cuales se utilizan, nos descargarnos un lector. Si tenemos Android podremos utilizar:

https://play.google.com/store/apps/details?id=com.google.zxing.client.android&hl=es

Descargado nuestro lector, podremos escanear unas cuantas tarjetas de embarque que encontremos por Instagram, Google, FB, etc. para ver que contienen.
Para esta PoC vamos a analizar la siguiente tarjeta de embarque:

Vemos que el código contiene la siguiente información:
M1FERRERO PRESA/JOSE I2TCRE MADDUBFR 3979 197Y012A0120 148>5181 7195BFR
00000000000002A405001234567F 1 N

Para entender este formato leeremos la guía de implementación “Bar Coded Boarding Pass” de IATA. Con un par de Google Dorks enseguida podemos encontrarla http://www- qa.iata.org/whatwedo/stb/Documents/BCBP-Implementation-Guide-5th-Edition-June-2016.pdf

Con la guía podremos aprender muchas cosas sobre este estándar, pero en especial nos será muy útil la siguiente imagen contenida en la guía para comprender su estructura.

Llama la atención que existe un bloque de seguridad, pero muchas compañías aéreas siguen sin utilizar este apartado. Otras han aprendido la lección y firman con su PKI la información en dicho bloque.
Teniendo la tabla en mano, vamos a analizar los datos que más nos pueden interesar cambiar de nuestra tarjeta de embarque.

El nombre del pasajero:
FERRERO PRESA/JOSE
Referencia:
I2TCRE
Origen/Destino del vuelo y la compañía aérea:
MAD DUB FR
Número de vuelo:
3979
La fecha del vuelo (mes y día) en tipo Juliana:
197

El tipo de compartimento (economy class Y, first class F y business class J):
Y
Numero de asiento:
012A
Número de secuencia de check-in (el número 120 en realizar el check-in)
0120
Resto de información que no nos hace falta para esta entrada:
148>5181 7195BFR 00000000000002A405001234567F 1 N
Cambiados los datos, sólo tendremos que generar de nuevo un QR. Desde páginas como: https://www.free-barcode-generator.net/aztec/#az-text de manera muy sencilla. Aunque si tenéis tiempo libre, podéis crearos vuestra propia aplicación para la generación de códigos QR o PDF417 con la siguiente librería: https://github.com/zxing/zxing/wiki/Getting-Started-Developing
Para finalizar, aquí tenemos un ejemplo con los datos modificados y el QR resultante:
M1WHITE RABBIT/FOLLOW I2TCRE MADDUBFR 3979 197F001C0120 148>5181 7195BFR
00000000000002A405001234567F 1 N

Obviamente no todos los lectores y sistemas por los que pasamos en los aeropuertos son iguales o realizan las mismas comprobaciones. Eso será algo que habría que investigar por nuestra cuenta y que no nos interesa demasiado si no queremos acabar en Alcalá Meco.
Siento decir que no he podido realizar una prueba de concepto en los aeropuertos donde he estado porque sería ilegal… pero un amigo de un amigo ^^ me ha contado que la comida y champagne en las zonas V.I.P. de los aeropuertos está sobrevalorado.

Colaborador: Pablo Lorenzo Pinar
https://es.linkedin.com/in/pablolorenzopinar