SOC Prime Bias: Média

13 Jan 2026 17:06

Exploração do Fsquirt.exe: Carregamento Malicioso de bthprops.cpl via Bluetooth

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Exploração do Fsquirt.exe: Carregamento Malicioso de bthprops.cpl via Bluetooth
shield icon

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-me

Execuçã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 exata bthprops.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."
    }