Están por todas partes, nos rodean y no nos damos cuenta... hasta que ves uno y ya no puedes parar de buscarlos con la mirada y la verdad es que sin buscarlos, también los encuentras. Con los códigos
QR pasa un poco como con los
metadatos, es algo a lo que normalmente no se le presta atención pero está y se le puede sacar partido. Muchos investigadores de seguridad ya han hablado en el pasado de los riesgos de escanearlos a la ligera, ya que son un vector de entrada para un posible ataque, pero es que además son una gran fuerte de información que puede ayudar a un atacante a encontrar un camino para colarse dentro de los servicios de las organizaciones, o para acceder a a datos de los usuarios.
 |
Figura 1: QR Code Leaks. No posturees con tus billetes de viaje |
Códigos
QR los hay de multitud de tipos y versiones, y además se utilizan para multitud de usos diferentes. Los más comunes son los códigos de tipo 1 y 2 en su versión de la 1 a la 40. Como posibles usos basta con localizar con cualquier buscador “
QR generator” y encontrarás posibilidades de todo tipo: tarjetas de identidad virtuales, enlaces, mapas, correo electrónico,
SMS, conexión
Wi-Fi, texto, pagos, etcétera son algunos de sus posibles usos.
 |
Figura 2: Tipos de códigos QR con números de módulos para ser construidos |
A partir de este punto ya se nos abre otra puerta para usarlo como medio de obtención de información y de
exploiting, dejando rienda suelta a nuestra imaginación. Como ideas surgen unas cuantas:
- URLs de Subscripción: Publicitar un tema cualquiera para que participes en un concurso de los típicos que regalan un iPhone y poner un QR que te suscriba de forma sencilla a servicios de pago allí por Jamaica. Una estafa tan sencilla como la de los SMS Premium, pero basada en un QR Code. Para muestra una URL de suscripción metida en un QR Code que puedes escanear... si te atreves.
 |
Figura 3: Código QR que esconde una URL de suscripción a un servicio |
- Rogue AP WiFi: Conectar a la víctima a una red Wi-Fi controlada por nosotros para tener un esquema de man in the middle y usar las mismas técnicas que se emplearon para pillar in fraganti al vecino hax0r que te roba la WiFi y sacar a cualquiera hasta las citas con el dentista.
- Exploits Kits: Hacer exploiting a través de los códigos QR de las aplicaciones que los procesan y después ya, cada cual que ponga el payload que mejor le venga. Aquí tienes un ejemplo que explica cómo usar los QR Codes para llevar a las víctimas a payloads de MetasPloit.
- OSINT & Spear Phishing: Utilizarlos como una parte de las técnicas OSINT para dirigir ataques de ingeniería social.
De las tres primeras ya hemos visto en el pasado grandes investigaciones, pero es en esta última es en la que me voy a detener un poco más, porque esta fue de las primeras cosas que pasaron por mi mente.
Los QR Code Leaks en los billetes de vuelo
Un buen día de esos en los que te queda tiempo para mirar algo diferente del trabajo que tienes que sacar para ayer, me percaté de un billete de
RENFE que tenía enfrente de mí y mapeé todo lo que aparecía en el código
QR que lleva, con los campos que había impresos para comprobar que no había nada que no pudiera ya verse a simple vista pero... ¿Y los billetes de vuelo? ¿Pasará lo mismo con compañías como
Vueling o
Delta que hacen uso de ellos?
 |
Figura 4: Billete de Renfe con QR Code localizado en Google Images |
Con una búsqueda sencilla para hacer
hacking con buscadores, localicé en
Google billetes de compañías aéreas que la gente exponía gratuitamente, por aquello de que todo el mundo sepa dónde se va de vacaciones y nos dé la más amarga de todas las envidias posibles.
 |
