Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
EasyTokens — Kali365 - Réplica do EvilTokens | Kitploit
Ferramentas/GitHubGitHub/secdev02/easytokens
OSINT para Engenharia SocialColeta de InformaçõesPós-ExploraçãoPhishingTestes de PenetraçãoSegurança na NuvemComando e ControleAutenticaçãoRed TeamingAtaque Adversário
GitHubsecdev02/easytokens
721286há 2 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

EasyTokens

Kali365 - Réplica do EvilTokens

Ver Repositório

EasyTokens

Um servidor de phishing de código de dispositivo para emulação de adversários. Captura tokens OAuth do Microsoft 365 através do fluxo Device Authorization Grant. Inspirado no GraphSpy.

Aviso — Uso Autorizado Apenas. Esta ferramenta destina-se a testadores de penetração e red teams que operam sob autorização escrita explícita. O uso indevido pode violar leis de fraude informática.


Como Funciona

  1. O operador cria uma campanha de código de dispositivo através da interface do operador.
  2. Uma página de inscrição voltada para a vítima (tema Dunder Mifflin) exibe o código de usuário e solicita que o alvo autentique em microsoft.com/devicelogin.
  3. Um poller em segundo plano detecta quando o alvo conclui a autenticação e armazena o token de acesso/refresh capturado no SQLite.
  4. O navegador da vítima é redirecionado para uma página de pesquisa pós-autenticação.
  5. O operador pode pesquisar o OneDrive e o e-mail da vítima através do Microsoft Graph usando o token capturado.

Arquitetura

Backend Python (uma porta por campanha) + nginx front-end + persistência SQLite.

