SOC Prime Bias: Médio

05 Dec 2025 14:36 UTC

Malware CoinMiner Continua a se Propagar por Drives USB

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Malware CoinMiner Continua a se Propagar por Drives USB
shield icon

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

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:

    1. Estágio 1 – Descarregar uma DLL maliciosa: O adversário copia uma printui.dll para o mesmo diretório que printui.exe (simulando uma carga de driver entregue via dispositivo USB).
    2. Estágio 2 – Executar printui.exe: Invocando printui.exe com 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.
    3. 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 para svcinsty64.exe, satisfazendo a seleção da regra sem acionar o filtro, assim gerando um alerta.
  • 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