APT35 explorou falha do Log4j para distribuir toolkit modular em PowerShell

APT35 explorou falha do Log4j para distribuir toolkit modular em PowerShell

Grupo associado ao Irã usou exploração de CVE-2021-44228 em sistemas expostos para entregar o framework CharmPower, com persistência, coleta de informações, execução remota e módulos gerados por máquina comprometida.

ComponenteSistemas publicamente expostos com Log4j vulnerável a CVE-2021-44228, usados como ponto de entrada para carga Java maliciosa e módulos PowerShell.
VetorRequisições criadas para acionar JNDI em serviços expostos, com conteúdo inserido em cabeçalhos HTTP como User-Agent ou Authorization, seguidas da entrega de classe Java maliciosa.
ImpactoExecução de PowerShell no host vulnerável, instalação do módulo principal CharmPower, persistência, inventário do sistema, captura de telas, execução de comandos e comunicação contínua com C&C.
PrioridadeCorrigir Log4j, revisar serviços expostos, procurar requisições suspeitas nos cabeçalhos HTTP e caçar artefatos de PowerShell, persistência e comunicação HTTP POST associada ao CharmPower.
AtorAPT35, também rastreado como Charming Kitten, TA453 ou Phosphorus, descrito como suspeito de vínculo com operação estatal iraniana.
ArtefatosFramework modular CharmPower, módulos PowerShell e C#, bucket S3 usado para obtenção de componente inicial e endpoints de API sobre C&C.
IoCsBucket S3 defangado hxxps://s3[.]amazonaws[.]com/doclibrarysales/test[.]txt e endereço FTP defangado 54[.]38[.]49[.]6 aparecem no contexto analisado.
Resumo técnico

O APT35 iniciou varreduras amplas e tentativas de exploração de CVE-2021-44228 apenas quatro dias depois da divulgação pública da falha no Log4j. A operação mirou sistemas voltados para a internet e usou uma cadeia de exploração apressada, baseada em ferramenta aberta de JNDI disponível publicamente na época. Esse detalhe é relevante para defesa porque reduz a necessidade de procurar apenas implantes sofisticados: parte da atividade deixa sinais compatíveis com exploração oportunista, reutilização de infraestrutura antiga e tráfego HTTP anômalo em cabeçalhos que normalmente não carregam lógica de execução.

Após a exploração bem-sucedida, a cadeia entregava uma classe Java maliciosa ao host vulnerável. Essa classe acionava PowerShell com conteúdo codificado e buscava um módulo remoto hospedado em um bucket S3. O módulo principal, chamado CharmPower, era responsável por estabelecer comunicação com o servidor de comando e controle, coletar dados básicos do ambiente e receber módulos adicionais. A arquitetura é modular: o primeiro componente atua como carregador e orquestrador, enquanto tarefas como inventário, captura de telas, enumeração de processos, execução remota e limpeza são executadas por módulos posteriores.

A atribuição técnica se apoia em sobreposição de código, estilo de desenvolvimento, protocolo de comunicação e infraestrutura com atividades anteriores associadas ao APT35. O contexto também descreve semelhanças entre o backend usado pelo malware PowerShell e componentes móveis previamente atribuídos ao mesmo conjunto operacional. Ainda assim, a leitura defensiva deve tratar a atribuição como suporte de inteligência, não como pré-condição para resposta: qualquer organização com Log4j exposto, requisições JNDI em logs e execução anômala de PowerShell precisa investigar o host como potencialmente comprometido.

Fluxo técnico

A exploração começa quando o operador envia uma requisição criada para atingir um recurso público vulnerável. O conteúdo malicioso foi observado em cabeçalhos HTTP como User-Agent e Authorization, o que torna essencial preservar logs completos de requisição, incluindo cabeçalhos, método, URI, origem, agente de usuário bruto e códigos de resposta. Quando o serviço processa a entrada de forma vulnerável, a cadeia JNDI permite que o servidor de exploração responda com uma classe Java que será executada no sistema afetado. O detalhe operacional de exploração não é necessário para defesa; o ponto crítico é que uma entrada remota em cabeçalho HTTP pode resultar em execução de código no servidor exposto.

A classe Java executada no host aciona PowerShell para obter o componente seguinte. O conteúdo recuperado é um módulo PowerShell que mantém a comunicação com C&C e passa a operar em ciclos. O módulo coleta dados como versão do sistema operacional, nome do computador e um identificador armazenado em arquivo sob o perfil do usuário. Em seguida, envia requisições HTTP POST periódicas para a infraestrutura recebida, incluindo informações de sessão no formato usado pelo operador. Esse comportamento cria uma linha de detecção baseada em processos: processo Java ou serviço de aplicação originando PowerShell, PowerShell fazendo download de conteúdo remoto e PowerShell mantendo tráfego HTTP periódico.

