O AsyncRAT tornou-se uma peça central no cenário do malware moderno, consolidando-se como uma ameaça persistente graças à sua vasta rede de forks e variantes. Embora suas funções isoladas não sejam extraordinárias, o código aberto potencializou seu alcance e impacto. Neste post, apresentamos uma análise dos principais forks do AsyncRAT, explorando suas conexões e a evolução desse malware ao longo do tempo.

Pontos-chave deste artigo:

  • Trazemos insights exclusivos sobre o ecossistema do AsyncRAT e suas múltiplas variantes, ajudando a desvendar o labirinto de forks.
  • Mapeamos a hierarquia e as interconexões únicas entre os forks do AsyncRAT, destacando formas de identificar e diferenciar cada variante.
  • Investigamos variantes menos conhecidas, que incorporam plugins específicos; desde um simples plugin de som (screamer) até mecanismos de disseminação por USB.

Origens do AsyncRAT

Você provavelmente já ouviu falar do AsyncRAT, sigla para asynchronous remote access trojan (trojan de acesso remoto assíncrono). Publicado como projeto open source no GitHub em 2019 por um usuário chamado NYAN CAT, o AsyncRAT foi desenvolvido em C# e oferece uma ampla gama de funcionalidades típicas de RATs, como keylogging, captura de tela e roubo de credenciais. Sua simplicidade e código aberto rapidamente o tornaram uma escolha popular entre cibercriminosos, contribuindo para seu uso disseminado em diferentes ataques.

Mas qual a verdadeira origem do AsyncRAT? Acredita-se que ele tenha se inspirado no Quasar RAT, outro trojan open source lançado no GitHub em 2015 e também escrito em C#. Apesar das semelhanças, análises revelam que os códigos-fonte são fundamentalmente distintos. Isso indica que o AsyncRAT não é um simples fork do Quasar, mas sim uma reescrita completa, ainda que compartilhem conceitos e abordagens semelhantes. Vale lembrar que, no contexto do desenvolvimento, um fork é uma cópia do repositório de outro projeto, permitindo modificações independentes sem afetar o original.

O principal ponto de convergência entre os dois está no uso de classes de criptografia personalizadas para descriptografar configurações do malware. Em especial, as classes Aes256 e Sha256 aparecem no namespace Client.Algorithm do AsyncRAT e no Quasar.Common.Cryptography do Quasar. A Imagem 1 ilustra o uso de códigos idênticos nas implementações da classe Aes256 em ambos os projetos.

Figure 1. Comparison of cryptography classes between AsyncRAT (left) and Quasar (right)
Imagem 1. Comparação das classes de criptografia entre AsyncRAT (à esquerda) e Quasar (à direita).

O código foi amplamente copiado e colado, mantendo inclusive o mesmo valor de salt e configurações de descriptografia. Essa similaridade, especialmente nas classes Aes256 e Sha256, reforça a influência do Quasar RAT sobre o desenvolvimento do AsyncRAT.

Apesar dessas semelhanças, o AsyncRAT trouxe avanços importantes, principalmente em sua arquitetura modular e recursos aprimorados de furtividade, tornando-o mais adaptável e difícil de detectar nos ambientes de ameaça atuais. Sua estrutura baseada em plugins e a facilidade de personalização contribuíram para a proliferação de inúmeros forks, ampliando ainda mais o alcance desse malware.

Labirinto de forks

Desde que foi disponibilizado ao público, o AsyncRAT deu origem a uma infinidade de forks baseados em sua estrutura original. Algumas dessas versões ampliaram o framework com novas funcionalidades e aprimoramentos, enquanto outras são, essencialmente, cópias com pequenas alterações visuais ou superficiais.

Hierarquia dos forks

A Imagem 2 ilustra a evolução de alguns dos forks mais relevantes do AsyncRAT, mostrando como eles se ramificaram e se desenvolveram a partir da versão original ao longo do tempo.

Figure 2. A small subset of forks highlighting their derivative relationships
Imagem 2. Um pequeno subconjunto de forks destacando suas relações derivadas.

No centro dessa árvore evolutiva destacam-se o DcRat e o VenomRAT, identificados como as variantes mais utilizadas e responsáveis por uma parcela significativa das campanhas observadas. Outros forks menos conhecidos representam fatias menores, mas continuam relevantes no cenário de ameaças. A Imagem 3 mostra a distribuição dos forks mais prevalentes, de acordo com nossa telemetria.

