SOC Prime Bias: Critique

08 Avr 2026 14:57

Campagne de Malware APT-Q-27 Focalisée sur le Support Client Web3

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
Campagne de Malware APT-Q-27 Focalisée sur le Support Client Web3
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Un acteur de menace motivé par des raisons financières, suivi sous le nom de APT-Q-27 (alias GoldenEyeDog), mène une campagne de logiciels malveillants en plusieurs étapes qui commence par des interactions de chat d’assistance clientèle Web3. L’appât initial est un fichier .pif déguisé en capture d’écran, qui déploie un chargeur .NET personnalisé. Ce chargeur tire des étapes supplémentaires de AWS S3, crée un répertoire de mise en scène caché, et utilise le chargement de DLL en associant une DLL malveillante à un exécutable légitime de la plateforme YY. La phase finale installe une porte dérobée qui communique sur un port TCP non standard, permettant un accès à distance furtif au-delà des bases de trafic web typiques.

Enquête

ZeroShadow a analysé plusieurs variantes de chargeurs, y compris Feedback.exe et photo2025060268jpg.exe, et a récupéré une URL C2 encodée en double-Base64 intégrée dans la chaîne. L’ingénierie inverse a révélé la logique de décryptage du chargeur et le flux de travail de chargement utilisé pour amorcer l’exécution. Les analystes ont également documenté un marqueur de chemin de mise en scène cohérent contenant « @27 », ainsi qu’un mécanisme de persistance via une valeur HKCU Run nommée SystemUpdats. La porte dérobée a été observée utilisant un ensemble codé en dur de 37 adresses IP C2, communiquant sur TCP 15628, tout en mélangeant l’activité en référant à des URL de mise à jour Microsoft comme indicateurs de réseau leurres.

Atténuation

Activer la visibilité complète des extensions de fichiers et bloquer l’exécution de fichiers .pif sur tous les terminaux. Surveiller les créations de répertoires cachés dans les emplacements de cache de style Windows Update et générer des alertes sur la valeur de clé Run SystemUpdats. Renforcer UAC en empêchant les attaquants de remettre à zéro simultanément les trois clés de politique pertinentes, et restreindre la connectivité sortante au TCP 15628 aux points de sortie. Appliquer la validation de la signature du code et examiner scrupuleusement les binaires signés lancés à partir de répertoires non systèmes pour réduire le risque de chargement de DLL.

Réponse

Si des détections se déclenchent, isoler le terminal et conserver à la fois la mémoire et les artefacts disque pour le triage. Chercher le répertoire de mise en scène contenant « @27 », l’entrée de clé de Run SystemUpdats, et toutes les DLL suspectes associées à l’exécutable légitime YY. Bloquer les IPs/noms de domaine C2 identifiés et déployer des politiques de contrôle des applications qui empêchent l’exécution d’applications non signées ou non fiables à partir de chemins de profils utilisateur. Étendre la portée à travers la flotte pour les mêmes modèles de persistance et de réseau afin d’identifier des hôtes supplémentaires affectés.