Os módulos adicionais podem ser scripts PowerShell ou código C#. Cada módulo segue uma estrutura que inclui linguagem, código, nome do módulo e ação esperada. A ação pode iniciar, parar ou acionar um utilitário de download para módulos PowerShell. O módulo principal interpreta essa estrutura e escolhe a forma de execução de acordo com a linguagem declarada. Esse desenho permite que o operador mude capacidades sem substituir o implante principal. Também foi observado que os módulos são gerados com nome de máquina e domínio C&C embutidos, o que indica personalização por vítima e facilita correlação forense entre artefatos locais e infraestrutura remota.

As capacidades observadas incluem enumeração de aplicativos instalados, captura periódica de telas, listagem de processos, coleta de informações do sistema, execução remota de comandos e remoção de vestígios. O módulo de captura de tela envia imagens para FTP com credenciais embutidas no script; essas credenciais não devem ser publicadas nem reaproveitadas em análise operacional fora de ambiente controlado. O módulo de limpeza tenta remover artefatos de persistência no registro e na pasta de inicialização, arquivos criados durante a operação e processos ligados aos módulos anteriores. Essa etapa mostra intenção de manter acesso enquanto útil e reduzir rastros quando o objetivo do operador for concluído.

Superfície afetada

A superfície primária são aplicações Java expostas que usam Log4j vulnerável a CVE-2021-44228 e aceitam entradas controladas por usuário em caminhos que chegam ao mecanismo de logging. O contexto descreve exploração contra recursos publicamente acessíveis, não apenas contra sistemas internos. Por isso, inventário de borda, balanceadores, proxies reversos, aplicações legadas, appliances com componentes Java e serviços terceirizados que registram cabeçalhos HTTP devem entrar no escopo. O risco não se limita ao nome do produto principal; qualquer componente que empacote Log4j vulnerável pode ser o ponto real de execução.

A superfície secundária aparece após a execução inicial: endpoints Windows com PowerShell disponível, permissões suficientes para criar artefatos de persistência, comunicação de saída para serviços externos e capacidade de executar código C# ou scripts recebidos. O fluxo observado depende de downloads remotos, comunicação C&C por HTTP POST e, em ao menos um módulo, envio de capturas para FTP. Ambientes que permitem saída irrestrita para internet, sem inspeção de processo de origem e sem bloqueio de PowerShell não assinado, oferecem mais espaço para a cadeia completar pós-exploração.

A operação também reutilizou infraestrutura e padrões já expostos em atividades anteriores do APT35. Isso aumenta a chance de detecção por reputação histórica, por endpoints de API e por sobreposição de protocolo. O C&C do implante PowerShell respondeu a endpoints associados a variante móvel, incluindo caminhos como /Api/Session e solicitações relacionadas a funções Android. Algumas respostas retornaram 405, diferindo de caminhos inexistentes que retornavam 404. Para defensores, essa distinção ajuda a separar um servidor web genérico de infraestrutura com backend compatível com o protocolo do operador.

  • Aplicações Java públicas com Log4j vulnerável a CVE-2021-44228 e registro de cabeçalhos HTTP controlados por usuário.
  • Servidores Windows nos quais a aplicação explorada consegue iniciar PowerShell e gravar artefatos no perfil do usuário, registro ou pasta de inicialização.
  • Redes com tráfego de saída permitido para HTTP, S3 e FTP, especialmente quando o processo de origem é Java, PowerShell ou um serviço de aplicação.
  • Ambientes sem retenção de cabeçalhos HTTP completos, o que dificulta reconstruir a exploração inicial em User-Agent ou Authorization.
Hunting e telemetria

A investigação deve começar pelos serviços expostos no período posterior à divulgação de CVE-2021-44228, procurando entradas JNDI ou padrões compatíveis com exploração em cabeçalhos HTTP. O objetivo não é reproduzir a exploração, mas identificar requisições em que campos como User-Agent ou Authorization carregaram conteúdo incomum, codificado ou com referências a recursos externos. Logs de WAF, proxy reverso, CDN, balanceador e servidor de aplicação devem ser correlacionados com eventos de criação de processo no host. Uma requisição suspeita seguida por execução de Java, PowerShell e tráfego de saída é um encadeamento de alto valor.