Figure 3. Q2 2024 distribution of the most common forks
Imagem 3. Distribuição dos forks mais comuns no segundo trimestre de 2024, medida pelo número de amostras únicas.

O DcRat representa um avanço notável em relação ao AsyncRAT, especialmente em termos de funcionalidades e capacidades. Uma das principais inovações está na estrutura de dados: o DcRat utiliza o MessagePack, uma biblioteca open-source reconhecida por oferecer serialização binária eficiente para a transferência bidirecional de informações.

Além disso, o DcRat implementa técnicas sofisticadas de evasão, como o patching do AMSI e do ETW. Essas técnicas desativam mecanismos de segurança do Windows, dificultando a detecção e o registro de comportamentos maliciosos; o patching do AMSI impede a varredura de scripts, enquanto o do ETW bloqueia o rastreamento de eventos. Outro diferencial é o sistema anti-processos, que encerra automaticamente processos presentes em uma lista de negação (denylist), incluindo Taskmgr.exe, ProcessHacker.exe, MsMpEng.exe, Taskkill.exe e outros.

A arquitetura de plugins do DcRat também se apoia no AsyncRAT, mas vai além, oferecendo recursos como acesso à webcam, gravação de microfone, roubo de tokens do Discord, e uma série de "coisas divertidas"; plugins criados para brincadeiras, como abrir ou fechar a bandeja do CD, bloquear teclado e mouse, mover o cursor e desligar o monitor. Notavelmente, o DcRat ainda introduz um plugin de ransomware simples, que utiliza AES-256 para criptografar arquivos, sendo a chave de descriptografia liberada apenas sob solicitação.

Outras modificações incluem pequenas alterações para dificultar a detecção, como o uso de uma string como salt (em vez de valor binário), variáveis renomeadas, resolução dinâmica de APIs e outros ajustes técnicos.

O VenomRAT, por sua vez, parece ter sido fortemente inspirado no DcRat, como evidenciado na seção de identificação de versões. Apesar de possuir uma gama extensa de funcionalidades, suficiente para ser considerado uma ameaça independente, foi agrupado sob o AsyncRAT neste contexto devido à grande similaridade entre as partes cliente dos dois. As funcionalidades e plugins do VenomRAT já foram detalhados por outros pesquisadores, por isso não serão abordados em profundidade aqui.

É importante notar que nem todos os RATs são criados com propósitos sérios, e isso se aplica aos forks do AsyncRAT. Clones como SantaRAT e BoratRAT (ver Imagem 4) adotam uma abordagem mais jocosa. No caso do SantaRAT, os próprios autores admitem que o projeto foi "descaradamente copiado do DcRat". Ainda assim, há registros de que esses RATs têm sido utilizados em ataques reais.

Figure 4. Official BoratRAT promotional logo
Imagem 4. Logo promocional oficial do BoratRAT.

Identificação de versões

Durante a análise, utilizamos diferentes métodos para identificar e categorizar cada amostra de malware. O foco principal foi a parte cliente, já que esse é o binário instalado nas máquinas das vítimas e contém informações essenciais, como configurações do malware e detalhes sobre o servidor de comando e controle (C&C).

O método mais rápido para identificar um fork é examinar diretamente a configuração do malware, geralmente localizada na função InitializeSettings. Essas configurações costumam ser criptografadas com AES-256 e armazenadas em formato base64 na classe Settings. Em grande parte das amostras, o nome do fork aparece claramente rotulado como Version, fornecendo uma indicação direta do fork ou do pseudônimo do autor. Aproximadamente 90% das amostras analisadas traziam uma descrição significativa nesse campo, enquanto nas demais o campo estava intencionalmente vazio.

A Imagem 5 demonstra como ocorre o procedimento típico de inicialização da configuração no DcRat e em seus derivados, como o VenomRAT.

Figure 5. Initialization of VenomRAT configuration values
Imagem 5. Inicialização dos valores de configuração do VenomRAT.

Quando o campo Version está vazio, outra pista útil pode ser obtida ao analisar o valor do Salt usado na criptografia das configurações. Muitas vezes, os cibercriminosos esquecem de alterar esse parâmetro ao criar um novo fork. O valor de Salt pode ser localizado na classe Client.Algorithm.Aes256, como ilustrado na Imagem 6.

