Sumário executivo
O Akamai Hunt identificou uma nova variedade de malware que tenta se esconder atrás de um endpoint de API de LLM (grande modelo de linguagem) legítimo.
O malware envia uma sequência de caracteres que parece estar codificada em Base64 para estabelecer uma conexão de C2 (comando e controle), em vez de usar um esquema comum.
A exploração dessa vulnerabilidade pode levar ao controle total do invasor e à exfiltração de dados.
Este é mais um exemplo de como os invasores estão evoluindo rapidamente suas metodologias de ataque, o que reforça a necessidade de as organizações se prepararem para essas ameaças modernas.
Introdução
O cenário de ameaças está evoluindo na velocidade do hype, e os invasores se adaptam rapidamente. À medida que LLMs (grandes modelos de linguagem) se tornam amplamente utilizados nas organizações, seus padrões de comunicação podem permitir que os invasores ocultem seu tráfego mal-intencionado à vista de todos.
Assim como os defensores correm para integrar a IA em pipelines de detecção, usando LLMs para investigar alertas, resumi-los e correlacionar indicadores, os autores de malware também estão experimentando o uso de IA. Já vimos evidências iniciais com malwares como LameHug e PromptLock, que demonstram como os LLMs projetados para geração de texto podem ser usados indevidamente para fins mal-intencionados.
Também vimos um exemplo de como os invasores usam a API da OpenAI para uma infraestrutura de C2 (comando e controle) no backdoor SesameOp, que destaca toda a nova superfície de ataque dentro do mundo da IA.
Recentemente, a equipe do Akamai Hunt descobriu um novo malware que usa uma nova abordagem para usar indevidamente LLMs, misturando tráfego mal-intencionado ao ruído de solicitações de API de LLM. Nesta publicação do blog, a equipe do Hunt compartilha um exemplo da ameaça emergente que descobriu como parte da prestação de serviços aos clientes do Hunt.
Uso indevido de endpoints
Durante uma busca por novos usos de LLM em malware, um arquivo chamou nossa atenção. Ele já estava marcado como mal-intencionado no VirusTotal e correspondia a várias regras Yara. Ao iniciarmos a investigação, esperávamos encontrar outro padrão de criação de código via LLM e execução na vítima.
O malware primeiro tenta se conectar ao endereço IP 39.97.57[.]244 usando um soquete, mas quando falha, ele recorre a um C2 HTTP interessante: 1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com/v1/chat/completions.
Após observarmos a primeira solicitação HTTP para a API, ficamos surpresos ao ver que ela não seguia os cabeçalhos necessários para esse tipo de solicitação.
O endpoint da API
Parte de nossa pesquisa incluiu a busca por usos de endpoints de API de LLM e, particularmente, /v1/chat/completions.
De acordo com a documentação da OpenAI, esse endpoint "cria uma resposta de modelo para a conversa de chat fornecida" (Figura 1 e Figura 2).
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5",
"messages": [
{
"role": "developer",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}'
{
"id": "chatcmpl-B9MBs8CjcvOU2jLn4n570S5qMJKcT",
"object": "chat.completion",
"created": 1741569952,
"model": "gpt-4.1-2025-04-14",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?",
"refusal": null,
"annotations": []
},
...
O endpoint /v1/chat/completions foi introduzido pela OpenAI e rapidamente emulado por vários provedores e gateways que oferecem APIs compatíveis com a OpenAI (por exemplo, OpenRouter e Hugging Face).
No entanto, as APIs oficiais de outros fornecedores podem usar diferentes endpoints nativos ou podem diferir em parâmetros, autenticação e comportamento de streaming, apesar de terem um esquema de solicitação semelhante.
Esquema de solicitação
Normalmente, ao usar essa API, é necessário adicionar os seguintes parâmetros necessários:
Autorização: um cabeçalho de token de portador no formato “Authorization: Bearer YOUR_API_KEY” é necessário para autenticar a solicitação
Modelo: um identificador de cadeia de caracteres que seleciona um modelo compatível com chat (por exemplo, gpt-3.5-turbo ou Llama-4-Maverick-17B-128E-Instruct-FP8) para o qual o endpoint encaminhará sua solicitação
Mensagens: uma matriz de objetos de mensagem com marcação de função (com função e conteúdo) que representa o histórico de conversas que o modelo usará para gerar a próxima resposta.
Como mencionamos acima, já observamos um uso mal-intencionado e real desse endpoint em ambiente real: LameHug. Os autores de malware usaram o mesmo endpoint para acessar um modelo de LLM no Hugging Face, pedindo comandos específicos e gerando dinamicamente o código para ser executado na vítima (Figura 3).
Camuflagem por meio das conclusões do chat
A primeira coisa que notamos ao analisar esse binário foi o fato de que ele não usa nenhum dos campos mencionados. Em vez disso, ele envia uma cadeia de caracteres que parece estar codificada em Base64 (Figura 4).
Teoricamente, pode haver um LLM por trás dessa API: o invasor poderia criar um prompt no lado do servidor com código personalizado. No entanto, nesse caso, o motivo para usar esse endpoint de API também é para camuflagem.
Ao observar os dados de nosso produto API Security, identificamos 151 endpoints exclusivos de nossos clientes. Todas as conversas desses endpoints compartilhavam alguma semelhança com o esquema. Algumas APIs usam "query" em vez de "messages", por exemplo, mas há uma similaridade muito clara em todas as sessões.
Isso nos mostra que, embora todos possam desenvolver seu próprio endpoint /v1/chat/completions e não haja uma RFC (solicitação de comentários) referente a esse endpoint, ainda há um padrão de fato que os desenvolvedores usam.
Mais pesquisas
Após decodificar o corpo da mensagem e aplicar XOR com 0xBB, encontramos o que parece com o primeiro pedido de reconhecimento realizado contra a vítima.
Acompanhamos o processo de análise da resposta e observamos que o malware espera uma resposta que não corresponda ao esquema de API original. Ele processa os dados recebidos descriptografando-os usando XOR e Base64 e, em seguida, segue as instruções fornecidas na resposta (Figura 5).
O servidor de C2, 1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com, é uma função de nuvem sem servidor (semelhante ao AWS Lambda ou ao Azure Functions) na Tencent Cloud, um serviço de computação em nuvem operado pela Tencent. O uso de funções de nuvem como servidores de C2 permite que os invasores executem uma infraestrutura de escalonamento automático, resiliente e difícil de distinguir do tráfego benigno.
Nossa hipótese é que os invasores optaram por expor esse endpoint específico para parecerem mais legítimos para defensores e administradores de rede, visto que o uso desse endpoint de API está se tornando cada vez mais comum com o aumento de agentes de IA, integrações e ferramentas de automação.
O malware suporta várias instruções, categorizando esse malware como um RAT (cavalo de troia de acesso remoto) com controle remoto total sobre a vítima. Nós as analisamos para garantir que todas se comuniquem com o mesmo endpoint (consulte o Apêndice para ver nossa análise).
Por exemplo, a Figura 6 é a saída da instrução $HunterInfo. Ela procura arquivos de configuração de ferramentas de acesso remoto específicas e exfiltra os dados de volta para /v1/chat/completions da mesma forma que a primeira mensagem é enviada: com XOR e Base64.
O malware também contém três arquivos incorporados, que são submetidos a XOR com 0x88 e codificados em Base64.
Todos eles são arquivos .NET denominados net_test.exe. Juntos, eles orquestram um pequeno conjunto de ferramentas proxy usando SOCKS5 ou HTTP na rede da vítima. Dois dos arquivos são servidores SOCKS5 e HTTP, enquanto o terceiro é um cliente que pode receber e encaminhar tráfego (Figura 7).
Arquivos adicionais
Identificamos variantes mais antigas desse malware (o hash pode ser encontrado na seção IOC deste post). Elas tinham instruções semelhantes e tinham os mesmos caminhos codificados de várias ferramentas de acesso remoto ($HunterInfo), mas o servidor de C2 era diferente.
Também encontramos um arquivo RAR no VirusTotal que está relacionado ao servidor de C2. O RAR inclui um arquivo .lnk (个人简历.lnk traduzido para "Résumé" ou "CV"), executando ftp -s””:_/_/_/_/_/_/_/_/_. O RAR também inclui arquivos .doc dentro dos diretórios aninhados, embora seu conteúdo seja código binário (Figura 8).
O arquivo "_" constrói os documentos em três arquivos PE e os copia para C:\Users\Public\Update.
Eventualmente, ele chama
!call start /min C:\Users\Public\Update\svchost.exe -InstallLsp
C:\Users\Public\Update\360.%TIME:~4,1% >nul (Figura 9).
Existem 10 arquivos .doc diferentes (0–9.doc), que são semelhantes, exceto por alguns bytes aleatórios. %TIME:~4,1% calcula o segundo dígito do minuto atual de um formato %H:%M:%S.%f. Os documentos não incluem o cabeçalho MZ, provavelmente para evitar varreduras de assinatura. Com base na hora atual, o script constrói o cabeçalho do arquivo .doc e o copia para C:\Users\Public\Update\360.<minute>.
svchost.exe
Este arquivo é, na verdade, "SangforPromote.exe", um arquivo verificado e assinado da Sangfor Technologies. Quando dado o argumento -InstallLsp e uma DLL, o arquivo legítimo carrega a DLL e define o ponteiro para sua exportação usando LoadLibrary (Figura 10).
360 DLL
A DLL, denominada 360, aloca memória com permissões de RWX (leitura, gravação, execução), lê "sc" para ela e então o executa.
sc
Ao analisar o sc, o código carregado resolve funções usando LoadLibrary e GetProcAddress. Ele tem dois destinos codificados para os quais envia solicitações HTTP, que correspondem aos endereços de C2 do malware que analisamos:
https://1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com
39.97.57[.]244
Ele também decodifica dados com Base64 e XOR, assim como as amostras anteriores, o que faz uma conexão entre os conjuntos de ferramentas. Acreditamos que esse fluxo baixa o RAT final no sistema de arquivos da vítima (Figura 11).
Proteção e mitigação do Akamai Hunt
Os clientes do Akamai Hunt se beneficiam do monitoramento contínuo 24 horas por dia, 7 dias por semana, desses artefatos, permitindo a proteção contra esses ataques (Figura 12).
Mesmo antes de uma ameaça ativa ser detectada, o recurso de segmentação adaptativa do Hunt ajuda as organizações a reduzir a exposição e conter riscos. Ao analisar fluxos de comunicação normais e comportamentos de ativos, a segmentação adaptativa pode orientar políticas que restringem o acesso de saída desnecessário a endpoints de IA, isolam ambientes de desenvolvimento e produção e minimizam possíveis caminhos de movimento lateral.
Esse recurso estende a proteção do Hunt além da detecção, transformando a visibilidade contínua em resiliência proativa contra ameaças emergentes baseadas em LLM.
Conclusão
A decisão estratégica dos invasores de rotear a exfiltração e o C2 por meio do endpoint /v1/chat/completions explora a ubiquidade e a rápida evolução dos serviços de LLM. Essa abordagem oferece um alto potencial de ROI, pois aproveita a infraestrutura de nuvem existente para criar canais de comunicação que se integram ao tráfego corporativo normal.
O perigo decorre da forma como essa técnica alinha três tendências predominantes em ambientes modernos, que, em conjunto, podem conceder aos adversários caminhos de C2 estáveis e furtivos, que parecem benignos sob inspeção superficial:
Uso generalizado de HTTPS de saída para APIs de nuvem, muitas vezes sem inspeção
Tolerância crescente para tráfego gerado por máquinas (agentes de IA, aplicativos, integrações)
Fácil disponibilidade de hospedagem na nuvem que fornece endpoints confiáveis e de longa duração que podem ser usados por invasores
A realidade é que os defensores estão aprendendo na prática como os LLMs funcionam e quais ameaças eles podem trazer. Se o tráfego parecer legítimo o suficiente, há uma chance de que ele seja liberado sem as devidas proteções. Às vezes, esconder-se à vista de todos é a maneira mais fácil de passar despercebido.
Ao ocultar cargas úteis mal-intencionadas no tráfego destinado a serviços de LLM legítimos, eles se aproveitam de um padrão de rede cada vez mais comum, reduzindo assim a chance de que suas comunicações sejam sinalizadas ou investigadas. À medida que as organizações adotam ferramentas e automação de IA, o tráfego para endpoints de LLM se torna normal, e nesse ruído, os invasores encontram oportunidades.
IOCs
IOC |
Tipo |
|---|---|
93cf0d545a872c393c053031570bc5eaebfa1aa6a0860fd0b08b679b8ce52fd2 - RAT |
Hash |
10c444262994c05930394388e6112ddd98b83118661868bccd83b1fa61160a62 - 1.rar |
Hash |
91c43e7ddd98af63d6b1b130e997b909100f3eaf71e30511858cca4348b509db - _ |
Hash |
9f119d05403b1e079893fb77f6b8b2a9682d1df7ced31a189e7490924ccfb170 - 个人简历.lnk |
Hash |
b7dcf661844e6f3e94eb140a79787be6dad77c09ab0b97cf41a62afd07219190 - Variante mais antiga, maio de 2025 |
Hash |
2e395436e97eaad9a087825d22005b6afc55044abf458604a5118c2ac9bde42a - variante mais antiga, setembro de 2025 |
Hash |
67ea3ea3c58a57dbbdac48d4ce3d546816f715eaf32bec33a64a63c91541e697 - net_test.exe (cliente) |
Hash |
195c283703ee7df7c7ef17c85b0fdf88de22348bb0755daf5f0c3ed319c8d88a - net_test.exe (Servidor SOCKS5) |
Hash |
e513d12abd03a4e07788dd85888d187cb6ca6e69a59f22f00853cae0a0b34712 - net_test.exe (servidor HTTP) |
Hash |
1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com/v1/chat/completions |
URL |
39.97.57[.]244 |
IP |
C:\Users\Public\Update |
Diretório |
Apêndice
Instrução |
Descrição |
|---|---|
$ActiveDos |
Retorna o diretório atual. |
$AddUser |
Cria um novo usuário local e o adiciona ao grupo Administradores. |
$ExecuteCommand |
Executa um comando. |
$FileDelete |
Exclui um arquivo. |
$FileDownLoad\$BigFileDownLoad |
Baixa um arquivo da máquina da vítima. |
$FileExist |
Retorna se um arquivo existe. |
$FileUpload\$BigFileUpload |
Grava um arquivo no sistema de arquivos da vítima. |
$Get_LocalDisk |
Obtém as unidades da vítima. |
$GetFile |
Obtém dados do arquivo (tamanho, carimbos de data/hora). |
$GetFolder |
Lista pastas em um determinado diretório. |
$GetFolderAndFile |
Lista uma pasta e obtém arquivos. |
$GetProcess |
Lista processos. |
$GetThreadPermissionsInfo |
Obtém informações sobre os threads do processo de malware. |
$HunterInfo |
Rouba dados do 360 Secure Browser, SunLogin, ToDesk, NetSarang e também do Chrome. |
$KillProcess |
Encerra um processo com o PID fornecido. |
$MessageBox |
Mostra uma caixa de mensagem com a cadeira de caracteres fornecida. |
$Netstat |
Executa netstat para ver as conexões ativas. |
$OffLine |
Encerra o processo. |
$Online |
Envia novamente os dados iniciais da vítima (Figura 4). |
$PE64Loader |
Executa explorer.exe e injeta um carregador de shellcode nele. |
$PEMemoryLoadOnSelf |
Carrega o código por meio de um buffer. O malware verifica vários argumentos recebidos, como "JuicyPotato" ou "PwDump", e define uma variável de ambiente com esse nome, o que nos leva a crer que ele tem a capacidade de usá-lo como um "módulo" ou um plug-in. |
$Persistence |
Recebe uma DLL do C2:
Também pode criar uma tarefa agendada. |
$ProgressSpawn |
Cria ou verifica uma carga útil em C:/Users/Public e executa-a por meio de diferentes métodos, como ShellExecute, -InstallLsp ou carregamento na memória, dependendo dos argumentos. |
$RegManage |
Parece não ter sido implementado. |
$ScreenShot |
Faz uma captura de tela. |
$ScreenSpy |
Altera as chaves de registro do TightVNC para habilitar o controle remoto, provavelmente assumindo que a vítima tenha o TightVNC instalado, ou para o estágio anterior/futuro do ataque. |
Tags