Documentation
¶
Index ¶
- Constants
- func IsRegistered(service string) bool
- func PlainAuth(identity, username, password, host string) smtp.Auth
- func Register(service string, fn BruteFunc)
- func Services() []string
- type BruteFunc
- type BruteResult
- func BruteAsterisk(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteFTP(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteHTTP(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteHTTPForm(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteIMAP(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteLDAP(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteMSSQL(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteMYSQL(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteMongoDB(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteNNTP(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteOracle(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BrutePOP3(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BrutePostgres(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteRDP(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteRSH(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteRedis(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteRexec(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteRlogin(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteSMB(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteSMTP(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteSMTPVRFY(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteSNMP(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteSSH(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteSVN(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteSocks5(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteTeamSpeak(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteTelnet(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteVMAuthd(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteVNC(host string, port int, user string, password string, timeout time.Duration, ...) *BruteResult
- func BruteWinRM(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteWrapper(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func BruteXMPP(host string, port int, user, password string, timeout time.Duration, ...) *BruteResult
- func RunBrute(h modules.Host, u string, p string, timeout time.Duration, maxRetries int, ...) BruteResult
- func RunWithTimeout(timeout time.Duration, fn func(ctx context.Context) *BruteResult) *BruteResult
- type CircuitBreaker
- type ContextDialerWrapper
- type ModuleParams
Constants ¶
const DefaultCircuitBreakerThreshold = 5
DefaultCircuitBreakerThreshold is the number of consecutive connection failures before a host is considered unreachable and further attempts are skipped.
Variables ¶
This section is empty.
Functions ¶
func IsRegistered ¶ added in v2.5.2
IsRegistered returns true if a service has a registered module.
Types ¶
type BruteFunc ¶ added in v2.5.2
type BruteFunc func(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
BruteFunc is the unified signature for all brute-force modules.
type BruteResult ¶ added in v2.5.2
type BruteResult struct {
AuthSuccess bool
ConnectionSuccess bool
Error error // underlying error for diagnostics
Banner string // service banner if captured
RetryDelay time.Duration // if > 0, module requests this delay before next retry (e.g. VNC anti-brute)
SkipUser bool // if true, skip remaining passwords for this user (e.g. FTP 530 user-not-found)
}
BruteResult captures the outcome of a single credential attempt including whether the connection itself succeeded (to distinguish auth failures from network failures).
func BruteAsterisk ¶
func BruteAsterisk(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteFTP ¶
func BruteFTP(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteHTTP ¶
func BruteHTTP(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteHTTPForm ¶ added in v2.6.0
func BruteHTTPForm(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
BruteHTTPForm brute-forces HTML login forms using configurable POST/GET requests with credential placeholders.
Required params:
url — login form path (e.g., /login) body — POST body with %U/%W placeholders (e.g., user=%U&pass=%W) fail — failure string in response body (e.g., "Invalid credentials")
Optional params:
success — success string (alternative to fail matching) follow — follow redirects (true/false, default false) cookie — custom cookie to send content-type — default application/x-www-form-urlencoded method — POST (default) or GET user-agent — custom User-Agent csrf — CSRF token hidden field name (enables GET-before-POST) form-url — URL to GET for CSRF token (default: same as url)
func BruteIMAP ¶
func BruteIMAP(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteLDAP ¶ added in v2.5.2
func BruteLDAP(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteMSSQL ¶
func BruteMSSQL(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteMYSQL ¶
func BruteMYSQL(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteMongoDB ¶
func BruteMongoDB(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteNNTP ¶
func BruteNNTP(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteOracle ¶
func BruteOracle(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BrutePOP3 ¶
func BrutePOP3(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BrutePostgres ¶
func BrutePostgres(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteRDP ¶
func BruteRDP(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteRSH ¶ added in v2.6.0
func BruteRSH(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
BruteRSH implements the rsh protocol (TCP port 514). Protocol: \0local_user\0remote_user\0command\0
func BruteRedis ¶ added in v2.5.2
func BruteRedis(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteRexec ¶ added in v2.6.0
func BruteRexec(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
BruteRexec implements the rexec protocol (TCP port 512). Protocol: \0username\0password\0command\0
func BruteRlogin ¶ added in v2.6.0
func BruteRlogin(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
BruteRlogin implements the rlogin protocol (TCP port 513). Protocol: \0local_user\0remote_user\0terminal/speed\0
func BruteSMB ¶
func BruteSMB(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteSMTP ¶
func BruteSMTP(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteSMTPVRFY ¶ added in v2.6.0
func BruteSMTPVRFY(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
BruteSMTPVRFY performs SMTP user enumeration via VRFY, EXPN, or RCPT TO. The username field is the address to verify; password is ignored.
func BruteSNMP ¶
func BruteSNMP(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteSSH ¶
func BruteSSH(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteSVN ¶ added in v2.6.0
func BruteSVN(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
BruteSVN brute-forces SVN repositories using HTTP Basic authentication. SVN over HTTP uses WebDAV (PROPFIND or OPTIONS), but Basic auth check via GET/OPTIONS is sufficient for brute-forcing.
func BruteSocks5 ¶ added in v2.6.0
func BruteSocks5(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
BruteSocks5 brute-forces SOCKS5 proxy authentication per RFC 1928/1929.
func BruteTeamSpeak ¶
func BruteTeamSpeak(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteTelnet ¶
func BruteTelnet(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteVMAuthd ¶
func BruteVMAuthd(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteVNC ¶
func BruteVNC(host string, port int, user string, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteWinRM ¶ added in v2.5.2
func BruteWinRM(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func BruteWrapper ¶ added in v2.6.0
func BruteWrapper(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
BruteWrapper executes an external command with credential placeholders. Placeholders: %H (host), %P (port), %U (user), %W (password). Exit code 0 = success. Requires params["cmd"] to be set. SECURITY: Requires --allow-wrapper flag (params["allow-wrapper"] == "true").
func BruteXMPP ¶
func BruteXMPP(host string, port int, user, password string, timeout time.Duration, cm *modules.ConnectionManager, params ModuleParams) *BruteResult
func RunBrute ¶
func RunBrute(h modules.Host, u string, p string, timeout time.Duration, maxRetries int, output string, socks5 string, netInterface string, domain string, cm *modules.ConnectionManager, params ModuleParams) BruteResult
func RunWithTimeout ¶ added in v2.5.2
func RunWithTimeout(timeout time.Duration, fn func(ctx context.Context) *BruteResult) *BruteResult
RunWithTimeout executes fn with the given timeout. If the function does not complete within the timeout, a result with ConnectionSuccess=false is returned. The context passed to fn will be cancelled on timeout, allowing cooperative cancellation inside the function.
type CircuitBreaker ¶ added in v2.5.2
type CircuitBreaker struct {
// contains filtered or unexported fields
}
CircuitBreaker tracks consecutive connection failures per host and trips (skips further attempts) after a threshold is reached.
func GetCircuitBreaker ¶ added in v2.5.2
func GetCircuitBreaker() *CircuitBreaker
GetCircuitBreaker returns the global circuit breaker instance.
func (*CircuitBreaker) IsTripped ¶ added in v2.5.2
func (cb *CircuitBreaker) IsTripped(hostKey string) bool
IsTripped returns true if the host has been marked unreachable. Always returns false when the circuit breaker is disabled.
func (*CircuitBreaker) RecordFailure ¶ added in v2.5.2
func (cb *CircuitBreaker) RecordFailure(hostKey string) bool
RecordFailure increments the consecutive failure counter for a host and trips the breaker if the threshold is reached. Returns true if tripped.
func (*CircuitBreaker) RecordSuccess ¶ added in v2.5.2
func (cb *CircuitBreaker) RecordSuccess(hostKey string)
RecordSuccess resets the consecutive failure counter for a host.
func (*CircuitBreaker) Reset ¶ added in v2.5.2
func (cb *CircuitBreaker) Reset(hostKey string)
Reset clears the circuit breaker state for a host.
func (*CircuitBreaker) SetDisabled ¶ added in v2.5.2
func (cb *CircuitBreaker) SetDisabled(disabled bool)
SetDisabled controls whether the circuit breaker is active.
type ContextDialerWrapper ¶
type ContextDialerWrapper struct {
CM *modules.ConnectionManager
}
func (*ContextDialerWrapper) DialContext ¶
func (cdw *ContextDialerWrapper) DialContext(ctx context.Context, network, address string) (net.Conn, error)
DialContext dials using the ConnectionManager and propagates the context deadline to the connection so that MongoDB operations respect timeouts (3.5 fix).
type ModuleParams ¶ added in v2.6.0
ModuleParams carries per-module configuration such as auth method, domain, HTTPS flag, target path, etc. Modules read what they need and ignore the rest.