"graph TB %% Class definitions classDef action fill:#99ccff classDef file fill:#ffcc99 classDef registry fill:#c2f0c2 classDef network fill:#ff99cc classDef builtin fill:#cccccc %% Nodes action_phishing_link["<b>Action</b> – <b>T1204.001 User Execution: Malicious Link</b><br/>URL trompeuse envoyée en chat en direct, la victime clique et télécharge un fichier .pif nommé photo2025060268jpg.exe"] class action_phishing_link action file_pif["<b>Fichier</b> – <b>Nom</b>: photo2025060268jpg.exe<br/><b>Type</b>: exécutable .pif déguisé en image"] class file_pif file action_malicious_file["<b>Action</b> – <b>T1204.002 User Execution: Fichier Malveillant</b><br/>Le .pif s’exécute, ouvre Paint avec une fausse image d’erreur et lance le chargeur"] class action_malicious_file action file_loader["<b>Logiciel malveillant</b> – <b>Nom</b>: Chargeur<br/><b>Comportement</b>: Décrypte les charges utiles, lance updat.exe"] class file_loader builtin action_obfuscation["<b>Action</b> – <b>T1027.008 Fichiers ou Informations Obfusqués</b><br/>Toutes les chaînes, URL et charges utiles sont encrytées en double-Base64"] class action_obfuscation action action_debugger_evasion["<b>Action</b> – <b>T1622 Évasion du Débogueur</b><br/>Vérifie IsDebuggerPresent et la pile d’appel, se termine si un débogueur est détecté"] class action_debugger_evasion action action_persistence["<b>Action</b> – <b>T1547.001 Clés de Registre/ Dossier de Démarrage</b><br/>Écrit HKCUSoftwareMicrosoftWindowsCurrentVersionRunSystemUpdats u2192 updat.exe dans un dossier de mise en scène caché"] class action_persistence action registry_run_key["<b>Registre</b> – <b>Chemin</b>: HKCUSoftwareMicrosoftWindowsCurrentVersionRunSystemUpdats<br/><b>Valeur</b>: chemin de updat.exe"] class registry_run_key registry file_updat["<b>Fichier</b> – <b>Nom</b>: updat.exe<br/><b>Emplacement</b>: répertoire de mise en scène caché"] class file_updat file action_uac_bypass["<b>Action</b> – <b>T1548.002 Contournement de l’UAC</b><br/>Définit EnableLUA, ConsentPromptBehaviorAdmin et PromptOnSecureDesktop à 0 dans une seule transaction"] class action_uac_bypass action action_appinit["<b>Action</b> – <b>T1546.010 DLLs AppInit</b> & <b>T1546.009 DLLs AppCert</b><br/>updat.exe lancé avec le répertoire de travail défini sur le dossier de mise en scène, causant le chargement de DLL malveillantes"] class action_appinit action file_vcruntime["<b>DLL</b> – <b>Nom</b>: vcruntime140.dll (malveillant)"] class file_vcruntime file file_msvcp["<b>DLL</b> – <b>Nom</b>: msvcp140.dll (malveillant)"] class file_msvcp file file_crashreport["<b>DLL</b> – <b>Nom</b>: crashreport.dll (malveillant)"] class file_crashreport file action_dll_sideload["<b>Action</b> – <b>T1574.002 Chargement Latéral de DLL</b><br/>Les DLL malveillantes sont chargées à la place des bibliothèques d’exécution légitimes"] class action_dll_sideload action action_c2["<b>Action</b> – <b>T1571 Port Non Standard</b> & <b>T1573 Canal Chiffré</b><br/>La porte dérobée établit une connexion TCP à C2 sur le port 15628, le trafic est chiffré, récupère le manifeste depuis AWS S3"] class action_c2 action network_c2["<b>Réseau</b> – <b>Protocole</b>: TCP<br/><b>Port</b>: 15628<br/><b>Point de terminaison</b>: serveur C2 (AWS S3)"] class network_c2 network %% Connections action_phishing_link –>|télécharge| file_pif file_pif –>|exécute| action_malicious_file action_malicious_file –>|lance| file_loader file_loader –>|utilise| action_obfuscation file_loader –>|utilise| action_debugger_evasion file_loader –>|initie| action_persistence action_persistence –>|écrit| registry_run_key registry_run_key –>|pointe vers| file_updat file_updat –>|déclenché par| action_uac_bypass action_uac_bypass –>|active| action_appinit action_appinit –>|charge| file_vcruntime action_appinit –>|charge| file_msvcp action_appinit –>|charge| file_crashreport file_vcruntime –>|contribue à| action_dll_sideload file_msvcp –>|contribue à| action_dll_sideload file_crashreport –>|contribue à| action_dll_sideload action_dll_sideload –>|permet| action_c2 action_c2 –>|communique avec| network_c2 "

Flux d’attaque

Détections

Contournement UAC possible – Désactivation de l’administrateur de consentement (via event_registry)

Équipe SOC Prime
06 avril 2026

Fichier Malveillant Possible Double Extension (via création_processus)

Équipe SOC Prime
06 avril 2026

Points de Persistance Possibles [ASEPs – Logiciel/Ruche NTUSER] (via event_registry)

Équipe SOC Prime
06 avril 2026

Contournement UAC possible – Tentative de désactivation de l’UAC (via event_registry)

Équipe SOC Prime
06 avril 2026

Bibliothèque Dynamique Vcruntime140 Chargée Depuis un Répertoire Suspect (via chargement_image)

Équipe SOC Prime
06 avril 2026

Contournement UAC possible – Tentative de désactivation de l’invite de Bureau Sécurisé (via event_registry)

Équipe SOC Prime
06 avril 2026

IOCs (DestinationIP) à détecter : Travailler la file d’attente : APT-Q-27 Malware cible l’assistance client Web3 Partie 1

Règles AI SOC Prime
06 avril 2026

IOCs (SourceIP) à détecter : Travailler la file d’attente : APT-Q-27 Malware cible l’assistance client Web3 Partie 2

