Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Loki — 🧙‍♂️ Node.js Command & Control pour le script-jacking d'applications Electron vulnérables | Kitploit
Outils/GitHubGitHub/boku7/loki
Mécanismes de PersistanceExploitationÉvasion IDS/IPSShellcodePost-ExploitationCommandement et ContrôleRed TeamingDéveloppement de Charges Utiles
GitHubboku7/loki

Loki

🧙‍♂️ Node.js Command & Control pour le script-jacking d'applications Electron vulnérables

Voir le dépôt
1.4k220il y a 4 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

🧙‍♂️ Loki — Commande et contrôle

Loki est un framework de commande et contrôle (C2) de stade 1 écrit en Node.js, conçu pour le script-jacking d'applications Electron vulnérables MITRE ATT&CK T1218.015. Développé pour les opérations de red team, Loki permet de contourner les logiciels de sécurité et les contrôles d'applications en exploitant des applications Electron de confiance et signées.

Le script-jacking détourne le flux d'exécution d'une application Electron en modifiant les fichiers JavaScript chargés à l'exécution avec du code Node.js arbitraire. Cette technique peut être utilisée pour :

  • Backdoorer une application Electron
  • Évider une application Electron
  • Chaîner l'exécution vers un autre processus

Bien que plusieurs outils permettent déjà d'exploiter le script-jacking pour chaîner l'exécution vers un autre processus, Loki est le premier à permettre de backdoorer et d'évider des applications Electron signées sans invalider leur signature de code.

Pour plus de détails sur le fonctionnement de Loki, consultez cet article de blog :

  • Bypassing Windows Defender Application Control with Loki C2

🚀 Contributeurs

NomContributions
Bobby CookeCréateur et mainteneur
Dylan TranCréateur
Ellis SpringeTesteur alpha
Shawn JonesCode d'exécution d'assembly
Trusted SecCode de COFFLoader
Simon ExleyCréateur de vidéos
Clinton ElvesCréateur de vidéos
John HammondCréateur de vidéos

Vidéos

Découvrez cette vidéo de John Hammond sur le backdooring de Cursor AI avec Loki C2 ! 🎩

  • Dans la vidéo, il parcourt la découverte d'une nouvelle application Electron vulnérable, son backdooring avec Loki C2, la configuration avec l'interface graphique du client, et nous avons même trouvé deux moyens de maintenir l'application en cours d'exécution en arrière-plan 🪄 -- Cursor fonctionne normalement du point de vue de l'utilisateur final ! 🥷

J'ai backdooré Cursor AI

Découvrez cette vidéo de Simon Exley & Clinton Elves pour démarrer avec Loki C2 ! 🧙‍♂️

Contourner le contrôle d'applications de Windows Defender avec Loki C2

Fonctionnalités et détails

  • Canal C2 Azure Storage Blob
    • Jeton SAS pour protéger le compte de stockage C2
  • Messages C2 chiffrés AES
  • Agent compatible proxy
    • Utilise les processus enfants de rendu Chromium pour l'agent, l'exécution de shellcode et l'exécution de type fork-n-run d'assembly -- hérite des capacités de compatibilité proxy de Chromium.
  • Sans Teamserver
    • Contrairement aux C2 traditionnels où les agents envoient des messages à un Teamserver, il n'y a pas de Teamserver
    • Le client GUI et les agents se connectent tous deux au même data-store
  • Exécution cachée -- s'exécute en arrière-plan

Commandes

Toutes les commandes de l'agent sont écrites en Node.JS natif et ne nécessitent pas de dépendances supplémentaires ni de chargements de bibliothèques. À l'exception des commandes scexec et assembly qui effectuent un chargement de bibliothèque sur keytar.node et assembly.node

  • Toutes les commandes acceptent les chemins utilisant /, les \ dans les chemins ne fonctionneront pas.

Set - Chargement des fichiers .node depuis les chemins d'exclusion du contrôle d'applications

  • S'il existe des règles de contrôle d'applications empêchant les chargements de bibliothèques pour les fichiers .node, vous pouvez utiliser la commande set pour modifier les chemins de chargement de assembly.node et scexec.node.
  • En utilisant ls, cat, cp et mv, vous pourrez peut-être énumérer les règles de contrôle d'applications afin de découvrir un répertoire inscriptible constituant une exclusion.
  • Avec cela, vous pouvez placer les fichiers .node dans le répertoire d'exclusion et utiliser la commande set pour modifier leur chemin de chargement vers le répertoire d'exclusion afin de contourner le contrôle d'applications.
  • Pour plus de détails sur ce vecteur d'attaque, consultez le cours 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

Fonctionnalités de l'agent

Cliquez ici pour plus d'informations sur les fonctionnalités de l'agent

Fonctionnalités du client

Cliquez ici pour plus d'informations sur les fonctionnalités du client

🧙‍♂️ Déployer des illusions

