
Beacons JavaScript e C2 para serem usados como payload XSS ou implantes de pós-exploração em servidores de aplicações web ou software desktop para monitorar usuários e manter persistência. Estão incluídos implantes de extensão de navegador, aplicativo Electron e aplicativo Node/Bun.
Alterações principais estão documentadas nos Anúncios do projeto:
https://github.com/hoodoer/JS-Tap/discussions/categories/announcements
Pode ler o post original do blog sobre o JS-Tap aqui:
https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams
Breve demonstração do ShmooCon da versão 1 do JS-Tap:
https://youtu.be/IDLMMiqV6ss?si=XunvnVarqSIjx_x0&t=19814
Demonstração da versão 2 do JS-Tap no HackSpaceCon, incluindo C2 e como usá-lo como um implante pós-exploração:
https://youtu.be/aWvNLJnqObQ?t=11719
Demonstração do gerador automático de payloads, que utiliza submissões de formulários e tráfego de rede JavaScript interceptados como um modelo para gerar payloads C2 personalizados:
https://www.youtube.com/watch?v=cU915mxLfTo
Demonstração no CactusCon da v2 incluindo a funcionalidade de mímica:
https://youtu.be/O7-zxAmP13o?si=gchYwOJksutCCUPH
Demonstração dos Beacons v3, código beta:
https://youtu.be/-esrfSHqZeo
Não pretendo criar scripts de migração para a base de dados, e os aumentos de número de versão frequentemente envolvem alterações no esquema da base de dados (verifique os registos de alterações). Provavelmente deverá eliminar a sua base de dados jsTap.db em aumentos de versão. Se tiver payloads personalizados no seu servidor JS-Tap, certifique-se de os exportar antes de eliminar os ficheiros da base de dados.
O JS-Tap é um toolkit ofensivo baseado em JavaScript para red teams. Começou como um payload JavaScript genérico para atacar aplicações web via XSS ou implante pós-exploração, e cresceu para incluir extensões de navegador e implantes de aplicações de desktop Electron — todos reportando a um único servidor C2.
O payload não requer que o utilizador alvo que executa o payload esteja autenticado na aplicação atacada, e não requer qualquer conhecimento prévio da aplicação para além de encontrar uma forma de inserir o JavaScript na aplicação.
Em vez de atacar o servidor da aplicação em si, o payload JS-Tap foca-se no lado do cliente da aplicação e instrumenta fortemente o código do lado do cliente. Um sistema C2 permite que payloads JavaScript personalizados sejam adicionados e executados como tarefas nos clientes JS-Tap, fornecendo um meio para atacar diretamente o servidor da aplicação. Para facilitar uma transição mais rápida para atacar o servidor, o JS-Tap agora inclui uma funcionalidade "mímica" para gerar automaticamente payloads personalizados e entregá-los ao sistema C2.
O exemplo de payload DOM Beacon está contido no ficheiro telemlib.js no diretório de payloads, no entanto qualquer ficheiro neste diretório é servido sem autenticação, pelo que pode servir múltiplos payloads com diferentes configurações visando diferentes aplicações ao mesmo tempo.
Copie o ficheiro telemlib.js para o nome de ficheiro que desejar e modifique a configuração conforme necessário. Este ficheiro não foi ofuscado. Antes de utilizar num engajamento, considere fortemente alterar a nomenclatura dos endpoints, remover comentários e ofuscar fortemente o payload. Por predefinição, a aplicação utiliza endpoints de API bastante óbvios (por exemplo, /loot/screenshot), em Configurações da Aplicação pode ativar a ofuscação de tráfego.
Certifique-se de rever cuidadosamente a secção de configuração abaixo antes de utilizar num servidor exposto publicamente.
O JS-Tap tem cinco tipos de beacon/agente que se conectam ao mesmo servidor:
| Tipo de Beacon | O Que É | Como Chega Lá |
|---|---|---|
| DOM Beacon (telemlib.js) | Um payload JavaScript injetado numa página web. Instrumenta o DOM, captura atividade do utilizador, screenshots, chamadas de rede. | Vulnerabilidade XSS, ou adicionado diretamente aos ficheiros JavaScript da aplicação alvo (pós-exploração). |
| BEX Beacon | Uma extensão de navegador (Chrome MV3 / Firefox MV2). Monitoriza toda a atividade de navegação, captura cookies (incluindo httpOnly), localStorage, sessionStorage e cabeçalhos de pedidos. Pode injetar DOM Beacons em domínios específicos sob comando. | Instalado no navegador do alvo (engenharia social, acesso físico, push de política, etc.). |
| Sidecar | Um binário Go nativo que é executado no SO do alvo. Fornece navegação no sistema de ficheiros, leitura de ficheiros e execução de comandos. | Instalado juntamente com o BEX Beacon via mensagens nativas. Requer que o BEX Beacon retransmita comandos. |
| Atom Beacon | Um implante de duas camadas para aplicações de desktop Electron. Injeta um agente no processo principal (runtime Node.js) + payloads de renderizador em todas as janelas da aplicação. Combina recolha de dados ao nível do navegador com acesso ao SO do anfitrião — sem necessidade de binário separado. Suporta modo de proxy de navegador. | Patcheado no arquivo ASAR da aplicação Electron alvo (ou diretório da aplicação descompactada) usando atomize.py. |
| V8 Beacon | Um agente JavaScript para aplicações CLI em Node.js e Bun (Gemini CLI, Claude Code, etc.). Interceta todas as chamadas de rede HTTP/Fetch, captura teclas e fornece acesso ao sistema de ficheiros e shell. Suporta modo de proxy de navegador. Zero dependências. | Injetado via variável de ambiente: NODE_OPTIONS="--require" (Node.js) ou BUN_OPTIONS="--preload" (Bun). Não é necessário patch na aplicação. |
Todos os cinco reportam ao mesmo portal do servidor JS-Tap, onde o loot é visualizado e os comandos C2 são emitidos.
O portal também inclui duas ferramentas de clonagem de sessão:
| Ferramenta | O Que Faz |
|---|---|
| Browser Proxy | Um proxy MITM no servidor JS-Tap que encaminha o tráfego HTTP/HTTPS do operador através do navegador (ou processo Node.js) da vítima via WebSocket. Os pedidos são obtidos a partir do contexto de rede da vítima, pelo que o site alvo vê o IP e a impressão digital TLS da vítima. Combine com um Ticket de Sessão para navegação autenticada através da rede da vítima. Suportado pelos Beacons BEX, Atom e V8. Veja Browser Proxy abaixo. |
| JS-Tap Conductor | Uma extensão Firefox autónoma que importa dados de sessão capturados pelo BEX Beacon (como um "JS-Tap Ticket") e reproduz-os localmente — definindo cookies, injetando cabeçalhos, preenchendo armazenamento e falsificando o User-Agent — para que o operador possa navegar como a vítima. Veja JS-Tap Tickets & JS-Tap Conductor abaixo. |
DOM Beacon autónomo: O payload DOM Beacon (telemlib.js) funciona independentemente. Injete-o via XSS ou implante-o nos ficheiros JS do alvo. Ele contacta o servidor JS-Tap por si só.
BEX Beacon como dropper: O BEX Beacon monitoriza a navegação e recolhe inteligência passiva (cookies, localStorage, sessionStorage, cabeçalhos de pedidos, navegação). A partir do portal JS-Tap, pode comandar o beacon para injetar um DOM Beacon num domínio específico. O DOM Beacon gerado por um BEX Beacon obtém screenshots de alta qualidade através da API captureVisibleTab da extensão (o modo "BEX-Assist").
Sidecar para acesso ao SO: Quando instalado, o binário Sidecar dá ao BEX Beacon acesso ao sistema operativo subjacente. Os comandos são enviados do portal JS-Tap, retransmitidos através do canal encriptado do beacon para o binário nativo, e os resultados são enviados de volta. Isto transforma uma extensão de navegador numa porta de entrada para acesso ao sistema de ficheiros e execução de comandos.