SOC Prime Bias: Critique

18 Jun 2026 14:32 UTC

Les chercheurs d’ESET : l’arsenal de FishMonger amélioré avec SprySOCKS pour Windows

Author Photo
SOC Prime Team linkedin icon Suivre
Les chercheurs d’ESET : l’arsenal de FishMonger amélioré avec SprySOCKS pour Windows
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Les chercheurs d’ESET ont découvert deux nouvelles variantes Windows du cheval de Troie SprySOCKS, nommées WIN_DRV et WIN_PLUS, qui sont liées au groupe de menaces FishMonger. La version WIN_DRV utilise un pilote noyau pour obtenir une furtivité accrue, incluant la capacité de dissimuler des connexions réseau, des processus et des fichiers. Les deux variantes prennent en charge plusieurs protocoles de communication et fournissent un large ensemble de commandes pour le contrôle du système et le vol de données.

Enquête

L’enquête s’est appuyée sur des échantillons de logiciels malveillants découverts via VirusTotal et la télémétrie ESET, révélant une activité s’étendant de 2023 à 2024. Les chercheurs ont analysé les chaînes d’exécution complètes, y compris le chargement latéral de DLL, le chargement de pilotes noyaux via DriverLoader et RawWNPF, et l’injection de processus utilisant des techniques de doppelgänging. L’étude a également révélé des schémas de communication commandement et contrôle et des clés de chiffrement codées en dur partagées entre plusieurs composants.

Atténuation

Les organisations devraient donner la priorité à la correction des applications exposées à Internet pour réduire le risque de compromission initiale via des vulnérabilités N-day. Un renforcement strict de la signature des pilotes et la surveillance de l’installation non autorisée de pilotes noyaux sont essentiels. Les défenseurs doivent également surveiller les tâches planifiées suspectes, les modifications du registre sous Options d’Exécution de Fichier d’Image, et les enregistrements inhabituels de processeurs d’impression.

Réponse

Si ces menaces sont détectées, les systèmes affectés doivent être isolés immédiatement pour empêcher tout mouvement latéral ou vol de données ultérieurs. Les enquêteurs doivent effectuer un examen médico-légal détaillé pour déterminer le vecteur d’intrusion original et l’étendue complète de la compromission, en accordant une attention particulière à la persistance au niveau du noyau. Les journaux réseau doivent également être vérifiés pour la communication avec une infrastructure commandement et contrôle connue, tandis que les modifications système telles que les nouveaux services ou les clés de registre altérées doivent être auditées.

