
Framework de simulação de phishing e conscientização para campanhas baseadas em nós, captura de credenciais, entrega via SMTP, CAPTCHA e replay opcional de credenciais no navegador.
Framework de simulação de phishing e conscientização de segurança com fluxos de trabalho configuráveis, gerenciamento de campanhas e proxy de credenciais opcional.
cd../deploy.sh - isso configurará os pré-requisitos para você, assumindo que você está no Ubuntu../start.sh --preload-ml. Isso iniciará os servidores e pré-carregará os modelos de ML que usamos.Você obtém a interface de administração em http://localhost:8000 e o servidor de phishing em http://localhost:1234. Login padrão: admin / admin123. Altere a senha após o primeiro login.
Encaminhe a porta 8000 para sua máquina local via ssh para acessar o painel de administração. NÃO exponha o painel de administração nem o servidor flask (porta 1234) diretamente à internet.
O deploy.sh instalará um servidor caddy no mesmo host. Tudo é construído assumindo que você usará o caddy como proxy reverso. Você não precisa, mas aqui há dragões.
Flags opcionais para start.sh:
--with-caddy — Inicia o Caddy via Docker (apenas para testes locais).--preload-ml — Pré-baixar o modelo de detecção de phishing (~1.3GB); evita o atraso no primeiro uso ao usar o plugin Phishing Detector.--reset-db — Redefine o banco de dados e reinicializa.--admin-only — Inicia apenas o servidor de administração (porta 8000).--phishing-only — Inicia apenas o servidor de phishing (porta 1234).--skip-init — Pula a inicialização do banco de dados.--skip-setup — Pula a configuração de venv/dependências; apenas carrega o .env e inicia os servidores.Sem o start.sh, após instalar as dependências e inicializar o banco de dados, você pode executar ambos os servidores com: uv run python -m cli start.
Python: Consulte requirements.txt. A stack principal inclui Flask, SQLAlchemy, Jinja2, Pydantic, Flask-Login, python-jose, passlib, cryptography e Flask-WTF. O plugin Phishing Detector usa transformers e torch. O proxy de credenciais usa Playwright; integrações opcionais usam OpenAI/Anthropic e boto3 (AWS Connect).
Desenvolvimento: requirements-dev.txt adiciona pytest, pytest-cov e ferramentas de teste relacionadas. Instale com uv pip install -r requirements-dev.txt para executar testes e cobertura.
Sistema (produção): O script de deploy tem como alvo Ubuntu/Debian. Ele instala uv, Caddy (proxy reverso) e pacotes de sistema como libmagic1. Para o proxy de credenciais, o start.sh executa uv run playwright install chromium para instalar o Chromium.
Preparação para produção no Ubuntu. Idempotente. Ele:
requirements.txt..env a partir do .env.example se estiver ausente e gera SECRET_KEY e JWT_SECRET_KEY se não estiverem definidos.storage/caddy/data, storage/caddy/config, storage/uploads, storage/templates, storage/assets, instance).--init-db (executa uv run python -m cli init --force).Ele não inicia a aplicação. Para produção: inicie o Caddy (proxy reverso) e depois inicie a aplicação com ./start.sh ou um gerenciador de processos para que todo o tráfego chegue à aplicação por meio do proxy.
Inicialização de desenvolvimento e local. Ele:
.env e garante SECRET_KEY e JWT_SECRET_KEY (gera-os se valores padrão estiverem presentes).requirements.txt.uv run playwright install chromium para o proxy de credenciais.--preload-ml (~1.3GB).--skip-init). Use --reset-db para excluir e reinicializar.--with-caddy (apenas para testes locais).uv run python -m cli start; use --admin-only ou --phishing-only para executar apenas um.Em produção, a aplicação deve ser executada atrás de um proxy reverso. Não exponha os servidores de desenvolvimento Flask diretamente à internet.
O proxy reverso é responsável pela terminação TLS, cabeçalhos Host corretos, roteamento de caminho e domínio, e pela separação do tráfego de administração do tráfego de campanha. A aplicação escuta em localhost ou em uma porta interna; o proxy lida com HTTPS público e encaminha para o servidor de administração (ex.: porta 8000) e para o servidor de phishing (ex.: porta 1234) de acordo com sua configuração.
Recomendado: Use o Caddy como proxy reverso. O deploy.sh instala o Caddy via APT. O projeto inclui exemplos de Caddyfile (ex.: Caddyfile.minimal). Após executar o deploy.sh, inicie o Caddy (ex.: caddy run --config /path/to/Caddyfile.minimal) e depois inicie a aplicação com ./start.sh ou um gerenciador de processos. Qualquer proxy reverso equivalente (nginx, Traefik, etc.) é aceitável, desde que a aplicação não seja exposta diretamente.
Reel é um framework de simulação de phishing e conscientização de segurança. Operadores usam a interface de administração para gerenciar campanhas, fluxos de trabalho, templates e alvos. O servidor de phishing serve páginas de destino de campanhas e executa workflows—grafos de plugins baseados em nós—em cada solicitação.
Há dois pontos de entrada da aplicação em app.py: create_app() para o servidor de phishing e create_admin_app() para a interface de administração. As campanhas podem ser inbound (um visitante segue um link; os fluxos de trabalho GET e POST lidam com visualizações de página e envios de formulário) ou outbound (o sistema envia e-mails ou chamadas por meio de fluxos de trabalho de envio). O Caddy pode ser usado para roteamento de campanhas baseado em domínio. O proxy de credenciais usa Playwright para automação de navegador e reproduzir credenciais capturadas em sites-alvo.
Um usuário visita uma URL de campanha (ex.: /<campaign_uid>). O servidor de phishing roteia pelo UID da campanha. Para solicitações GET, ele executa o workflow GET da campanha (ex.: renderizar página de destino, CAPTCHA); para solicitações POST, executa o workflow POST (ex.: validar entrada, capturar credenciais, redirecionar). Fluxos de trabalho são do tipo campaign e declaram suporte a métodos HTTP (GET, POST ou BOTH). O contexto de execução inclui campaign, request, session e variables. A resposta é obtida de chaves de contexto como _response_html, _response_redirect ou _response_json. Fluxos de trabalho inbound são usados para páginas de destino, CAPTCHA, captura de credenciais, redirecionamentos e registro de logs.