URLs en Base64: cómo los atacantes ocultan enlaces en texto codificado
Base64 es un método de codificación que convierte datos binarios o texto en una cadena de caracteres imprimibles. Es parte del funcionamiento normal del correo electrónico y de muchas APIs web, pero los atacantes lo usan también para esconder URLs de phishing a simple vista.
¿Qué es Base64?
Base64 representa datos usando un alfabeto de 64 caracteres: letras mayúsculas (A-Z), minúsculas (a-z), dígitos (0-9), y los símbolos + y /. Cuando la longitud del dato no es múltiplo de 3, se añade relleno con el carácter = al final.
Ejemplos de URLs codificadas en Base64:
aHR0cHM6Ly9wYXlwYWwuY29t=https://paypal.comaHR0cHM6Ly9waGlzaGluZy54eXov=https://phishing.xyz/
Base64 no cifra los datos: cualquiera puede decodificarlo sin clave. Solo los hace ilegibles a primera vista.
¿Por qué los atacantes ocultan URLs en Base64?
Los filtros antispam y antiphishing de los clientes de correo buscan patrones reconocibles como dominios maliciosos conocidos, palabras clave de phishing o URLs sospechosas. Un string Base64 como aHR0cHM6Ly9waGlzaGluZy54eXov no activa estas reglas porque no contiene texto legible.
Las razones principales por las que se usa Base64 para ocultar enlaces:
- Eludir filtros de correo: El dominio de phishing no aparece en texto plano en el mensaje.
- Ocultar en parámetros de URL: La URL maliciosa se pasa como valor Base64 de un parámetro en un dominio legítimo.
- Engañar al destinatario: El string parece un identificador técnico sin significado, no una URL.
¿Cómo aparece Base64 en ataques reales?
En parámetros de redirección
El atacante usa un dominio con buena reputación que tiene una función de redirección abierta:
https://empresa-conocida.com/click?dest=aHR0cHM6Ly9waGlzaGluZy54eXov
El filtro ve el dominio de la empresa conocida y no bloquea el mensaje. El valor del parámetro dest= decodificado en Base64 es la URL de phishing real.
En el cuerpo del correo
El cuerpo completo de un correo HTML puede estar codificado en Base64. Esto es técnicamente normal para soportar caracteres internacionales, pero también permite que el contenido del correo no sea escaneado fácilmente en texto plano por algunos filtros.
En mensajes de texto o aplicaciones de mensajería
Los atacantes pegan strings Base64 en mensajes acompañados de instrucciones como "copia este código y pégalo en tu navegador". Al decodificarlo, revela una URL de phishing.
Cómo identificar Base64 en un mensaje o URL
- El string contiene solo letras, números,
+y/, y puede terminar en=o==. - Su longitud es siempre múltiplo de 4.
- Aparece como valor de un parámetro como
url=,data=,redirect=,link=odest=. - No contiene palabras legibles ni separadores como
://o.en abundancia.
Cómo decodificar y comprobar una URL en Base64
2check.click detecta y decodifica automáticamente los strings Base64 que aparecen en URLs o mensajes pegados. Muestra el destino real al que apunta el string codificado y lo analiza en busca de señales de phishing, como antigüedad del dominio, marca suplantada o patrones sospechosos.
Compruebe un enlace sospechoso
Pegue una URL, mensaje o código QR en 2check.click para analizar el destino, redirecciones, antigüedad del dominio y otras señales de phishing.
Preguntas frecuentes
¿Base64 en una URL es siempre señal de phishing?
No. Muchos sistemas legítimos usan Base64 en URLs para pasar datos de sesión, tokens de autenticación o referencias a archivos. Es una señal de alerta que justifica inspección, no una prueba de malicia.
¿Puedo decodificar Base64 yo mismo?
Sí. Puede copiar el string y pegarlo en cualquier decodificador Base64 online para ver el texto resultante. Sin embargo, eso solo le muestra el contenido; 2check.click además analiza si la URL revelada es sospechosa.
¿El correo electrónico siempre usa Base64?
Muchos correos se transmiten con el cuerpo en Base64 para garantizar la compatibilidad con caracteres internacionales. Eso es técnicamente necesario y no es un riesgo de seguridad. Lo problemático es cuando se usa Base64 para ocultar URLs maliciosas dentro del contenido.
¿Un filtro antispam no detecta el Base64?
Los filtros modernos aplican decodificación Base64 antes de escanear el contenido. Sin embargo, cuando el Base64 está anidado en un parámetro de una URL de un dominio con buena reputación, algunos filtros no llegan a decodificar ese segundo nivel.
¿Cómo sé si un string largo es Base64 o simplemente un identificador?
Si el string tiene longitud múltiplo de 4, contiene solo caracteres del alfabeto Base64 y termina en =, muy probablemente es Base64. Puede confirmarlo pegándolo en un decodificador: si el resultado es texto legible o una URL, era Base64.