
🧙♂️ Comando y Control con Node.js para el Script-Jacking de aplicaciones Electron vulnerables
Loki es un framework de comando y control (C2) de etapa 1 escrito en Node.js, diseñado para secuestrar scripts (script-jacking) de aplicaciones Electron vulnerables MITRE ATT&CK T1218.015. Desarrollado para operaciones de red team, Loki permite la evasión de software de seguridad y la omisión de controles de aplicaciones al explotar aplicaciones Electron confiables y firmadas.
El script-jacking secuestra el flujo de ejecución de una aplicación Electron al modificar archivos JavaScript cargados en tiempo de ejecución con código Node.js arbitrario. Esta técnica se puede aprovechar para:
Si bien varias herramientas ya abordan el uso de script-jacking para encadenar la ejecución a otro proceso, Loki es la primera en permitir el backdoor y el hollowing de aplicaciones Electron firmadas sin invalidar su firma de código.
Para obtener más detalles sobre cómo funciona Loki, consulta esta publicación de blog:

| Nombre | Contribuciones |
|---|---|
| Bobby Cooke | Creador y mantenedor |
| Dylan Tran | Creador |
| Ellis Springe | Probador Alpha |
| Shawn Jones | Código de ejecución de ensamblado |
| Trusted Sec | Código de COFFLoader |
| Simon Exley | Creador de vídeo |
| Clinton Elves | Creador de vídeo |
| John Hammond | Creador de vídeo |
¡Mira este video de John Hammond sobre cómo hacer backdoor a Cursor AI con Loki C2! 🎩
¡Mira este video de Simon Exley y Clinton Elves sobre cómo poner en marcha Loki C2! 🧙♂️
Todos los comandos del agente están escritos en Node.JS nativo y no requieren dependencias adicionales ni eventos de carga de bibliotecas. Con la excepción de los comandos scexec y assembly, que realizan una carga de biblioteca en keytar.node y assembly.node
/; \ en las rutas no funcionará.| Comando | Descripción |
|---|---|
help | Mostrar ayuda. Uso: help o help scan |
pwd | Imprimir el directorio de trabajo |
ls | Listado de archivos y directorios |
cat | Mostrar el contenido de un archivo |
env | Mostrar las variables de entorno del proceso |
spawn | Crear un proceso hijo |
drives | Listar unidades |
mv | Mover un archivo a un nuevo destino |
sleep | Dormir durante segundos con jitter |
cp | Copiar un archivo de origen a un destino |
exit-all | Sale del agente; el agente ya no volverá a conectarse |
load | Cargar un archivo PE de Node desde el disco en el proceso |
scexec | Ejecutar shellcode |
assembly | Ejecutar un ensamblado .NET y obtener la salida del comando |
upload | Subir un archivo desde tu máquina operadora local a la máquina agente remota |
download | Descargar un archivo desde la máquina agente remota a la máquina operadora local |
scan | Realizar un escaneo de red TCP en un rango CIDR con puertos seleccionados |
dns | Consulta DNS. Utiliza la configuración DNS del sistema |
set | Establecer las rutas de carga de Node para los nodos de ensamblado y scexec |
bof | Ejecutar un archivo COFF y devolver la salida |
Set - Carga de nodos desde rutas de exclusión de control de aplicacionesset para cambiar las rutas de carga de assembly.node y scexec.node.ls, cat, cp y mv, es posible enumerar las reglas de control de aplicaciones para descubrir un directorio escribible que sea una exclusión.set para cambiar su ruta de carga al directorio de exclusión y así evadir el control de aplicaciones.[04-04-2025 8:50AM MST] advsim$ help set
Set the Node load paths for assembly node and scexec nodes
set scexec_path C:/Users/user/AppData/ExcludedApp/scexec.node
set assembly_path C:/Users/user/AppData/ExcludedApp/assembly.node
[04-04-2025 8:51AM MST] advsim$ set scexec_path C:/Users/user/AppData/ExcludedApp/scexec.node
SCEXEC Node Load Path Set to : C:/Users/user/AppData/ExcludedApp/scexec.node
Para más información sobre las características del agente, haz clic aquí