Exploitation de Fsquirt.exe : Chargement malveillant de bthprops.cpl via Bluetooth
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
L’article présente une preuve de concept démontrant comment le binaire Windows légitime Fsquirt.exe peut être contraint de charger un applet de panneau de configuration malveillant (bthprops.cpl) depuis son répertoire de travail actuel. Si le CPL frauduleux est présent, Fsquirt.exe le charge et exécute du code contrôlé par l’attaquant—illustré par un MessageBox déclenché depuis le point d’entrée DllMain de la DLL. L’exemple souligne comment des binaires de confiance peuvent être abusés pour exécuter du code arbitraire lorsque les attaquants peuvent placer un CPL conçu à côté de l’exécutable légitime.
Enquête
Les chercheurs ont publié un dépôt contenant le code source pour un bthprops.cpl malveillant et un script de construction pour le compiler. Le CPL est conçu pour que Fsquirt.exe le découvre et le charge lorsque les deux fichiers sont situés dans le même répertoire. L’exécution réussie est validée lorsque le CPL affiche un MessageBox, confirmant que le binaire de confiance a chargé et exécuté du code depuis l’applet fourni par l’attaquant. Le PoC est positionné comme un cas classique d’abus de style LOLBin qui laisse une télémétrie réseau minimale.
Atténuation
Utilisez la liste blanche des applications pour vous assurer que seuls les fichiers CPL approuvés peuvent s’exécuter à partir des emplacements systèmes prévus, et restreignez les chemins d’exécution pour empêcher les binaires comme Fsquirt.exe de s’exécuter dans des répertoires non standard. Surveillez Fsquirt.exe pour des tentatives de chargement d’applets du panneau de configuration en dehors des dossiers systèmes de confiance et bloquez les lancements suspects depuis des chemins accessibles en écriture par les utilisateurs. Ajoutez des détections d’endpoint pour les comportements inhabituels initiés par DllMain et les artefacts UI interactifs (par exemple, appels à MessageBox) provenant d’exécutables Windows de confiance. Auditez régulièrement les endpoints pour les fichiers .cpl inattendus, en particulier dans les répertoires où les utilisateurs ou les applications peuvent écrire.
Réponse
Alertez immédiatement lorsque Fsquirt.exe charge un bthprops.cpl non standard ou lorsqu’un CPL est observé s’exécutant depuis un chemin inattendu. Isolez l’hôte, conservez le CPL malveillant et la télémétrie d’exécution associée, et réalisez un triage complet du malware sur le disque et la mémoire. Supprimez le CPL frauduleux et examinez les mécanismes de persistance ou les outils de suivi qui auraient pu accompagner le drop. Enfin, chassez dans tout l’environnement les modèles d’exécution LOLBin similaires et resserrez les contrôles de politique pour réduire l’exposition au chargement latéral de binaires de confiance.
Flux d’attaque
Nous mettons encore à jour cette partie. Inscrivez-vous pour être informé
Prévenez-moiExécution de la simulation
Prérequis : La vérification de télémétrie et de référence pré-vol doit avoir réussi.
-
Récit d’attaque & Commandes :
L’adversaire place d’abord un bthprops.cpl malveillant (conçu pour exécuter une charge utile qui capture l’écran) dans le même répertoire que Fsquirt.exe. En invoquant Fsquirt.exe avec l’argument
bthprops.cpl, Windows traite le CPL comme un applet du panneau de configuration et le charge, exécutant le code malveillant intégré. Cela génère un événement de création de processus où la LigneDeCommande contient la chaîne exactebthprops.cpl, satisfaisant la règle Sigma. -
Script de test de régression :
# ------------------------------------------------------------- # Chargement Fsquirt CPL – simulation malveillante # Prérequis : Sysmon & Audits de sécurité activés (voir pré-vol) # ------------------------------------------------------------- $workDir = "C:TempFsquirtTest" $fsquirt = "$workDirFsquirt.exe" $cpl = "$workDirbthprops.cpl" $payload = "$workDirCaptureScreen.ps1" # 1. Préparer le répertoire de travail New-Item -Path $workDir -ItemType Directory -Force | Out-Null # 2. Télécharger un binaire Fsquirt connu (publiquement disponible) Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Fsquirt.exe" -OutFile $fsquirt # 3. Créer un CPL malveillant (stub) – pour la démonstration, nous utilisons un simple scriptlet # Dans un test réel, compilez un CPL C++ qui exécute la charge utile. $cplContent = @" [Version] Signature="$Windows NT$" [Control PanelDesktop] "@ Set-Content -Path $cpl -Value $cplContent -Encoding ASCII # 4. Créer une charge utile factice (par exemple, prendre une capture d'écran) $payloadContent = @" Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing $bounds = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds $bitmap = New-Object System.Drawing.Bitmap $bounds.Width, $bounds.Height $graphics = [System.Drawing.Graphics]::FromImage($bitmap) $graphics.CopyFromScreen($bounds.Location, [System.Drawing.Point]::Empty, $bounds.Size) $bitmap.Save('$workDirscreenshot.png') "@ Set-Content -Path $payload -Value $payloadContent -Encoding UTF8 # 5. Exécuter Fsquirt.exe en chargeant le CPL malveillant Write-Host "Exécution de Fsquirt avec CPL malveillant..." Start-Process -FilePath $fsquirt -ArgumentList "bthprops.cpl" -WorkingDirectory $workDir -NoNewWindow -Wait # 6. Vérifier l'exécution de la charge utile (création de capture d'écran) if (Test-Path "$workDirscreenshot.png") { Write-Host "Charge utile exécutée – capture d'écran capturée." } else { Write-Host "La charge utile ne s'est PAS exécutée." } # ------------------------------------------------------------- -
Commandes de nettoyage :
# Supprimer les artefacts de test $workDir = "C:TempFsquirtTest" if (Test-Path $workDir) { Remove-Item -Path $workDir -Recurse -Force Write-Host "Nettoyage terminé." } else { Write-Host "Aucun artefact à nettoyer." }