Les attaques APT ciblent le gouvernement indien avec GOGITTER, GITSHELLPAD et GOSHELL | Partie 1
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Zscaler ThreatLabz a découvert deux campagnes – Gopher Strike et Sheet Attack menées par un groupe APT lié au Pakistan ciblant les organisations gouvernementales indiennes. L’activité introduit des outils basés sur Golang, y compris GOGITTER, GITSHELLPAD et GOSHELL, pour mettre en scène des charges utiles, utiliser des dépôts GitHub privés pour le C2, et déployer finalement un beacon Cobalt Strike. L’accès initial est obtenu par le biais de spearphishing avec des PDF qui incitent les victimes à télécharger des fichiers ISO malveillants. Les opérateurs emploient plusieurs méthodes d’évasion, y compris des vérifications environnementales, le remplissage de fichiers, et la persistance de tâches planifiées.
Enquête
L’analyse a montré que GOGITTER valide la présence d’un script windows_api.vbs, le crée s’il est absent, et enregistre une tâche planifiée pour le lancer toutes les 50 minutes. GITSHELLPAD utilise l’API REST de GitHub pour la récupération de commandes et l’exfiltration de données, tandis que GOSHELL charge conditionnellement un beacon Cobalt Strike mis en scène uniquement sur des noms d’hôtes sélectionnés. Les outils intègrent des URL et des chaînes d’agent utilisateur codées en dur pour gêner l’analyse automatisée et le sandboxing. Les campagnes ont également utilisé des dépôts GitHub privés pour héberger des charges utiles de support telles que adobe_update.zip.
Atténuation
Bloquez l’exécution de binaires Golang non signés/non approuvés et imposez un contrôle strict par liste blanche pour la création de tâches planifiées. Surveillez le trafic sortant vers des domaines malveillants connus et vers des ressources GitHub utilisées comme C2, y compris une utilisation anormale de l’API GitHub à partir de points d’extrémité non développeurs. Renforcez la sécurité des emails en scannant les pièces jointes PDF pour détecter les obfuscations et en bloquant les liens qui redirigent vers des téléchargements ISO. Les détections des points d’extrémité devraient alerter sur la création de windows_api.vbs et sur les schémas d’exécution périodiques des tâches consistant en des intervalles de 50 minutes.
Réponse
Si des IOC sont détectés, isolez le point d’extrémité, arrêtez et supprimez la tâche planifiée, et supprimez les artefacts malveillants associés. Effectuez un examen médico-légal des activités de C2 basées sur GitHub, conservez les journaux d’exécution des commandes, et retirez tout contenu exfiltré ou téléchargé lorsque c’est possible. Réinitialisez les informations d’identification pour les comptes affectés, cherchez tout mouvement latéral, et mettez à jour les détections avec les indicateurs extraits pour identifier les activités connexes dans tout l’environnement.
graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#b3e5fc classDef tool fill:#ffe0b2 classDef malware fill:#ffcccb classDef process fill:#d5f5e3 classDef operator fill:#ff9900 %% Nodes – Attack Steps step1_initial_access[« <b>Technique</b> – T1204.002 Exécution par l’Utilisateur : Fichier Malveillant<br/><b>Description</b> : L’utilisateur exécute un fichier malveillant livré via l’ingénierie sociale.<br/><b>Détail</b> : PDF de spear-phishing se faisant passer pour une mise à jour Adobe Acrobat ; le clic sur un faux bouton télécharge un ISO contenant la charge utile. »] class step1_initial_access technique step2_recon[« <b>Technique</b> – T1593.003 Recherche sur Sites/Domaines Ouverts : Dépôts de Code<br/><b>Description</b> : L’adversaire collecte des informations à partir de plateformes publiques d’hébergement de code.<br/><b>Détail</b> : Les acteurs malveillants créent des dépôts GitHub privés hébergeant ultérieurement le C2 et les charges utiles. »] class step2_recon technique step3_exec_vbscript[« <b>Technique</b> – T1059.005 Interpréteur de Commandes et de Scripts : Visual Basic<br/><b>Description</b> : Exécute des scripts Visual Basic pour lancer des commandes.<br/><b>Détail</b> : GOGITTER dépose windows_api.vbs et l’exécute afin de récupérer d’autres commandes depuis un serveur web. »] class step3_exec_vbscript technique step4_exec_cmd[« <b>Technique</b> – T1059.003 Interpréteur de Commandes et de Scripts : Invite de Commandes Windows<br/><b>Description</b> : Utilise l’invite de commandes native de Windows pour l’exécution.<br/><b>Détail</b> : GITSHELLPAD exécute des commandes telles que net user, systeminfo, tasklist et curl. »] class step4_exec_cmd technique step5_persistence[« <b>Technique</b> – T1053.005 Tâche/Job Planifié : Tâche Planifiée<br/><b>Description</b> : Crée une tâche planifiée pour exécuter du code malveillant de manière récurrente.<br/><b>Détail</b> : GOGITTER crée une tâche nommée MicrosoftEdge_ConfigurationUpdate_<random> exécutant le VBScript toutes les 50 minutes. »] class step5_persistence technique step6_masquerade[« <b>Technique</b> – T1036.008 Déguisement : Type de Fichier Déguisé et T1036.007 Double Extension de Fichier<br/><b>Description</b> : Les fichiers sont nommés pour paraître légitimes et masquer leur véritable type.<br/><b>Détail</b> : Fichiers déposés nommés windows_api.vbs, adobe_update.zip, edgehost.exe. »] class step6_masquerade technique step7_obfuscation[« <b>Technique</b> – T1027.015 Fichiers ou Informations Obfusqués : Compression<br/><b>Description</b> : Utilise la compression pour dissimuler les charges utiles malveillantes.<br/><b>Détail</b> : Charges utiles empaquetées dans des archives ZIP/RAR hébergées sur le dépôt GitHub privé. »] class step7_obfuscation technique step8_account_disc[« <b>Technique</b> – T1087.001 Découverte de Comptes : Compte Local<br/><b>Description</b> : Énumère les comptes utilisateurs locaux sur le système.<br/><b>Détail</b> : GITSHELLPAD exécute \ »net user\ » pour lister les comptes. »] class step8_account_disc technique step9_network_disc[« <b>Technique</b> – T1016.001 Découverte de la Configuration Réseau du Système : Découverte de la Connectivité Internet<br/><b>Description</b> : Vérifie la connectivité Internet et les points de terminaison C2 accessibles.<br/><b>Détail</b> : Utilise curl pour tester la connectivité vers les domaines de l’attaquant. »] class step9_network_disc technique step10_collection[« <b>Technique</b> – T1560.002 Archivage des Données Collectées : Archivage via Bibliothèque<br/><b>Description</b> : Compresse les données collectées dans des archives pour une utilisation ultérieure.<br/><b>Détail</b> : Outils post-compromission fournis sous forme d’archives ZIP/RAR. »] class step10_collection technique step11_c2[« <b>Technique</b> – T1102.001 Service Web : Dead Drop Resolver<br/><b>Description</b> : Communique avec le C2 via un service web agissant comme un dead-drop.<br/><b>Détail</b> : Utilise l’API REST GitHub pour téléverser info.txt et interroger command.txt. »] class step11_c2 technique step12_exfil[« <b>Technique</b> – T1567.001 Exfiltration via Service Web : Exfiltration vers un Dépôt de Code<br/><b>Description</b> : Exfiltre des données en les téléversant dans un dépôt de code.<br/><b>Détail</b> : Le fichier info.txt collecté est téléversé dans un dépôt GitHub contrôlé par l’attaquant. »] class step12_exfil technique %% Connections – Attack Flow step1_initial_access –>|mène_à| step2_recon step2_recon –>|mène_à| step3_exec_vbscript step3_exec_vbscript –>|mène_à| step4_exec_cmd step4_exec_cmd –>|mène_à| step5_persistence step5_persistence –>|mène_à| step6_masquerade step6_masquerade –>|mène_à| step7_obfuscation step7_obfuscation –>|mène_à| step8_account_disc step8_account_disc –>|mène_à| step9_network_disc step9_network_disc –>|mène_à| step10_collection step10_collection –>|mène_à| step11_c2 step11_c2 –>|mène_à| step12_exfil
Flux d’attaque
Détections
Tentative de communication de domaine de recherche d’IP possible (via dns)
Voir
Processus suspect utilise une URL dans la ligne de commande (via cmdline)
Voir
Utilisation suspecte de CURL (via cmdline)
Voir
Énumération possible du système (via cmdline)
Voir
Énumération possible de comptes ou de groupes (via cmdline)
Voir
Fichiers extraits suspects d’une archive (via file_event)
Voir
Découverte possible de la configuration réseau du système (via cmdline)
Voir
IOC (HashSha1) à détecter : APT Attacks Target Indian Government Using GOGITTER, GITSHELLPAD, and GOSHELL | Part 1
Voir
IOC (HashMd5) à détecter : APT Attacks Target Indian Government Using GOGITTER, GITSHELLPAD, and GOSHELL | Part 1
Voir
IOC (HashSha256) à détecter : APT Attacks Target Indian Government Using GOGITTER, GITSHELLPAD, and GOSHELL | Part 1
Voir
Détection du backdoor GITSHELLPAD et des commandes de nettoyage [Création de processus Windows]
Voir
Détection du téléchargeur GOGITTER et de la communication C2 [Connexion réseau Windows]
Voir
Exécution de la simulation
Prérequis : Le contrôle de vol préalable du télémetrie et référence doit avoir réussi.
Rationnel : 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 TTPs identifiés et visent à générer la télémétrie exacte attendue par la logique de détection. Des exemples abstraits ou non liés mèneront à un mauvais diagnostic.
-
Narratif d’attaque & Commandes :
Un groupe APT déploie le backdoor GITSHELLPAD (edgehost.exe) sur un hôte Windows compromis. Pour se fondre dans le comportement attendu du système, l’attaquant lance le backdoor via le shell de commande Windows (cmd /c). Après avoir complété son payload (par ex. téléchargement de modules supplémentaires), le backdoor effectue un « nettoyage » en terminant son propre processus en utilisanttaskkill /F /PID <PID>. Les deux actions génèrent des événements de création de processus qui contiennent le nom binaire et les sous-chaînes de la ligne de commande requise, satisfaisant la règle Sigma. -
Script de test de régression :
# ------------------------------------------------- # Simuler l'exécution et le nettoyage du backdoor GITSHELLPAD # ------------------------------------------------- # 1. Déposez un espace réservé edgehost.exe (n'importe quel exécutable bénin) $src = "$env:SystemRootSystem32notepad.exe" $dst = "$env:TEMPedgehost.exe" Copy-Item -Path $src -Destination $dst -Force # 2. Lancez edgehost.exe via cmd /c (correspond au modèle cmd_cmd) $proc = Start-Process -FilePath "cmd.exe" -ArgumentList "/c `"$dst`"" -PassThru # 3. Attendez quelques secondes pour assurer que le processus est actif Start-Sleep -Seconds 5 # 4. Nettoyage : tuer le processus edgehost.exe en utilisant taskkill (correspond au modèle taskkill_cmd) $pid = $proc.Id cmd /c "taskkill /F /PID $pid" # 5. Supprimez le fichier déposé Remove-Item -Path $dst -Force -
Commandes de nettoyage :
# Assurez-vous que toutes les instances égarées de edgehost.exe sont terminées Get-Process -Name "edgehost" -ErrorAction SilentlyContinue | Stop-Process -Force # Supprimez le binaire temporaire s'il est toujours présent $tempPath = "$env:TEMPedgehost.exe" if (Test-Path $tempPath) { Remove-Item $tempPath -Force }