Règles AI SOC Prime
06 avril 2026

IOCs (DestinationIP) à détecter : Travailler la file d’attente : APT-Q-27 Malware cible l’assistance client Web3 Partie 2

Règles AI SOC Prime
06 avril 2026

IOCs (HashSha256) à détecter : Travailler la file d’attente : APT-Q-27 Malware cible l’assistance client Web3

Règles AI SOC Prime
06 avril 2026

IOCs (SourceIP) à détecter : Travailler la file d’attente : APT-Q-27 Malware cible l’assistance client Web3 Partie 1

Règles AI SOC Prime
06 avril 2026

Détecter la désactivation de l’UAC via des modifications du registre [Événement du registre Windows]

Règles AI SOC Prime
06 avril 2026

Détection du chargement latéral de DLL via Updat.exe dans AppData [Création de processus Windows]

Règles AI SOC Prime
06 avril 2026

Exécution de Simulation

Prérequis : Le contrôle préalable de télémétrie et de base doit être réussi.

Rationale: 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 la narration doivent refléter directement les TTP identifiées et viser à générer la télémétrie exacte attendue par la logique de détection.

  • Narration et Commandes de l’Attaque :
    Un adversaire avec les droits d’administrateur local cherche à désactiver l’UAC pour faciliter le chemin pour des outils d’escalade de privilèges supplémentaires. En utilisant l’utilitaire natif reg.exe (un binaire vivant sur la terre), l’attaquant définit les trois valeurs de politique UAC critiques sur 0 en succession rapide (moins de 30 secondes) pour éviter les détections par des processus d’audit manuels.

    # Étape 1 – Désactiver UAC “EnableLUA”
    reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" /v EnableLUA /t REG_DWORD /d 0 /f
    
    # Étape 2 – Désactiver l'invite de consentement pour les administrateurs
    reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f
    
    # Étape 3 – Désactiver le bureau sécurisé pour les prompts UAC
    reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" /v PromptOnSecureDesktop /t REG_DWORD /d 0 /f

    Ces trois commandes génèrent trois Événements du Registre logs (EventID 4657 dans le canal Sécurité et les événements correspondants Microsoft-Windows-Registry/Operational ) contenant les chemins de ObjectifCible et les Détails valeurs que la règle Sigma associe.

  • Script de Test de Régression : Le script PowerShell suivant effectue les trois écritures avec une pause de 5 secondes entre chacune pour rester confortablement dans la fenêtre de 30 secondes, tout en fournissant également un flux d’exécution déterministe.

    # Test de Régression – Désactiver UAC via registre
    $regPath = "HKLM:SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem"
    
    # Stocker les valeurs originales pour un nettoyage ultérieur
    $originalEnableLUA = (Get-ItemProperty -Path $regPath -Name EnableLUA -ErrorAction SilentlyContinue).EnableLUA
    $originalConsent   = (Get-ItemProperty -Path $regPath -Name ConsentPromptBehaviorAdmin -ErrorAction SilentlyContinue).ConsentPromptBehaviorAdmin
    $originalPrompt    = (Get-ItemProperty -Path $regPath -Name PromptOnSecureDesktop -ErrorAction SilentlyContinue).PromptOnSecureDesktop
    
    # Désactiver UAC
    Set-ItemProperty -Path $regPath -Name EnableLUA -Value 0
    Start-Sleep -Seconds 5
    Set-ItemProperty -Path $regPath -Name ConsentPromptBehaviorAdmin -Value 0
    Start-Sleep -Seconds 5
    Set-ItemProperty -Path $regPath -Name PromptOnSecureDesktop -Value 0
    
    Write-Host "UAC désactivé – les journaux de vérification devraient maintenant être ingérés."
  • Commandes de Nettoyage : Rétablir les paramètres UAC d’origine pour ramener le système à son état avant test.

    # Nettoyage – Restaurer les paramètres UAC d'origine
    $regPath = "HKLM:SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem"
    
    if ($null -ne $originalEnableLUA) { Set-ItemProperty -Path $regPath -Name EnableLUA -Value $originalEnableLUA }
    if ($null -ne $originalConsent)   { Set-ItemProperty -Path $regPath -Name ConsentPromptBehaviorAdmin -Value $originalConsent }
    if ($null -ne $originalPrompt)    { Set-ItemProperty -Path $regPath -Name PromptOnSecureDesktop -Value $originalPrompt }
    
    Write-Host "Paramètres UAC restaurés aux valeurs d'origine."