Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Loki — 🧙‍♂️ Comando e Controle em Node.js para Script-Jacking de Aplicações Electron Vulneráveis | Kitploit
Ferramentas/GitHubGitHub/boku7/loki
Mecanismos de PersistênciaExploraçãoEvasão de IDS/IPSShellcodePós-ExploraçãoComando e ControleRed TeamingDesenvolvimento de Payloads
GitHubboku7/loki

Loki

🧙‍♂️ Comando e Controle em Node.js para Script-Jacking de Aplicações Electron Vulneráveis

Ver Repositório
1.4k220há 4 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

🧙‍♂️ Loki Comando e Controle

Loki é um framework de comando e controle (C2) de estágio 1 escrito em Node.js, criado para fazer script-jacking em aplicativos Electron vulneráveis MITRE ATT&CK T1218.015. Desenvolvido para operações de red team, o Loki permite evasão de software de segurança e contorna controles de aplicativos ao explorar aplicativos Electron confiáveis e assinados.

O script-jacking sequestra o fluxo de execução de um aplicativo Electron ao modificar arquivos JavaScript carregados em tempo de execução com código Node.js arbitrário. Essa técnica pode ser usada para:

  • Criar backdoor em aplicativo Electron
  • Esvaziar (hollow) aplicativo Electron
  • Encadear a execução para outro processo

Embora várias ferramentas já abordem o uso de script-jacking para encadear a execução a outro processo, o Loki é o primeiro a permitir backdoor e hollow em aplicativos Electron assinados sem invalidar a assinatura de código deles.

Para mais detalhes sobre como o Loki funciona, confira este post do blog:

  • Bypassing Windows Defender Application Control with Loki C2

🚀 Contribuidores

NameContributions
Bobby CookeCriador e mantenedor
Dylan TranCriador
Ellis SpringeTestador Alfa
Shawn JonesCódigo de execução de assembly
Trusted SecCódigo do COFFLoader
Simon ExleyCriador de vídeo
Clinton ElvesCriador de vídeo
John HammondCriador de vídeo

Vídeos

Confira este vídeo de John Hammond sobre como criar backdoor no Cursor AI com o Loki C2! 🎩

  • No vídeo, ele mostra a descoberta de um novo aplicativo Electron vulnerável, a criação de backdoor nele com o Loki C2, a configuração com a GUI do cliente, e ainda criamos duas formas de manter o aplicativo rodando persistentemente em segundo plano 🪄 -- Cursor funciona normalmente do ponto de vista do usuário final! 🥷

Criei backdoor no Cursor AI

Confira este vídeo de Simon Exley & Clinton Elves sobre como começar a usar o Loki C2! 🧙‍♂️

Contornando o Windows Defender Application Control com o Loki C2

Recursos e Detalhes

  • Canal C2 do Azure Storage Blob
    • Token SAS para proteger a conta de armazenamento do C2
  • Mensagens C2 criptografadas com AES
  • Agente com suporte a proxy
    • Usa processos filhos do renderizador Chromium para o agente, execução de shellcode e execução estilo fork-n-run de assembly -- herda os recursos de suporte a proxy do Chromium.
  • Sem Teamserver
    • Diferente dos C2s tradicionais, onde os agentes enviam mensagens para um Teamserver, não há Teamserver
    • O cliente GUI e os agentes fazem check-in no mesmo data-store
  • Execução oculta -- roda em segundo plano

Comandos

Todos os comandos do agente são escritos em Node.JS nativo e não exigem dependências adicionais ou eventos de carregamento de bibliotecas. Com exceção dos comandos scexec e assembly, que fazem carregamento de biblioteca em keytar.node e assembly.node.

  • Todos os comandos aceitam caminhos usando /; \ em caminhos não funcionará.

Set - Carregando Nós a partir de Caminhos de Exclusão do Application Control

  • Se houver regras de controle de aplicativo impedindo carregamentos de biblioteca para os arquivos de nó, você pode usar o comando set para alterar os caminhos de carregamento de assembly.node e scexec.node.
  • Usando ls, cat, cp e mv, você pode enumerar as regras de controle de aplicativo para descobrir um diretório gravável que seja uma exclusão.
  • Com isso, você pode colocar os arquivos de nó no diretório de exclusão e usar o comando set para alterar o caminho de carregamento deles para o diretório de exclusão, contornando o controle de aplicativo.
  • Para mais detalhes sobre esse vetor de ataque, consulte o 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

Recursos do Agente

Para mais informações sobre os recursos do Agente, clique aqui

Recursos do Cliente

Para mais informações sobre os recursos do Cliente, clique aqui

🧙‍♂️ Implantando Ilusões

