plataforma autônoma de red teaming; meta-arnês de segurança ofensiva multiagente
▄▄▄█████▓▓█████ ███▄ ▄███▓ ██▓███ ▓█████ ██████ ▄▄▄█████▓
▓ ██▒ ▓▒▓█ ▀ ▓██▒▀█▀ ██▒▓██░ ██▒▓█ ▀ ▒██ ▒ ▓ ██▒ ▓▒
▒ ▓██░ ▒░▒███ ▓██ ▓██░▓██░ ██▓▒▒███ ░ ▓██▄ ▒ ▓██░ ▒░
░ ▓██▓ ░ ▒▓█ ▄ ▒██ ▒██ ▒██▄█▓▒ ▒▒▓█ ▄ ▒ ██▒░ ▓██▓ ░
▒██▒ ░ ░▒████▒▒██▒ ░██▒▒██▒ ░ ░░▒████▒▒██████▒▒ ▒██▒ ░
▒ ░░ ░░ ▒░ ░░ ▒░ ░ ░▒▓▒░ ░ ░░░ ▒░ ░▒ ▒▓▒ ▒ ░ ▒ ░░
░ ░ ░ ░░ ░ ░░▒ ░ ░ ░ ░░ ░▒ ░ ░ ░
░ ░ ░ ░ ░░ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░
Um framework de segurança ofensiva multi-agente, construído para transformar o agente de codificação de IA que você já executa em um caçador de zero-days.
Seu agente de codificação de IA já é um hacker — o T3MP3ST entrega a ele um arsenal.
Aponte-o para um alvo autorizado e a kill chain se executa sozinha: recon → exploit → report, a partir de uma War Room no navegador ou da CLI, conduzida pelo agente no qual você já está logado — Claude Code, Codex, Hermes — ou um modelo que você executa totalmente offline (Ollama, LM Studio, vLLM). Sem novas chaves de API, sem locatário de nuvem, sem segunda conta. Seu agente é o cérebro; o T3MP3ST é a máquina de guerra montada ao redor dele. Tempestade auto-hospedada. Guerra sem chaves. ⚡
E ele não vai pedir para você aceitar a palavra dele. Na própria suíte de 104 desafios do XBOW, ele pontua 90,1% pass@1 — acima dos 85% auto-relatados pelo XBOW — junto com soluções de CTF sem dicas e uma caçada a frio em CVEs reais pós-corte que o modelo nunca tinha visto. Cada número neste README é recalculado a partir de dados confirmados com um comando (npm run verify-claims). Barulhento sobre a missão, honesto sobre a construção — a tabela de status diz exatamente o que está ativo, o que é andaime e o que ainda é roteiro; recibos completos em Benchmarks.
Três coisas o diferenciam:
npm run verify-claims re-deriva todos eles, 24/24 verde. Uma afirmação que não pode ser reproduzida não é publicada. Números de confiança cega, nunca.Pule para → Início rápido · O que caça · O que embarca hoje · Benchmarks · Arquitetura · Documentação
T3MP3ST é uma ferramenta de segurança ofensiva, construída para testes, pesquisa e educação autorizados. Aponte-a apenas para sistemas que você possui ou para os quais tenha autorização explícita e por escrito para testar. O acesso não autorizado a computadores, redes ou dados é ilegal na maioria das jurisdições — você é o único responsável por como usa este software e por permanecer dentro da lei e de suas regras de engajamento. Traga a tempestade para seus alvos, não para os de outros.
T3MP3ST é fornecido como está, sob a licença AGPL-3.0, sem garantia e sem responsabilidade por qualquer dano, perda ou uso indevido. Os autores não endossam, apoiam ou toleram atividades não autorizadas. Obtenha permissão. Mantenha-se no escopo. Não seja uma ameaça. 🫡
A segurança ofensiva está atrás de anos de prática e ferramentas caras. A aposta por trás do T3MP3ST é que um enxame de agentes coordenados coloca a caça real de bugs ao alcance de pessoas que nunca receberam o convite, em aplicações web, CTFs, contratos inteligentes, código-fonte e OSS embarcado/robótica. Essa é uma aposta ambiciosa, e as seções abaixo são cuidadosas em separar o que já funciona do que ainda é uma aposta.
| Domínio | O que faz | Status |
|---|---|---|
| 🕸️ Aplicações web | Reconhecimento de atacante externo em caixa-preta → exploração (suíte XBEN) | ✅ Estável |
| 🚩 CTF | Soluções sem dicas, em sandbox com jail (Cybench) | ✅ Estável |
| 🤖 Robótica / OT / embarcados | Pipeline de divulgação coordenada para caça de vulnerabilidades OSS (OSV + PoC ao vivo + refutador) | ✅ Pipeline estável |
| 📂 Código-fonte | Análise de repositório em caixa-branca com decomposição cega de builder principal | ⚠️ Ingestão apenas Python |
| 💰 Contratos inteligentes | Damn Vulnerable DeFi | ⚠️ reprodução, não descoberta inédita |
| ☁️ Nuvem (IaC) | Benchmark de detecção de má configuração (cloud:bench) + arsenal opcional de nuvem (aws/az/gcloud + scoutsuite/cloudfox/pmapper; pacu limitado) | 🚧 Andaime de má configuração IaC — exploração de nuvem ao vivo ainda não avaliada |
| 📱 Móvel | Analisador estático integrado (má configuração de manifesto + detecção de segredos/texto claro, mobile:bench) + arsenal opcional (mobsfscan/objection/drozer; frida limitado) | 🚧 Andaime de detecção estática — exploração dinâmica não avaliada |
| 🔩 Binário / RE | Detector de sinks de saída descompilada (cópia insegura / string de formato / injeção de comando / estouro de inteiro, binary:bench) + arsenal opcional (ghidra/radare2/objdump/checksec/strings; gdb limitado) | 🚧 Andaime de detecção de sinks estática — resolução/pwn não avaliada |
Caminho mais rápido para uma War Room em execução (sem chaves, ~2 min para configurar; o tempo de missão depende do alvo):
npm install
npm run server # War Room → http://127.0.0.1:3333/ui/
Na War Room, abra Configurações e conecte um agente local (Claude Code / Codex / Hermes). Em seguida, descreva um alvo para o Op Admiral em inglês simples e lance. O agente que você conectou é o cérebro. Nenhuma chave necessária.
Prefere trazer uma chave? Defina uma e pule a etapa de conexão:
export OPENROUTER_API_KEY=... # ou VENICE_API_KEY / ANTHROPIC_API_KEY / OPENAI_API_KEY
export XAI_API_KEY=... # Grok Build (grok-build-0.1) — modelo de codificação da xAI, chamada de ferramenta nativa
Agentes locais lentos podem receber mais espaço com T3MP3ST_LOCAL_AGENT_TIMEOUT_MS
para cada chamada CLI, T3MP3ST_TASK_TIMEOUT_MS para tarefas de missão e
T3MP3ST_GENERAL_TIMEOUT_MS para requisições de planejamento. Os valores são em milissegundos.
Ou execute-o totalmente offline em seu próprio modelo — sem chave, sem nuvem. Padrão para Ollama; aponte para qualquer servidor compatível com OpenAI (LM Studio, vLLM, llama.cpp):
ollama serve && ollama pull llama3 # ou um servidor compatível com OpenAI
export TEMPEST_LOCAL_BASE_URL=http://localhost:11434/api # LM Studio: http://localhost:1234/v1
export TEMPEST_LOCAL_MODEL=llama3
npx tempest # → "Change default provider" → local
A chamada de ferramenta funciona em qualquer modelo local (é conduzida via texto), então o Arsenal funciona mesmo em modelos sem chamada de função nativa.
Verifique os números por si mesmo:
npm run verify-claims # re-deriva cada manchete a partir de JSON confirmado em bench/