Figure 6. Extraction of the Salt value in the constructor of VenomRAT’s cryptography class
Imagem 6. Extração do valor de Salt no construtor da classe de criptografia do VenomRAT.

Outra maneira de coletar informações adicionais é analisar o certificado embutido usado para autenticar o servidor de C&C. Esse certificado geralmente está armazenado na configuração como um valor em base64. Ao decodificar esse valor, é possível revelar dados como o common name (CN), organização e unidade organizacional do servidor.

Quando um fork tem um nome próprio no campo Version, muitas vezes é possível rastrear sua origem analisando o campo CN do certificado, identificando o fork anterior no qual ele se baseou. A Imagem 7 apresenta um exemplo de certificado em formato DER que, após extração e decodificação, revela o fork BoratRAT.

Figure 7. Client certificate after extraction
Imagem 7. Certificado do cliente após extração.

As técnicas descritas acima são eficazes principalmente em casos simples, quando os autores do malware não se preocuparam em remover vestígios ou apenas utilizaram certificados padrão. No entanto, existe um método mais avançado para identificar servidores AsyncRAT: o envio de um pacote especialmente elaborado ao servidor de C&C, técnica detalhada por Axel Mahr em seu artigo.

Se todas as tentativas automatizadas falharem, resta recorrer ao método tradicional: a inspeção manual do código. Esse processo exige uma análise minuciosa da estrutura, sintaxe e funcionalidades, comparando com padrões já conhecidos em amostras previamente classificadas.

Lista de forks

A seguir, destacamos alguns dos forks mais proeminentes do AsyncRAT. Diante da quantidade expressiva de variantes, não é possível analisar cada uma em detalhe. Para fins de abrangência, a Imagem 8 apresenta uma lista ampliada de forks do AsyncRAT identificados como ativos em atividades maliciosas, de acordo com a telemetria da ESET.

Figure 8. Extended fork hierarchy list
Imagem 8. Lista ampliada da hierarquia de forks.

Explorando variantes menos conhecidas

Até agora, destacamos os principais forks que predominam no cenário de ameaças. Nesta seção, apresentamos alguns forks menos conhecidos que estendem a funcionalidade do AsyncRAT além dos recursos presentes nas versões convencionais. Essas variantes exóticas, geralmente desenvolvidas por indivíduos ou pequenos grupos, representam menos de 1% do total de amostras identificadas.

NonEuclid RAT

Esse fork chama a atenção principalmente pela inclusão de plugins inéditos, além dos recursos padrões. Enquanto alguns desses plugins servem apenas para funções triviais ou "coisas divertidas", outros, como o WormUsb.dll, têm objetivos claramente maliciosos. A Tabela 1 apresenta uma seleção de plugins do NonEuclid RAT que se diferenciam da base comum encontrada nos forks tradicionais.

Plugin name Description
Screamer.dll Jump scare plugin.
Piano.dll Generic audio player.
Service.dll Windows services management.
Maps.dll Collects geolocation info from the user.
WormUsb.dll Malware spreader plugin.
Brute.dll SSH and FTP brute forcer.
Signature Antivirus.dll Simple signature-based file matcher.
cliper.dll Replaces clipboard data with attacker’s cryptocurrency wallet addresses.

Screamer.dll

Este plugin inclui cinco imagens de jump scare incorporadas. O cibercriminoso pode selecionar qual imagem será exibida, enviar um arquivo WAV para reprodução e definir um tempo de atraso para acionar o susto na vítima. A Imagem 9 apresenta as três primeiras imagens pré-instaladas disponíveis para escolha do cibercriminoso.

Figure 9. Three bundled jump scare images of the screamer plugin
Imagem 9. Três imagens de susto agrupadas do plugin Screamer.   

Piano.dll

Este plugin permite a reprodução de arquivos WAV arbitrários, armazenando todos os sons na pasta %appdata%\Piano. O piano.dll suporta três comandos principais:

  • SetSound – Adiciona um novo arquivo de som à pasta %appdata%\Piano.
  • PlayMisc – Reproduz um arquivo de som específico solicitado dessa mesma pasta.
  • ClientAdd – Recupera múltiplos arquivos de som diretamente do servidor de C&C.

