Le Code PyRAT : Internes d’un RAT Basé sur Python
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
L’article dresse le profil de PyRAT, un cheval de Troie d’accès à distance basé sur Python et empaqueté sous la forme d’un binaire ELF à l’aide de PyInstaller. Il fonctionne à la fois sur Linux et Windows, communique avec un serveur C2 via HTTP non chiffré, et prend en charge l’exécution de commandes, l’exfiltration de fichiers, la capture d’écran et une routine d’autodestruction. La persistance est mise en œuvre via XDG autostart sur Linux et une clé de registre Run sur Windows. Le rapport souligne la légèreté de l’outil et la facilité avec laquelle il peut être réutilisé par les cybercriminels.
Enquête
Les chercheurs ont extrait le bytecode Python intégré avec pyinstxtractor, décompilé les modules et identifié la classe principale Agent qui effectue l’empreinte digitale de l’hôte, la génération d’UID, la gestion des threads et la coordination C2. L’analyse statique a révélé les importations clés, les noms de fichiers, l’interaction avec le registre et le point de terminaison HTTP POST utilisé pour le signalement. Les tests comportementaux ont montré le flux de travail complet : création de persistance, exécution de commandes, énumération de fichiers, opérations de téléchargement/téléversement, création d’archives ZIP, capture d’écran et nettoyage optionnel des artefacts.
Atténuation
Surveillez les fichiers .desktop autostart suspects créés dans les profils utilisateur et les ajouts à la clé de registre HKCURun utilisant des noms exécutables inconnus. Au niveau du réseau, surveillez le trafic HTTP POST sortant vers des hôtes inconnus ciblant le point de terminaison /api/{uid}/hello. Sur les terminaux, signalez les binaires ELF inconnus contenant du contenu Python intégré et un comportement de processus anormal tel que l’exécution fréquente de sous-processus.
Réponse
Si détecté, isolez le système, collectez l’échantillon ELF et tout fichier .desktop associé, et préservez l’état du registre pertinent. Extrayez l’UID, l’adresse C2, et tous les fichiers transférés lors de l’exécution dans le cadre de l’analyse judiciaire. Bloquez l’infrastructure C2 identifiée, supprimez la persistance et effectuez un nettoyage complet. Modifiez les identifiants des comptes qui ont pu être compromis.
Flux d’attaque
Détections
Suppression potentielle de malware ou dissimulation sur STDERR (via cmdline)
Voir
Une archive a été créée dans le dossier Tmp Linux (via file_event)
Voir
Points de persistance possibles [ASEP – Hive Software/NTUSER] (via cmdline)
Voir
Tentative de suppression de clés de registre possible (via process_creation)
Voir
Tentative de modification de fichiers Linux XDG Autostart (via cmdline)
Voir
Des permissions dangereuses pour un binaire/script/dossier ont été définies (via cmdline)
Voir
IOCs (HashMd5) à détecter : Le code PyRAT : RAT basé sur Python et ses internes
Voir
Persistance Windows via la clé Run d’utilisateur actuel [Événement de registre Windows]
Voir
Détection de la persistance de PyRAT sur Linux [Création de processus Linux]
Voir
Exécution de la simulation
Prérequis : La vérification du télémétrie et de la base de référence doit être réussie.
Justification : 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 TTP identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.
-
Narration de l’attaque et commandes :
Un attaquant a obtenu un identifiant SSH compromis pour un utilisateur régulier. Après connexion, il exécute un script de type « living off the land » qui :
- Écrit la charge utile ELF malveillante (
agent-svc.pyc) dans le répertoire personnel de l’utilisateur, la déguisant en fichier bytecode Python alors qu’il s’agit en réalité d’un binaire ELF. - Copie un outil de paquetage Debian masqué nommé
dpkgndans/usr/local/bin, lui accordant des droits d’exécution. L’outil est un simple wrapper qui lance la charge utile ELF. - Installe une entrée de bureau autostart (
dpkgn.desktop) dans~/.config/autostartafin que la charge utile s’exécute à chaque démarrage de session graphique. - Définit les permissions appropriées pour éviter toute suspicion immédiate.
Les événements de fichiers combinés (
agent-svc.pycanddpkgn) satisfont à la première condition de la règle, tandis que le fichier.desktopsatisfait à la seconde condition. - Écrit la charge utile ELF malveillante (
-
Script de test de régression :
#!/usr/bin/env bash set -euo pipefail # 1. Déployer une charge utile ELF malveillante déguisée en .pyc MALWARE_PATH="$HOME/agent-svc.pyc" echo "Création d'une fausse charge utile ELF (binaire fictif)..." dd if=/dev/zero bs=1 count=1024 of="$MALWARE_PATH" status=none chmod +x "$MALWARE_PATH" # 2. Déployer un faux outil Debian nommé dpkgn FAKE_TOOL="/usr/local/bin/dpkgn" echo "#!/usr/bin/env bash" | sudo tee "$FAKE_TOOL" > /dev/null echo "exec "$MALWARE_PATH" "$@"" | sudo tee -a "$FAKE_TOOL" > /dev/null sudo chmod +x "$FAKE_TOOL" # 3. Créer une entrée de bureau autostart AUTOSTART_DIR="$HOME/.config/autostart" mkdir -p "$AUTOSTART_DIR" DESKTOP_FILE="$AUTOSTART_DIR/dpkgn.desktop" cat > "$DESKTOP_FILE" <<EOF [Desktop Entry] Type=Application Exec=$FAKE_TOOL Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name=Package Manager Comment=System Update Service EOF echo "Artefacts de persistance PyRAT déployés." -
Commandes de nettoyage :
#!/usr/bin/env bash set -euo pipefail # Supprimer ELF malveillant rm -f "$HOME/agent-svc.pyc" # Supprimer faux outil sudo rm -f /usr/local/bin/dpkgn # Supprimer l'entrée autostart rm -f "$HOME/.config/autostart/dpkgn.desktop" echo "Nettoyage terminé."