
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.
| Componente | Sistemas publicamente expostos com Log4j vulnerável a CVE-2021-44228, usados como ponto de entrada para carga Java maliciosa e módulos PowerShell. |
| Vetor | Requisiçõ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. |
| Impacto | Execuçã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. |
| Prioridade | Corrigir 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. |
| Ator | APT35, também rastreado como Charming Kitten, TA453 ou Phosphorus, descrito como suspeito de vínculo com operação estatal iraniana. |
| Artefatos | Framework modular CharmPower, módulos PowerShell e C#, bucket S3 usado para obtenção de componente inicial e endpoints de API sobre C&C. |
| IoCs | Bucket S3 defangado hxxps://s3[.]amazonaws[.]com/doclibrarysales/test[.]txt e endereço FTP defangado 54[.]38[.]49[.]6 aparecem no contexto analisado. |
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.
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.
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-44228e 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.
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[.]txtou para FTP no endereço defangado54[.]38[.]49[.]6.
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.
0 Comentários