Exploit di Fsquirt.exe: Caricamento maligno di bthprops.cpl tramite Bluetooth
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
L’articolo presenta un proof-of-concept che dimostra come il legittimo binario Windows Fsquirt.exe possa essere costretto a caricare un applet del Pannello di Controllo dannoso (bthprops.cpl) dalla sua directory di lavoro corrente. Se il CPL ingannevole è presente, Fsquirt.exe lo carica e esegue il codice controllato dall’attaccante, illustrato da un MessageBox attivato dal punto di entrata DllMain della DLL. L’esempio evidenzia come i binari di fiducia possano essere abusati per l’esecuzione di codice arbitrario quando gli attaccanti possono posizionare un CPL preparato accanto all’eseguibile legittimo.
Indagine
I ricercatori hanno pubblicato un repository contenente il codice sorgente per un bthprops.cpl dannoso e uno script di compilazione per compilarlo. Il CPL è progettato in modo tale che Fsquirt.exe lo scopra e lo carichi quando entrambi i file si trovano nella stessa directory. L’esecuzione riuscita è convalidata quando il CPL visualizza un MessageBox, confermando che il binario di fiducia ha caricato ed eseguito il codice dall’applet fornita dall’attaccante. Il PoC è posizionato come un classico caso di abuso in stile LOLBin che lascia una telemetria di rete minima.
Mitigazione
Utilizzare una whitelist di applicazioni per garantire che solo i file CPL approvati possano essere eseguiti da posizioni di sistema previste e restringere i percorsi di esecuzione per impedire ai binari come Fsquirt.exe di funzionare in directory non standard. Monitorare Fsquirt.exe per tentativi di caricare applet del Pannello di Controllo al di fuori delle cartelle di sistema fidate e bloccare l’avvio sospetto da percorsi scrivibili dall’utente. Aggiungere rilevazioni degli endpoint per comportamenti insoliti iniziati da DllMain e artefatti interattivi dell’interfaccia utente (ad es., chiamate di MessageBox) che provengono da eseguibili Windows fidati. Verificare regolarmente gli endpoint per file .cpl inaspettati, in particolare nelle directory dove utenti o applicazioni possono scrivere.
Risposta
Allertare immediatamente quando Fsquirt.exe carica un bthprops.cpl non standard o quando un CPL viene osservato eseguendosi da un percorso inaspettato. Isolare l’host, preservare il CPL dannoso e la telemetria di esecuzione correlata, ed eseguire una triage completa del malware su disco e memoria. Rimuovere il CPL ingannevole e rivedere i meccanismi di persistenza o gli strumenti conseguenti che possono aver accompagnato il rilascio. Infine, cercare a livello ambientale schemi simili di esecuzione LOLBin e stringere i controlli di policy per ridurre l’esposizione al caricamento laterale di binari di fiducia.
Flusso di Attacco
Stiamo ancora aggiornando questa parte. Iscriviti per essere avvisato
AvvisamiEsecuzione della Simulazione
Requisito: Il Controllo Pre-volo della Telemetria & Baseline deve essere superato.
-
Narrazione dell’Attacco & Comandi:
L’avversario prima posiziona un bthprops.cpl dannoso (progettato per eseguire un payload che cattura lo schermo) nella stessa directory di Fsquirt.exe. Invocando Fsquirt.exe con l’argomento
bthprops.cpl, Windows tratta il CPL come un applet del pannello di controllo e lo carica, eseguendo il codice maligno incorporato. Questo genera un evento di creazione del processo dove la CommandLine contiene la stringa esattabthprops.cpl, soddisfacendo la regola Sigma. -
Script di Test di Regressione:
# ------------------------------------------------------------- # Caricamento CPL di Fsquirt – simulazione dannosa # Requisito: Sysmon & Auditing della Sicurezza abilitati (vedi pre-volo) # ------------------------------------------------------------- $workDir = "C:TempFsquirtTest" $fsquirt = "$workDirFsquirt.exe" $cpl = "$workDirbthprops.cpl" $payload = "$workDirCaptureScreen.ps1" # 1. Preparazione della directory di lavoro New-Item -Path $workDir -ItemType Directory -Force | Out-Null # 2. Scaricare un binario Fsquirt conosciuto (disponibile pubblicamente) Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Fsquirt.exe" -OutFile $fsquirt # 3. Creare un CPL dannoso (stub) – per la demo utilizziamo un semplice scriptlet # In un vero test, compilare un CPL C++ che esegue il payload. $cplContent = @" [Version] Signature="$Windows NT$" [Control PanelDesktop] "@ Set-Content -Path $cpl -Value $cplContent -Encoding ASCII # 4. Creare un payload di esempio (es., fare uno screenshot) $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. Esegui Fsquirt.exe caricando il CPL dannoso Write-Host "Esecuzione di Fsquirt con CPL dannoso..." Start-Process -FilePath $fsquirt -ArgumentList "bthprops.cpl" -WorkingDirectory $workDir -NoNewWindow -Wait # 6. Verifica dell'esecuzione del payload (creazione screenshot) if (Test-Path "$workDirscreenshot.png") { Write-Host "Payload eseguito – screenshot catturato." } else { Write-Host "Payload NON eseguito." } # ------------------------------------------------------------- -
Comandi di Pulizia:
# Rimuovere gli artefatti del test $workDir = "C:TempFsquirtTest" if (Test-Path $workDir) { Remove-Item -Path $workDir -Recurse -Force Write-Host "Pulizia completata." } else { Write-Host "Nessun artefatto da pulire." }