Primeiro, você precisa identificar um aplicativo Electron vulnerável que não faça verificações de integridade de segurança do ASAR, como o Microsoft Teams. Aplicativos mais novos podem ter verificações de integridade que impedem o backdoor. Versões mais antigas do aplicativo alvo têm maior probabilidade de serem vulneráveis.

  • Guia para descobrir aplicativos Electron vulneráveis

Instruções Simples

Você não precisa compilar o agente ao criar backdoor em aplicativos Electron. Basta substituir o conteúdo de {ELECTRONAPP}/resources/app/ pelos arquivos do agente Loki.

Instruções Detalhadas

Passo 1 : Criar uma conta de Azure Storage Blob e obter o token SAS

  • Criar conta de Armazenamento do Azure pelo Portal do Azure
  • Criar conta de Armazenamento do Azure via CLI do Azure

Passo 2 : Criar o payload Loki ofuscado

  • Clone este repositório e entre nele com cd
  • Instale o Node.JS
  • Instale o módulo javascript-obfuscator
root@kitploit:~
npm install --save-dev javascript-obfuscator
  • Execute o script create_agent_payload.js para criar um payload Loki com as informações da sua conta de armazenamento
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

Passo 3 : Criar backdoor no aplicativo Electron

  • Seu payload Loki ofuscado é gerado em ./app/
  • Mude o diretório para {ELECTRONAPP}/resources/
  • Exclua tudo
  • Copie a pasta ./app/ do Loki para {ELECTRONAPP}/resources/app/
  • Clique no arquivo PE do Electron e verifique se o Loki funciona

Passo 4 : Configurar o Cliente Loki

  • Inicie o cliente GUI do Loki

  • Na barra de menus, clique em Loki Client > Configuration para abrir a janela de Configurações

  • Insira os detalhes da sua conta de armazenamento e clique em Save

  • O agente agora deve aparecer no painel

  • Clique no agente na tabela do painel para abrir a janela do agente

  • Teste para garantir que o Loki funcione corretamente

Criando Backdoor em Aplicativos Electron e Mantendo o Aplicativo Real Funcionando Normalmente

A maneira mais direta de usar o Loki é substituir os arquivos em {ELECTRONAPP}/resources/app/ pelos arquivos do Loki. Isso esvazia o aplicativo, ou seja, ele não funcionará normalmente -- o Loki substituiu a funcionalidade dele.

Se você realmente quiser manter o aplicativo Electron em execução e também implantar o Loki em segundo plano, nem tudo está perdido! John Hammond e eu descobrimos uma maneira de manter o aplicativo Electron real em execução. Adicionamos o arquivo que você precisará em /loki/backdoor/init.js neste repositório.

Atualmente, ele está configurado para funcionar com o Cursor, que foi descoberto como vulnerável por John Hammond.

Para fazer isso, você precisará de:

  • Baixar o aplicativo Cursor
  • Colar todos os arquivos do Loki, exceto package.json, em cursor/resources/app/
    • Não substitua o package.json real
  • Copiar /loki/backdoor/init.js para cursor/resources/app/
  • Modificar o conteúdo de cursor/resources/app/package.json para:
    • definir "main":"init.js",
    • remover "type":"module",
    • remover "private":true,

Como isso funciona

  • Com essas alterações, Cursor.exe carregará init.js ao ser clicado / executado
  • init.js lê o package.json
  • init.js altera "main":"init.js", -> "main":"main.js",
    • main.js é o Loki
  • init.js cria e desassocia um novo Cursor.exe que aponta para o Loki
  • O Loki é iniciado em segundo plano
  • init.js lê o package.json novamente
  • init.js altera "main":"main.js", ->

Dessa forma, o aplicativo fica persistentemente com backdoor e opera normalmente. Se o aplicativo Cursor for fechado, o Loki continuará rodando em segundo plano.

Futuro

Futuramente, criarei um script para automatizar isso.

Recomendações de Opsec

  • Recomendações de Opsec

Guias de Compilação

Estas são as instruções de compilação para construir os agentes e clientes. As instruções abrangem várias plataformas, incluindo Windows, Linux e macOS. Recomenda-se compilar o cliente na plataforma e arquitetura de destino.

Cliente

  • Windows
  • macOS
  • Linux

Agentes

Se você estiver criando backdoor em um aplicativo Electron, não precisará compilar os agentes.

Não recomendo compilar o agente e usá-lo em operações. As instruções de compilação do agente são para desenvolvimento.

  • Windows
  • Linux
  • macOS

