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.
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.
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:
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?
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.
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.
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.
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.
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)
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)
Me ha hecho gracia lo de "Retocado para proteger la privacidad del usuario".
ResponderEliminarNo entiendo para que lo retocas, ese usuario quiere que cualquiera tenga datos sobre el, ¡Estás violentando su volutad!
En Argentina, nuestro presidente postea sus pasajes en Instagram :)
ResponderEliminarhttps://www.instagram.com/p/BAvB8fuAyLy/
¿Se podría crear un código QR que lleve a una aplicación / web que modifique la fecha de un iPhone a 1 de Enero del 1970? O:-)
ResponderEliminarBuenas,
ResponderEliminarSi la informacion que contienen los QR-Codes no va cifrada, que tan seguro es un QR-Wifi para evitar que un invitado averigue la clave?
Saludos!
I'm glad to be reading this article, I simply want to offer you a huge thumbs up for your great information.
ResponderEliminarTableau Guru
www.sqiar.com
Un ataque interesante seria conseguir un buffer overflow cuando escanean tu billete de avion/tren y conseguir ejecutar en la aplicacion que escanea algo. Por defecto tienen que escanear Tu ticket, si no no Se pasa.
ResponderEliminarFelicidades mi estimado Chema me encantaria que hables sobre el codigo QR que sirve como autenticacion para Whatsapp Web... Gracias
ResponderEliminar...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 ....
ResponderEliminarPues si, me atreví eso si con un conversor online (http://zxing.org) :) y en efecto muy buen truco, las mentes inquietas hoy en día tiene mucho peligro.
/w/decode?u=
Decode Succeeded
Raw text
SMSTO:+1876999888777:Premium Subscription
Raw bytes
20 3d 02 a1 31 92 81 03 4b ba ef dc db 5d 05 4e
94 1c 99 5b 5a 5d 5b 48 14 dd 58 9c d8 dc 9a 5c
1d 1a 5b db 80 ec 11 ec 11 ec 11 ec
Barcode format QR_CODE
Parsed Result Type SMS
Parsed Result
+1876999888777
Premium Subscription