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
spraycharles — Langsames und leises Password Spraying-Tool, das in Intervallen über einen langen Zeitraum sprayt. | Kitploit
Tools/GitHubGitHub/tw1sm/spraycharles
Passwort-CrackingPasswortangriffeWebsicherheitPenetrationstestsAuthentifizierung
GitHubtw1sm/spraycharles

spraycharles

Langsames und leises Password Spraying-Tool, das in Intervallen über einen langen Zeitraum sprayt.

Repository anzeigen
223373vor 7 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Spraycharles

Hey, yo, ich fühle mich wie Spraycharles – Chiddy Bang

Python PyPi

Langsames und stetiges Passwort-Spraying-Tool, das darauf ausgelegt ist, über ein langes Zeitintervall in regelmäßigen Abständen zu sprayen.

Enthält Spraying-Plugins für Office365, OWA, EWS, Okta, ADFS, Cisco SSL VPN, Citrix Netscaler, Sonicwall, NTLM über HTTP und SMB.

Zugehöriger Blogbeitrag von @sprocket_ed über NTLM über HTTP, Exchange Web Services und Spraycharles.

Was ist dieses Tool?

Spraycharles ist ein relativ einfacher Password-Sprayer, der zu einer Zeit entwickelt wurde, als es noch nicht viele öffentlich verfügbare Tools gab, die Password-Spraying während eines Penetrationstests als nicht-manuellen Prozess ermöglichten. Das vielleicht beste Feature von Spraycharles ist die Möglichkeit, mit -a/--attempts und -i/--interval einen länger laufenden Spray einzurichten, der über mehrere Tage hinweg läuft, während du ihn regelmäßig überprüfst. Falls du einen einmaligen Dienst oder etwas Einzigartiges zum Sprayen hast, ist es auch sehr einfach, ein neues Modul zu erstellen und mit dem Sprayen zu beginnen.

Was ist dieses Tool nicht?

Spraycharles wurde nicht primär für moderne Authentifizierungs-/Cloud-Anbieter entwickelt. Wenn du fortgeschrittenere Funktionen suchst, solltest du dir Tools wie CredMaster oder TeamFiltration ansehen. Spraycharles wurde nicht dafür entwickelt, schnell zu sein – es ist single-threaded und eher auf einen Volumen/Zeit-Ansatz ausgerichtet.

Installation

Spraycharles kann mit pip3 install spraycharles installiert werden oder indem du dieses Repository klonst und pip3 install . ausführst.

[!TIP] Dadurch werden die Aliase spraycharles und sc (kurz) in deinem Pfad registriert. Log- und Ausgabedateien werden in ~/.spraycharles gespeichert. Ein alternativer Ausgabeort kann über ein CLI-Flag angegeben werden.

Docker verwenden

Führe die folgenden Befehle aus, um den Spraycharles-Docker-Container zu erstellen:

root@kitploit:~
git clone https://github.com/Tw1sm/spraycharles
cd spraycharles/extras
docker build . -t spraycharles

Führe den folgenden Befehl aus, um den Spraycharles-Docker-Container zu verwenden:

root@kitploit:~
docker run -it -v ~/.spraycharles:/root/.spraycharles spraycharles -h

Möglicherweise musst du zusätzliche Volumes angeben, je nachdem, wo die Benutzernamen- und Passwortlisten gespeichert sind.

NixOS

Für Nix- oder NixOS-Benutzer ist ein Paket verfügbar. Beachte, dass die neuesten Versionen möglicherweise nur im unstable-Kanal vorhanden sind.

root@kitploit:~
nix-env -iA nixos.spraycharles

Verwendung

Der spray-Unterbefehl:

root@kitploit:~
 Usage: spraycharles spray [OPTIONS] COMMAND [ARGS]...

 Low and slow password spraying

