PPTP is a legacy VPN protocol — and by “legacy” I mean genuinely broken. Its MS-CHAPv2 authentication has been publicly demonstrated as crackable in under 24 hours regardless of password complexity, which is exactly why modern guidance treats any PPTP deployment found in an assessment as an automatic finding, full stop. THC-PPTP-Bruter is the classic tool for actually demonstrating that weakness in an authorized test: it automates brute-force login attempts against a PPTP VPN endpoint’s MS-CHAPv2 authentication.
Here’s how it works, how to install and run it, and how I use it (rarely, since PPTP is thankfully increasingly uncommon) in a real authorized assessment.
What THC-PPTP-Bruter Does
PPTP (Point-to-Point Tunneling Protocol) uses MS-CHAPv2 for authentication over TCP port 1723. THC-PPTP-Bruter works by:
- Establishing a PPTP control connection to the target VPN server.
- Attempting authentication using a username and each password from a supplied wordlist.
- Parsing the server’s MS-CHAPv2 response to determine success or failure.
- Optionally running multiple attempts in parallel to increase throughput, and supporting resume functionality for long-running attempts.
Because PPTP servers often don’t implement account lockout the way modern services do, and because MS-CHAPv2 has known structural weaknesses (the DES-based encryption of the NT hash can be split and brute-forced far faster than the password’s apparent complexity would suggest), this class of attack is unusually effective against PPTP compared to brute-forcing better-designed authentication protocols.
Installation
sudo apt update
sudo apt install thc-pptp-bruter -y
From source:
git clone https://github.com/f0rb1dd3n/thc-pptp-bruter.git
cd thc-pptp-bruter
make
Verify:
thc-pptp-bruter --help
Syntax
thc-pptp-bruter [options] <target-ip>
| Flag | Purpose |
|---|---|
-u <username> | Username to test |
-W <wordlist> | Path to password wordlist |
-w <seconds> | Wait time between attempts (throttling) |
-r <file> | Resume from a previous session’s state file |
-n <num> | Number of parallel connections |
-v | Verbose output |
Practical Example (Authorized Lab Target)
1. Basic brute-force attempt against a lab PPTP server:
thc-pptp-bruter -u labvpnuser -W /usr/share/wordlists/rockyou.txt 192.168.56.30
Sample output structure:
THC-PPTP-BRUTER - v0.1.4
Starting bruteforce against 192.168.56.30, user [labvpnuser]
Loaded 14344392 passwords
Trying: 123456 ... FAILED
Trying: password ... FAILED
Trying: LabPass123! ... SUCCESS
2. Throttled attempt (recommended to avoid overwhelming the target or looking like a DoS in shared lab infrastructure):
thc-pptp-bruter -u labvpnuser -W wordlist.txt -w 1 192.168.56.30
3. Resume an interrupted long-running attempt:
thc-pptp-bruter -u labvpnuser -W wordlist.txt -r resume_state.log 192.168.56.30
Real-World Workflow (Authorized Engagement Only)
# Step 1: Confirm PPTP is exposed
nmap -p1723 -sV 192.168.56.30
# Step 2: Build a targeted wordlist using CeWL + RSMangler against the organization's public content
cewl https://lab-target.local -w seed.txt
rsmangler -f seed.txt -o candidates.txt
# Step 3: Run the brute-force attempt against the PPTP endpoint with authorization
thc-pptp-bruter -u labvpnuser -W candidates.txt -w 1 192.168.56.30
The real deliverable from this kind of test usually isn’t “we cracked the password” — it’s the finding itself: PPTP should not be in use at all. Modern VPN protocols (IKEv2/IPsec, WireGuard, OpenVPN) don’t share MS-CHAPv2’s structural weaknesses, and any PPTP endpoint discovered during reconnaissance should be flagged as a critical/high finding regardless of whether the brute-force succeeds.
Troubleshooting
- Connection refused on port 1723: the GRE protocol (IP protocol 47) used alongside PPTP’s control channel is often blocked by intermediate firewalls or NAT devices, causing authentication attempts to hang even when the control port is reachable — check GRE passthrough is allowed in the lab network path.
- No successful attempts despite a large wordlist: confirm the username is correct first; PPTP brute-forcing tests one username against many passwords, so an incorrect username guarantees failure regardless of wordlist quality.
- Slow throughput: increase parallel connections with
-n, but be mindful this increases load on the target VPN concentrator.
Best Practices
- Treat any discovered PPTP service as an automatic finding in your report, independent of whether brute-forcing succeeds — the protocol itself is the vulnerability.
- Throttle attempts (
-w) in shared or production-adjacent lab environments to avoid unintended denial-of-service effects. - Pair with a targeted wordlist (CeWL + RSMangler) rather than a purely generic dictionary, since PPTP endpoints are often tied to a specific organization’s naming conventions.
Common Mistakes
- Running unthrottled, high-parallelism brute-force attempts against production infrastructure without coordination, risking service disruption.
- Overlooking that PPTP’s core vulnerability is architectural (MS-CHAPv2 weaknesses), not just “weak passwords” — even a strong password doesn’t fully protect a PPTP deployment.
- Forgetting to check GRE protocol passthrough when troubleshooting connection issues, which is a very common false negative cause.
FAQ
Is PPTP still used anywhere in production? Rarely, but it does still turn up on legacy routers, older NAS devices, and small-business network appliances that haven’t been updated. When found, it’s treated as a significant finding regardless of password strength.
Why is MS-CHAPv2 considered broken? Because of how it derives its DES-based encryption keys from the NT password hash, an attacker can split the cryptographic problem into pieces that are individually crackable in a very short time, effectively making the password’s length/complexity far less protective than it would be against a well-designed modern protocol.
What should organizations use instead of PPTP? Modern alternatives like IKEv2/IPsec, OpenVPN, or WireGuard, none of which share PPTP’s MS-CHAPv2-based structural weaknesses.
Summary
THC-PPTP-Bruter is a narrow, purpose-built tool for a narrow, largely historical problem — but when you do encounter PPTP in an authorized assessment, it’s the fastest way to demonstrate concretely why the protocol needs to be retired, not just described as theoretically weak. In most modern engagements, finding PPTP exposed at all is the headline finding; successfully brute-forcing it is just the proof.
References
- THC-PPTP-Bruter source repository: https://github.com/f0rb1dd3n/thc-pptp-bruter
- Kali Linux Tools Listing: https://www.kali.org/tools/thc-pptp-bruter/
- Original MS-CHAPv2 cryptanalysis research (“Divide and Conquer” attack by Moxie Marlinspike): https://www.cloudcracker.com/blog/2012/07/29/cracking-ms-chap-v2/