Vous devez d'abord identifier une application Electron vulnérable qui n'effectue pas de contrôles d'intégrité de sécurité ASAR, comme Microsoft Teams. Les applications plus récentes peuvent avoir des contrôles d'intégrité empêchant le backdooring. Les versions plus anciennes de l'application cible sont plus susceptibles d'être vulnérables.

  • Guide pour découvrir des applications Electron vulnérables

Instructions simples

Vous n'avez pas besoin de compiler l'agent pour backdoorer des applications Electron. Remplacez simplement le contenu de {ELECTRONAPP}/resources/app/ par les fichiers de l'agent Loki.

Instructions détaillées

Étape 1 : Créer un compte Azure Storage Blob et obtenir un jeton SAS

  • Créer un compte de stockage Azure via le portail Azure
  • Créer un compte de stockage Azure via Azure CLI

Étape 2 : Créer une payload Loki obfusquée

  • Clonez ce dépôt et cd dans celui-ci
  • Installez Node.JS
  • Installez le module javascript-obfuscator
root@kitploit:~
npm install --save-dev javascript-obfuscator
  • Exécutez le script create_agent_payload.js pour créer une payload Loki avec les informations de votre compte de stockage
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

Étape 3 : Backdoorer une application Electron

  • Votre payload Loki obfusquée est générée dans ./app/
  • Placez-vous dans le répertoire {ELECTRONAPP}/resources/
  • Supprimez tout
  • Copiez le dossier Loki ./app/ vers {ELECTRONAPP}/resources/app/
  • Cliquez sur le fichier PE Electron et assurez-vous que Loki fonctionne

Étape 4 : Configurer le client Loki

  • Lancez le client GUI Loki

  • Dans la barre de menus, cliquez sur Loki Client > Configuration pour ouvrir la fenêtre des paramètres

  • Saisissez les détails de votre compte de stockage et cliquez sur Save

  • L'agent devrait maintenant apparaître dans le tableau de bord

  • Cliquez sur l'agent dans le tableau du tableau de bord pour ouvrir la fenêtre de l'agent

  • Testez pour vous assurer que Loki fonctionne correctement

Backdoorer des applications Electron tout en gardant l'application réelle fonctionnant normalement

La façon la plus simple d'utiliser Loki est de remplacer les fichiers dans {ELECTRONAPP}/resources/app/ par les fichiers Loki. Cela évide l'application, ce qui signifie qu'elle ne fonctionnera plus normalement -- Loki a remplacé ses fonctionnalités.

Si vous voulez vraiment garder l'application Electron en cours d'exécution et qu'elle déploie aussi Loki en arrière-plan, tout espoir n'est pas perdu ! John Hammond et moi avons trouvé un moyen de maintenir la véritable application Electron en fonctionnement. Nous avons ajouté le fichier dont vous aurez besoin dans /loki/backdoor/init.js de ce dépôt.

Il est actuellement configuré pour fonctionner avec Cursor, dont la vulnérabilité a été découverte par John Hammond.

Pour ce faire, vous aurez besoin de :

  • Télécharger l'application Cursor
  • Coller tous les fichiers Loki, sauf package.json, dans cursor/resources/app/
    • Ne remplacez pas le vrai package.json
  • Copier /loki/backdoor/init.js vers cursor/resources/app/
  • Modifier le contenu de cursor/resources/app/package.json pour :
    • définir "main":"init.js",
    • supprimer "type":"module",
    • supprimer "private":true,

Comment cela fonctionne

  • Avec ces modifications, Cursor.exe chargera init.js au clic / à l'exécution
  • init.js lit package.json
  • init.js change "main":"init.js", -> "main":"main.js",
    • main.js est Loki
  • init.js lance et détache un nouveau Cursor.exe qui pointe vers Loki
  • Loki est lancé en arrière-plan
  • init.js lit à nouveau package.json
  • init.js change "main":"main.js", ->

Ainsi, l'application est backdoorée de manière persistante et fonctionne normalement. Si l'application Cursor est quittée, Loki continuera de s'exécuter en arrière-plan.

À venir

Je créerai un script pour automatiser cela à l'avenir.

Recommandations OPSEC

  • Recommandations OPSEC

Guides de compilation

Voici les instructions de compilation pour construire les agents et les clients. Les instructions couvrent plusieurs plateformes, notamment Windows, Linux et macOS. Il est recommandé de compiler le client sur la plateforme et l'architecture cibles.

Client

  • Windows
  • macOS
  • Linux

Agents

Si vous backdoorrez une application Electron, vous n'avez pas besoin de compiler les agents.

Je ne recommande pas de compiler l'agent et de l'utiliser pour des opérations. Les instructions de compilation de l'agent sont destinées au développement.

  • Windows
  • Linux
  • macOS

