Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Loki — 🧙‍♂️ Comando y Control con Node.js para el Script-Jacking de aplicaciones Electron vulnerables | Kitploit
Herramientas/GitHubGitHub/boku7/loki
Mecanismos de PersistenciaExplotaciónEvasión de IDS/IPSShellcodePost-ExplotaciónComando y ControlRed TeamingDesarrollo de Payloads
GitHubboku7/loki

Loki

🧙‍♂️ Comando y Control con Node.js para el Script-Jacking de aplicaciones Electron vulnerables

Ver Repositorio
1.4k2204hace 5 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

🧙‍♂️ Loki Comando y Control

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:

  • Comprometer la aplicación Electron
  • Vaciar la aplicación Electron
  • Encadenar la ejecución a otro proceso

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:

  • Bypassing Windows Defender Application Control with Loki C2

🚀 Colaboradores

NombreContribuciones
Bobby CookeCreador y mantenedor
Dylan TranCreador
Ellis SpringeProbador Alpha
Shawn JonesCódigo de ejecución de ensamblado
Trusted SecCódigo de COFFLoader
Simon ExleyCreador de vídeo
Clinton ElvesCreador de vídeo
John HammondCreador de vídeo

Vídeos

¡Mira este video de John Hammond sobre cómo hacer backdoor a Cursor AI con Loki C2! 🎩

  • En el video, recorre el descubrimiento de una nueva aplicación Electron vulnerable, le hace backdoor con Loki C2, se configura con la GUI del cliente, e incluso ideamos dos formas de mantener la aplicación ejecutándose de forma persistente en segundo plano 🪄 -- ¡Cursor se ejecuta con normalidad desde la perspectiva del usuario final! 🥷

Comprometiendo Cursor AI con Loki C2

¡Mira este video de Simon Exley y Clinton Elves sobre cómo poner en marcha Loki C2! 🧙‍♂️

Bypass de Windows Defender Application Control con Loki C2

Características y detalles

  • Canal C2 de Azure Storage Blob
    • Token SAS para proteger la cuenta de almacenamiento C2
  • Mensajes C2 cifrados con AES
  • Agente compatible con proxy
    • Utiliza procesos secundarios del renderizador de Chromium para el agente, ejecución de shellcode y ejecución de ensamblado estilo fork-n-run -- hereda las capacidades de proxy de Chromium.
  • Sin Teamserver
    • A diferencia de los C2 tradicionales donde los agentes envían mensajes a un Teamserver, no hay Teamserver
    • El cliente GUI y los agentes se registran en el mismo almacén de datos
  • Ejecución oculta -- se ejecuta en segundo plano

Comandos

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

  • Todos los comandos aceptan rutas con /; \ en las rutas no funcionará.
ComandoDescripción
helpMostrar ayuda. Uso: help o help scan
pwdImprimir el directorio de trabajo
lsListado de archivos y directorios
catMostrar el contenido de un archivo
envMostrar las variables de entorno del proceso
spawnCrear un proceso hijo
drivesListar unidades
mvMover un archivo a un nuevo destino
sleepDormir durante segundos con jitter
cpCopiar un archivo de origen a un destino
exit-allSale del agente; el agente ya no volverá a conectarse
loadCargar un archivo PE de Node desde el disco en el proceso
scexecEjecutar shellcode
assemblyEjecutar un ensamblado .NET y obtener la salida del comando
uploadSubir un archivo desde tu máquina operadora local a la máquina agente remota
downloadDescargar un archivo desde la máquina agente remota a la máquina operadora local
scanRealizar un escaneo de red TCP en un rango CIDR con puertos seleccionados
dnsConsulta DNS. Utiliza la configuración DNS del sistema
setEstablecer las rutas de carga de Node para los nodos de ensamblado y scexec
bofEjecutar un archivo COFF y devolver la salida

Set - Carga de nodos desde rutas de exclusión de control de aplicaciones

  • Si hay reglas de control de aplicaciones que impiden la carga de bibliotecas para los archivos de nodo, puedes usar el comando set para cambiar las rutas de carga de assembly.node y scexec.node.
  • Usando ls, cat, cp y mv, es posible enumerar las reglas de control de aplicaciones para descubrir un directorio escribible que sea una exclusión.
  • Con esto, puedes colocar los archivos de nodo en el directorio de exclusión y usar el comando set para cambiar su ruta de carga al directorio de exclusión y así evadir el control de aplicaciones.
  • Para más detalles sobre este vector de ataque, consulta el curso CRTO2 de Daniel Duggan (@_RastaMouse)