graph TB %% Définition des classes classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef defense fill:#ffcc99 %% Accès initial action_exploit[« <b>Action</b> – <b>T1190 Exploit Public-Facing Application</b><br/>Description : Exploitation de vulnérabilités N-day<br/>sur des serveurs exposés publiquement pour obtenir l’accès initial. »] class action_exploit action %% Branchement des variantes op_variant((« AND »)) class op_variant tool %% Chemin de la variante WIN_DRV action_win_drv_persist[« <b>Action</b> – <b>T1546.012 Event Triggered Execution: IFEO</b><br/>Description : Enregistrement d’un débogueur malveillant pour vds.exe<br/>Outil : script klelam00007.bat »] class action_win_drv_persist action action_win_drv_dll[« <b>Action</b> – <b>T1574.001 Hijack Execution Flow: DLL</b><br/>Description : Chargement latéral DLL avec un exécutable<br/>légitime signé<br/>Outil : ApphostRegistrationVerifier.exe charge tpsvcloc.dll »] class action_win_drv_dll action malware_loader[« <b>Malware</b> : Loader<br/>Description : Utilise Process Doppelgänging<br/>pour effectuer l’injection. »] class malware_loader malware action_reflective[« <b>Action</b> – <b>T1620 Reflective Code Loading</b><br/>Description : Injection du shellcode du backdoor SprySOCKS<br/>via Process Doppelgänging. »] class action_reflective action process_svchost[« <b>Processus</b> : svchost.exe<br/>Description : Processus cible pour<br/>l’injection du shellcode. »] class process_svchost process malware_sprysocks[« <b>Malware</b> : SprySOCKS Backdoor<br/>Description : Maintient le C2 et effectue<br/>la collecte d’informations. »] class malware_sprysocks malware tool_driver_loader[« <b>Outil</b> : DriverLoader<br/>Description : Déploie un pilote<br/>au niveau du noyau. »] class tool_driver_loader tool malware_rootkit[« <b>Malware</b> : RawWNPF Kernel Driver<br/>Description : Fonctionne comme un Rootkit (T1014)<br/>pour masquer les processus, fichiers et clés de registre. »] class malware_rootkit malware action_port_knocking[« <b>Action</b> – <b>T1205.001 Traffic Signaling: Port Knocking</b><br/>Description : Détournement d’un trafic TCP spécialement créé<br/>via Windows Filtering Platform. »] class action_port_knocking action %% Chemin de la variante WIN_PLUS action_win_plus_persist[« <b>Action</b> – <b>T1547.012 Boot or Logon Autostart Execution: Print Processors</b><br/>Description : Installation de VSPMsg.dll comme<br/>processeur d’impression pour la persistance. »] class action_win_plus_persist action %% Post-exploitation et collecte action_keylogging[« <b>Action</b> – <b>T1056.001 Input Capture: Keylogging</b><br/>Description : Capture des frappes clavier,<br/>des données du presse-papiers et des titres de fenêtres. »] class action_keylogging action action_c2[« <b>Action</b> – <b>T1132.001 Command and Control: Protocol</b><br/>Description : Communication via TCP, UDP et WebSocket<br/>avec chiffrement AES-128. »] class action_c2 action action_defense_impair[« <b>Action</b> – <b>T1562.004 Defense Impairment: Disable or Modify Tools</b><br/>Description : Modification des règles du pare-feu Windows<br/>avec netsh.exe pour autoriser le trafic. »] class action_defense_impair action %% Connexions action_exploit –>|mène_à| op_variant %% Flux WIN_DRV op_variant –>|chemin_de_variante| action_win_drv_persist action_win_drv_persist –>|mène_à| action_win_drv_dll action_win_drv_dll –>|charge| malware_loader malware_loader –>|effectue| action_reflective action_reflective –>|injecte_dans| process_svchost process_svchost –>|exécute| malware_sprysocks malware_sprysocks –>|déploie| tool_driver_loader tool_driver_loader –>|mappe| malware_rootkit malware_rootkit –>|facilite| action_port_knocking %% Flux WIN_PLUS op_variant –>|chemin_de_variante| action_win_plus_persist action_win_plus_persist –>|utilise| action_reflective %% Post-exploitation commune malware_sprysocks –>|effectue| action_keylogging malware_sprysocks –>|communique_via| action_c2 malware_sprysocks –>|exécute| action_defense_impair %% Connexion logique action_defense_impair –>|active| action_c2

Flux d’Attaque

## Exécution de la Simulation

Prérequis: La vérification initiale de la télémétrie et de la base de référence doit réussir.

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 viser à générer exactement la télémétrie attendue par la logique de détection. Des exemples abstraits ou non liés mèneront à un mauvais diagnostic.

  • Narration d’Attaque & Commandes : L’adversaire a déployé avec succès le cheval de Troie SprySOCKS sur un hôte Windows compromis. Pour établir un canal de commandement et contrôle, le malware ouvre un socket d’écoute sur le port 53781. Pour garantir que la communication soit reconnue par leur serveur C2 personnalisé, le malware injecte la valeur hexadécimale magique 0xACACBCBC dans les paquets de main levée initiaux. Cela imite le comportement du protocole spécifique du groupe FishMonger pour faciliter une communication fiable via un trafic intercepté ou détourné.

  • Script de Test de Régression :

    # Script de Simulation : Génération d'Artéfacts Réseau SprySOCKS
    # Ce script imite le comportement réseau du cheval de Troie SprySOCKS.
    
    $TargetPort = 53781
    $MagicValue = [byte[]] @(0xAC, 0xAC, 0xBC, 0xBC)
    $Listener = [System.Net.Sockets.TcpListener]$TargetPort
    
    try {
        Write-Host "[+] Démarrage de l'écouteur sur le port $TargetPort..." -ForegroundColor Cyan
        $Listener.Start()
        $Client = $Listener.AcceptTcpClient()
        $Stream = $Client.GetStream()
    
        Write-Host "[+] Connexion établie. Envoi de la valeur magique $MagicValue..." -ForegroundColor Yellow
        # Injection de la valeur magique dans le flux pour déclencher la logique 'selection1'
        $Stream.Write($MagicValue, 0, $MagicValue.Length)
    
        Start-Sleep -Seconds 5
    }
    catch {
        Write-Error "[-] Échec de la simulation : $($_.Exception.Message)"
    }
    finally {
        Write-Host "[+] Nettoyage des connexions..." -ForegroundColor Cyan
        $Stream.Close()
        $Client.Close()
        $Listener.Stop()
    }
  • Commandes de Nettoyage :

    # S'assurer qu'aucun écouteur malveillant ne reste actif
    Get-NetTCPConnection -LocalPort 53781 -ErrorAction SilentlyContinue | Remove-NetTCPConnection
    Write-Host "[+] Nettoyage terminé." -ForegroundColor Green