╭─ Options ─────────────────────────────────────────────────────────────────────────────╮
│ --debug                 Enable debug logging (overrides --quiet)                      │
│ --config          TEXT  Configuration file.                                           │
│ --help    -h            Show this message and exit.                                   │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ User/Pass Config ────────────────────────────────────────────────────────────────────╮
│ *  --usernames  -u      TEXT  Filepath of the usernames list [default: None]          │
│                               [required]                                              │
│ *  --passwords  -p      TEXT  Single password to spray or filepath of the passwords   │
│                               list                                                    │
│                               [default: None]                                         │
│                               [required]                                              │
│    --equal      -e            Does 1 spray for each user where password = username    │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Spray Target ────────────────────────────────────────────────────────────────────────╮
│    --host      -H      TEXT                           Host to password spray (ip or   │
│                                                       hostname). Can by anything when │
│                                                       using Office365 module - only   │
│                                                       used for logfile name           │
│                                                       [default: None]                 │
│ *  --module    -m      [ADFS|CiscoSSLVPN|Citrix|NTLM  Module corresponding to target  │
│                        |Office365|Okta|OWA|SMB|Sonic  host                            │
│                        wall]                          [default: None]                 │
│                                                       [required]                      │
│    --path              TEXT                           NTLM authentication endpoint    │
│                                                       (i.e., rpc or ews)              │
│                                                       [default: None]                 │
│    --port      -P      INTEGER                        Port to connect to on the       │
│                                                       specified host                  │
│                                                       [default: 443]                  │
│    --fireprox  -f      TEXT                           URL of desired fireprox         │
│                                                       interface                       │
│                                                       [default: None]                 │
│    --domain    -d      TEXT                           HTTP - Prepend DOMAIN\ to       │
│                                                       usernames; SMB - Supply domain  │
│                                                       for smb connection              │
│                                                       [default: None]                 │
│    --no-ssl                                           Use HTTP instead of HTTPS       │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Output ──────────────────────────────────────────────────────────────────────────────╮
│ --output   -o      TEXT  Name and path of result output file [default: None]          │
│ --quiet                  Will not log each login attempt to the console               │
│ --analyze                Run the results analyzer after each spray interval (Early    │
│                          false positives are more likely)                             │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Spray Behavior ──────────────────────────────────────────────────────────────────────╮
│ --attempts    -a      INTEGER  Number of logins submissions per interval (for each    │
│                                user)                                                  │
│                                [default: None]                                        │
│ --interval    -i      INTEGER  Minutes inbetween login intervals [default: None]      │
│ --timeout     -t      INTEGER  Web request timeout threshold [default: 5]             │
│ --jitter              INTEGER  Jitter time between requests in seconds                │
│                                [default: None]                                        │
│ --jitter-min          INTEGER  Minimum time between requests in seconds               │
│                                [default: None]                                        │
│ --pause                        Pause the spray between intervals if a new potentially │
│                                successful login was found                             │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Notifications ───────────────────────────────────────────────────────────────────────╮
│ --notify   -n      [Slack|Teams|Discord]  Enable notifications for Slack, Teams or    │
│                                           Discord                                     │
│                                           [default: None]                             │
│ --webhook  -w      TEXT                   Webhook used for specified notification     │
│                                           module                                      │
│                                           [default: None]                             │
╰───────────────────────────────────────────────────────────────────────────────────────╯

Konfigurationsdatei

Aufgrund der vielen häufig verwendeten CLI-Flags besteht eine Alternative darin, die Befehlszeilenparameter aus einer YAML-Datei mit dem --config-Flag zu laden. Außerdem werden jedes Mal, wenn du Spraycharles verwendest, deine CLI-Optionen in einer YAML-Datei (last-config.yaml) im aktuellen Verzeichnis gespeichert, die du leicht ändern und wiederverwenden kannst.

Benachrichtigungen

Spraycharles kann nach einem potenziell erfolgreichen Anmeldeversuch Benachrichtigungen an Discord, Slack und Microsoft Teams senden. Diese Liste der Benachrichtigungsdienste kann mit dem Skript utils/notify.py erweitert werden. Für jeden potenziellen Benachrichtigungsdienst musst du dessen Namen und eine Webhook-URL angeben.

Du kannst diese Einstellungen über die Konfigurationsdatei vornehmen, um deinen Befehl kürzer zu halten:

root@kitploit:~
notify: Slack
webhook: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

