
JavaScript-маяки и C2 для использования в качестве XSS-полезной нагрузки или имплантов пост-эксплуатации на веб-серверах приложений или настольном ПО для отслеживания пользователей и поддержания постоянства. Включены импланты для расширений браузера, приложений Electron и приложений Node/Bun.
Основные изменения документируются в объявлениях проекта:
https://github.com/hoodoer/JS-Tap/discussions/categories/announcements
Вы можете прочитать оригинальную статью в блоге о JS-Tap здесь:
https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams
Короткое демо с ShmooCon версии JS-Tap 1:
https://youtu.be/IDLMMiqV6ss?si=XunvnVarqSIjx_x0&t=19814
Демо версии JS-Tap 2 на HackSpaceCon, включая C2 и как использовать его в качестве имплантата после эксплуатации:
https://youtu.be/aWvNLJnqObQ?t=11719
Демо автоматического генератора полезной нагрузки, использующего перехваченные отправки форм и сетевой трафик JavaScript в качестве шаблона для создания пользовательских нагрузок C2:
https://www.youtube.com/watch?v=cU915mxLfTo
Демо на CactusCon версии v2, включая функцию мимикрии:
https://youtu.be/O7-zxAmP13o?si=gchYwOJksutCCUPH
Демо v3 Beacons (бета-код):
https://youtu.be/-esrfSHqZeo
Я не планирую создавать скрипты миграции для базы данных, и увеличение номера версии часто влечет за собой изменения схемы базы данных (проверьте журналы изменений). При обновлении версий вам, вероятно, следует удалить базу данных jsTap.db. Если у вас есть пользовательские нагрузки на сервере JS-Tap, обязательно экспортируйте их перед удалением файлов базы данных.
JS-Tap — это набор инструментов на основе JavaScript для наступательных операций (red teaming). Он начинался как универсальная JavaScript-нагрузка для атак на веб-приложения через XSS или имплантат после эксплуатации, и вырос до расширений браузера и имплантатов для десктопных приложений Electron — все они подключаются к единому C2-серверу.
Нагрузка не требует, чтобы целевой пользователь, запускающий нагрузку, был аутентифицирован в атакуемом приложении, и не требует предварительных знаний о приложении, кроме нахождения способа внедрить JavaScript в приложение.
Вместо атаки на сам сервер приложения, нагрузка JS-Tap фокусируется на клиентской стороне приложения и активно инструментирует клиентский код. Система C2 позволяет добавлять пользовательские JavaScript-нагрузки и запускать их как задачи на клиентах JS-Tap, предоставляя средства для прямой атаки на сервер приложения. Для ускорения перехода к атаке на сервер JS-Tap теперь включает функцию «mimic» для автоматической генерации пользовательских нагрузок и передачи их в систему C2.
Пример нагрузки DOM Beacon содержится в файле telemlib.js в каталоге payloads, однако любой файл в этом каталоге обслуживается без аутентификации, поэтому вы можете одновременно обслуживать несколько нагрузок с разными конфигурациями, нацеленными на разные приложения.
Скопируйте файл telemlib.js в любое имя файла по вашему желанию и измените конфигурацию по мере необходимости. Этот файл не обфусцирован. Перед использованием в рамках операции настоятельно рекомендуется изменить имена конечных точек, удалить комментарии и сильно обфусцировать нагрузку. По умолчанию приложение использует довольно очевидные конечные точки API (например, /loot/screenshot); в Настройках приложения вы можете включить обфускацию трафика.
Внимательно изучите раздел конфигурации ниже перед использованием на публично доступном сервере.
JS-Tap имеет пять типов маяков/агентов, подключающихся к одному серверу:
| Тип маяка | Что это такое | Как попадает |
|---|---|---|
| DOM Beacon (telemlib.js) | JavaScript-нагрузка, внедряемая на веб-страницу. Инструментирует DOM, захватывает активность пользователя, скриншоты, сетевые вызовы. | Уязвимость XSS или прямое добавление в JavaScript-файлы целевого приложения (после эксплуатации). |
| BEX Beacon | Расширение браузера (Chrome MV3 / Firefox MV2). Отслеживает всю активность просмотра, захватывает куки (включая httpOnly), localStorage, sessionStorage и заголовки запросов. Может внедрять DOM Beacons в определенные домены по команде. | Установлен в браузере цели (социальная инженерия, физический доступ, корпоративная политика и т.д.). |
| Sidecar | Нативный Go-бинарник, запускаемый на ОС цели. Предоставляет просмотр файловой системы, чтение файлов и выполнение команд. | Установлен рядом с BEX Beacon через нативные сообщения. Требует BEX Beacon для ретрансляции команд. |
| Atom Beacon | Двухуровневый имплантат для десктопных приложений Electron. Внедряет агента главного процесса (среда выполнения Node.js) + нагрузки рендерера во все окна приложения. Сочетает сбор данных на уровне браузера с доступом к ОС на уровне хоста — отдельный бинарник не требуется. Поддерживает режим прокси браузера. | Внедрен в ASAR-архив целевого приложения Electron (или распакованный каталог приложения) с помощью atomize.py. |
| V8 Beacon | JavaScript-агент для приложений командной строки на Node.js и Bun (Gemini CLI, Claude Code и т.д.). Перехватывает все сетевые вызовы HTTP/Fetch, захватывает нажатия клавиш, предоставляет доступ к файловой системе и оболочке. Поддерживает режим прокси браузера. Не требует зависимостей. | Внедряется через переменную окружения: NODE_OPTIONS="--require" (Node.js) или BUN_OPTIONS="--preload" (Bun). Не требует модификации приложения. |
Все пять сообщают на один и тот же портал сервера JS-Tap, где просматривается добыча и выдаются команды C2.
Портал также включает два инструмента клонирования сессий:
| Инструмент | Что делает |
|---|---|
| Browser Proxy | MITM-прокси на сервере JS-Tap, который маршрутизирует HTTP/HTTPS трафик оператора через браузер (или процесс Node.js) жертвы через WebSocket. Запросы выполняются из сетевого контекста жертвы, поэтому целевой сайт видит IP-адрес жертвы и её TLS-отпечаток. Комбинируйте с Session Ticket для аутентифицированного просмотра через сеть жертвы. Поддерживается маяками BEX, Atom и V8. См. Browser Proxy ниже. |
| JS-Tap Conductor | Автономное расширение Firefox, которое импортирует данные сессии, захваченные BEX Beacon (как «JS-Tap Ticket»), и воспроизводит их локально — устанавливает куки, внедряет заголовки, заполняет хранилище и подменяет User-Agent — так что оператор может просматривать сайты как жертва. См. JS-Tap Tickets & JS-Tap Conductor ниже. |
Автономный DOM Beacon: Нагрузка DOM Beacon (telemlib.js) работает независимо. Внедрите её через XSS или имплантируйте в JS-файлы цели. Она сама «перезванивает» на сервер JS-Tap.
BEX Beacon как дроппер: BEX Beacon отслеживает просмотр и собирает пассивную разведку (куки, localStorage, sessionStorage, заголовки запросов, навигацию). С портала JS-Tap вы можете отдать команду маяку внедрить DOM Beacon в определенный домен. DOM Beacon, порождённый BEX Beacon, получает качественные скриншоты через API расширения captureVisibleTab (режим «BEX-Assist»).
Sidecar для доступа к ОС: При установке бинарник Sidecar даёт BEX Beacon доступ к операционной системе. Команды отправляются с портала JS-Tap, ретранслируются через зашифрованный канал маяка к нативному бинарнику, и результаты отправляются обратно. Это превращает расширение браузера в точку опоры для доступа к файловой системе и выполнения команд.