Orientação de Detecção

  • Revise as informações fornecidas pela MITRE para mais detalhes, exemplos e informações sobre essa TTP :
    • MITRE ATT&CK T1218.015: Electron Applications
  • Execução de um aplicativo Electron a partir de um diretório anormal, como ~/Downloads/Teams/Teams.exe
  • Aplicativos Electron fazendo beacon para um Azure Storage Blob *.blob.core.windows.net
  • Uso de token SAS no tráfego de rede
  • Aplicativos Electron criando processos filhos como netstat.exe ou whoami.exe
  • Um diretório com o nome presente no package.json do Loki será criado em ~/AppData/Roaming/{NAME} quando o JavaScript do Loki for executado no processo Electron.
  • Esta entrada do LOLBAS Teams cobre detecções para backdoor em aplicativos Electron. As informações de detecção foram copiadas abaixo.
  • IOC: diretório %LOCALAPPDATA%\Microsoft\Teams\current\app criado
  • IOC: arquivo %LOCALAPPDATA%\Microsoft\Teams\current\app.asar criado/modificado por instalador/atualizador que não seja do Teams
  • Regra SIGMA para detectar canal C2 do Loki estabelecido a partir de um aplicativo Electron

Referências || Agradecimentos || Pesquisa Ofensiva com Electron

  • Dylan Tran (@d_tranman)
    • Cocriador do agente Loki. Criou os módulos Node para execução de shellcode e assembly.
  • Valentina Palmiotti (@chompie1337), Ellis Springe (@knavesec) e Ruben Boonen pelo trabalho interno anterior deles em criar backdoor em aplicativos Electron para persistência
  • Ruben Boonen
    • Palestra do Wild West Hackin’ Fest Statikk Shiv: Aproveitando Aplicativos Electron para Pós-Exploração
  • Andrew Kisliakov
    • Microsoft Teams e outros aplicativos Electron como LOLbins
  • Shawn Jones
    • Para a execução de assembly do Loki, o Dylan portou o código público InlineExecute-Assembly do Shawn
  • mr.d0x (@mrd0x) pelo trabalho anterior sobre o uso do aplicativo Electron do Teams para executar código Node.JS arbitrário e publicar as descobertas no projeto LOLBAS.
  • Michael Taggart
    • Projeto quASAR, uma ferramenta projetada para modificar aplicativos Electron e permitir execução de comandos
    • Quasar: Comprometendo Aplicativos Electron
  • Raphael Mudge por me inspirar a mergulhar fundo em red teaming e apoiar o lançamento desta ferramenta
    • The Security Conversation
  • Fletcher Davis
    • BSides: Abusando de Aplicativos Electron
  • Pavel Tsakalidis

Licença

Este projeto é licenciado sob a Business Source License 1.1. O uso não comercial é permitido nos termos da licença. O uso comercial requer a permissão explícita do autor. Em 3 de abril de 2030, esta licença será convertida para Apache 2.0. Consulte LICENSE para detalhes completos.

Baixar ferramenta
ComandoDescrição
helpExibe a ajuda. Uso: help ou help scan
pwdExibe o diretório de trabalho
lsLista arquivos e diretórios
catExibe o conteúdo de um arquivo
envExibe as variáveis de ambiente do processo
spawnCria um processo filho
drivesLista unidades
mvMove um arquivo para um novo destino
sleepDorme por segundos com jitter
cpCopia um arquivo de origem para um destino
exit-allEncerra o agente; o agente não fará mais callback
loadCarrega um arquivo PE do Node do disco para o processo
scexecExecuta shellcode
assemblyExecuta um assembly .NET e obtém a saída do comando
uploadEnvia um arquivo da sua máquina local do operador para a máquina remota do agente
downloadBaixa um arquivo da máquina remota do agente para a máquina local do operador
scanRealiza varredura de rede TCP em um intervalo CIDR com as portas selecionadas
dnsConsulta DNS. Utiliza a configuração de DNS do sistema
setDefine os caminhos de carregamento do Node para os nós assembly e scexec
bofExecuta um arquivo COFF e retorna a saída
"main":"./out/main.js",
  • ./out/main.js" é o aplicativo Cursor real
  • init.js cria e desassocia um novo Cursor.exe que aponta para o Cursor real
  • O aplicativo Cursor real é iniciado, fica visível e opera normalmente
  • Quando o Cursor é fechado pelo usuário:
    • init.js captura a saída
    • init.js lê o package.json pela terceira vez
    • init.js altera "main":"./out/main.js", -> "main":"init.js",
  • Regra SIGMA para detectar o sequestro da pasta de aplicativos do Electron (Teams, VS Code, RingCentral, Postman) para carregar um framework C2
    • BEEMKA - Kit de Ferramentas para Exploração de Electron