Conseils de détection

  • Examinez les informations fournies par MITRE pour plus de détails, des exemples et des informations sur cette TTP :
    • MITRE ATT&CK T1218.015: Electron Applications
  • Exécution d'une application Electron depuis un répertoire anormal tel que ~/Downloads/Teams/Teams.exe
  • Applications Electron établissant un beaconing vers un Azure Storage Blob *.blob.core.windows.net
  • Utilisation du jeton SAS dans le trafic réseau
  • Applications Electron lançant des processus enfants tels que netstat.exe ou whoami.exe
  • Un répertoire portant le nom indiqué dans le package.json de Loki sera créé dans ~/AppData/Roaming/{NAME} lorsque le JavaScript de Loki s'exécute dans le processus Electron.
  • Cette entrée LOLBAS Teams couvre les détections du backdooring d'applications Electron. Les informations de détection ont été copiées ci-dessous.
  • IOC : répertoire %LOCALAPPDATA%\Microsoft\Teams\current\app créé
  • IOC : fichier %LOCALAPPDATA%\Microsoft\Teams\current\app.asar créé/modifié par un programme d'installation/mise à jour non-Teams
  • Règle SIGMA pour détecter un canal C2 Loki établi depuis une application Electron

Références || Remerciements || Recherche offensive sur Electron

  • Dylan Tran (@d_tranman)
    • Co-créateur de l'agent Loki. A créé les modules Node pour l'exécution de shellcode et d'assembly.
  • Valentina Palmiotti (@chompie1337), Ellis Springe (@knavesec) et Ruben Boonen pour leurs travaux internes antérieurs sur le backdooring d'applications Electron à des fins de persistance
  • Ruben Boonen
    • Wild West Hackin’ Fest talk Statikk Shiv: Leveraging Electron Applications for Post-Exploitation
  • Andrew Kisliakov
    • Microsoft Teams and other Electron Apps as LOLbins
  • Shawn Jones
    • Pour l'exécution d'assembly de Loki, Dylan a porté le code public InlineExecute-Assembly de Shawn
  • mr.d0x (@mrd0x) pour ses travaux antérieurs sur l'utilisation de l'application Electron Teams pour exécuter du code Node.JS arbitraire et la publication de ses découvertes dans le projet LOLBAS.
  • Michael Taggart
    • Projet quASAR, un outil conçu pour modifier des applications Electron afin de permettre l'exécution de commandes
    • Quasar : Compromettre des applications Electron
  • Raphael Mudge pour m'avoir inspiré à plonger en profondeur dans le red teaming et pour avoir soutenu la sortie de cet outil
    • The Security Conversation
  • Fletcher Davis
    • BSides : Abuser des applications Electron

Licence

Ce projet est distribué sous la Business Source License 1.1. L'utilisation non commerciale est autorisée selon les termes de la licence. L'utilisation commerciale nécessite l'autorisation explicite de l'auteur. Le 3 avril 2030, cette licence deviendra Apache 2.0. Voir LICENSE pour tous les détails.

Télécharger l’outil
CommandeDescription
helpAfficher l'aide. Utilisation : help ou help scan
pwdAfficher le répertoire de travail
lsLister les fichiers et répertoires
catAfficher le contenu d'un fichier
envAfficher les variables d'environnement du processus
spawnLancer un processus enfant
drivesLister les lecteurs
mvDéplacer un fichier vers une nouvelle destination
sleepMettre en pause pendant des secondes avec jitter
cpCopier un fichier source vers une destination
exit-allQuitte l'agent, l'agent ne rappellera plus
loadCharger un fichier PE Node depuis le disque dans le processus
scexecExécuter du shellcode
assemblyExécuter un assembly .NET et obtenir la sortie de la commande
uploadTéléverser un fichier depuis la machine locale de l'opérateur vers la machine distante de l'agent
downloadTélécharger un fichier depuis la machine distante de l'agent vers la machine locale de l'opérateur
scanEffectuer un scan réseau TCP sur une plage CIDR avec les ports sélectionnés
dnsRésolution DNS. Utilise la configuration DNS du système
setDéfinir les chemins de chargement Node pour les nœuds assembly et scexec
bofExécuter un fichier COFF et renvoyer la sortie
"main":"./out/main.js",
  • ./out/main.js" est la véritable application Cursor
  • init.js lance et détache un nouveau Cursor.exe qui pointe vers le vrai Cursor
  • La véritable application Cursor est lancée, visible et fonctionne normalement
  • Lorsque l'utilisateur quitte Cursor :
    • init.js intercepte la sortie
    • init.js lit package.json une troisième fois
    • init.js change "main":"./out/main.js", -> "main":"init.js",
  • Règle SIGMA pour détecter le détournement du dossier applicatif d'Electron (Teams, VS Code, RingCentral, Postman) afin de charger un framework C2
  • Pavel Tsakalidis
    • BEEMKA - Boîte à outils d'exploitation Electron