Autores: Santiago Pontiroli, Gabor Molnar, Kirill Antonenko
Resumo
- O Acronis TRU identificou novas variantes do Chaos RAT, um malware conhecido, em ataques recentes do mundo real, em sistemas Linux e Windows.
- O Chaos RAT é uma ferramenta de administração remota (RAT) de código aberto, detectada pela primeira vez em 2022. Ela evoluiu em 2024 e novas amostras foram descobertas pela TRU em 2025.
- Pesquisadores da TRU descobriram uma vulnerabilidade crítica no painel web do Chaos RAT que permite que atacantes executem código remoto no servidor. Esta amostra recente do Chaos RAT sugere que ele atraiu as vítimas para baixar uma ferramenta de diagnóstico de rede para ambientes Linux.
- Desenvolvido em Golang, o Chaos RAT oferece compatibilidade com plataformas cruzadas para sistemas Windows e Linux — outro exemplo claro de como ferramentas legítimas podem conter vulnerabilidades e serem reutilizadas para atividades cibernéticas.
- Embora o uso geral permaneça limitado, amostras recentes confirmam que o Chaos RAT ainda está ativo. Seu baixo perfil de detecção cria oportunidades para espionagem, exfiltração de dados e estabelecimento de bases para ransomware e outras operações pós-comprometimento.
- Nesta análise técnica, a equipe da Acronis TRU se concentra em uma variante do Linux e compartilha estratégias de detecção acionáveis, incluindo regras YARA, indicadores de comprometimento e dicas de caça a ameaças com o EDR para defensores.
Introdução
O Chaos RAT é um RAT de código aberto escrito em Golang, oferecendo suporte a plataformas cruzadas para sistemas Windows e Linux. Inspirado em frameworks populares, como o Cobalt Strike e o Sliver, o Chaos RAT oferece um painel de administrador no qual os usuários podem criar builds de payloads, estabelecer sessões e controlar máquinas comprometidas. Embora malwares baseados em Golang tendam a ser mais lentos e de tamanho maior quando comparado aos escritos em C++ ou outras linguagens comuns, ele se beneficia das capacidades de compilação cruzada do Golang, resultando em redução do tempo de desenvolvimento e maior flexibilidade.

Originalmente projetado como uma ferramenta legítima para gerenciamento remoto, a natureza de código aberto do Chaos RAT atraiu atores de ameaças que o exploram para fins maliciosos. Apesar de seu desenvolvimento ter começado em 2017, o primeiro uso observado do Chaos RAT em ataques do mundo real ocorreu em novembro de 2022. Desde então, as variantes do Linux continuaram a aparecer, sendo predominantemente utilizadas em campanhas de mineração de criptomoedas. Essa análise aborda a arquitetura do Chaos RAT, seu uso em ataques ativos e seus métodos de detecção e mitigação.
Anatomia do Chaos RAT: Código, capacidades e comunicação
Entrega
O Chaos RAT normalmente atinge as vítimas por meio de e-mails de phishing contendo links ou anexos maliciosos. As amostras iniciais implantaram um script malicioso (não relacionado ao RAT) projetado para modificar o arquivo /etc/crontab, um agendador de tarefas comumente utilizado por atores de ameaças para persistência. Esse mecanismo permite que o atacante atualize ou altere a carga útil atual sem precisar tocar novamente no sistema de destino, já que ela é obtida remotamente toda vez que a tarefa cron é executada. Campanhas iniciais utilizavam essa técnica para distribuir mineradores de criptomoedas e o RAT Chaos separadamente, o que indica que o Chaos era empregado principalmente para reconhecimento e coleta de informações sobre dispositivos comprometidos.

Neste último exemplo identificado no Virus Total e enviado da Índia, um arquivo compactado tar.gz, chamado NetworkAnalyzer.tar.gz, continha o payload final do Chaos RAT. Não há informações adicionais sobre como a vítima recebeu esse pacote, mas os dados disponíveis indicam uma isca tentando convencê-la a baixar uma ferramenta de diagnóstico de rede para ambientes Linux.

