Key Takeaways
- Axios, um cliente HTTP JavaScript amplamente utilizado com mais de 100 milhões de downloads semanais no npm, foi comprometido quando um invasor sequestrou a conta npm do mantenedor principal e publicou duas versões maliciosas (1.14.1 e 0.30.4) que implantaram um trojan de acesso remoto (RAT) multiplataforma.
- O ataque introduziu uma dependência fantasma, plain-crypto-js@4.2.1, que executou um gancho de pós-instalação para entregar malware persistente no macOS, Windows e Linux, e depois apagou as evidências substituindo seus próprios arquivos por iscas limpas.
- O invasor contornou as proteções de Publicador Confiável do OIDC do GitHub Actions ao publicar manualmente versões comprometidas usando um token npm roubado, sem deixar rastros no repositório oficial do GitHub.
- Scanners de segurança automatizados do npm sinalizaram a dependência maliciosa em minutos, e a administração do npm removeu os pacotes comprometidos logo em seguida.
- A análise forense revelou ofuscação sofisticada, anti-forense e cargas úteis específicas de plataforma, destacando lacunas críticas na segurança da cadeia de suprimentos, especialmente em torno da fixação de dependências e proteções de pipeline CI/CD.
Axios, o cliente HTTP mais popular do ecossistema JavaScript com mais de 100 milhões de downloads semanais no npm, foi comprometido em 30 de março de 2026, utilizado como veículo de entrega para um trojan de acesso remoto (RAT) multiplataforma. O atacante sequestrou a conta npm do mantenedor principal, publicou duas versões contaminadas nos ramos de lançamento 1.x e 0.x legado dentro de 39 minutos uma da outra, e injetou uma dependência fantasma cujo único propósito era implantar malware persistente no macOS, Windows e Linux. O malware se autodestruiu após a execução, substituindo suas próprias evidências por um disfarce limpo.
Cronograma do ataque
A operação por trás do comprometimento foi pré-estabelecida ao longo de ~18 horas, com a dependência maliciosa semeada no npm antes dos lançamentos do Axios para evitar alarmes de "pacote novo":
| Timestamp (UTC) | Event |
| March 30, 2026 05:57 UTC | plain-crypto-js@4.2.0 published by nrwise@proton.me — clean decoy to build registry history |
| March 30, 2026 23:59 UTC | plain-crypto-js@4.2.1 published — malicious payload with postinstall: "node setup.js" |
| March 31, 2026 00:05 UTC | Automated npm security scanners flag plain-crypto-js as malware (six-minute detection) |
| March 31, 2026 00:21 UTC | axios@1.14.1 published by compromised jasonsaayman account (email: ifstap@proton.me) |
| March 31, 2026 01:00 UTC | axios@0.30.4 published — 39 minutes later, poisoning the legacy 0.x branch |
| March 31, 2026 ~03:30 UTC | npm administration removes all compromised versions and revokes tokens |
Até o momento desta escrita, observamos em nossa telemetria atividade consistente com esta ameaça afetando organizações em vários setores, incluindo Governo, Finanças, Varejo, Consultoria, Entretenimento, Manufatura, Tecnologia, Saúde e Utilidades.
Como a conta do mantenedor foi sequestrada
O atacante comprometeu jasonsaayman, o mantenedor principal do projeto Axios no npm. O e-mail da conta foi alterado para ifstap@proton.me, um endereço ProtonMail controlado pelo atacante.
Todo lançamento legítimo do Axios 1.x é publicado via GitHub Actions com o mecanismo OIDC Trusted Publisher do npm, vinculando criptograficamente a publicação a um fluxo de trabalho CI verificado. O malicioso 1.14.1 foi publicado manualmente com um token de acesso npm roubado, sem vinculação OIDC e sem gitHead.
Não há commit, tag ou lançamento no repositório GitHub do Axios que corresponda a 1.14.1 ou 0.30.4. Os lançamentos existem apenas no npm.
Quando o colaborador do Axios DigitalBrainJS tentou responder, o atacante usou as credenciais sequestradas (que tinham permissões de nível administrativo) para desfixar e excluir problemas de divulgação. O colaborador declarou publicamente: "É inútil. Como o acesso ao git e ao repositório npm está comprometido, e suas permissões git são maiores que as minhas. Sou um colaborador, não um administrador. Não posso revogar seu acesso. O que quer que eu conserte, ele 'consertará' depois de mim."
Sinal forense chave — comparação OIDC:
// axios@1.14.0 — LEGITIMATE
"_npmUser": {
"name": "GitHub Actions",
"trustedPublisher": { "id": "github", "oidcConfigId": "..." }
}
// axios@1.14.1 — MALICIOUS
"_npmUser": {
"name": "jasonsaayman",
"email": "ifstap@proton.me"
// no trustedPublisher, no gitHead
}
A dependência fantasma: plain-crypto-js@4.2.1
A única mudança em ambas as versões contaminadas do Axios é uma nova dependência: plain-crypto-js@^4.2.1. Este pacote nunca é importado ou requerido em qualquer lugar no código fonte do Axios. Um grep em todos os 86 arquivos confirma zero uso. Ele existe no package.json apenas para acionar a resolução automática de dependências do npm e executar seu gancho postinstall.
Esta é a característica definidora de um ataque de dependência fantasma — um pacote adicionado ao manifesto puramente por seus efeitos colaterais durante a instalação.
O pacote plain-crypto-js@4.2.1 foi sinalizado como malware conhecido com uma pontuação de segurança de cadeia de suprimentos de 0% por vários scanners automatizados dentro de minutos após a publicação. O axios comprometido@1.14.1 foi sinalizado de forma semelhante e posteriormente despublicado pelo npm.
Análise técnica: O dropper RAT (setup.js)
Arquitetura de ofuscação
Todos os strings sensíveis são armazenados como valores codificados em um array stq[]. Duas funções os decodificam em tempo de execução:
- _trans_1(x, r) — cifra XOR: A chave "OrDeR_7077" é analisada através do Number() do JavaScript. Caracteres alfabéticos produzem NaN, que em operações bitwise se torna 0. Apenas os dígitos 7, 0, 7, 7 sobrevivem, dando uma chave efetiva de [0,0,0,0,0,0,7,0,7,7]. Cada caractere é decodificado como: charCode XOR key[(7*r*r) % 10] XOR 333
- _trans_2(x, r) — Camada externa: Reverte o string codificado, substitui _ por =, decodifica base64, então passa por _trans_1.
Strings totalmente decodificados
| Index | Decoded value | Purpose |
| stq[0] | child_process | Shell execution |
| stq[1] | os | Platform detection |
| stq[2] | fs | Filesystem operations |
| stq[3] | hxxp://sfrclak[.]com:8000/ | C&C base URL |
| stq[5] | win32 | Windows identifier |
| stq[6] | darwin | macOS identifier |
| stq[13] | package.json | Deleted after execution |
| stq[14] | package.md | Clean stub renamed to package.json |
Código fonte anotado: setup.js
O seguinte walkthrough cobre a carga maliciosa completa do plain-crypto-js@4.2.1, com cada caminho de código significativo anotado.
Funções de decodificação
- _trans_1(x, r) divide a chave "OrDeR_7077" em caracteres e mapeia cada um através do Number(). Caracteres não dígitos produzem NaN, que se torna 0 em XOR bitwise. A chave efetiva é [0,0,0,0,0,0,7,0,7,7]. Cada caractere é decodificado como: charCode XOR key[(7*r*r) % 10] XOR 333. O índice quadrático (7r² mod 10) embaralha o padrão de acesso à chave para derrotar a análise de frequência.
- _trans_2(x, r) reverte o string codificado, restaura o padding base64 (substituindo _ por =), decodifica base64, então passa o resultado por _trans_1. Ambas as funções são envolvidas em try/catch {} — erros são silenciosamente engolidos para que uma falha parcial nunca produza um stack trace visível.
Ponto de entrada: _entry("6202033")
O ID da campanha "6202033" é passado como um argumento e anexado ao URL C&C. Antes de despachar, a função decodifica seis tokens de placeholder divididos em base64:
| Variable | Encoded | Decoded |
| E | atob("TE9DQUw=") + atob("X1BBVEg=") | LOCAL_PATH |
| S | atob("UFM=") + atob("X1BBVEg=") | PS_PATH |
| a | atob("U0NSXw==") + atob("TElOSw==") | SCR_LINK |
| c | atob("UFNfQg==") + atob("SU5BUlk=") | PS_BINARY |
| s | atob("d2hlcmUgcG93ZXJzaGVsbA==") | where powershell |
Cada chamada atob() é deliberadamente dividida em duas metades para prevenir a detecção baseada em grep do string completo. Esses tokens são variáveis de template — o dropper decodifica templates de comando shell específicos da plataforma de stq[], então substitui esses tokens pelo URL C&C real e caminhos de arquivo locais.
Os três módulos principais (fs, os, child_process) são carregados via chamadas require() dinâmicas que decodificam o nome do módulo em tempo de execução de stq[]. Isso evita scanners de análise estática que procuram por padrões literais require("child_process"), tornando as importações invisíveis para revisão de código automatizada.
Despacho de plataforma
O dropper usa um padrão for(;;) { ... break } — um loop infinito que executa exatamente uma vez. Esta é uma técnica de ofuscação deliberada que evita uma estrutura limpa de if/else identificável como um despachante de plataforma em revisão de código automatizada. Dentro:
- macOS (darwin): Decodifica um template AppleScript de stq[9], substitui SCR_LINK pelo URL C&C e LOCAL_PATH por /tmp/6202033, grava no disco, então executa via um comando de stq[10].
- Windows (win32): Executa "where powershell" para localizar o interpretador, copia para %PROGRAMDATA%\wt.exe (disfarçado como Terminal do Windows), grava um lançador VBScript em %TEMP%\6202033.vbs com o URL C&C e caminhos PowerShell injetados, então executa.
- Linux (default): Decodifica um comando curl + nohup de stq[12], substitui SCR_LINK pelo URL C&C, e executa diretamente via execSync.
Anti-forense (três operações finais)
F(n); // execSync — RAT is now running
t.unlink(__filename, (x => {})); // DELETE setup.js
t.unlink("package.json", (x => {})); // DELETE malicious manifest
t.rename("package.md", "package.json", // SWAP clean stub into place
(x => {}));Todo callback é (x => {}) — erros são silenciosamente engolidos. Toda a função _entry é envolvida em try/catch {} pelo mesmo motivo. A linha final — _entry("6202033") — é a única chamada não ofuscada no arquivo, executando imediatamente quando node setup.js é invocado pelo gancho postinstall do npm.
Cargas específicas da plataforma
macOS: dropper AppleScript
Corpo POST C&C: packages.npm.org/product0
O C&C retorna um binário macOS salvo em /Library/Caches/com.apple.act.mond — um caminho projetado para imitar entradas de cache do sistema Apple. O nome "com.apple.act.mond" segue a convenção de daemon de DNS reverso da Apple, provavelmente abreviando "Activity Monitor Daemon." Tornado executável com chmod 770 e lançado via /bin/zsh em segundo plano. Arquivo AppleScript se autodeleta após execução.
Windows: cadeia VBScript + PowerShell
Corpo POST C&C: packages.npm.org/product1
Ataque em quatro estágios:
- Localiza PowerShell via "where powershell"
- Copia o binário PowerShell para %PROGRAMDATA%\wt.exe (disfarçado como Terminal do Windows)
- VBScript executa cmd.exe oculto que busca RAT PowerShell do C&C, executa com -ExecutionPolicy Bypass -WindowStyle Hidden, então se autodeleta. Artefato persistente: %PROGRAMDATA%\wt.exe.
- O script buscado executa sua carga final inteiramente na memória. O binário PowerShell renomeado (wt.exe) executa o seguinte comando:

Invoke-WebRequest POSTa o identificador de plataforma Windows para o C&C e recebe o script de segundo estágio no corpo da resposta HTTP. Esse corpo é decodificado em UTF-8, passado para [scriptblock]::Create(), e executado inline — inteiramente na memória do processo PowerShell atual. Nenhum arquivo intermediário é gravado para a carga final. O URL C&C é passado como um argumento para o scriptblock, permitindo que o código entregue chame de volta para tarefas adicionais sem codificar o endereço.
Linux: RAT Python
Corpo POST C&C: packages.npm.org/product2
Execução direta via execSync: baixa RAT Python para /tmp/ld.py e executa destacado via nohup. O prefixo do corpo POST “packages.npm.org/” parece intencionalmente escolhido para parecer relacionado ao npm durante uma revisão rápida e para se misturar aos logs, mesmo que não seja o domínio oficial do registro npm (registry.npmjs.org).
Análise de infraestrutura C&C
Nossa análise da infraestrutura C&C revela o perfil operacional do servidor do atacante:
| Property | Value |
| Domain registered | March 30, 2026 16:03:46 UTC |
| Registrar | Namecheap Inc |
| Name servers | dns1.registrar-servers.com, dns2.registrar-servers.com |
| Hosting provider | Hostwinds LLC (AS54290) |
| Hosting country | United States |
| DNS SPF record | v=spf1 include:spf.efwd.registrar-servers.com ~all |
| DNS MX records | eforward[1-5].registrar-servers.com (Namecheap default email forwarding) |
O domínio foi registrado às 16:03 UTC em 30 de março, 10 horas após o decoy plain-crypto-js@4.2.0 ter sido publicado (05:57 UTC) e oito horas antes da carga maliciosa @4.2.1 entrar em operação (23:59 UTC). Isso confirma que a infraestrutura foi provisionada no mesmo dia da preparação do ataque. O uso da configuração padrão de DNS e encaminhamento de e-mail da Namecheap, combinado com um domínio recém-registrado em um provedor de hospedagem de commodities, é consistente com infraestrutura descartável de operação única.
Nossa plataforma de inteligência de ameaças indexa 10 URLs sob sfrclak[.]com, incluindo os endpoints C&C específicos da plataforma:
| URL | Context |
| hxxp[://]sfrclak[.]com:8000/6202033 | Primary C&C callback (campaign ID in path) |
| hxxp[://]sfrclak[.]com:8000/6202033.ps1 | Windows PowerShell payload download |
| hxxp[://]sfrclak[.]com | Base domain |
As baixas pontuações de reputação comunitária entre esses URLs indicam que o bloqueio a nível de rede baseado em domínio e IP — em vez de correspondência de padrão de URL — é o controle mais confiável no momento.
Anti-forense: Sequência de autodestruição
Após lançar a carga, setup.js realiza três etapas de limpeza:
- Se autodeleta - fs.unlink(__filename) remove setup.js
- Deleta package.json - remove o manifesto com o gancho postinstall
- Renomeia package.md para package.json - um stub limpo pré-estabelecido (v4.2.0, sem postinstall) toma seu lugar
Pós-infecção, qualquer inspeção de node_modules/plain-crypto-js/package.json mostra um manifesto completamente limpo. As evidências foram trocadas no local.
Sinal de detecção: A mera existência de node_modules/plain-crypto-js/ é evidência suficiente de comprometimento — este pacote não é uma dependência de qualquer versão legítima do Axios.
Confirmação de tempo de execução
A análise estática foi validada instalando axios@1.14.1 dentro de um runner GitHub Actions instrumentado com monitoramento de segurança em tempo de execução no modo de auditoria, capturando cada conexão de saída, processo gerado e gravação de arquivo no nível do kernel.
Duas conexões C&C foram registradas:
- curl às 01:30:51Z - 1.1 segundos após o início da instalação do npm
- nohup às 01:31:27Z - em um passo de fluxo de trabalho completamente diferente
O malware persistiu como um processo de segundo plano destacado órfão para PID 1, independente do npm.
Árvore de processos: Cadeia de eliminação completa
PID 2366 bash (workflow script)
└─ PID 2380 npm install axios@1.14.1
└─ PID 2391 sh -c "node setup.js"
└─ PID 2392 node setup.js
└─ PID 2399 /bin/sh -c "curl ... && nohup python3 ..."
PID 2401 curl -o /tmp/ld.py ... ppid: 2400
PID 2400 nohup python3 /tmp/ld.py ppid: 1 ← ORPHANED TO INIT
Campanha mais ampla: Pacotes relacionados
- @shadanai/openclaw: Um fork do gateway OpenClaw AI com plain-crypto-js oculto em um caminho vendorizado. Setup.js idêntico, mesmo C&C, mesmas cargas.
- @qqbrowser/openclaw-qbot@0.0.130: Envia um axios@1.14.1 adulterado pré-baked em seu diretório node_modules/ com plain-crypto-js já injetado. Diferente vetor de injeção, mesmo malware.
MITRE ATT&CK TTPs
| ID | Technique | Description |
| T1195.002 | Compromise Software Supply Chain | Hijacked npm maintainer account published poisoned Axios versions bypassing OIDC Trusted Publisher |
| T1059.005 | Command and Scripting Interpreter: VBScript | 6202033.vbs launcher writes and executes PowerShell chain from %TEMP% |
| T1059.001 | Command and Scripting Interpreter: PowerShell | Fileless [scriptblock]::Create() execution from C&C HTTP response body via renamed wt.exe |
| T1059.006 | Command and Scripting Interpreter: Python | Linux RAT /tmp/ld.py executed detached via nohup, orphaned to PID 1 |
| T1027 | Obfuscated Files or Information | XOR cipher (OrDeR_7077) + base64 reversal + string array rotation + split atob() calls |
| T1036 | Masquerading | wt.exe mimics Windows Terminal; com.apple.act.mond mimics Apple daemon; packages.npm.org/ prefix in POST body mimics npm registry traffic |
| T1070.004 | Indicator Removal: File Deletion | setup.js self-deletes, removes package.json, swaps in clean package.md stub |
| T1082 | System Information Discovery | os.platform() fingerprint determines macOS/Windows/Linux execution branch |
| T1071.001 | Application Layer Protocol: Web Protocols | HTTP POST to sfrclak[.]com:8000 with campaign ID 6202033 in URL path |
| T1620 | Reflective Code Loading | PowerShell [scriptblock]::Create() from C&C response content executed in-process without disk write |
Remediação
Remediação rápida e completa é essencial após um ataque de cadeia de suprimentos como o comprometimento do Axios. Os seguintes passos podem ajudar na remoção de componentes maliciosos, restauração de ambientes seguros e fortalecimento das defesas contra futuros incidentes:
- Fixar em versões seguras: npm install axios@1.14.0 (1.x) ou axios@0.30.3 (0.x)
- Adicionar substituições/resoluções no package.json para prevenir resolução transitiva
- Remover plain-crypto-js: rm -rf node_modules/plain-crypto-js && npm install --ignore-scripts
- Se artefatos RAT forem encontrados: Não limpar no local. Reconstruir a partir de um estado conhecido bom.
- Rotacionar TODAS as credenciais: tokens npm, chaves AWS, chaves SSH, segredos CI/CD, valores .env
- Auditar pipelines CI/CD: Qualquer fluxo de trabalho que executou npm install durante a janela de exposição — rotacionar todos os segredos injetados
- Bloquear C&C na rede/DNS: Adicionar sfrclak.com à lista de bloqueio
- Usar npm ci --ignore-scripts em CI/CD como política permanente
Lições para desenvolvedores, operadores de registro e equipes de segurança
O comprometimento do Axios revela lacunas críticas na segurança da cadeia de suprimentos, mostrando como uma única tomada de conta pode impactar milhões. Este ataque destaca a importância de fixação estrita de dependências, salvaguardas CI/CD e controles de registro vigilantes. Ao examinar as falhas técnicas e operacionais expostas nesta campanha, podemos identificar insights valiosos que podem ajudar a mitigar riscos futuros:
Para desenvolvedores
- Fixar versões de dependência. Intervalos de acento circunflexo (^1.14.0) puxam silenciosamente o próximo menor/correção. Fixação exata com verificação de arquivo de bloqueio é a defesa mínima.
- Usar npm ci --ignore-scripts em CI/CD. Ganchos postinstall são o vetor de execução primário para ataques de cadeia de suprimentos npm.
- Auditar arquivos de bloqueio, não apenas package.json. A dependência maliciosa era transitiva — apenas visível em package-lock.json.
Para operadores de registro de pacotes
- A adoção do OIDC Trusted Publisher deve se tornar a norma. A publicação maliciosa foi trivialmente detectável como anômala porque não tinha a vinculação OIDC.
- A detecção de tomada de conta deve sinalizar mudanças de e-mail em pacotes de alto download e acionar revisões.
- Janelas de cooldown em pacotes recém-publicados, mesmo 24 horas teriam limitado o raio de explosão.
Para equipes de segurança
- Monitorar por dependências fantasma: pacotes em manifestos mas nunca importados no código fonte.
- Monitoramento de saída de rede em CI/CD captura o que a análise estática perde.
- Evidências pós-instalação podem ser destruídas. Diffs de arquivo de bloqueio e logs de rede são fontes forenses mais confiáveis.
Segurança proativa com TrendAI Vision One™
TrendAI Vision One™ plataforma é a plataforma de cibersegurança AI líder da indústria que centraliza a gestão de exposição ao risco cibernético, operações de segurança e proteção robusta em camadas.
TrendAI Vision One™ Threat Intelligence Hub
TrendAI Vision One™ Threat Intelligence Hub fornece as últimas informações sobre ameaças emergentes e atores de ameaças, relatórios estratégicos exclusivos da TrendAI™ Research, e Feed de Inteligência de Ameaças TrendAI Vision One™ na plataforma TrendAI Vision One™.
Ameaças Emergentes: Axios Comprometido: Dentro do Ataque de Cadeia de Suprimentos que Atingiu 100M+ Downloads Semanais
Relatórios de Inteligência TrendAI Vision One™ (Varredura IOC)
Axios Comprometido: Dentro do Ataque de Cadeia de Suprimentos que Atingiu 100M+ Downloads Semanais
Consultas de Caça
TrendAI Vision One™ Search App
Clientes TrendAI Vision One™ podem usar o Search App para combinar ou caçar os indicadores maliciosos mencionados neste post de blog com dados em seu ambiente.
Detectar criação de arquivo temporário específico da campanha pelo dropper postinstall npm
eventSubId:101 AND objectFilePath:(*\Temp\6202033* OR */tmp/6202033*) AND parentFilePath:(*\node.exe OR */node)
Detectar conexões de saída para ataque de cadeia de suprimentos Axios C&C
eventSubId:204 AND dst:("sfrclak.com" OR "142.11.206.73")
Mais consultas de caça estão disponíveis para TrendAI Vision One™ com Threat Intelligence Hub habilitado.
Indicadores de comprometimento (IOCs)
| Indicator | Value | Detection |
| Network Indicators | ||
| C&C Domain | sfrclak[.]com | 91. C&C server |
| C&C URL | http[://]sfrclak[.]com:8000/6202033 | 79. Disease Vector |
| C&C Domain | callnrwise[.]com | 91. C&C server |
| C&C IP | 142[.]11[.]206[.]73 | 91. C&C server |
| POST body (macOS) | packages.npm.org/product0 | |
| POST body (Windows) | packages.npm.org/product1 | |
| POST body (Linux) | packages.npm.org/product2 | |
| Malicious NPM Packages | ||
| axios@1.14.1 | 2553649f2322049666871cea80a5d0d6adc700ca | Trojan.JS.TPCPSTEAL.A |
| axios@0.30.4 | d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71 | |
| plain-crypto-js@4.2.1 | 07d889e2dadce6f3910dcbc253317d28ca61c766 | Trojan.JS.TPCPSTEAL.A |
| File Hashes | ||
| setup.js — RAT dropper (plain-crypto-js@4.2.1 postinstall payload) | e10b1fa84f1d6481625f741b69892780140d4e0e7769e7491e5f4d894c2e0e09 | Trojan.JS.AXIOSDROP.THCCABF |
| 6202033.vbs — Powershell RAT downloader | 591a70e8b166265804c1e2add3f5554b38364a8750248a8c5be751c5cd9b1655 | Trojan.VBS.AXIOSDROP.AA |
| 6202033.ps1 — PowerShell RAT | ed8560c1ac7ceb6983ba995124d5917dc1a00288912387a6389296637d5f815c | Backdoor.PS1.AXIOSRAT.THCCABF |
| 6202033.ps1 — PowerShell RAT | 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101 | Trojan.PS1.AXIOSDROP.THCCABF |
| system.bat — Windows fileless loader | f7d335205b8d7b20208fb3ef93ee6dc817905dc3ae0c10a0b164f4e7d07121cd | Trojan.PS1.AXIOSDROP.THCCABG |
| com.apple.act.mond | 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a | Backdoor.MacOS.NUKESPED.MANP |
| ld.py — Linux Python RAT | fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf | Backdoor.Python.AXIOSRAT.THCCABF |
Com contribuições de Ian Kenefick.