root@kitploit:~
[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

Características del agente

Para más información sobre las características del agente, haz clic aquí

Características del cliente

Para más información sobre las características del cliente, haz clic aquí

🧙‍♂️ Despliegue de ilusiones

Primero necesitas identificar una aplicación Electron vulnerable que no realice comprobaciones de integridad de seguridad ASAR, como Microsoft Teams. Las aplicaciones más nuevas pueden tener comprobaciones de integridad que impidan el backdoor. Las versiones más antiguas de la aplicación objetivo son más propensas a ser vulnerables.

  • Guía para descubrir aplicaciones Electron vulnerables

Instrucciones sencillas

No necesitas compilar el agente al hacer backdoor a aplicaciones Electron. Simplemente reemplaza el contenido de {ELECTRONAPP}/resources/app/ con los archivos del agente Loki.

Instrucciones detalladas

Paso 1 : Crear una cuenta de Azure Storage Blob y obtener un token SAS

  • Crear una cuenta de Azure Storage mediante Azure Portal
  • Crear una cuenta de Azure Storage mediante Azure CLI

Paso 2 : Crear un payload Loki ofuscado

  • Clona este repositorio y haz cd en él
  • Instala Node.JS
  • Instala el módulo javascript-obfuscator
root@kitploit:~
npm install --save-dev javascript-obfuscator
  • Ejecuta el script create_agent_payload.js para crear un payload de Loki con la información de tu cuenta de almacenamiento
root@kitploit:~
bobby$ node create_agent_payload.js 
[+] Provide Azure storage account information:
        - Enter Storage Account  : 7f7584ty218ba5dba778.blob.core.windows.net
        - Enter SAS Token        : se=2025-05-28T23%3A14%3A48Z&sp=rwdlac&spr=https&sv=2022-11-02&ss=b&srt=sco&sig=5MXQzJ6FDZK8yYiBSgJ6FDZKgQzJMXBSgg6qE4ydrJ6FDZKSgg%3D

[+] Configuration:
        - Storage Account : 7f7584ty218ba5dba778.blob.core.windows.net
        - SAS Token       : se=2025-05-28T23%3A14%3A48Z&sp=rwdlac&spr=https&sv=2022-11-02&ss=b&srt=sco&sig=5MXQzJ6FDZK8yYiBSgJ6FDZKgQzJMXBSgg6qE4ydrJ6FDZKSgg%3D
        - Meta Container  : mllyi2zjmafjm

[+] Updated /Users/bobby/apr2/LokiC2/config.js with storage configuration. 
 - Enter into the Loki Client UI
        Loki Client > Configuration

[+] Modifying PE binaries to have new hashes...
        - Payload assembly.node hash : e9d126407264821d3c2d324da0e2d1bc13cbc53e7c56340fe12b07f69b707f02
        - Payload keytar.node   hash : 292c14ffebd6cae3df99d9fbee525e29a5a704f076b82207eb3e650de45b075d

[+] Payload ready!
         - Obfuscated payload in the ./app directory

Paso 3 : Comprometer la aplicación Electron

  • Tu payload Loki ofuscado se genera en ./app/
  • Cambia al directorio {ELECTRONAPP}/resources/
  • Elimina todo
  • Copia la carpeta ./app/ de Loki a {ELECTRONAPP}/resources/app/
  • Haz clic en el archivo PE de Electron y asegúrate de que Loki funciona

Paso 4 : Configurar el cliente Loki

  • Inicia el cliente GUI de Loki

  • Desde la barra de menús, haz clic en Loki Client > Configuration para abrir la ventana de configuración

  • Introduce los detalles de tu cuenta de almacenamiento y haz clic en Save

  • El agente debería aparecer ahora en el panel

  • Haz clic en el agente desde la tabla del panel para abrir la ventana del agente

  • Prueba para asegurarte de que Loki funciona correctamente

Comprometer aplicaciones Electron y mantener la aplicación real funcionando con normalidad

La forma más sencilla de usar Loki es reemplazar los archivos en {ELECTRONAPP}/resources/app/ con los archivos de Loki. Esto vacía la aplicación, lo que significa que la aplicación no funcionará con normalidad -- Loki reemplazó su funcionalidad.

Si realmente quieres mantener la aplicación Electron ejecutándose y que además despliegue Loki en segundo plano, ¡no todo está perdido! John Hammond y yo descubrimos una forma de mantener la aplicación Electron real ejecutándose. Hemos añadido el archivo que necesitarás en /loki/backdoor/init.js en este repositorio.

Actualmente está configurado para funcionar con Cursor, descubierto como vulnerable por John Hammond.

Para hacer esto necesitarás:

  • Descargar la aplicación Cursor
  • Pegar todos los archivos de Loki excepto package.json en cursor/resources/app/
    • No reemplaces el package.json real
  • Copiar /loki/backdoor/init.js en cursor/resources/app/
  • Modificar el contenido de cursor/resources/app/package.json para:
    • establecer "main":"init.js",
    • eliminar "type":"module",
    • eliminar "private":true,

Cómo funciona

  • Con estos cambios, Cursor.exe cargará init.js al hacer clic / ejecutarse
  • init.js lee package.json
  • init.js cambia "main":"init.js", a "main":"main.js",
    • main.js es Loki
  • init.js genera y deshereda un nuevo Cursor.exe que apunta a Loki
  • Loki se genera en segundo plano
  • init.js lee package.json de nuevo
  • init.js cambia "main":"main.js", a "main":"./out/main.js",
    • ./out/main.js" es la aplicación real de Cursor
  • init.js genera y deshereda un nuevo Cursor.exe que apunta al Cursor real
  • La aplicación real de Cursor se genera, es visible y funciona con normalidad
  • Cuando el usuario cierra Cursor:
    • init.js captura la salida
    • init.js lee package.json por tercera vez
    • init.js cambia "main":"./out/main.js", a "main":"init.js",

De esta manera, la aplicación queda comprometida de forma persistente y funciona con normalidad. Si la aplicación de Cursor se cierra, Loki continuará ejecutándose en segundo plano.

Futuro

Haré un script para automatizar esto en el futuro.

Recomendaciones de OpSec

  • Recomendaciones de OpSec

Guías de compilación

Estas son las instrucciones de compilación para construir los agentes y clientes. Las instrucciones cubren múltiples plataformas, incluyendo Windows, Linux y macOS. Se recomienda compilar el cliente en la plataforma y arquitectura de destino.

Cliente

  • Windows
  • macOS
  • Linux

Agentes

Si estás comprometiendo una aplicación Electron, no necesitas compilar agentes.

No recomiendo compilar el agente y usarlo en operaciones. Las instrucciones de compilación del agente son para desarrollo.

  • Windows
  • Linux
  • macOS

Guía de detección

  • Revisa la información proporcionada por MITRE para más detalles, ejemplos e información sobre este TTP:
    • MITRE ATT&CK T1218.015: Electron Applications
  • Ejecución de una aplicación Electron desde un directorio anómalo como ~/Downloads/Teams/Teams.exe
  • Aplicaciones Electron haciendo beacon a un Azure Storage Blob *.blob.core.windows.net
  • Uso de tokens SAS en el tráfico de red
  • Aplicaciones Electron generando procesos secundarios como netstat.exe o whoami.exe
  • Se creará un directorio con el nombre del package.json de Loki en ~/AppData/Roaming/{NAME} cuando el JavaScript de Loki se ejecute en el proceso de Electron.
  • Esta entrada de LOLBAS Teams cubre detecciones para el backdoor de aplicaciones Electron. La información de detección se ha copiado a continuación.
  • IOC: directorio %LOCALAPPDATA%\Microsoft\Teams\current\app creado
  • IOC: archivo %LOCALAPPDATA%\Microsoft\Teams\current\app.asar creado/modificado por un instalador/actualizador que no es de Teams
  • Regla SIGMA para detectar el canal C2 de Loki establecido desde una aplicación Electron
  • Regla SIGMA para detectar el secuestro de la carpeta de la aplicación Electron (Teams, VS Code, RingCentral, Postman) para cargar el framework C2

Referencias || Agradecimientos || Investigación ofensiva de Electron

  • Dylan Tran (@d_tranman)
    • Cocreador del agente Loki. Creó los módulos de Node para la ejecución de shellcode y ensamblado.
  • Valentina Palmiotti (@chompie1337), Ellis Springe (@knavesec) y Ruben Boonen por su trabajo interno previo sobre comprometer aplicaciones Electron para persistencia
  • Ruben Boonen
    • Charla en Wild West Hackin’ Fest Statikk Shiv: Aprovechando aplicaciones Electron para post-explotación
  • Andrew Kisliakov
    • Microsoft Teams y otras aplicaciones Electron como LOLbins
  • Shawn Jones
    • Para la ejecución de ensamblado de Loki, Dylan portó el código público InlineExecute-Assembly de Shawn
  • mr.d0x (@mrd0x) por su trabajo previo sobre aprovechar la aplicación Teams Electron para ejecutar código Node.JS arbitrario y publicar sus hallazgos en el proyecto LOLBAS.
  • Michael Taggart
    • Proyecto quASAR, una herramienta diseñada para modificar aplicaciones Electron y permitir la ejecución de comandos
    • Quasar: Comprometiendo aplicaciones Electron
  • Raphael Mudge por inspirarme a profundizar en el red teaming y apoyar el lanzamiento de esta herramienta
    • The Security Conversation
  • Fletcher Davis
    • BSides : Abusando de las aplicaciones Electron
  • Pavel Tsakalidis
    • BEEMKA - Kit de explotación de Electron

Licencia

Este proyecto está bajo la Licencia Business Source License 1.1. El uso no comercial está permitido bajo los términos de la licencia. El uso comercial requiere el permiso explícito del autor. El 3 de abril de 2030, esta licencia se convertirá a Apache 2.0. Consulta LICENSE para más detalles.

Descargar herramienta