Skip to main content

spray

The spray command performs password spraying across multiple protocols. It takes a credential (username and password or hash) and tests it against a list of target servers, supporting lockout awareness and configurable threading.

Usage


Persistent Flags

These flags apply to all spray subcommands:

Subcommands

spray kerberos

Spray credentials via the Kerberos protocol (AS-REQ). This is the most evasion-friendly method as it does not touch LDAP or SMB directly.

spray kerberos pwd

Kerberos password spraying — sends AS-REQs and checks for valid authentication responses.

spray kerberos enum

Kerberos user enumeration — determines whether usernames exist by analyzing AS-REQ error responses without attempting to authenticate. This does not cause lockouts.

spray smb

Password spraying via SMB authentication (port 445).

spray ldap

Password spraying via LDAP bind.

spray ssh

Password spraying via SSH.

spray ftp (planned)

FTP password spraying. Not yet implemented.

spray mssql (planned)

MSSQL password spraying. Not yet implemented.

spray winrm (planned)

WinRM password spraying. Not yet implemented.

spray tftp (planned)

TFTP spraying. Not yet implemented.

Target Specification

Targets can be specified in multiple ways:

Spray Results Storage

All spray operations are recorded in the sprays table in SQLite: Successful credentials are automatically added to the credentials table.

Lockout Safety

R4t provides multiple layers of lockout protection: Recommended for production engagements: Always use --stop-on-lockout and check the domain password policy via r4t ldap get users before spraying.

Common Spray Workflows