Visão geral
O código-fonte mais recente do Chaos RAT, que é mantido ativamente, está disponível no GitHub e foi atualizado pela última vez em outubro de 2024. Esta versão é voltada exclusivamente para a construção de clientes de 64 bits, oferecendo suporte a sistemas Windows e Linux. Seu desenvolvimento contínuo sugere aprimoramentos e melhorias em andamento, com o objetivo de expandir a compatibilidade, aprimorar as capacidades de geração de payloads e fortalecer os protocolos de comunicação.
Painel de administração
O painel de administração do Chaos RAT serve como interface centralizada para a criação, gerenciamento e controle de payloads. Ele oferece um dashboard de fácil utilização, acessível por meio de um navegador, com várias funcionalidades para que atacantes ou pesquisadores possam interagir com sistemas comprometidos. Embora o número de painéis de administrador detectados seja baixo, a aparição de novas amostras no VirusTotal e a baixa taxa de detecção indicam que o Chaos RAT ainda é utilizado em ataques do mundo real.

O painel do administrador pode ser iniciado localmente executando o seguinte comando:
PORT=8080 SQLITE_DATABASE=chaos go run cmd/chaos/main.go
Após o serviço ser iniciado, o painel é acessível por meio de qualquer navegador da Web no endereço http://localhost:8080 com as credenciais de login padrão admin:admin.
O painel de administração inclui guias para gerenciar clientes, gerar payloads e monitorar campanhas. O Dashboard exibe os IDs dos clientes, os detalhes dos sistemas operacionais, os endereços IP e as estatísticas de conexão. O Payload Generator permite que os usuários criem payloads de 64 bits para Windows e Linux, com opções como “Run Hidden” (Executar oculto) para Windows.


A guia Client Management (Gerenciamento de cliente) exibe os clientes conectados, com detalhes como ID, sistema operacional, IP e carimbo de data/hora da última visualização. Ele suporta a execução de comandos individuais ou em massa. A guia File Explorer permite a navegação, carregamento, download, exclusão e execução de arquivos, com travessia recursiva.

A guia Remote Shell oferece execução de comandos em tempo real em sistemas Windows ou Linux. A guia Settings permite alterações de configuração, incluindo credenciais, portas e caminhos de banco de dados.

Execução
Enquanto a variante do Windows tem a opção ‘Run Hidden’ (Executar oculto) na etapa de build, que oculta a saída do console, o Linux não tem. Ao ser executado, ele imprime o endereço do servidor e o status da conexão.

Ainda é possível para sistemas Linux suprimir essa saída, redirecionando-a para o dispositivo ‘/dev/null’.
A principal diferença entre as versões antigas do Chaos RAT e as amostras mais recentes é que as antigas (imagem à esquerda abaixo) armazenam o endereço IP, a porta e outros dados como texto simples, sem codificação, exceto o valor do token, que é codificado em Base64 em ambos os casos. Na última variante (imagem à direita, abaixo), todos os dados são armazenados como uma única string Base64 codificada, com uma chamada de função adicional responsável por lê-los.

