0 minutos de lectura
Amenazas Usam APIs do Telegram para Coletar Credenciais
Hassan Faizan
Resumen Ejecutivo
En las últimas semanas, ha habido un aumento en los ataques de phishing, llevados a cabo a través de plataformas de mensajería como Telegram. Telegram es una aplicación ampliamente utilizada que permite a los usuarios enviar mensajes, fotos, videos y otros archivos en línea. También proporciona APIs para que los desarrolladores creen bots y aplicaciones personalizadas. Desafortunadamente, estas APIs también pueden atraer a actores malintencionados que las usan para fines ilícitos, como el robo de credenciales.
Cadena de Infección
La Figura 1 presenta un ejemplo de un correo electrónico de phishing que muestra una URL, es decir, hxxps[://]www[.]astunet[.]com/wp-plug/imu0nni5/3rhenqt2/
r2.dev es un servicio de almacenamiento en la nube de Cloudflare con una larga historia de hospedaje de páginas de phishing. Aquí observamos una página de destino de phishing, es decir, hxxps[://]pub-31a116fb226d4dfaa2004eef764a6bff[.]r2[.]dev/ayo[.]html#
Al investigar la página HTML, encontramos un script del lado del cliente escrito en JavaScript, con algunos fragmentos de jQuery, que realiza varias acciones, incluyendo el manejo de envíos de formularios y el envío de datos a un bot de Telegram. La Figura 3 muestra un fragmento de código responsable de la solicitud POST que exfiltra credenciales del objetivo y otra información.
La Figura 4 muestra un fragmento de código que define una función responsable de registrar la información de los visitantes en un chat de Telegram. Construye un mensaje detallado usando los datos de los visitantes y otra información, y luego lo envía a un chat de Telegram especificado a través de una solicitud de API.
Otras partes de los fragmentos de código no están incluidas por razones de brevedad. Sin embargo, el código anterior y el resto de los fragmentos de código parecen ser maliciosos y diseñados para fines de phishing. A continuación, se detalla su funcionalidad.
Variables Clave:
- BOT_TOKEN: El token para el bot de Telegram usado para enviar mensajes.
- CHAT_ID: El ID del chat donde el bot envía mensajes.
- LOGGER_TOKEN: : Otro token, posiblemente para propósitos de registro con un bot diferente.
- LOGGER_ID: El ID del chat usado por el bot de registro.
- FILE: Una URL codificada en Base64.
Manejo de URL:
El script comienza una vez que el documento está completamente cargado. Inicializa una variable de conteo en 0. Para manejar la página de phishing descrita anteriormente, se extrae una parte del hash de la URL, se decodifica en Base64 y se almacena en la variable ai. Si la variable ai no está vacía, intentará buscar y mostrar un logo para los dominios extraídos de la dirección de correo electrónico.
Manejador de Envío de Formularios:
- Maneja el envío de formularios cuando se hace clic en el botón con el ID submit-btn.
- Normalmente, cuando se envía un formulario al hacer clic en el botón de envío, el navegador envía los datos del formulario al servidor y recarga la página por defecto. Usando event.preventDefault(), esta acción predeterminada se detiene, permitiendo que el envío del formulario sea manejado con código JavaScript personalizado en lugar del envío tradicional del formulario.
- El código realiza una validación personalizada del correo electrónico mediante una validación básica de formato de correo electrónico usando expresiones regulares y de la contraseña, validando la longitud de la contraseña (mínimo de 4 caracteres). Si estas entradas son válidas, los datos (información del visitante, correo electrónico, contraseña, navegador, idioma y registro MX) se envían a un bot de Telegram utilizando una solicitud AJAX (de manera asincrónica).
- Dependiendo de la respuesta, muestra un mensaje de error o redirige a un archivo PDF, es decir, hxxps[://]www[.]docspro[.]nl/wp-content/uploads/2021/12/Docspro-License-Agreement[.]pdf después de una simulación de inicio de sesión exitosa.
Funciones Auxiliares:
- handleBase64Data(string)
- Decodifica una cadena codificada en Base64.
- GetBrowserandLanguage()
- Recupera la versión del navegador y el idioma del cliente.
- logVisitorToTelegram(email)
- Función asíncrona utilizada para registrar la información del visitante en un chat específico de Telegram usando el bot de registro.
- getMXRecord(domain)
- Función asíncrona que obtiene registros MX (Mail Exchange) para un dominio específico usando la API DNS de Google.
- getVisitorIP()
- Obtiene la información del IP del visitante del servicio ipinfo.io.
- sendVisitorIP():
- Función asíncrona que combina la obtención del IP del visitante con otra información (ciudad, país, región) y la envía al destino deseado.
Curiosamente, entre las variables clave, la variable FILE no se observa siendo utilizada en el código. Contiene cadenas codificadas en base64, que se decodifican a una URL, es decir, hxxps[://]goldviseinvesmenu[.]com/levels/ll[.]php. Aunque el propósito no está claro, es muy probable que la información del visitante se envíe a este destino deseado.
Conclusión:
El script intenta recopilar credenciales de usuario (correo electrónico, contraseña) y enviarlas a un bot de Telegram de forma asíncrona a través de una solicitud AJAX. Valida los campos de entrada y asegura que cumplan con ciertos criterios. La IP del visitante y otra información se recopilan y envían junto con las credenciales, y la información de la IP y el navegador puede usarse para fines de seguimiento. El script incluye funcionalidad para buscar y mostrar logotipos de dominios basados en la dirección de correo electrónico proporcionada. El uso de event.preventDefault() es crucial en este código para interceptar el comportamiento predeterminado de envío del formulario y permitir el manejo personalizado de los datos del formulario sin recargar la página.
Indicador de Compromiso:
Subject | s***@[redacted] has shared Fin...Statement_[redacted]1325303630.pdf" with you today |
Compromised Domain | www[.]astunet[.]com |
Phishing landing page | hxxps[://]pub-31a116fb226d4dfaa2004eef764a6bff[.]r2[.]dev/ayo[.]html# |
C2 domain (likely) | goldviseinvesmenu[.]com |
Legit PDF file (just for placeholder) after successful login | hxxps[://]www[.]docspro[.]nl/wp-content/uploads/2021/12/Docspro-License-Agreement[.]pdf |
Telegram Bot | hxxps[://]api[.]telegram[.]org/bot7256693481:AAHVAkPmxExV-EPf1cOIk-cCH0L0SR9aq7o/sendMessage?chat_id=5616766790 |
Declaración de Protección:
- Fase 1 (Reconocimiento) – Recolección de direcciones de correo electrónico. Los correos electrónicos son bloqueados por nuestro análisis de correos electrónicos.
- Fase 2 (Cebo) – Entrega con URL armada. Bloqueada por el análisis web.
- Fase 3 (Redirección) – Redirige a una página de phishing después de hacer clic en la URL armada en el correo electrónico. Bloqueada por el análisis web.
- Fase 6 (Llamada a Casa) – El dominio potencial de C2 es bloqueado por el análisis web.
Hassan Faizan
Leer más artículos de Hassan FaizanSyed Hassan Faizan as a Security Researcher for Forcepoint X-Labs Research Team. He devotes his time in researching cyber-attacks that targets the web and email, particularly focusing on URL analysis, email security and malware campaign investigation. He is passionate about analysing cyber threats aimed at windows systems.
En este post
X-Labs
Get insight, analysis & news straight to your inbox
Al Grano
Ciberseguridad
Un podcast que cubre las últimas tendencias y temas en el mundo de la ciberseguridad
Escuchar Ahora