main_server.py          ← unified entry point (run this)
db.py                   ← SQLite persistence layer
html_enroll.py          ← victim enrollment page builder
html_search.py          ← victim post-auth search page builder
css_shared.py           ← shared CSS for operator UI
nginx_helper.py         ← auto-generates and reloads nginx reverse-proxy config
nginx.conf              ← base nginx config (includes /etc/nginx/conf.d/*.conf)

Rotas

MétodoCaminhoPúblicoDescrição
GET/VítimaPágina de inscrição de código de dispositivo (tema Dunder Mifflin)
POST/pollVítima (JS)Consulta o endpoint de token da MS; armazena token em caso de sucesso
GET/search?s=<id>VítimaPágina de pesquisa do OneDrive/e-mail pós-autenticação
GET/appOperadorPainel — estatísticas + capturas recentes
GET/app/device-codesOperadorTodas as campanhas com status de consulta ao vivo
POST/app/device-codes/newOperadorCriar uma nova campanha de código de dispositivo
GET/app/tokensOperadorTodos os tokens capturados
GET/app/search?id=<id>OperadorPesquisa no OneDrive + e-mail para um token específico
POST/webhookNó relayIngerir um token de um nó relay autenticado
POST/relay/checkinNó relayRegistrar um nó relay; retorna node_id

Nginx — Campanhas de Domínio

Quando uma campanha é criada com um domínio definido, nginx_helper.py escreve automaticamente um bloco de servidor por domínio em NGINX_CONF (/etc/nginx/conf.d/easytokens.conf por padrão) e recarrega o nginx. O tráfego da vítima que chega na porta 80 para aquele domínio é redirecionado para a instância correta do servidor Python.

  • Campanhas sem domínio são servidas diretamente na porta Python (padrão 3000).
  • Campanhas com domínio são servidas através do nginx na porta 80.
  • O nginx.conf base descarta qualquer requisição cujo cabeçalho Host não corresponda a uma campanha conhecida (return 444), evitando exposição acidental do backend Python.
  • Defina NGINX_CONF='' ou NGINX_RELOAD_CMD='' para desabilitar o gerenciamento automático do nginx.

Início Rápido (Docker)

docker compose up --build

Portas expostas pelo Docker:

PortaPropósito
80nginx — tráfego de vítima baseado em domínio
3000Python — interface do operador + acesso direto da vítima
  • Página da vítima (direta): http://localhost:3000/
  • Interface do operador: http://localhost:3000/app
  • Campanhas de domínio: http://<campaign-domain>/ (roteadas através do nginx na porta 80)

Tokens capturados e logs são persistidos em volumes Docker:

VolumeCaminho no containerPropósito
easytokens-data/data/easytokens.dbBanco de dados SQLite
./logs/logs/Arquivos de log por requisição

Configuração Manual

Requisitos: Python 3.12+, sem pacotes de terceiros.

python main_server.py

Variáveis de Ambiente

VariávelPadrãoDescrição
PORT3000Porta de escuta do servidor Python
PORT_MAX3010Limite superior da faixa de portas expostas pelo Docker
DB_PATH/data/easytokens.dbCaminho do banco de dados SQLite
LOG_DIR/logsDiretório de logs por requisição
NGINX_CONF/etc/nginx/conf.d/easytokens.confCaminho onde o nginx_helper escreve a configuração gerada; defina como '' para desabilitar
NGINX_RELOAD_CMDnginx -s reloadComando shell para recarregar o nginx após alterações de configuração; defina como '' para desabilitar
RELAY_SECRET(não definido)Segredo compartilhado para autenticação do nó relay. Gere com openssl rand -hex 32. Deve corresponder ao RELAY_SECRET em php-relay/.env. Deixe não definido para desabilitar suporte a relay.

Nó Relay PHP

O diretório php-relay/ contém um container Apache/PHP autônomo que atua como um nó distribuído voltado para a vítima. Ele serve a mesma página de inscrição de código de dispositivo que o servidor principal, consulta diretamente a Microsoft e encaminha os tokens capturados para o painel principal via POST /webhook.

Como Funciona

  1. Na inicialização, checkin.php faz POST para POST /relay/checkin no painel principal, autenticando com RELAY_SECRET. O painel registra o nó e retorna um node_id.
  2. As vítimas navegam até a página de inscrição do relay (index.php), que inicia um novo fluxo de código de dispositivo.
  3. JS do lado do navegador consulta poll.php. Quando um token é capturado, poll.php o encaminha para POST /webhook no painel principal, marcado com o node_id.

Variáveis de Ambiente do Relay

Configure em php-relay/.env:

VariávelPadrãoDescrição
MAIN_SERVER_URLhttp://easytokens:3000URL do painel principal acessível de dentro do container relay
RELAY_SECRET(obrigatório)Deve corresponder ao RELAY_SECRET no painel principal
RELAY_PORT8082Porta do host para expor o relay
RELAY_LABELhostnameNome legível mostrado no painel para este nó
CHECKIN_RETRIES10Tentativas de check-in antes de desistir
CHECKIN_DELAY5Segundos entre tentativas de check-in
NODE_ID_FILE/tmp/relay_node_idCaminho onde o node_id é armazenado em cache após o check-in

Início Rápido

Ambos os containers simultaneamente (recomendado):

# from EasyTokens/
docker compose -f docker-compose.yml -f php-relay/docker-compose.yml up --build

Executar ambos com um único merge -f coloca-os na mesma rede Docker, para que MAIN_SERVER_URL=http://easytokens:3000 seja resolvido corretamente.

Acesso:

URLPropósito
http://localhost:8082/Página de inscrição da vítima do relay
http://localhost:3000/app/nodesVisualização do operador dos nós relay registrados

Apenas relay (painel remoto):

cd php-relay
# Defina MAIN_SERVER_URL para a URL pública do painel no .env
docker compose up --build

Configuração do Segredo Compartilhado

  1. Gere um segredo: openssl rand -hex 32
  2. Defina RELAY_SECRET=<segredo> em EasyTokens/.env (captado pelo painel principal via docker-compose.yml)
  3. Defina o mesmo valor em php-relay/.env

Banco de Dados

Duas tabelas no banco de dados SQLite:

Baixar ferramenta