Explotación de Fsquirt.exe: Carga Maliciosa de bthprops.cpl a través de Bluetooth
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El artículo presenta una prueba de concepto que demuestra cómo el binario legítimo de Windows Fsquirt.exe puede ser forzado a cargar un applet de Panel de Control malicioso (bthprops.cpl) desde su directorio de trabajo actual. Si el CPL falso está presente, Fsquirt.exe lo carga y ejecuta código controlado por el atacante—ilustrado por un MessageBox activado desde el punto de entrada DllMain del DLL. El ejemplo resalta cómo los binarios de confianza pueden ser abusados para ejecutar código arbitrario cuando los atacantes pueden colocar un CPL manipulado junto al ejecutable legítimo.
Investigación
Investigadores publicaron un repositorio que contiene el código fuente de un bthprops.cpl malicioso y un script de construcción para compilarlo. El CPL está diseñado para que Fsquirt.exe lo descubra y cargue cuando ambos archivos se encuentren en el mismo directorio. La ejecución exitosa se valida cuando el CPL muestra un MessageBox, confirmando que el binario de confianza cargó y ejecutó código del applet proporcionado por el atacante. El PoC se posiciona como un caso clásico de abuso de estilo LOLBin que deja una telemetría de red mínima.
Mitigación
Usar una lista de permitidos de aplicaciones para asegurar que solo archivos CPL aprobados puedan ejecutarse desde ubicaciones del sistema esperadas, y restringir las rutas de ejecución para evitar que binarios como Fsquirt.exe se ejecuten en directorios no estándar. Monitorear Fsquirt.exe para intentos de cargar applets del Panel de Control fuera de carpetas del sistema de confianza y bloquear los lanzamientos sospechosos desde rutas escribibles por usuarios. Añadir detecciones de endpoint para comportamientos inusuales iniciados por DllMain y artefactos de interfaz de usuario interactivos (por ejemplo, llamadas a MessageBox) que se originen de ejecutables de Windows de confianza. Auditar regularmente los endpoints en busca de archivos .cpl inesperados, particularmente en directorios donde usuarios o aplicaciones puedan escribir.
Respuesta
Alertar de inmediato cuando Fsquirt.exe cargue un bthprops.cpl no estándar o cuando se observe un CPL ejecutándose desde una ruta inesperada. Aislar el host, preservar el CPL malicioso y la telemetría de ejecución relacionada, y realizar un análisis completo de malware en disco y memoria. Eliminar el CPL falso y revisar los mecanismos de persistencia o herramientas complementarias que puedan haber acompañado la caída. Finalmente, buscar patrones de ejecución de LOLBin similares en todo el entorno y ajustar las políticas de control para reducir la exposición a la carga lateral de binarios de confianza.
Flujo de Ataque
Todavía estamos actualizando esta parte. Regístrate para recibir notificaciones
NotificarmeEjecución de Simulación
Prerequisito: El control previo de Telemetría y Línea Base debe haber pasado.
-
Narrativa del Ataque & Comandos:
El adversario primero coloca un bthprops.cpl malicioso (diseñado para ejecutar una carga útil que captura la pantalla) en el mismo directorio que Fsquirt.exe. Al invocar Fsquirt.exe con el argumento
bthprops.cpl, Windows trata el CPL como un applet de panel de control y lo carga, ejecutando el código malicioso incrustado. Esto genera un evento de creación de proceso donde la CommandLine contiene la cadena exactabthprops.cpl, cumpliendo con la regla Sigma. -
Script de Prueba de Regresión:
# ------------------------------------------------------------- # Carga de CPL por Fsquirt – simulación maliciosa # Prerequisito: Sysmon & Auditoría de Seguridad habilitados (ver control previo) # ------------------------------------------------------------- $workDir = "C:TempFsquirtTest" $fsquirt = "$workDirFsquirt.exe" $cpl = "$workDirbthprops.cpl" $payload = "$workDirCaptureScreen.ps1" # 1. Preparar directorio de trabajo New-Item -Path $workDir -ItemType Directory -Force | Out-Null # 2. Descargar un binario de Fsquirt conocido (disponible públicamente) Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Fsquirt.exe" -OutFile $fsquirt # 3. Crear un CPL malicioso (stub) – para la demostración usamos un simple scriptlet # En una prueba real, compilar un CPL en C++ que ejecute la carga útil. $cplContent = @" [Version] Signature="$Windows NT$" [Control PanelDesktop] "@ Set-Content -Path $cpl -Value $cplContent -Encoding ASCII # 4. Crear una carga útil falsa (por ejemplo, tomar una captura de pantalla) $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. Ejecutar Fsquirt.exe cargando el CPL malicioso Write-Host "Ejecutando Fsquirt con CPL malicioso..." Start-Process -FilePath $fsquirt -ArgumentList "bthprops.cpl" -WorkingDirectory $workDir -NoNewWindow -Wait # 6. Verificar la ejecución de la carga útil (creación de captura de pantalla) if (Test-Path "$workDirscreenshot.png") { Write-Host "Carga útil ejecutada – captura de pantalla capturada." } else { Write-Host "La carga útil NO se ejecutó." } # ------------------------------------------------------------- -
Comandos de Limpieza:
# Eliminar artefactos de prueba $workDir = "C:TempFsquirtTest" if (Test-Path $workDir) { Remove-Item -Path $workDir -Recurse -Force Write-Host "Limpieza completada." } else { Write-Host "No hay artefactos para limpiar." }