Recentemente, analisamos dois binários recém-observados compilados com a versão mais recente do projeto ChaosRAT. Uma delas (Amostra 2) foi adicionalmente compactada com o utilitário UPX.
Dados de configuração decodificados
Cada amostra contém um objeto de configuração codificado em Base64 com nomes de campo randomizados. Quando decodificados, os campos são mapeados para valores-chave, como a porta do servidor C2, o endereço IP e um token JWT usado para autorização.
Exemplo 1
SHA256:1e074d9dca6ef0edd24afb2d13cafc5486cd4170c989ef60efd0bbb0
{ "86pYnySllR": "5223", "S7mOecuru0": "176.65.141.63", "vu2Yr4lh2E": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3Njk1ODEyMzQsInVzZXIiOiJkZWZhdWx0In0.gQ7sfb0DF74yrFsdCO1dy1Vb3YBhEv2utn7PdcB4kC4" } Exemplo 2
SHA256:a51416ea472658b5530a92163e64cfa51f983dfabe3da38e0646e92fb14de191
{ "Svy1ITNLYV": "7419", "WiBZgQLch7": "91.208.197.40", "bIffmObdNe": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3NzI0NTg2NTYsInVzZXIiOiJkZWZhdWx0In0.5crbatKoe-6CogXJwgzOl_RSBnydG5l_Lf-ahO2HAu0" }
Como mostrado, enquanto os nomes dos campos são randomizados para evitar a detecção de padrões simples, sua estrutura e finalidade permanecem consistentes.
Decomposição de JWT
Os tokens JSON Web Tokens (JWTs) incorporados seguem o formato padrão e diferem apenas nos carimbos de data/hora de expiração (campo exp):
Exemplo 1
{
"alg":"HS256",
"typ":"JWT"
}
{
"authorized":true,
"exp":1769581234,
"user":"default"
}
Exemplo 2
{
"alg":"HS256",
"typ":"JWT"
}
{
"authorized":true,
"exp":1772458656,
"user":"default"
}
Esse token é usado para autenticar e autorizar comunicações cliente-servidor com a infraestrutura de comando e controle.
Comportamento pós-configuração
Uma vez que a configuração é analisada, o malware entra em uma rotina de coleta de informações. Essa função coleta dados detalhados do hosting, que podem incluir metadados do sistema, detalhes da rede e identificadores potenciais que ajudam os operadores a criar o perfil da máquina infectada.
- Nome do host
- Nome atual
- endereço MAC
- Por endereço de IP
- Hora atual
- Nome do SO
- Arquitetura do SO
Quando o sistema recupera o nome do sistema operacional, ele atribui uma variável global usada para determinar os caminhos de execução de funções específicos para cada sistema operacional. Ela define o valor como ‘1’ para sistemas Windows e ‘0’ para Linux. Após a definição desta variável, o RAT inicializa serviços adicionais suportados pelos clientes compilados, adaptando a funcionalidade com base no sistema operacional detectado.

O RAT então entra em um loop infinito, monitorando continuamente a disponibilidade do servidor. Se o servidor não puder ser alcançado, ele tenta novamente a cada 30 segundos. Uma vez estabelecida a conexão, o RAT envia os dados do sistema coletados para o servidor e verifica a chegada de comandos a cada 30 segundos.

Para se comunicar com o servidor, o cliente anexa uma das seguintes strings ao endereço IP e à porta antes de enviar a solicitação:
- /client — Inicializa uma nova conexão
- /health — Verifica se o servidor está disponível
- /device — Enviar informações do dispositivo
Caso o cliente não consiga se conectar ao servidor, ele imprimirá a seguinte mensagem:

Para obter comandos do servidor, ele lê a última mensagem obtida da conexão estabelecida. Cada mensagem do servidor vem em formato JSON, então o cliente do Chaos RAT primeiro a desserializa.

Em seguida, ele toma o valor do comando e carrega um conjunto de strings predefinidas (comandos disponíveis). Essas strings serão comparadas com os valores obtidos para determinar a operação a ser executada.

Conjunto de comandos e capacidades
- getos — Coleta informações do sistema, como nome do SO, versão, arquitetura, nome de usuário, endereço MAC, endereço IP, data e hora atuais.
- screenshot — Captura uma imagem da tela usando a biblioteca kbinani/screenshot, codifica-a no formato PNG e, em seguida, envia-a para o servidor após a codificação em Base64.
- restart — Reinicia o sistema. Utiliza shutdown -r -t 00 no Windows e reboot no Linux.
- shutdown — Desliga o sistema. Utiliza shutdown -s -t 00 no Windows e poweroff no Linux.
- lock — Bloqueia o sistema Windows usando a função LockWorkStation da biblioteca user32.dll. Não suportado no Linux.
- sign-out — Faz log do usuário. Utiliza o comando shutdown -L no Windows. Não suportado no Linux.
- explore — Lista arquivos e diretórios de um caminho especificado. Fornece nomes de arquivos e carimbos de data/hora de modificação. Suporta a navegação recursiva de diretórios.
- download — Faz o carregamento de um arquivo especificado do cliente para o servidor. Iniciada por uma solicitação POST sem codificação Base64.
- carregar — Faz o download de um arquivo especificado do servidor para o cliente por meio de uma solicitação GET e grava os dados em um arquivo local.
- delete — Exclui um arquivo especificado do sistema de arquivos do cliente.
- open-url — Abre uma URL no navegador padrão. Utiliza o comando start no Windows e a utilitário xdb no Linux.
Detalhamento da funcionalidade do comando
GetOS
Este comando obtém informações do sistema, como nome do SO, versão, arquitetura, nome do usuário, endereços MAC e IP e data e hora atuais.

Captura de tela
Essa funcionalidade foi retirada de outro projeto de código aberto. Após capturar a tela, ele a passa para a função de codificação para transformá-la em formato PNG. Antes de enviá-lo para o servidor, ele também o codifica com Base64. No servidor, esta imagem será salva na pasta de downloads.

Reinicialização e desligamento
A execução desses comandos depende do sistema operacional. No Windows, ele utiliza o comando ‘shutdown -r -t 00’ para reiniciar e o comando ‘shutdown -s -t 00’ para desligar o sistema. Para Linux, ele utiliza os comandos ‘reboot’ e ‘poweroff’.

Bloquear e sair
Esses comandos são suportados apenas pela versão do Windows. Para a operação de “bloqueio”, ele utiliza a função ‘LockWorkStation’ da ‘user32.dll’:
Rundll32.exe user32.dll, LockWorkStation
O comando de “desconexão” é executado com o comando “shutdown -L”.

Explorador de arquivos
Essa funcionalidade é usada para listar arquivos no sistema. Ele começa a partir do diretório inicial e executa a função ‘ReadDir’. Em seguida, ele verifica cada arquivo encontrado quanto ao seu tipo. Se o arquivo for um diretório, ele pega apenas o nome e o anexa à lista:
{
"path":"/home/dev/go",
"files":null,
"directories":[
"bin",
"pkg"
]
}
Se o diretório listado contiver arquivos, além do nome do diretório, ele também retorna a data da última modificação:
{
"path":"/home/dev",
"files":[
{
"filename":".bash_history",
"mod_time":"2025-03-06T10:28:28.788848322Z"
},
{
"filename":".bash_logout",
"mod_time":"2024-03-31T08:41:03Z"
},
{
"filename":".bashrc",
"mod_time":"2024-03-31T08:41:03Z"
}
]
}
Download e carregamento
Quando o comando de download chega ao cliente, ele deve carregá-lo para o servidor. O comando contém um caminho de arquivo completo como parâmetro.

Primeiro, o cliente lê o sumário do arquivo e cria uma solicitação POST, onde ele também grava os dados do arquivo. Em seguida, ele também define Cookies, que contém um token de configuração e um tipo de conteúdo. Este pedido será enviado sem codificação Base64.

Quando o arquivo de carregamento chega ao cliente, ele faz o download do arquivo que é passado como argumento no sistema local. Para fazer isso, ele envia uma solicitação ‘GET’ para o servidor e, em seguida, grava os dados obtidos no arquivo.

Em ambos os casos, após o download ou carregamento de um arquivo, ele envia um pacote adicional que contém um caminho de arquivo completo para sinalizar que a operação foi concluída com êxito. Se falhar, ele enviará um pacote com ‘0’ como resultado.
Abrir URL
Nos sistemas Windows, ele utiliza o comando ‘start’, forçando a abertura da URL no navegador padrão do sistema. Para sistemas Linux, ele utiliza o utilitário ‘xdb’ para esse fim.

Execução de comando
O Chaos RAT coloca comandos terminais no campo ‘command’ do pedido, de modo que, no lado do cliente, se nenhum dos comandos anteriores corresponder, ele passará o comando para o terminal. A saída da execução do comando será enviada de volta para o servidor.

Após a execução do comando, ele codifica o resultado com Base64 e o envia para o servidor em formato JSON. Cada cliente utiliza um endereço MAC de hosting como seu próprio ID.


O Chaos RAT permite que os invasores assumam o controle... do controlador
O Chaos RAT acabou sendo vítima de suas próprias artimanhas. Uma vulnerabilidade crítica em seu painel da Web permitiu que atacantes executassem código remoto no servidor — revertendo a situação da ferramenta criada para controlar outros.
A vulnerabilidade: CVE-2024-30850
A função BuildClient no backend do Chaos RAT foi o cerne do problema. Essa função recebia entradas do usuário, como o endereço do servidor, a porta e o nome do arquivo, para build um comando de shell para a criação dos binários do agente. Apesar de alguma validação de entrada, o uso de exec.Command("sh", "-c", buildCmd) significava que entradas maliciosas poderiam injetar comandos arbitrários. Isso abriu a porta para que usuários autenticados executassem código no servidor que fazia o hosting do RAT.

A exploração: CVE-2024-31839
Um atacante poderia criar um retorno de chamada de agente falsificado, explorando uma vulnerabilidade XSS no painel de administração. Ao incorporar scripts maliciosos nos dados do agente, eles podiam executar JavaScript no contexto da sessão do navegador do administrador. Essa combinação de injeção de comando no lado do servidor e XSS no lado do cliente criou um vetor de ataque muito forte.
A reviravolta: sofrendo Rickrolling
Por exemplo, o pesquisador de segurança e profissional Rick-Roller Chebuya demonstrou a exploração fazendo com que o painel de administração do Chaos RAT reproduzisse a música “Never Gonna Give You Up”, de Rick Astley. Confira o artigo completo de Chebuya para obter uma análise detalhada: Execução remota de código no CHAOS RAT via agentes falsificados.

Impacto
O malware é capaz de gerenciar arquivos, acessar shells reversos e usar proxy para tráfego de rede. Esses recursos podem facilitar a espionagem, a exfiltração de dados ou servir como base para o lançamento de ransomware e outras operações pós-comprometimento.
Sua natureza de código aberto facilita a modificação e a redefinição de alvos por agentes de ameaças, criando novas variantes que podem escapar da detecção baseada em assinaturas. Isso também complica a atribuição, pois vários agentes podem usar ferramentas semelhantes sem vínculos claros, confundindo os limites entre crime cibernético e atividade patrocinada pelo Estado.
Exemplos
Vários grupos de ameaças persistentes avançadas (APT) foram observados usando trojans de acesso remoto (RATs) de código aberto em suas operações. O APT41 e o APT36 empregaram o NjRAT, enquanto o APT10 utilizou o QuasarRAT. Sabe-se que o Blind Eagle (APT-C-36) utiliza o AsyncRAT. Além disso, tanto o APT34 quanto o APT35 utilizaram o Pupy RAT em suas campanhas.
Por que usar Chaos RAT ou qualquer malware de código aberto?
1. Disfarce: O uso de malware disponível publicamente ajuda os grupos de APTs a se camuflarem no ruído do crime cibernético cotidiano. Se agentes de baixo escalão utilizam amplamente um RAT, é mais difícil determinar se um agente sofisticado ou um script kiddie executa uma campanha específica.
2. Velocidade e custo: Mesmo APTs com bons recursos precisam agir rapidamente ou escalar operações para múltiplos alvos. O malware de código aberto oferece um conjunto de ferramentas "bom o suficiente" que pode ser rapidamente personalizado e implantado.
3. Evasão de atribuição: Quando vários agentes usam o mesmo malware de código aberto, isso confunde a atribuição. Não podemos vincular a atividade a um grupo específico com base apenas no malware, dando cobertura a agentes de ameaças avançados em operações sensíveis.
Conclusão
O que começa como uma ferramenta de desenvolvedor pode rapidamente se tornar o instrumento de escolha de um ator de ameaças. Esse RAT baseado em Go oferece uma interface web simples e controles de sistema poderosos em Windows e Linux, oferecendo shells reversos, manipulação de arquivos e execução de comandos remotos em sistemas comprometidos.
O Chaos foi detectado em ambiente selvagem e representa um problema crescente na área de segurança cibernética: a utilização de software de código aberto como arma. Com capacidades de implantação rápida, direcionamento furtivo para Linux e configuração flexível, é um lembrete de que o código aberto é uma espada de dois gumes — e, nas mãos erradas, pode cortar fundo.
Detecção pela Acronis
O Acronis Cyber Protect Cloud detecta com sucesso vários componentes do ChaosRAT como “Trojan.Linux.ChaosRAT.A”, como pode ser visto nas capturas de tela abaixo.



A Acronis anunciou recentemente o suporte para Linux no Acronis EDR. Essa melhoria estende a cobertura do EDR em ambientes mistos, possibilitando proteção total para cargas de trabalho do Windows, macOS e, agora, do Linux. Quando o Acronis EDR identifica arquivos ou processos suspeitos ou maliciosos em sistemas Linux, essas detecções são automaticamente mapeadas para o framework MITRE ATT&CK, oferecendo uma visão mais aprofundada das ameaças em potencial.
Com esta atualização, várias ações de remediação são suportadas para dispositivos Linux. Isso inclui a interrupção de processos maliciosos, a quarentena de arquivos, a adição de itens à lista de permissões ou de blocos e a recuperação de sistemas afetados a partir de um backup.
Essa nova funcionalidade oferece suporte aos sistemas operacionais Ubuntu 22.04 e CentOS 7.x, e também está disponível com o Acronis XDR.
Indicadores de comprometimento
Arquivos
YARA
rule ELF_Chaos_RAT
{
meta:
description = "Detects Linux ELF binaries <10MB with indicators of CHAOS-RAT-generated payloads"
author = "Acronis TRU"
date = "2025-04-16"
strings:
$chaos = "tiagorlampert/CHAOS" ascii
$library1 = "BurntSushi/xgb" ascii
$library2 = "gen2brain/shm" ascii
$library3 = "kbinani/screenshot" ascii
condition:
uint32(0) == 0x464c457f and // ELF magic number in little-endian
filesize < 10MB and
$chaos and
2 of ($library*)
}
Referências e publicações relacionadas (em ordem cronológica)
- Tweet sobre o Chaos RAT (pelo Cyberteam008) 15 de abril de 2025. https://x.com/Cyberteam008/status/1889516549129802007
- Banco de dados de avisos do GitHub. tiagorlampert CHAOS vulnerável a Cross Site Scripting (CVE-2024-31839) 12 de abril de 2024. https://github.com/advisories/GHSA-c5rv-hjjc-jv7m
- Execução de código remoto no CHAOS RAT via agentes falsificados (por Chebuya) 5 de abril de 2024. https://blog.chebuya.com/posts/remote-code-execution-on-chaos-rat-via-spoofed-agents/
- Tweet sobre a CVE-2024-30850 (por Chebuya) 5 de abril de 2024. https://x.com/_chebuya/status/1776371049095192847
- MAL_LNX_Chaos_Rat_Dec22 (Regra Valhalla da Nextron-Systems) 14 de dezembro de 2022. https://valhalla.nextron-systems.com/info/rule/MAL_LNX_Chaos_Rat_Dec22
- Chaos é uma ferramenta de malware do tipo canivete suíço, baseada em Go (Lumen Blog) 28 de setembro de 2022. https://blog.lumen.com/chaos-is-a-go-based-swiss-army-knife-of-malware/
- CHAOS: Ferramenta de Administração Remota (repositório do GitHub) https://github.com/tiagorlampert/CHAOS