Service.dll

Este plugin permite o gerenciamento de serviços do Windows, possibilitando iniciar, parar e pausar serviços do sistema operacional.

Maps.dll

Plugin projetado para coletar informações de geolocalização da vítima. Utiliza a classe .NET GeoCoordinateWatcher para registrar uma função de retorno (callback) que coleta dados como latitude, longitude, nome de usuário e nome do computador sempre que a localização estiver disponível.

WormUsb.dll

Este plugin compromete arquivos PE com uma carga maliciosa definida pelo invasor. Apesar do nome "Usb", o plugin pode atuar em diversos locais, dependendo do comando enviado:

  • InfectExe – Compromete um arquivo PE individual.
  • InfectExeInWindows – Alvo são arquivos PE em pastas pessoais como Área de Trabalho, Documentos, Downloads e Minhas Músicas.
  • InfectUsbExe – Infecta arquivos PE em todas as unidades, exceto a unidade C.

Internamente, o plugin funciona movendo o arquivo original para um local temporário e, em seu lugar, insere um pequeno stub. A seção de recursos desse stub é preenchida com o arquivo original e a carga maliciosa especificada, ambos comprimidos e criptografados com uma chave exclusiva gerada para cada arquivo no momento da criação.

Em seguida, o malware aplica técnicas de ofuscação ao stub, incluindo a introdução de métodos intermediários (proxy methods), a aplicação de ofuscação personalizada no fluxo de controle e a renomeação de variáveis para dificultar a análise. Como etapa final, o stub modificado recebe o ícone e os metadados originais do arquivo comprometido. A Imagem 10 apresenta a função responsável por comprometer um arquivo individual, exibindo os nomes originais dos métodos utilizados.

Figure 10. Compromise function of a WormUsb.dll plugin
Imagem 10. Função de comprometimento do plugin WormUsb.dll.

Quando um arquivo comprometido desse tipo é executado, ele primeiro descriptografa, descompacta e executa o payload malicioso. Em seguida, repete o processo com o programa original, garantindo que ambas as cargas sejam executadas em sequência.

Brute.dll

Este plugin possibilita ataques de força bruta contra os protocolos SSH e FTP diretamente do lado do cliente. O invasor informa três parâmetros (host, login e senha) e o plugin tenta se conectar usando essas credenciais. Caso a conexão seja bem-sucedida, as informações são enviadas de volta ao invasor junto com um indicador de sucesso. Isso facilita a distribuição dos ataques de força bruta entre diversas máquinas comprometidas, dificultando a detecção e a mitigação baseada em bloqueio por endereço IP.

SignatureAntivirus.dll

Apesar do nome, este plugin oferece apenas uma funcionalidade antivírus rudimentar e manual. O invasor envia uma lista de hashes MD5, que o plugin compara com os hashes de todos os arquivos EXE presentes em todos os discos. Ao encontrar uma correspondência, aciona a função DetectVirus — um nome inadequado, já que a única ação realizada é apagar o arquivo, sem análise adicional. O plugin pode ser utilizado para remover malwares concorrentes ou excluir qualquer arquivo arbitrário, tornando seu propósito e nome bastante questionáveis.

cliper.dll

Este plugin atua como um clipper autônomo, monitorando continuamente a área de transferência da vítima. Se detectar um endereço de carteira de criptomoeda, substitui-o por um endereço fornecido pelo invasor. Essas carteiras são enviadas dinamicamente apenas quando o plugin é ativado pela primeira vez, e não ficam codificadas no plugin.

Além disso, como mostrado na Imagem 11, o plugin também pode detectar entradas de cartões de crédito. Ele utiliza uma extensa lista de expressões regulares (regex) para identificar tanto carteiras de criptomoedas quanto informações de cartões. Quando um cartão é detectado, os dados são enviados diretamente ao invasor.

Figure 11. Wallets and cards monitored by cliper.dll
Imagem 11. Carteiras e cartões monitorados pelo cliper.dll.

JasonRAT

