Realizamos un análisis técnico y forense sobre la interceptación mediante generadores de QR dinámicos maliciosos, una técnica de «doble enlace» donde el atacante secuestra el enrutamiento inicial para capturar la huella digital del dispositivo, desplegar exploits o robar credenciales en cuestión de milisegundos antes de redirigir a la víctima a la web legítima (como la carta de un restaurante). Desglosaremos la anatomía técnica de estas redirecciones invisibles, detallaremos sus vectores de explotación y estableceremos las políticas de mitigación y auditoría exactas que deben implementar tanto los administradores que generan los códigos como los usuarios finales que los escanean.

¿En qué consiste el QR Phishing o Quishing?

El ataque se aprovecha de la ignorancia general sobre cómo funcionan los códigos QR. Un QR no es más que texto codificado en una matriz de puntos. Existen dos tipos principales para enlaces web:

  1. QR estático: contiene la URL final y exacta (ej. https://proyectoa.com/category/programacion/). Una vez generado, no se puede cambiar.
  2. QR dinámico: contiene una URL acortada controlada por un servidor intermediario (ej. https://gratis-qr.io/x8f9). Este servidor recibe la petición y redirige (generalmente mediante un código HTTP 301 o 302) a la URL final.

La estafa: imaginemos que el propietario de un restaurante tiene una web donde publica su menú diario (ej. https://restauraranteproyectoa.com/menu.pdf). Y quiere generar un QR con esta dirección web para imprimirla y pegarla en las mesas, para que los clientes puedan escanear el QR y que les muestre el menú. Pues bien, el propietario del restaurante busca en Google «Generar de QR gratis con web». Entra a una web fraudulenta e introduce su URL legítima para generar el QR.

En lugar de devolverle un QR estático, la página le genera un QR dinámico bajo el control de los atacantes. Cuando el cliente escanea el QR, viaja primero al servidor del atacante y, en milisegundos, es redirigido al menú real. El cliente y el dueño ven el menú, por lo que nadie sospecha nada.

El «doble enlace» y la obtención de beneficios por parte de los estafadores

El estafador, al generar el QR con un enlace que, en realidad, accede a sus servidores, posee el control total del tráfico en ese punto intermedio. Al pasar por su servidor (la URL acortada), pueden monetizar ese escaneo de múltiples formas:

  • Fraude publicitario (Ad-Fraud / Clickjacking): el enlace corto carga una página invisible con anuncios. Mediante scripts, simula un «clic» del usuario en la publicidad antes de redirigirlo al menú. El atacante cobra por impresiones o clics fantasma.
  • Inyección de cookies de afiliados (Cookie Stuffing): el intermediario inyecta cookies de tiendas online (como Amazon) en el navegador del móvil. Si el usuario compra algo días después, el atacante se lleva una comisión.
  • Ataques de intermediario (Data Harvesting / Droppers): aquí es donde la situación se vuelve crítica y es donde centraremos el foco de nuestro análisis forense.

Anatomía técnica de un ataque de extracción de datos en el enlace intermedio

Imaginemos que un cliente escanea el QR. En lugar de un simple código de estado HTTP 302 hacia el menú del restaurante, el servidor malicioso sirve una página web HTML/JavaScript que actúa durante 2 ó 3 segundos antes de redirigir.

Paso 1 Device Fingerprinting (Huella Digital del Dispositivo): el script malicioso recolecta silenciosamente la información del móvil: Dirección IP, modelo del dispositivo, sistema operativo, versión del navegador, nivel de batería, plugins instalados y resolución de pantalla.

Paso 2 Decisión lógica del atacante (Targeting): el servidor evalúa la huella digital en tiempo real:

  • ¿Es una IP de una empresa de ciberseguridad o de Google? Lo redirige inmediatamente al menú para evitar ser detectado.
  • ¿Tiene el navegador de Android/iOS desactualizado? Detona el ataque principal.

Paso 3 El ataque (ejemplo: Captive Portal Phishing o Drive-by Download): el atacante puede optar por una de estas dos vías:

  1. Ingeniería social en el intermediario: la pantalla muestra un aviso falso que parece ser del restaurante: «Para conectar al Wi-Fi del restaurante y ver el menú más rápido, inicia sesión con Google/Apple». El usuario introduce sus credenciales (robo de OAuth o contraseñas). Tras darle a «Aceptar», la página ejecuta un window.location.replace("https://restauranteproyectoa.com/menu.pdf").
  2. Explotación silenciosa (Zero-Day / 1-Day Exploits): si el atacante detectó una vulnerabilidad en el navegador (por ejemplo, un fallo en WebKit en iOS antiguos), el código JavaScript ejecuta un exploit en segundo plano. Esto puede forzar la descarga de un malware (troyano bancario) o secuestrar la sesión del navegador para robar tokens de sesión de otras pestañas abiertas (bancos, redes sociales). Todo ocurre en esos 2 segundos en los que el usuario ve una pantalla blanca o un falso «Cargando menú…».

¿Cómo prevenir y evitar la estafa de QR Phishing?

Debemos plantear soluciones en ambos extremos del canal de comunicación: el creador del QR (negocio) y el receptor (usuario/cliente).

Para los creadores de QR (Restaurantes, Tiendas, Empresas)

El objetivo es garantizar la inmutabilidad y la ruta directa de la información que contiene el QR. Para ello, seguiremos estas buenas prácticas en la generación de QR:

  • La más importante: usa generadores de QR seguros, que generen el texto que se les indique y no otro. Por ejemplo, este software gratuito de ProyectoA, seguro y con código fuente disponible:
  • Exigir siempre códigos QR estáticos: a menos que sea estrictamente necesario rastrear métricas, usaremos generadores que ofrezcan explícitamente QR estáticos. Es decir, QR que generen exactamente la URL/Web que le indiquemos y NO otra.
  • Verificación del QR: una vez generado el QR, antes de imprimirlo o publicarlo, es MUY conveniente realizar un escaneo del QR y comprobar qué URL devuelve exactamente, usando una app de lectura simple (o herramientas online confiables) o desde el propio móvil. Verificaremos que la cadena de texto que se extrae del QR sea exactamente la URL del negocio/empresa/servicio, sin acortadores ni dominios extraños. Nuestra app también lee QR: AjpdSoft Generador y Lector códigos QR. Por ejemplo, si leemos un QR generado con la URL»http://proyectoa.com», el lector de QR debe devolver este texto exacto y no otro.
  • Alojar el generador de QR localmente: usar librerías de código abierto en Python (como qrcode) o plugins en tu propio servidor web para generar las imágenes de forma offline. Así aseguras que no hay intermediarios en la creación. En el siguiente enlace te mostramos un artículo sobre cómo generar QR con Python y un ejemplo real:

Buenas prácticas para los usuarios finales (quienes escanean los QR)

La regla de oro es «Verifica primero, confía después».

  • Revisar la URL antes de abrir: las cámaras de iOS y Android, así como Google Lens, muestran la URL a la que apunta el QR antes de abrirla en el navegador. Si estás en el «Restaurante ProyectoA» y el QR apunta a http://qr-scan-free.biz/48f2, ¡no entres! Incluso, si estás en un restaurante/empresa/organización alértalos de que el QR está usando un enlace acortado, ¡PUEDE QUE NO LO SEPAN!. Debería apuntar al restauranteproyectoa.com/menu. Por ejemplo, si escaneamos un QR de una web «fraudulenta», vamos que en la pantalla del móvil muestra «scan.page…», si pulsamos en el icono de desplegar:

El móvil nos mostrará la URL completa:

Y, como se puede observar en la información anterior, la URL (enlace web) es «extraña», acortada, del tipo «scan.page/…», con lo cual, a priori, no es un enlace seguro.

  • Usa escáneres seguros: aplicaciones de seguridad o navegadores modernos a menudo bloquean redirecciones maliciosas comprobando la URL contra bases de datos de Phishing (como Google Safe Browsing), pero no son infalibles contra enlaces nuevos.
  • Desconfía de peticiones extrañas: un menú en PDF o una web de restaurante jamás te pedirá iniciar sesión, instalar perfiles de configuración (muy común en ataques a iOS), actualizar tu navegador ni te solicitará acceso a la cámara o ubicación. Si ocurre, cierra la pestaña inmediatamente.
  • Desactiva la apertura automática: asegúrate de que tu aplicación de escaneo de QR no tiene habilitada la opción de «Abrir enlaces web automáticamente». El paso manual de tocar el enlace es vital para la seguridad.

En definitiva, y como casi siempre ocurre en ciberseguridad, el sentido común y la verificación proactiva son la mejor línea de defensa. Aunque ahora comprendamos la sofisticación técnica detrás de un ataque de Quishing y cómo funcionan estas redirecciones intermedias invisibles, las herramientas por sí solas no pueden protegernos si mantenemos una confianza ciega en nuestro entorno. Adoptar una mentalidad de Zero Trust (Confianza Cero) frente a un elemento tan cotidiano como un código QR es vital hoy en día. Ya sea auditando minuciosamente la URL de un código antes de imprimirlo para tu negocio, o deteniéndote a leer el dominio exacto en la previsualización de tu móvil antes de permitir la conexión, abandonar el «piloto automático» es crucial. Esos pocos segundos de pausa y análisis manual, antes de pulsar en el enlace, para validar hacia dónde nos dirigimos son, en última instancia, la barrera más efectiva e infranqueable entre nuestros datos y el servidor del atacante.