Figura 5: Billete de Vueling con QR Code localizado en Google [Retocado para proteger la privacidad del usuario] |
Pero claro, el tema es que, como lo que no se ve, para muchos no existe, lo que hay en el código
QR no lo anonimiza nadie (ni tampoco lo cifran las compañías) y ahí está entre otras cosas el nombre y apellidos, los aeropuertos de origen y destino Y... el
Código de Reserva (también impreso en el propio billete). El tema es que con toda esta información podemos ir a la web de reservas correspondiente y obtener más información acerca de la persona en cuestión y todos los que le acompañaron.
 |
Figura 6: Datos personales de la reserva en la web de Check-in Online |
A partir de aquí ya se puede elaborar un ataque de
Spear Phishing empleando herramientas como
SET con la intención de conseguir cualquier cosa que se nos ocurra, como por ejemplo el resto de dígitos de la tarjeta bancaria, sus claves de acceso registrado porque hay un problema con su programa de puntos o … deja aquí que tus maléficos pensamientos campen a sus anchas }:F. Eso sí, en el peor de los casos siempre podemos facturarle el asiento a la víctima en el asiento de cola al lado del baño.
Así luce la estructura de los billetes de vuelo, no sólo de esta compañía sino de cualquiera de las que he podido analizar con alguna pequeña diferencia. Para leer este código puedes usar
Barcode scanners para
Android, si tienes
iOS busca alguno compatible con
PDF 417.
Tras darme cuenta de esto me dirigí a la persona implicada para explicarle que esto de poner sus billetes de vuelo por
Internet no era la mejor de las prácticas y que si quería dar envidia a alguien sin poner en riesgo otros aspectos de su vida personal, era mejor que subiese la típica foto del mojito, en cualquiera de sus variantes - con sombrilla, con la rodajita de limón, con menta, con lima o con la tan recurrida pajita de colores -, tras su vuelta a casa. Ya sabéis, por si a los amigos de lo ajeno les da por hacer uso de tu
oversharing.
Un XSS Reflejado en un QR Code
Pero la lista de posibilidades de ataque no acaba ahí, ni mucho menos, pudiendo anotarse en la misma un extenso número de vulnerabilidades, como cualquier otra que se pueda provocar a través de la carga de una página web. Si el código
QR nos está permitiendo incluir un enlace, a través de un acortador de
URLs y redirecciones mediante etiquetas meta, nos podemos fabricar una forma ultrasencilla de aprovechar estos códigos sin que la víctima se percate.
 |
Figura 8: Ataques realizables mediante QR Codes |
Un ejemplo sencillo de ataque puede verse con este
XSS Reflejado. Simplemente escanea este
QR Code con tu lector favorito y ábrelo con
Firefox en tu móvil. Recibirás el típico mensaje de alerta mostrando un 1, indicativo de que el
XSS es explotable desde tu dispositivo.
 |
Figura 9: QR Code con un XSS reflejado en una web. |
Alguien te puede plantar un formulario de entrada exactamente igual que el de la página a la que supuestamente te redirige un determinado
QR Code si ésta sufre de un
HTML injection reflejado, redirigiéndote después a la original y quedándose por en medio con tus credenciales, con la ventaja de que la barra de navegación de tu teléfono móvil o trablet la inyección no la vas a ver debido a su reducido tamaño, al igual que ocurre con el
XSS anterior. Ya se han hablado mucho de los
problemas con los ataques Client-Side en los dispositivos móviles.
Más ideas para QR Code Attacks
Pero el número de posibilidades de ataque vía
QR Code es amplio y crece cada día. Se puede forzar la descarga de aplicaciones maliciosas, o crear un código
QR de acceso universal con ataques de inyección. Cualquier aplicación puede estar construyendo una consulta en línea sin hacer uso de
prepared statements, lo que nos deja una puerta abierta a conseguir códigos
QR mediante inyecciones
SQL que sean siempre válidos para el acceso a nuestro evento favorito. Os dejo a vosotros que continuéis con la lista de ideas que yo intentaré implementarlas para la próxima charal que tenga la suerte de dar en alguna
CON y así la liemos un rato escaneando códigos
QR en vivo y en directo.
Salu3!
Autor: Miguel Ángel Hernández Ruiz
Twitter (@miguelangelher)