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.
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 }