Identificado em 2024, o JasonRAT ainda demonstra sinais de atividade. Essa variante chama atenção pelo uso de convenções obscuras de nomenclatura de variáveis, inspiradas em termos "satânicos" citados pelo autor como parte do "Livro de Jason". Na Imagem 12, é possível observar valores típicos de configuração do AsyncRAT em base64, mas com variáveis renomeadas. Já a Imagem 13 exibe a lógica do ponto de entrada principal do malware. Além das configurações usuais, o JasonRAT amplia as capacidades do cliente ao introduzir funcionalidades de segmentação por país.

Figure 12. Partially obfuscated JasonRAT configuration values
Imagem 12. Valores de configuração do JasonRAT parcialmente ofuscados.
Figure 13. Main JasonRAT entry point showing renamed function names
Imagem 13. Ponto de entrada principal do JasonRAT exibindo nomes de funções renomeados.

Outra peculiaridade dessa variante é a técnica de ofuscação de strings adotada. Um subconjunto das strings é protegido por uma camada adicional de ofuscação, utilizando uma versão estendida do código Morse. Essa abordagem inclui letras maiúsculas e minúsculas, além de alguns caracteres especiais. A Imagem 14 ilustra uma string de chave de registro codificada usando esse mapeamento estendido.

Figure 14. Extended Morse code used as string obfuscation in JasonRat
Imagem 14. Código Morse estendido usado como ofuscação de strings no JasonRAT.

XieBroRAT

Esta variante do RAT possui localização em chinês e traz novidades relevantes, como o plugin BrowserGhost.dll, especializado no roubo de credenciais armazenadas em navegadores. Outro plugin, Abstain.dll, permite a interação com servidores Cobalt Strike por meio de conexões reversas.

Para ampliar seu alcance, o malware oferece a cadeia de entrega em diversos idiomas. O binário cliente padrão em .NET pode ser empacotado e distribuído por meio de shellcode, VBS ou JavaScript.

Além disso, o autor expandiu significativamente as funcionalidades do malware ao integrar projetos de código aberto, incorporando ferramentas conhecidas como mimikatz, SharpWifiGrabber, SharpUnhooker, entre outras.

Conclusão

A ascensão do AsyncRAT e de seus inúmeros forks revela os riscos significativos associados a frameworks de malware open source. Nossa análise destacou um ecossistema diversificado e em constante evolução, com derivados que vão desde ameaças persistentes, como DcRat e VenomRAT, até variantes mais obscuras e curiosas, como JasonRAT e BoratRAT, que muitas vezes têm apelo mais experimental do que prático.

Esses forks não apenas ampliam as capacidades técnicas do AsyncRAT, mas também ilustram a agilidade e criatividade com que atores maliciosos adaptam e reutilizam código aberto. A facilidade de acesso a esses frameworks reduz drasticamente a barreira de entrada para aspirantes a cibercriminosos, permitindo que até iniciantes implementem malwares sofisticados com pouco esforço.

Além disso, o cenário se complica com a popularização dos grandes modelos de linguagem (LLMs) e o potencial de uso indevido dessas tecnologias, acelerando a criação, customização e proliferação de novas ferramentas maliciosas. Com isso, o ambiente de ameaças se torna cada vez mais dinâmico e desafiador.

Diante dessas tendências, é plausível esperar que futuros forks incorporem técnicas ainda mais avançadas de ofuscação, modularidade e evasão. Esse panorama ressalta a importância de estratégias de defesa proativas, com foco em detecção comportamental e análise aprofundada, para lidar com ameaças cada vez mais sofisticadas e em rápida evolução.

Indicadores de Comprometimento

Uma lista completa de indicadores de comprometimento (IoCs) pode ser encontrada em nosso repositório no GitHub.

Arquivos

