Malware CoinMiner Continua a se Propagar por Drives USB
Detection stack
- AIDR
- Alert
- ETL
- Query
RESUMO
O malware CoinMiner continua a se propagar por meio de drives USB na Coreia do Sul, aproveitando um atalho oculto que aciona scripts VBS e BAT, que por sua vez organizam vários componentes que, em última instância, entregam uma carga útil de mineração de criptomoeda.
Investigação
O relatório descreve a estrutura de diretórios no USB infectado, a cadeia de execução do atalho por meio de várias etapas de dropper, o registro sob o serviço DcomLaunch e o uso dos mineradores de criptomoeda PrintMiner e XMRig.
Mitigação
Os usuários devem manter o sistema operacional e os softwares atualizados, bloquear a execução de arquivos de atalho não confiáveis, utilizar ferramentas antivírus atualizadas e negar o acesso a infraestruturas conhecidas como maliciosas.
Resposta
Detecte o atalho malicioso e seus scripts relacionados, monitore a criação de arquivos dropper e registros DCOM, e bloqueie o tráfego de rede para os domínios de comando e controle e endereços IP de mineração identificados.
Fluxo de Ataque
Detecções
Detecção de Atividades de Atalho USB e Malware BAT [Evento de Arquivo do Windows]
Visualizar
Detectar Comunicação do XMRig com o Servidor C&C via Nome de Host Específico [Conexão de Rede do Windows]
Visualizar
Execução de Arquivos Maliciosos via Printui.exe e Svcinsty64.exe [Criação de Processo do Windows]
Visualizar
IOCs (HashMd5) para detectar: Malware CoinMiner Sendo Continuamente Distribuído via USB
Visualizar
IOCs (DestinationIP) para detectar: Malware CoinMiner Sendo Continuamente Distribuído via USB
Visualizar
Execução de Simulação
Pré-requisito: O Check de Pré-voo de Telemetria & Base deve ter sido aprovado.
Racional: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a diagnósticos incorretos.
-
Narrativa do Ataque & Comandos:
- Estágio 1 – Descarregar uma DLL maliciosa: O adversário copia uma
printui.dllpara o mesmo diretório queprintui.exe(simulando uma carga de driver entregue via dispositivo USB). - Estágio 2 – Executar
printui.exe: Invocandoprintui.execom a chave/ml(carga maliciosa), a DLL maliciosa é carregada, gerando um evento de criação de processo que corresponde à seleção (da regra () enquanto também satisfaz a condição de filtro (Imagem contém printui.dll). A regra exclui este caso, então o atacante adiciona um segundo passo para contorná-lo. - Estágio 3 – Executar
svcinsty64.exe: O atacante registra um novo serviço apontando para um binário de carga útil (payload.exe) armazenado no drive USB. Esta ação cria um evento de criação de processo parasvcinsty64.exe, satisfazendo a seleção da regra sem acionar o filtro, assim gerando um alerta.
- Estágio 1 – Descarregar uma DLL maliciosa: O adversário copia uma
-
Script de Teste de Regressão: O script abaixo automatiza os três estágios, garantindo reprodutibilidade.
# ------------------------------------------------- # Teste de Regressão – Acionamento da regra Sigma para printui.exe / svcinsty64.exe # ------------------------------------------------- $dllPath = "$env:TEMPprintui.dll" $exePath = "$env:SystemRootSystem32printui.exe" $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe" $payloadPath = "$env:TEMPpayload.exe" # 1️⃣ Descarregar uma DLL maliciosa fictícia (conteúdo binário não é importante para detecção) Write-Host "[*] Criando DLL maliciosa fictícia em $dllPath" Set-Content -Path $dllPath -Value ([byte[]](0..255)) -Encoding Byte # 2️⃣ Executar printui.exe (carga benigna) – NÃO deve acionar devido ao filtro Write-Host "[*] Executando printui.exe benigno (será filtrado)" Start-Process -FilePath $exePath -ArgumentList "/p" -Wait # 3️⃣ Executar printui.exe com carregamento de DLL maliciosa – caso filtrado (esperado) Write-Host "[*] Executando printui.exe com DLL maliciosa (caso filtrado)" Start-Process -FilePath $exePath -ArgumentList "/ml `$dllPath`" -Wait # 4️⃣ Preparar um executável de carga útil fictício (script CMD simples compilado para exe) Write-Host "[*] Criando executável de carga útil fictício" $payloadSource = @" @echo off echo Payload executado > $env:TEMPpayload_output.txt "@ $payloadScript = "$env:TEMPpayload.bat" $payloadSource | Set-Content -Path $payloadScript -Encoding ASCII # Converter .bat para .exe usando iexpress (embutido) $iexpress = "$env:SystemRootSystem32iexpress.exe" $config = "$env:TEMPiexpress.sed" @" [Version] Version=3.0 [Options] ExtractTitle=Payload ExtractLocation=%TEMP% ShowProgress=0 HideExtractWindow=1 [SourceFiles] SourceFiles=0 %TEMP%payload.bat [Run] RunCommand="%TEMP%payload.bat" "@ | Set-Content -Path $config -Encoding ASCII & $iexpress /N /Q /M $config Move-Item -Path "$env:TEMPPayload.exe" -Destination $payloadPath -Force # 5️⃣ Registrar um serviço malicioso usando svcinsty64.exe – DEVE ACIONAR Write-Host "[*] Registrando serviço malicioso via svcinsty64.exe" $svcName = "MaliciousSvc" $svcDisplay = "Serviço Malicioso" $svcCmd = "`"$payloadPath`"" $svcArgs = "/install `$svcName` `$svcDisplay` `$svcCmd`" Start-Process -FilePath $svcInstPath -ArgumentList $svcArgs -Wait # 6️⃣ Limpar serviço Write-Host "[*] Removendo serviço malicioso" $removeArgs = "/uninstall `$svcName`" Start-Process -FilePath $svcInstPath -ArgumentList $removeArgs -Wait # 7️⃣ Remover artefatos temporários Write-Host "[*] Limpando arquivos temporários" Remove-Item -Path $dllPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $payloadPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $payloadScript -Force -ErrorAction SilentlyContinue Write-Host "[+] Teste concluído" -
Comandos de Limpeza: (Se o script acima falhar ou você preferir limpeza manual)
# Remover o serviço malicioso se ainda estiver presente $svcName = "MaliciousSvc" $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe" & $svcInstPath /uninstall $svcName # Excluir DLL temporária e carga útil Remove-Item -Path "$env:TEMPprintui.dll" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.bat" -Force -ErrorAction SilentlyContinue # (Opcional) Verificar se não há serviços restantes Get-Service -Name $svcName -ErrorAction SilentlyContinue