
🧙♂️ Node.js Command & Control для перехвата скриптов в уязвимых Electron-приложениях
Loki — это C2-фреймворк первой стадии (stage-1), написанный на Node.js, созданный для script-jacking’а уязвимых Electron-приложений MITRE ATT&CK T1218.015. Разработанный для red team-операций, Loki позволяет обходить защитное ПО и обходить контроль приложений за счёт эксплуатации доверенных, подписанных Electron-приложений.
Script-jacking перехватывает поток выполнения Electron-приложения, изменяя JavaScript-файлы, загружаемые во время выполнения, с помощью произвольного Node.js-кода. Этот приём можно использовать для:
Хотя некоторые существующие инструменты уже используют script-jacking для связывания выполнения с другим процессом, Loki — первый, кто позволяет внедрять бэкдоры и опустошать (hollow) подписанные Electron-приложения без аннулирования их подписи кода.
Более подробно о том, как работает Loki, читайте в этом блоге:

| Имя | Вклад |
|---|---|
| Bobby Cooke | Создатель и сопровождающий |
| Dylan Tran | Создатель |
| Ellis Springe | Альфа-тестировщик |
| Shawn Jones | Код выполнения сборок |
| Trusted Sec | Код COFFLoader |
| Simon Exley | Автор видео |
| Clinton Elves | Автор видео |
| John Hammond | Автор видео |
Посмотрите это видео от John Hammond о внедрении бэкдора в Cursor AI с помощью Loki C2! 🎩
Посмотрите это видео от Simon Exley & Clinton Elves о том, как начать работу с Loki C2! 🧙♂️
Все команды агента написаны на нативном Node.js и не требуют дополнительных зависимостей или событий загрузки библиотек. Исключение составляют команды scexec и assembly, которые выполняют загрузку библиотек keytar.node и assembly.node.
/; \ в путях работать не будет.| Command | Description |
|---|---|
help | Показать справку. Использование: help или help scan |
pwd | Показать рабочий каталог |
ls | Список файлов и каталогов |
cat | Показать содержимое файла |
env | Показать переменные окружения процесса |
spawn | Запустить дочерний процесс |
drives | Список дисков |
mv | Переместить файл в новое место |
sleep | Приостановить выполнение на указанное число секунд с джиттером |
cp | Скопировать исходный файл в место назначения |
exit-all | Завершить агент; агент больше не будет выходить на связь |
load | Загрузить node PE-файл с диска в процесс |
scexec | Выполнить шеллкод |
assembly | Выполнить .NET-сборку и получить вывод команды |
upload | Загрузить файл с вашего локального компьютера оператора на удалённый агент |
download | Скачать файл с удалённого агента на локальный компьютер оператора |
scan | Выполнить TCP-сканирование сети в диапазоне CIDR по выбранным портам |
dns | DNS-запрос. Использует системную DNS-конфигурацию |
set | Задать пути загрузки Node для модулей assembly и scexec |
bof | Выполнить COFF-файл и вернуть вывод |
Set — загрузка модулей из путей исключений контроля приложенийset, чтобы изменить пути загрузки для assembly.node и scexec.node.ls, cat, cp и mv вы можете перечислить правила контроля приложений и найти доступный для записи каталог, который является исключением.set, чтобы изменить путь их загрузки на этот каталог и обойти контроль приложений.[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
Дополнительную информацию о возможностях агента смотрите здесь
Дополнительную информацию о возможностях клиента смотрите здесь
Сначала вам нужно найти уязвимое Electron-приложение, которое не выполняет проверки целостности ASAR, например Microsoft Teams. В более новых приложениях могут быть проверки целостности, препятствующие внедрению бэкдора. Более старые версии целевого приложения с большей вероятностью окажутся уязвимыми.