Key Takeaways
- Axios, un cliente HTTP de JavaScript ampliamente utilizado con más de 100 millones de descargas semanales en npm, fue comprometido cuando un atacante secuestró la cuenta npm del mantenedor principal y publicó dos versiones maliciosas (1.14.1 y 0.30.4) que desplegaron un troyano de acceso remoto (RAT) multiplataforma.
- El ataque introdujo una dependencia fantasma, plain-crypto-js@4.2.1, que ejecutó un gancho de postinstalación para entregar malware persistente en macOS, Windows y Linux, y luego borró evidencia al reemplazar sus propios archivos con señuelos limpios.
- El atacante eludió las salvaguardas de Publicador de Confianza de OIDC de GitHub Actions al publicar manualmente versiones contaminadas utilizando un token npm robado, sin dejar rastro en el repositorio oficial de GitHub.
- Los escáneres de seguridad automatizados de npm marcaron la dependencia maliciosa en cuestión de minutos, y la administración de npm eliminó los paquetes comprometidos poco después.
- El análisis forense reveló una sofisticada ofuscación, técnicas antiforenses y cargas útiles específicas de la plataforma, destacando brechas críticas en la seguridad de la cadena de suministro, especialmente en torno al fijado de dependencias y las protecciones de la canalización CI/CD.
Axios, el cliente HTTP más popular del ecosistema JavaScript con más de 100 millones de descargas semanales en npm, fue comprometido el 30 de marzo de 2026, utilizado como vehículo de entrega para un troyano de acceso remoto (RAT) multiplataforma. El atacante secuestró la cuenta npm del mantenedor principal, publicó dos versiones envenenadas en las ramas de lanzamiento 1.x y 0.x heredadas dentro de 39 minutos entre sí, e inyectó una dependencia fantasma cuyo único propósito era desplegar malware persistente en macOS, Windows y Linux. El malware se autodestruyó después de la ejecución, reemplazando su propia evidencia con un señuelo limpio.
Línea de tiempo del ataque
La operación detrás del compromiso fue pre-establecida durante ~18 horas, con la dependencia maliciosa sembrada en npm antes de los lanzamientos de Axios para evitar alarmas de "paquete nuevo":
| 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 |
Hasta el momento de escribir esto, observamos en nuestra telemetría actividad consistente con esta amenaza que afecta a organizaciones en múltiples industrias, incluyendo Gobierno, Finanzas, Retail, Consultoría, Entretenimiento, Manufactura, Tecnología, Salud y Servicios Públicos.
Cómo se secuestró la cuenta del mantenedor
El atacante comprometió jasonsaayman, el mantenedor principal del proyecto Axios en npm. El correo electrónico de la cuenta fue cambiado a ifstap@proton.me, una dirección de ProtonMail controlada por el atacante.
Cada lanzamiento legítimo de Axios 1.x se publica a través de GitHub Actions con el mecanismo OIDC Trusted Publisher de npm, vinculando criptográficamente la publicación a un flujo de trabajo de CI verificado. El malicioso 1.14.1 fue publicado manualmente con un token de acceso npm robado, sin vinculación OIDC y sin gitHead.
No hay ningún commit, etiqueta o lanzamiento en el repositorio de GitHub de Axios que corresponda a 1.14.1 o 0.30.4. Los lanzamientos existen solo en npm.
Cuando el colaborador de Axios DigitalBrainJS intentó responder, el atacante utilizó las credenciales secuestradas (que tenían permisos de nivel administrador) para desanclar y eliminar problemas de divulgación. El colaborador declaró públicamente: "Es inútil. Dado que el acceso a git y al repositorio npm está comprometido, y sus permisos de git son más altos que los míos. Soy un colaborador, no un administrador. No puedo revocar su acceso. Lo que sea que arregle, él lo 'arreglará' después de mí."
Señal forense clave — comparación 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
}
La dependencia fantasma: plain-crypto-js@4.2.1
El único cambio en ambas versiones envenenadas de Axios es una sola nueva dependencia: plain-crypto-js@^4.2.1. Este paquete nunca se importa ni se requiere() en ningún lugar del código fuente de Axios. Un grep en los 86 archivos confirma cero uso. Existe en package.json únicamente para activar la resolución automática de dependencias de npm y ejecutar su gancho postinstall.
Esta es la característica definitoria de un ataque de dependencia fantasma: un paquete agregado al manifiesto puramente por sus efectos secundarios durante la instalación.
El paquete plain-crypto-js@4.2.1 fue marcado como malware conocido con un puntaje de seguridad de cadena de suministro del 0% por múltiples escáneres automatizados dentro de minutos de su publicación. El axios comprometido@1.14.1 fue marcado de manera similar y posteriormente despublicado por npm.
Análisis técnico: El dropper RAT (setup.js)
Arquitectura de ofuscación
Todos los strings sensibles se almacenan como valores codificados en un array stq[]. Dos funciones los decodifican en tiempo de ejecución:
- _trans_1(x, r) — Cifrado XOR: La clave "OrDeR_7077" se analiza a través de Number() de JavaScript. Los caracteres alfabéticos producen NaN, que en operaciones bitwise se convierte en 0. Solo los dígitos 7, 0, 7, 7 sobreviven, dando una clave efectiva de [0,0,0,0,0,0,7,0,7,7]. Cada carácter se decodifica como: charCode XOR key[(7*r*r) % 10] XOR 333
- _trans_2(x, r) — Capa externa: Invierte el string codificado, reemplaza _ con =, decodifica base64, luego pasa por _trans_1.
Strings completamente 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 |
Fuente anotada: setup.js
El siguiente recorrido cubre la carga útil maliciosa completa de plain-crypto-js@4.2.1, con cada camino de código significativo anotado.
Funciones de decodificación
- _trans_1(x, r) divide la clave "OrDeR_7077" en caracteres y mapea cada uno a través de Number(). Los caracteres no dígitos producen NaN, que se convierte en 0 en XOR bitwise. La clave efectiva es [0,0,0,0,0,0,7,0,7,7]. Cada carácter se decodifica como: charCode XOR key[(7*r*r) % 10] XOR 333. El índice cuadrático (7r² mod 10) altera el patrón de acceso a la clave para derrotar el análisis de frecuencia.
- _trans_2(x, r) invierte el string codificado, restaura el padding base64 (reemplazando _ con =), decodifica base64, luego pasa el resultado por _trans_1. Ambas funciones están envueltas en try/catch {} — los errores se tragan silenciosamente para que una falla parcial nunca produzca un stack trace visible.
Punto de entrada: _entry("6202033")
El ID de campaña "6202033" se pasa como argumento y se agrega a la URL de C&C. Antes de despachar, la función decodifica seis tokens de marcador de posición divididos en 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 llamada atob() se divide deliberadamente en dos mitades para prevenir la detección basada en grep del string completo. Estos tokens son variables de plantilla — el dropper decodifica plantillas de comandos de shell específicos de la plataforma desde stq[], luego reemplaza estos tokens con la URL de C&C real y rutas de archivos locales.
Los tres módulos principales (fs, os, child_process) se cargan a través de llamadas require() dinámicas que decodifican el nombre del módulo en tiempo de ejecución desde stq[]. Esto evade los escáneres de análisis estático que buscan patrones literales require("child_process"), haciendo que las importaciones sean invisibles para la revisión de código automatizada.
Despacho de plataforma
El dropper utiliza un patrón for(;;) { ... break } — un bucle infinito que se ejecuta exactamente una vez. Esta es una técnica de ofuscación deliberada que evita una estructura limpia if/else identificable como un despachador de plataforma en la revisión de código automatizada. Dentro:
- macOS (darwin): Decodifica una plantilla de AppleScript desde stq[9], reemplaza SCR_LINK con la URL de C&C y LOCAL_PATH con /tmp/6202033, lo escribe en disco, luego ejecuta a través de un comando desde stq[10].
- Windows (win32): Ejecuta "where powershell" para localizar el intérprete, lo copia a %PROGRAMDATA%\wt.exe (disfrazado como Windows Terminal), escribe un lanzador VBScript en %TEMP%\6202033.vbs con la URL de C&C y rutas de PowerShell inyectadas, luego ejecuta.
- Linux (default): Decodifica un comando curl + nohup desde stq[12], reemplaza SCR_LINK con la URL de C&C, y ejecuta directamente a través de execSync.
Anti-forense (últimas tres operaciones)
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 => {}));Cada callback es (x => {}) — los errores se tragan silenciosamente. Toda la función _entry está envuelta en try/catch {} por la misma razón. La línea final — _entry("6202033") — es la única llamada no ofuscada en el archivo, ejecutándose inmediatamente cuando node setup.js es invocado por el gancho postinstall de npm.
Cargas útiles específicas de la plataforma
macOS: Dropper de AppleScript
Cuerpo POST de C&C: packages.npm.org/product0
El C&C devuelve un binario macOS guardado en /Library/Caches/com.apple.act.mond — una ruta diseñada para imitar entradas de caché del sistema Apple. El nombre "com.apple.act.mond" sigue la convención de daemon de DNS inverso de Apple, probablemente abreviando "Activity Monitor Daemon." Hecho ejecutable con chmod 770 y lanzado vía /bin/zsh en segundo plano. El archivo AppleScript se autodestruye después de la ejecución.
Windows: Cadena VBScript + PowerShell
Cuerpo POST de C&C: packages.npm.org/product1
Ataque de cuatro etapas:
- Localiza PowerShell vía "where powershell"
- Copia el binario de PowerShell a %PROGRAMDATA%\wt.exe (disfrazado como Windows Terminal)
- VBScript ejecuta cmd.exe oculto que obtiene RAT de PowerShell desde C&C, ejecuta con -ExecutionPolicy Bypass -WindowStyle Hidden, luego se autodestruye. Artefacto persistente: %PROGRAMDATA%\wt.exe.
- El script obtenido ejecuta su carga útil final completamente en memoria. El binario de PowerShell renombrado (wt.exe) ejecuta el siguiente comando:

