Le malware CoinMiner continue de se propager via les clés USB
Detection stack
- AIDR
- Alert
- ETL
- Query
RÉSUMÉ
Le malware CoinMiner continue de se propager via des clés USB en Corée du Sud, exploitant un raccourci caché qui déclenche des scripts VBS et BAT, lesquels mettent en place plusieurs composants qui finissent par livrer une charge utile de minage de cryptomonnaie.
Enquête
Le rapport décrit la structure des répertoires sur l’USB infecté, la chaîne d’exécution du raccourci à travers plusieurs étapes de dropper, l’enregistrement sous le service DcomLaunch et le déploiement des mineurs de cryptomonnaie PrintMiner et XMRig.
Atténuation
Les utilisateurs doivent maintenir le système d’exploitation et les logiciels à jour, bloquer l’exécution de fichiers de raccourci non fiables, utiliser des outils antivirus à jour et refuser l’accès à des infrastructures connues comme malveillantes.
Réponse
Détecter le raccourci malveillant et ses scripts associés, surveiller la création de fichiers dropper et les enregistrements DCOM, et bloquer le trafic réseau vers les domaines et adresses IP de contrôle et commande identifiés pour le minage.
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#66cc66 classDef file fill:#ffcc66 classDef process fill:#c266ff classDef malware fill:#ff6666 classDef network fill:#cccccc %% Nodes action_usb_insert[« <b>Action</b> – <b>T1204.002 Exécution par l’utilisateur : Fichier malveillant</b> : L’utilisateur insère une clé USB compromise contenant un raccourci caché. »] class action_usb_insert action tool_shortcut[« <b>Outil</b> – <b>T1547.009 Modification de raccourci</b> : Raccourci LNK caché « USB Drive.lnk » visible par l’utilisateur. »] class tool_shortcut tool tool_vbscript[« <b>Outil</b> – <b>T1059.005 Visual Basic</b> : Le raccourci lance un script Visual Basic. »] class tool_vbscript tool tool_batch[« <b>Outil</b> – <b>T1059.003 Interpréteur de commandes Windows</b> : Le VBScript exécute un fichier batch. »] class tool_batch tool file_malicious_dll[« <b>Fichier</b> – <b>T1036.005 Masquage : Correspondance avec un nom légitime</b> & <b>T1036.008 Masquage : Double extension</b> : DLL malveillante « printui.dll » (renommée depuis .dat) déposée dans C:\\Windows\\System32 à l’aide de répertoires cachés. »] class file_malicious_dll file process_printui[« <b>Processus</b> – <b>T1055.001 Injection de processus</b> & <b>T1574.001 Détournement de DLL</b> : Le binaire légitime printui.exe charge la DLL malveillante. »] class process_printui process tool_dcom[« <b>Outil</b> – <b>T1546.015 Composant logiciel serveur</b> & <b>T1021.003 DCOM</b> : Enregistre la DLL auprès d’un service DCOM pour la persistance. »] class tool_dcom tool file_svcinsty[« <b>Fichier</b> : Exécutable « svcinsty64.exe » créé par le dropper pour installer la charge utile finale. »] class file_svcinsty file file_svctrl[« <b>Fichier</b> : Exécutable « svctrl64.exe » créé par le dropper comme composant auxiliaire. »] class file_svctrl file malware_printminer[« <b>Malware</b> – PrintMiner : Ajoute des exclusions Windows Defender, falsifie des alertes de sécurité et prépare le téléchargement du mineur. »] class malware_printminer malware tool_defender_exclusion[« <b>Outil</b> – <b>T1564.012 Usurpation du contenu du disque</b> & <b>T1562.011 Modification du registre</b> : Modifie la liste d’exclusions de Defender pour dissimuler l’activité. »] class tool_defender_exclusion tool network_c2[« <b>Réseau</b> – <b>T1071.001 Protocoles Web</b>, <b>T1102.002 Services Web</b>, <b>T1102.003 Transfert d’outils entrant</b> : Communication HTTPS avec le serveur de commande et de contrôle pour récupérer la configuration et télécharger le mineur. »] class network_c2 network malware_xmrig[« <b>Malware</b> – XMRig : Mineur Monero open source téléchargé et exécuté. »] class malware_xmrig malware action_compute_hijack[« <b>Action</b> – <b>T1496.001 Détournement de ressources</b> : Exécute XMRig pour miner de la cryptomonnaie tout en contournant les outils d’analyse. »] class action_compute_hijack action action_replication[« <b>Action</b> – <b>T1091 Réplication via supports amovibles</b> : Recrée le raccourci et les fichiers cachés sur d’autres clés USB. »] class action_replication action %% Connections action_usb_insert u002du002du003e|crée| tool_shortcut tool_shortcut u002du002du003e|lance| tool_vbscript tool_vbscript u002du002du003e|exécute| tool_batch tool_batch u002du002du003e|dépose| file_malicious_dll file_malicious_dll u002du002du003e|chargée par| process_printui process_printui u002du002du003e|établit la persistance via| tool_dcom tool_dcom u002du002du003e|crée| file_svcinsty tool_dcom u002du002du003e|crée| file_svctrl file_svcinsty u002du002du003e|installe| malware_printminer file_svctrl u002du002du003e|prend en charge| malware_printminer malware_printminer u002du002du003e|ajoute une exclusion via| tool_defender_exclusion malware_printminer u002du002du003e|communique avec| network_c2 network_c2 u002du002du003e|fournit| malware_xmrig malware_xmrig u002du002du003e|exécute| action_compute_hijack action_compute_hijack u002du002du003e|déclenche| action_replication action_replication u002du002du003e|place| tool_shortcut
Flux d’attaque
Détections
Détection des activités de raccourci USB et de malware BAT [Événement de fichier Windows]
Voir
Détecter la communication XMRig avec le serveur C&C via un nom d’hôte spécifique [Connexion réseau Windows]
Voir
Exécution de fichiers malveillants via Printui.exe et Svcinsty64.exe [Création de processus Windows]
Voir
IOCs (HashMd5) pour détecter : Malware CoinMiner est en cours de distribution continue via USB
Voir
IOCs (DestinationIP) pour détecter : Malware CoinMiner est en cours de distribution continue via USB
Voir
Exécution de simulation
Prérequis : La vérification pré-vol des télémetries et des bases doit être réussie.
Raisonnement : 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. Les exemples abstraits ou non liés entraîneront un mauvais diagnostic.
-
Narration de l’attaque et commandes :
- Étape 1 – Déposer un DLL malveillant: L’adversaire copie un
printui.dllconçu dans le même répertoire queprintui.exe(simulant une charge utile de pilote délivrée via un dispositif USB). - Étape 2 – Exécuter
printui.exe: En invoquantprintui.exeavec le commutateur/ml(charge malveillante), le DLL malveillant est chargé, générant un événement de création de processus qui correspond à la sélection (Image se termine par printui.exe) tout en satisfaisant la condition filtre (Image contient printui.dll). La règle exclut ce cas, donc l’attaquant ajoute une deuxième étape pour le contourner. - Étape 3 – Exécuter
svcinsty64.exe: L’attaquant enregistre un nouveau service pointant vers un binaire de charge utile (payload.exe) stocké sur la clé USB. Cette action crée un événement de création de processus poursvcinsty64.exe, satisfaisant la sélection de la règle sans déclencher le filtre, générant ainsi une alerte.
- Étape 1 – Déposer un DLL malveillant: L’adversaire copie un
-
Script de test de régression : Le script ci-dessous automatise les trois étapes, garantissant la reproductibilité.
# ------------------------------------------------- # Test de régression – Déclencher la règle Sigma pour printui.exe / svcinsty64.exe # ------------------------------------------------- $dllPath = "$env:TEMPprintui.dll" $exePath = "$env:SystemRootSystem32printui.exe" $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe" $payloadPath = "$env:TEMPpayload.exe" # 1️⃣ Déposer un DLL malveillant factice (contenu binaire non important pour la détection) Write-Host "[*] Création d'un DLL malveillant factice à $dllPath" Set-Content -Path $dllPath -Value ([byte[]](0..255)) -Encoding Byte # 2️⃣ Exécuter printui.exe (charge bénigne) – ne doit PAS déclencher en raison du filtre Write-Host "[*] Exécution de printui.exe bénin (sera filtré)" Start-Process -FilePath $exePath -ArgumentList "/p" -Wait # 3️⃣ Exécuter printui.exe avec chargement de DLL malveillant – cas filtré (attendu) Write-Host "[*] Exécution de printui.exe avec DLL malveillant (cas filtré)" Start-Process -FilePath $exePath -ArgumentList "/ml `$dllPath`" -Wait # 4️⃣ Préparer un exécutable de charge utile factice (script CMD simple compilé en exe) Write-Host "[*] Création d'un exécutable de charge utile factice" $payloadSource = @" @echo off echo Charge utile exécutée > $env:TEMPpayload_output.txt "@ $payloadScript = "$env:TEMPpayload.bat" $payloadSource | Set-Content -Path $payloadScript -Encoding ASCII # Convertir .bat en .exe à l'aide de iexpress (intégré) $iexpress = "$env:SystemRootSystem32iexpress.exe" $config = "$env:TEMPiexpress.sed" @" [Version] Version=3.0 [Options] ExtractTitle=Charge utile ExtractLocation=%TEMP% ShowProgress=0 HideExtractWindow=1 [SourceFiles] SourceFiles=0 %TEMP%payload.bat [Run] RunCommand="%TEMP%payload.bat" "@ | Set-Content -Path $config -Encoding ASCII & $iexpress /N /Q /M $config Move-Item -Path "$env:TEMPPayload.exe" -Destination $payloadPath -Force # 5️⃣ Enregistrer un service malveillant à l'aide de svcinsty64.exe – DOIT DÉCLENCHER Write-Host "[*] Enregistrement d'un service malveillant via svcinsty64.exe" $svcName = "ServiceMalveillant" $svcDisplay = "Service Malveillant" $svcCmd = "`"$payloadPath`"" $svcArgs = "/install `$svcName` `$svcDisplay` `$svcCmd`" Start-Process -FilePath $svcInstPath -ArgumentList $svcArgs -Wait # 6️⃣ Nettoyer le service Write-Host "[*] Suppression du service malveillant" $removeArgs = "/uninstall `$svcName`" Start-Process -FilePath $svcInstPath -ArgumentList $removeArgs -Wait # 7️⃣ Supprimer les artefacts temporaires Write-Host "[*] Nettoyage des fichiers temporaires" Remove-Item -Path $dllPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $payloadPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $payloadScript -Force -ErrorAction SilentlyContinue Write-Host "[+] Test terminé" -
Commandes de nettoyage : (Si le script ci-dessus échoue ou si vous préférez le nettoyage manuel)
# Supprimer le service malveillant s'il est encore présent $svcName = "ServiceMalveillant" $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe" & $svcInstPath /uninstall $svcName # Supprimer le DLL temporaire et la charge utile Remove-Item -Path "$env:TEMPprintui.dll" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.bat" -Force -ErrorAction SilentlyContinue # (Optionnel) Vérifier qu'il ne reste aucun service Get-Service -Name $svcName -ErrorAction SilentlyContinue