Loader em Memória Solta ScreenConnect
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
ThreatLabz identificou uma cadeia de ataque de múltiplos estágios que começa com um download falso do Adobe Acrobat Reader e culmina na implantação da ferramenta legítima de acesso remoto ScreenConnect. A operação se baseia em um carregador VBScript fortemente ofuscado que aciona um comando PowerShell para buscar código fonte em C# do Google Drive, compilá-lo diretamente na memória e lançar um carregador .NET sem gravar a carga final no disco. Esse carregador então aplica mascaramento de processo, altera estruturas PEB e abusa de objetos COM com elevação automática para obter privilégios superiores antes de instalar o ScreenConnect no host da vítima.
Investigação
Pesquisadores descreveram como o VBScript monta seus comandos através da ofuscação Chr(), enquanto o PowerShell recupera e compila a carga útil inteiramente na memória para minimizar artefatos no disco. O carregador .NET na memória então usa reflexão para executar um assembly embutido. Análises adicionais mostraram que o malware chama NtAllocateVirtualMemory, reescreve campos PEB para se passar por winhlp32.exe, e usa elevação automática de COM para contornar o Controle de Conta de Usuário e continuar a execução com privilégios elevados.
Mitigação
Defensores devem bloquear o acesso aos domínios de download maliciosos e aplicar controles rigorosos para a execução de PowerShell e VBScript. As equipes de segurança devem também monitorar a criação suspeita de objetos COM, adulteração inesperada de PEB e outros sinais de abuso de execução na memória. O acesso a ferramentas legítimas de administração remota como ScreenConnect deve ser estritamente limitado a usuários aprovados e fluxos de trabalho confiáveis para reduzir o risco de instalação não autorizada.
Resposta
Se esta atividade for detectada, isole imediatamente o sistema afetado, interrompa os processos maliciosos e remova quaisquer componentes ScreenConnect instalados como parte da intrusão. Realize uma análise forense focada em artefatos de memória volátil para recuperar evidências da cadeia de execução sem arquivo. Redefina credenciais potencialmente expostas, revise logs em busca de abuso de elevação automática de COM e atualize as detecções para identificar os padrões de linha de comando observados, comportamento do carregador e convenções de nomeação de arquivos associadas.
graph TB classDef action fill:#99ccff classDef builtin fill:#ffcc99 classDef file fill:#ccffcc action_user_exec[“<b>Ação</b> – <b>T1204.002 Execução do utilizador: Ficheiro malicioso</b><br/>A vítima visita site falso da Adobe e descarrega VBScript disfarçado”] class action_user_exec action file_vbscript[“<b>Ficheiro</b> – Acrobat_Reader_V112_6971.vbs<br/><b>Tipo</b>: VBScript”] class file_vbscript file action_vbscript_interpret[“<b>Ação</b> – T1059.005 Interpretador de scripts VB<br/>VBScript executa e inicia PowerShell”] class action_vbscript_interpret action tool_powershell[“<b>Ferramenta</b> – PowerShell<br/><b>Comando</b>: -ExecutionPolicy Bypass”] class tool_powershell builtin action_powershell_exec[“<b>Ação</b> – T1059.001 PowerShell<br/>Cria diretório temporário e compila C# em memória”] class action_powershell_exec action file_staging[“<b>Ficheiro</b> – Google Drive<br/><b>Propósito</b>: Código C#”] class file_staging file action_reflective_loading[“<b>Ação</b> – T1620 Carregamento reflexivo<br/>Carrega assembly .NET em memória”] class action_reflective_loading action action_process_injection[“<b>Ação</b> – T1055.002 Injeção de processo<br/>Insere shellcode em memória”] class action_process_injection action action_masquerade[“<b>Ação</b> – T1564.010 Mascaramento de processo<br/>Modifica PEB”] class action_masquerade action action_appdomain_hijack[“<b>Ação</b> – T1574.014 AppDomain Hijack<br/>Elevação via COM”] class action_appdomain_hijack action action_rat_install[“<b>Ação</b> – T1219 RAT<br/>Instala ScreenConnect via msiexec”] class action_rat_install action tool_screenconnect[“<b>Ferramenta</b> – ScreenConnect Client”] class tool_screenconnect builtin action_user_exec –>|downloads| file_vbscript file_vbscript –>|executes| action_vbscript_interpret action_vbscript_interpret –>|launches| tool_powershell tool_powershell –>|executes| action_powershell_exec action_powershell_exec –>|downloads| file_staging action_powershell_exec –>|compiles| action_reflective_loading action_reflective_loading –>|loads| action_process_injection action_process_injection –>|modifies| action_masquerade action_masquerade –>|enables| action_appdomain_hijack action_appdomain_hijack –>|facilitates| action_rat_install action_rat_install –>|installs| tool_screenconnect
Fluxo de Ataque
Detecções
Software Alternativo de Acesso / Gerenciamento Remoto (via sistema)
Ver
Possíveis Indicadores de Ofuscação do PowerShell (via powershell)
Ver
Chamada de Classes/Métodos .NET Suspeitos a partir do CommandLine do PowerShell (via criação de processo)
Ver
Uso Suspeito de CURL (via cmdline)
Ver
Possível Infiltração / Exfiltração de Dados / C2 via Serviços / Ferramentas de Terceiros (via cmdline)
Ver
Software Alternativo de Acesso / Gerenciamento Remoto (via auditoria)
Ver
Possível Tentativa de Instalação de Software de Gerenciamento Remoto usando MsiInstaller (via logs de aplicação)
Ver
LOLBAS WScript / CScript (via criação de processo)
Ver
IOCs (HashMd5) para detectar: Carregador na Memória Solta ScreenConnect
Ver
Bypass do ExecutionPolicy do PowerShell com Download Malicioso [Windows Powershell]
Ver
Instalação do ScreenConnect via msiexec e ShellExec [Criação de Processo do Windows]
Ver
Execução da Simulação
Pré-requisito: O Check de Pré-vôo da Telemetria & Baseline deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica adversária (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente as TTPs identificadas e ter como objetivo gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa do Ataque & Comandos:
O adversário obteve o MSI do ScreenConnect (geralmente entregue via anexo de phishing). Para evitar a interação do usuário, eles usam o confiávelmsiexec.exebinário para realizar uma instalação silenciosa. Eles também demonstram o alternativoShellExec.exeproxy, que apenas encaminha argumentos paramsiexec. Ambos os comandos integram a string literal “ScreenConnect” na linha de comando, satisfazendo a condição da regra.-
Copie o MSI para o host da vítima (simulando T1025).
-
Execute uma instalação silenciosa via
msiexec:msiexec.exe /i "C:TempScreenConnect.msi" /quiet /norestart -
Execute a mesma instalação via
ShellExec.exe(se presente no host):ShellExec.exe /i "C:TempScreenConnect.msi" /quiet /norestart
Essas ações geram entradas Windows Event 4688 onde
Imagemis*msiexec.exeor*ShellExec.exeandLinha de Comandocontém “ScreenConnect”, causando o acionamento da regra Sigma. -
-
Script de Teste de Regressão:
#============================================================= # Simulação de Instalação do ScreenConnect – aciona a regra Sigma #============================================================= $msiPath = "C:TempScreenConnect.msi" # Assegure-se de que o MSI exista (espaço reservado – em um teste real, solte o arquivo primeiro) if (-Not (Test-Path $msiPath)) { Write-Error "ScreenConnect MSI não encontrado em $msiPath" exit 1 } # 1. Instalação silenciosa usando msiexec Write-Host "[*] Instalando ScreenConnect via msiexec..." Start-Process -FilePath "$env:SystemRootSystem32msiexec.exe" ` -ArgumentList "/i `"$msiPath`" /quiet /norestart" ` -Wait -NoNewWindow # 2. Instalação silenciosa usando ShellExec (se presente) $shellExec = "$env:ProgramFilesScreenConnectShellExec.exe" if (Test-Path $shellExec) { Write-Host "[*] Instalando ScreenConnect via ShellExec..." Start-Process -FilePath $shellExec ` -ArgumentList "/i `"$msiPath`" /quiet /norestart" ` -Wait -NoNewWindow } else { Write-Warning "ShellExec.exe não encontrado; pulando a segunda instalação." } Write-Host "[+] Simulação completa. Verifique seu SIEM para o Alerta." -
Comandos de Limpeza:
# Desinstalar o ScreenConnect (usa seu GUID de produto registrado; ajuste conforme necessário) $productGuid = (Get-ItemProperty "HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall*" | Where-Object { $_.DisplayName -like "*ScreenConnect*" }).PSChildName if ($productGuid) { Write-Host "[*] Desinstalando ScreenConnect (GUID: $productGuid)..." & "$env:SystemRootSystem32msiexec.exe" /x $productGuid /quiet /norestart } else { Write-Warning "GUID do produto ScreenConnect não encontrado; a limpeza manual pode ser necessária." } # Remover o arquivo MSI copiado Remove-Item -Path "C:TempScreenConnect.msi" -Force -ErrorAction SilentlyContinue Write-Host "[+] Limpeza concluída."