Exploração do Fsquirt.exe: Carregamento Malicioso de bthprops.cpl via Bluetooth
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
O artigo apresenta uma prova de conceito demonstrando como o binário legítimo do Windows, Fsquirt.exe, pode ser forçado a carregar um applet malicioso do Painel de Controle (bthprops.cpl) de seu diretório de trabalho atual. Se o CPL malicioso estiver presente, Fsquirt.exe o carrega e executa o código controlado pelo invasor—ilustrado por uma MessageBox desencadeada no ponto de entrada DllMain da DLL. O exemplo destaca como binários confiáveis podem ser abusados para execução arbitrária de código quando invasores podem colocar um CPL criado junto ao executável legítimo.
Investigação
Pesquisadores publicaram um repositório contendo o código-fonte para um bthprops.cpl malicioso e um script de compilação para compilar. O CPL é projetado para que o Fsquirt.exe o descubra e o carregue quando ambos os arquivos estão localizados no mesmo diretório. A execução bem-sucedida é validada quando o CPL exibe uma MessageBox, confirmando que o binário confiável carregou e executou o código do applet fornecido pelo invasor. O PoC é posicionado como um caso clássico de abuso de LOLBin que deixa telemetria de rede mínima.
Mitigação
Use listagem de permissões de aplicação para garantir que apenas arquivos CPL aprovados possam ser executados de locais de sistema esperados e restrinja caminhos de execução para impedir que binários como Fsquirt.exe sejam executados em diretórios não padronizados. Monitore o Fsquirt.exe para tentativas de carregar applets do Painel de Controle fora das pastas do sistema confiáveis e bloqueie lançamentos suspeitos de caminhos graváveis por usuários. Adicione detecções de endpoint para comportamentos iniciados por DllMain incomuns e artefatos de UI interativos (por exemplo, chamadas de MessageBox) originados de executáveis confiáveis do Windows. Audite regularmente os endpoints em busca de arquivos .cpl inesperados, particularmente em diretórios onde usuários ou aplicativos podem gravar.
Resposta
Alerta imediatamente quando Fsquirt.exe carrega um bthprops.cpl não padrão ou quando um CPL é observado executando de um caminho inesperado. Isole o host, preserve o CPL malicioso e a telemetria de execução relacionada, e realize uma triagem completa de malware no disco e na memória. Remova o CPL malicioso e revise os mecanismos de persistência ou ferramentas de acompanhamento que possam ter acompanhado o lançamento. Finalmente, faça uma caça em todo o ambiente por padrões de execução similares de LOLBin e aperte os controles de políticas para reduzir a exposição ao carregamento lateral de binários confiáveis.
Fluxo de Ataque
Ainda estamos atualizando esta parte. Inscreva-se para ser notificado
Notifique-meExecução de Simulação
Pré-requisito: A Verificação de Telemetria e Ponto de Referência deve ter passado.
-
Narrativa e Comandos do Ataque:
O adversário primeiro coloca um bthprops.cpl (criado para executar uma carga útil que captura a tela) no mesmo diretório que Fsquirt.exe. Ao invocar o Fsquirt.exe com o argumento
bthprops.cpl, o Windows trata o CPL como um applet do painel de controle e o carrega, executando o código malicioso incorporado. Isso gera um evento de criação de processo onde o CommandLine contém a string exatabthprops.cpl, satisfazendo a regra Sigma. -
Script de Teste de Regressão:
# ------------------------------------------------------------- # Carregamento de CPL do Fsquirt – simulação maliciosa # Pré-requisito: Sysmon & Auditoria de Segurança ativados (ver pré-voo) # ------------------------------------------------------------- $workDir = "C:TempFsquirtTest" $fsquirt = "$workDirFsquirt.exe" $cpl = "$workDirbthprops.cpl" $payload = "$workDirCaptureScreen.ps1" # 1. Prepare o diretório de trabalho New-Item -Path $workDir -ItemType Directory -Force | Out-Null # 2. Baixe um binário Fsquirt conhecido (publicamente disponível) Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Fsquirt.exe" -OutFile $fsquirt # 3. Crie um CPL malicioso (stub) – para demonstração usamos um simples scriptlet # Em um teste real, compile um CPL em C++ que execute a carga útil. $cplContent = @" [Version] Signature="$Windows NT$" [Control PanelDesktop] "@ Set-Content -Path $cpl -Value $cplContent -Encoding ASCII # 4. Crie uma carga útil falsa (por exemplo, tirar uma captura de tela) $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. Execute o Fsquirt.exe carregando o CPL malicioso Write-Host "Executando Fsquirt com CPL malicioso..." Start-Process -FilePath $fsquirt -ArgumentList "bthprops.cpl" -WorkingDirectory $workDir -NoNewWindow -Wait # 6. Verifique a execução da carga útil (criação de captura de tela) if (Test-Path "$workDirscreenshot.png") { Write-Host "Carga útil executada – captura de tela capturada." } else { Write-Host "Carga útil NÃO executou." } # ------------------------------------------------------------- -
Comandos de Limpeza:
# Remover artefatos de teste $workDir = "C:TempFsquirtTest" if (Test-Path $workDir) { Remove-Item -Path $workDir -Recurse -Force Write-Host "Limpeza completa." } else { Write-Host "Sem artefatos para limpar." }