Invoke-WebRequest POSTea el identificador de plataforma de Windows al C&C y recibe el script de segunda etapa en el cuerpo de respuesta HTTP. Ese cuerpo se decodifica en UTF-8, se pasa a [scriptblock]::Create(), y se ejecuta en línea — completamente en la memoria del proceso actual de PowerShell. No se escribe ningún archivo intermedio para la carga útil final. La URL de C&C se pasa como argumento al bloque de script, permitiendo que el código entregado llame para tareas adicionales sin codificar la dirección.
Linux: RAT de Python
Cuerpo POST de C&C: packages.npm.org/product2
Ejecución directa vía execSync: descarga RAT de Python a /tmp/ld.py y ejecuta separado vía nohup. El prefijo del cuerpo POST "packages.npm.org/" parece elegido intencionalmente para parecer relacionado con npm durante una revisión rápida y para mezclarse en los registros, aunque no es el dominio oficial del registro npm (registry.npmjs.org).
Análisis de infraestructura de C&C
Nuestro análisis de la infraestructura de C&C revela el perfil operativo del servidor del 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) |
El dominio fue registrado a las 16:03 UTC el 30 de marzo, 10 horas después de que el señuelo plain-crypto-js@4.2.0 fue publicado (05:57 UTC) y ocho horas antes de que la carga útil maliciosa @4.2.1 se activara (23:59 UTC). Esto confirma que la infraestructura fue provisionada el mismo día que la preparación del ataque. El uso de la configuración predeterminada de DNS y reenvío de correo electrónico de Namecheap, combinado con un dominio recién registrado en un proveedor de hosting de commodities, es consistente con infraestructura desechable de operación única.
Nuestra plataforma de inteligencia de amenazas indexa 10 URLs bajo sfrclak[.]com, incluyendo los endpoints de C&C específicos de la 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 |
Las bajas puntuaciones de reputación comunitaria en estas URLs indican que el bloqueo a nivel de red basado en dominio e IP — en lugar de coincidencia de patrones de URL — es el control más confiable en este momento.
Anti-forense: Secuencia de autodestrucción
Después de lanzar la carga útil, setup.js realiza tres pasos de limpieza:
- Se elimina a sí mismo - fs.unlink(__filename) elimina setup.js
- Elimina package.json - elimina el manifiesto con el gancho postinstall
- Renombra package.md a package.json - un stub limpio pre-establecido (v4.2.0, sin postinstall) toma su lugar
Después de la infección, cualquier inspección de node_modules/plain-crypto-js/package.json muestra un manifiesto completamente limpio. La evidencia ha sido intercambiada en su lugar.
Señal de detección: La mera existencia de node_modules/plain-crypto-js/ es evidencia suficiente de compromiso — este paquete no es una dependencia de ninguna versión legítima de Axios.
Confirmación de tiempo de ejecución
El análisis estático fue validado instalando axios@1.14.1 dentro de un corredor de GitHub Actions instrumentado con monitoreo de seguridad en tiempo de ejecución en modo de auditoría, capturando cada conexión saliente, proceso generado y escritura de archivo a nivel de kernel.
Se registraron dos conexiones de C&C:
- curl a las 01:30:51Z - 1.1 segundos después de que comenzó la instalación de npm
- nohup a las 01:31:27Z - en un paso de flujo de trabajo completamente diferente
El malware persistió como un proceso de fondo separado huérfano a PID 1, independiente de npm.
Árbol de procesos: Cadena de eliminación 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
Campaña más amplia: Paquetes relacionados
- @shadanai/openclaw: Un fork de OpenClaw AI gateway con plain-crypto-js oculto en una ruta vendida. Setup.js idéntico, mismo C&C, mismas cargas útiles.
- @qqbrowser/openclaw-qbot@0.0.130: Envía un axios@1.14.1 manipulado pre-horneado en su directorio node_modules/ con plain-crypto-js ya inyectado. Diferente vector de inyección, mismo 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 |
Remediación
La remediación rápida y completa es esencial después de un ataque a la cadena de suministro como el compromiso de Axios. Los siguientes pasos pueden ayudar a eliminar componentes maliciosos, restaurar entornos seguros y fortalecer las defensas contra futuros incidentes:
- Fijar a versiones seguras: npm install axios@1.14.0 (1.x) o axios@0.30.3 (0.x)
- Agregar overrides/resolutions en package.json para prevenir resolución transitiva
- Eliminar plain-crypto-js: rm -rf node_modules/plain-crypto-js && npm install --ignore-scripts
- Si se encuentran artefactos RAT: No limpiar en el lugar. Reconstruir desde un estado conocido bueno.
- Rotar TODAS las credenciales: tokens npm, claves AWS, claves SSH, secretos CI/CD, valores .env
- Auditar pipelines CI/CD: Cualquier flujo de trabajo que ejecutó npm install durante la ventana de exposición — rotar todos los secretos inyectados
- Bloquear C&C en red/DNS: Agregar sfrclak.com a la lista de bloqueo
- Usar npm ci --ignore-scripts en CI/CD como política permanente
Lecciones para desarrolladores, operadores de registros y equipos de seguridad
El compromiso de Axios revela brechas críticas en la seguridad de la cadena de suministro, mostrando cómo un solo secuestro de cuenta puede impactar a millones. Este ataque destaca la importancia de fijar estrictamente las dependencias, las salvaguardas de CI/CD y los controles vigilantes de registros. Al examinar las fallas técnicas y operativas expuestas en esta campaña, podemos identificar valiosas ideas que pueden ayudar a mitigar riesgos futuros:
Para desarrolladores
- Fijar versiones de dependencias. Los rangos de caret (^1.14.0) extraen silenciosamente el siguiente menor/parche. La fijación exacta con verificación de lockfile es la defensa mínima.
- Usar npm ci --ignore-scripts en CI/CD. Los ganchos postinstall son el vector de ejecución principal para ataques a la cadena de suministro de npm.
- Auditar lockfiles, no solo package.json. La dependencia maliciosa era transitiva — solo visible en package-lock.json.
Para operadores de registros de paquetes
- La adopción de OIDC Trusted Publisher debe convertirse en la norma. La publicación maliciosa fue trivialmente detectable como anómala porque carecía de la vinculación OIDC.
- La detección de secuestro de cuenta debería marcar cambios de correo electrónico en paquetes de alta descarga y activar retenciones de revisión.
- Ventanas de enfriamiento en paquetes recién publicados, incluso 24 horas habrían limitado el radio de explosión.
Para equipos de seguridad
- Monitorear dependencias fantasma: paquetes en manifiestos pero nunca importados en código fuente.
- El monitoreo de salida de red en CI/CD captura lo que el análisis estático pierde.
- La evidencia post-instalación puede ser destruida. Los diffs de lockfile y los registros de red son fuentes forenses más confiables.
Seguridad proactiva con TrendAI Vision One™
TrendAI Vision One™ es la plataforma de ciberseguridad AI líder en la industria que centraliza la gestión de exposición al riesgo cibernético, operaciones de seguridad y protección robusta en capas.
Centro de Inteligencia de Amenazas de TrendAI Vision One™
El Centro de Inteligencia de Amenazas de TrendAI Vision One™ proporciona las últimas ideas sobre amenazas emergentes y actores de amenazas, informes estratégicos exclusivos de TrendAI™ Research, y el Feed de Inteligencia de Amenazas de TrendAI Vision One™ en la plataforma TrendAI Vision One™.
Amenazas Emergentes: Axios Comprometido: Dentro del Ataque a la Cadena de Suministro que Afectó 100M+ Descargas Semanales
Informes de Inteligencia de TrendAI Vision One™ (Barrido de IOC)
Axios Comprometido: Dentro del Ataque a la Cadena de Suministro que Afectó 100M+ Descargas Semanales
Consultas de Caza
Aplicación de Búsqueda de TrendAI Vision One™
Los clientes de TrendAI Vision One™ pueden usar la Aplicación de Búsqueda para coincidir o cazar los indicadores maliciosos mencionados en esta publicación de blog con datos en su entorno.
Detectar creación de archivos temporales específicos de campaña por el dropper postinstall de npm
eventSubId:101 AND objectFilePath:(*\Temp\6202033* OR */tmp/6202033*) AND parentFilePath:(*\node.exe OR */node)
Detectar conexiones salientes al C&C del ataque a la cadena de suministro de Axios
eventSubId:204 AND dst:("sfrclak.com" OR "142.11.206.73")
Más consultas de caza están disponibles para TrendAI Vision One™ con la habilitación del Centro de Inteligencia de Amenazas.
Indicadores de compromiso (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 |
Con contribuciones de Ian Kenefick.