An einen der Dienste gesendete Benachrichtigungen enthalten den Zielhostnamen, der mit dem Spraying-Job verknüpft ist. Dies ist besonders nützlich, wenn du mehrere Ziele gleichzeitig besprühst.

Aktualisieren von Benutzernamen-/Passwortdateien

Du hast die Möglichkeit, während des laufenden Sprays Änderungen an den angegebenen Benutzernamen- und Passwortdateien vorzunehmen. Hinzufügungen oder Entfernungen in den Listen werden bei der nächsten Passwortrotation wirksam.

[!NOTE] Wenn du ein neues Passwort in die Liste einfügst, muss es nach dem aktuell gesprühten Passwort stehen, damit es besprüht wird (Spraycharles führt einen internen Schleifenzähler, der als Index verwendet wird, um das nächste Passwort an der entsprechenden Stelle in der aktualisierten Liste abzurufen).

Hilfsprogramme

Spraycharles wird mit einigen zusätzlichen Hilfsprogrammen ausgeliefert, die bei Spraying-Bemühungen helfen. Vollständige Liste der Spraycharles-Module:

root@kitploit:~
 Usage: spraycharles [OPTIONS] COMMAND [ARGS]...

╭─ Options ─────────────────────────────────────────────────────────────────────────────╮
│ --help  -h        Show this message and exit.                                         │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────────╮
│ analyze   Analyze Spraycharles output files for potential spray hits                  │
│ gen       Generate custom password lists from JSON file                               │
│ modules   List spraying modules                                                       │
│ parse     Parse NTLM over HTTP and SMB endpoints to collect domain information        │
│ spray     Low and slow password spraying                                              │
╰───────────────────────────────────────────────────────────────────────────────────────╯

Benutzerdefinierte Spray-Listen erstellen

Der Spraycharles-Unterbefehl "gen" erstellt eine Passwortliste basierend auf den Spezifikationen in extras/list_elements.json.

root@kitploit:~
spraycharles gen extras/list_elements.json custom_passwords.txt

Domäne aus NTLM über HTTP und SMB extrahieren

Der Spraycharles-Unterbefehl "parse" extrahiert die interne Domäne sowohl aus NTLM-über-HTTP- als auch aus SMB-Diensten mit einem Befehl ähnlich dem unten aufgeführten.

root@kitploit:~
spraycharles parse https://example.com/ews
spraycharles parse smb://host.domain.local

Ergebnisdateien analysieren

Das Untermodul analyze kann deine JSON-Ausgabeobjekte lesen und Antwortlängen bestimmen, die statistisch relevant sind. Mit genügend Daten sollte es in der Lage sein, erfolgreiche Anmeldungen aus deiner Ergebnisdatei herauszufiltern. Dies ist nicht die einzige Möglichkeit, erfolgreiche Anmeldungen zu ermitteln – es hängt von deiner Zielseite ab – und ich würde dennoch empfehlen, die Daten selbst zu überprüfen, um sicherzustellen, dass nichts übersehen wird. Bei SMB werden lediglich Einträge mit NTSTATUS-Codes gefunden, die auf Erfolg hinweisen.

root@kitploit:~
spraycharles analyze myresults.json

Haftungsausschluss

Dieses Tool wurde für den Einsatz während Penetrationstests entwickelt; die Nutzung dieses Tools zum Angriff auf Ziele ohne vorherige gegenseitige Zustimmung ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen, staatlichen und bundesstaatlichen Gesetze einzuhalten. Die Entwickler übernehmen keine Haftung und sind nicht verantwortlich für jeglichen Missbrauch dieses Programms.

Entwicklung

Spraycharles verwendet Poetry zur Verwaltung von Abhängigkeiten. Installiere aus dem Quellcode und richte die Entwicklung ein mit:

root@kitploit:~
pip3 install poetry
git clone https://github.com/Tw1sm/spraycharles
cd spraycharles
poetry install

Danksagungen

  • @sprocket_ed für die Bereitstellung mehrerer Spray-Module, vieler Funktionen, die Spraycharles großartig machen, und des zugehörigen Blogbeitrags
  • @b17zr für das Skript ntlm_challenger.py, das im Ordner utils enthalten ist
Tool herunterladen