SHA-1 Filename Detection Description
F8E31B338123E38757F8B7099797119A038A3538 Screamer.dll MSIL/AsyncRAT.C NonEuclid jump scare plugin.
98223D2F8DF2F9E832AE081CD6E072A440C9A3CD Piano.dll MSIL/AsyncRAT.C NonEuclid audio player plugin.
CDEC9A1C73E3E21B1D70DDAA6BF139D8D2A197A5 Maps.dll MSIL/AsyncRAT.C NonEuclid geolocation plugin.
932C49EEE087D432D0DA10CC0640B11FD2C91203 Service.dll MSIL/AsyncRAT.C NonEuclid Windows service management plugin.
2FA98D088486BAC57FF60E072E28FEE5830E7B28 WormUsb.dll MSIL/AsyncRAT.C NonEuclid malware spreader plugin.
62C9FEFA84067F695032A6939F07C3799AAD80A3 Brute.dll MSIL/AsyncRAT.C NonEuclid SSH and FTP brute forcer plugin.
FAD946F7ACF017F0C50C81BF379AABA3528AFBB3 Signature Antivirus.dll MSIL/AsyncRAT.C NonEuclid signature-based file matcher plugin.
51B8A5818B7031EDB59A2B2ECF160A78505880BA cliper.dll MSIL/AsyncRAT.C NonEuclid clipboard hijacker plugin.
4FB0CAAD6E345947EE2D30E795B711F91C6A4819 Stub.exe MSIL/AsyncRAT.A AsyncRAT client.
FD9CF01CEA7DE8631C34B988A7AAD55587A162FA Stub.exe MSIL/AsyncRAT.A 3LoshRAT client.
B8AB93E958E0DE4BE2766B2537832EDB37030429 Client.exe MSIL/AsyncRAT.A DcRat client.
68B58483D0E4E7CC2478D6B4FC00064ADE3D7DB3 Microsoft_Edge_Driver.exe MSIL/AsyncRAT.A VenomRAT client.
4F69E0CE283D273B724CE107DF89F11C556A7A4E Client.exe MSIL/AsyncRAT.C BoratRAT client.
E4F87568473536E35006D1BD4D4C26A8809F3F91 Client.exe MSIL/AsyncRAT.A Anarchy Panel client.
D10B8197732437E9BF840FEA46A30EFF62892A4E Client.exe MSIL/AsyncRAT.A CollapseRAT client.
0DC28EA51F0D96E0D1BC78DF829C81A84332C5F1 dwm.exe MSIL/AsyncRAT.A Shadow X RAT client.
E5B511E7550CBADE74E75EADE8F413A89D963FE5 ClientAny.exe MSIL/AsyncRAT.A LMTeamRAT client.
3124F58428184FDF75E21B1E5A58CADF9DD2BA03 Stub.exe MSIL/AsyncRAT.A PhoenixRAT client.
8402AA507CF5B1BBFAB53E3BF7A7D4500796A978 Client.exe MSIL/AsyncRAT.A EchoRAT client.
AB2C6F9695346FAA9495B4AB837085C1524FFDDF Client.exe MSIL/AsyncRAT.A XieBroRAT client.
3E6CD9D07B8ECE706697F332AC9F32DE5ECAF086 tempClient.exe MSIL/AsyncRAT.C NonEuclid RAT client.
FF4592A8BCB58F5CF6BD70B882E886EC6906EECD Servant.exe MSIL/AsyncRAT.A JasonRAT client.

Técnicas MITRE ATT&CK

Esta tabela foi criada usando a versão 17 do framework MITRE ATT&CK.

Tactic ID Name Description
Defense Evasion T1562.001 Impair Defenses: Disable or Modify Tools DcRat terminates security tools such as Taskmgr.exe and MsMpEng.exe.
T1562.004 Impair Defenses: Disable or Modify System Firewall DcRat leverages AMSI and ETW bypass techniques to evade detection.
T1027.013 Obfuscated Files or Information: Encrypted/Encoded File JasonRAT employs modified Morse code and obscure variable names to hinder analysis.
Credential Access T1539 Steal Web Session Cookie DcRat leverages a plugin to steal Discord tokens from compromised machines.
T1555.003 Credentials from Password Stores: Credentials from Web Browsers XieBroRAT uses a plugin to collect browser credentials.
T1110.003 Brute Force: Password Spraying NonEuclid uses a plugin to brute force SSH and FTP credentials.
Discovery T1614.001 System Location Discovery: System Language Discovery NonEuclid uses a plugin that collects geolocation data from compromised systems.
Collection T1123 Audio Capture DcRat has a microphone plugin that enables audio capture from the victim’s device.
T1125 Video Capture DcRat includes a webcam plugin that allows remote access to the victim’s camera.
T1115 Clipboard Data NonEuclid uses a plugin that monitors the clipboard to intercept and replace cryptocurrency wallet addresses.
Impact T1486 Data Encrypted for Impact DcRat features a ransomware plugin capable of encrypting files on the victim’s system.