No endpoint, a caça deve focar processo pai e filho, linha de execução resumida, criação de arquivos no perfil do usuário, alteração de chaves de persistência e tarefas de rede originadas por PowerShell. O contexto aponta um arquivo sob $APPDATA usado como parte do identificador de sessão, além de persistência em registro e pasta de inicialização. Não é necessário depender de um único nome de arquivo: o padrão comportamental mais forte é a combinação de execução de PowerShell por processo de aplicação, coleta de inventário, envio periódico de POST e módulos com código embutido específico para o nome da máquina.

Na rede, procurar POSTs periódicos para domínios incomuns, chamadas a endpoints de API com nomenclatura parecida à usada pelo operador e acesso ao bucket S3 defangado identificado no contexto. O endereço FTP defangado 54[.]38[.]49[.]6 aparece ligado ao módulo de captura de telas; sua presença em logs de proxy, firewall ou EDR deve ser tratada como sinal relevante, mas a ausência dele não elimina comprometimento, porque o C&C pode mudar o canal de comunicação após ciclos repetidos. O módulo principal tinha lógica para buscar um novo domínio em bucket S3 após um número fixo de ciclos, o que reforça a necessidade de análise temporal do tráfego.

  • Requisições HTTP para aplicações Java com conteúdo JNDI ou padrões anômalos nos cabeçalhos User-Agent e Authorization.
  • Processos Java ou serviços web iniciando PowerShell, especialmente com conteúdo codificado, download remoto ou execução de scripts em memória.
  • PowerShell emitindo HTTP POST periódico para infraestrutura externa e enviando identificadores com versão do sistema operacional e nome do computador.
  • Criação ou alteração de persistência em registro e pasta de inicialização após atividade de exploração em servidor exposto.
  • Tráfego para o bucket S3 defangado hxxps://s3[.]amazonaws[.]com/doclibrarysales/test[.]txt ou para FTP no endereço defangado 54[.]38[.]49[.]6.
Mitigação

A resposta deve priorizar correção e contenção da superfície Log4j antes de investigar apenas o implante. Sistemas expostos precisam ser atualizados ou compensados conforme a orientação do fornecedor, com validação de que o componente vulnerável realmente foi removido ou substituído em todos os pacotes, imagens, containers e dependências empacotadas. Regras de bloqueio em WAF e proxy ajudam a reduzir ruído e tentativas automatizadas, mas não substituem correção do componente vulnerável. Para hosts que receberam requisições suspeitas, a organização deve assumir possibilidade de execução e iniciar análise de endpoint.

Em servidores com indícios de execução, isole o host, preserve logs, colete eventos de processo, conexões de rede, artefatos em perfil de usuário, persistência em registro, pasta de inicialização e histórico de PowerShell quando disponível. Como o módulo de limpeza tenta remover rastros, a ausência de arquivos esperados não deve encerrar a investigação. A linha do tempo precisa cruzar exploração HTTP, criação de processo, downloads, comunicação C&C, enumeração de sistema, captura de tela e eventuais comandos remotos. Caso haja evidência de execução de módulos, trate segredos presentes no host como potencialmente expostos, especialmente credenciais de aplicação, tokens de serviço e chaves acessíveis ao processo comprometido.

Para reduzir recorrência, restrinja saída de servidores de aplicação para a internet, aplique allowlist de destinos necessários, monitore execução de PowerShell por processos de serviço e bloqueie scripts não autorizados onde operacionalmente viável. Ambientes Windows devem revisar políticas de logging avançado de PowerShell, AMSI, EDR, controle de aplicações e auditoria de criação de processo. Em infraestrutura web, retenha cabeçalhos completos em logs de borda por tempo suficiente para investigação de incidentes, com proteção adequada para dados sensíveis. A validação final deve incluir nova varredura de dependências Log4j, revisão de indicadores locais e confirmação de que não há comunicação residual com C&C.

  • Atualizar ou remover Log4j vulnerável em aplicações, bibliotecas empacotadas, containers, appliances e serviços expostos.
  • Investigar qualquer host que recebeu requisições JNDI suspeitas como possível execução remota, mesmo sem alerta de malware confirmado.
  • Isolar servidores com PowerShell iniciado por Java ou serviço web e coletar evidências antes de limpeza operacional.
  • Bloquear ou revisar saída para S3, FTP e domínios não aprovados a partir de servidores de aplicação.
  • Rotacionar credenciais e segredos acessíveis a hosts comprometidos ou com forte evidência de execução pós-exploração.
  • Revisar persistência em registro, pasta de inicialização, arquivos em perfil de usuário e tarefas de rede associadas ao CharmPower.

Postar um comentário

0 Comentários