OG Author: m0rph
Date: July 25, 2014
NO WORDLISTS WERE USED IN THIS TUTORIALSTRICTLY BRUTE FORCE MOTHAFUCKAAAASGood day ladies and gents! Today I'd like to propose an assumption-based method to cracking complex 8-10 character passwords often used by regular users. This method is applicable to typical user-passwords in current day systems. As the times change, we must also change!
A typical password today consists of these criteria:
- At least 1 special character
- 8 characters minimum
- At least 1 upper case character
- At least 1 lower case character
- At least 1 number
Damn...one would assume if these rules are followed, the chances of cracking a hash are minimal without some ridiculously complex ruleset or ultra-mega huge word list; however, I assure you, for the vast majority of the sheep in the flock, this isn't necessarily true.
Out of 10 people, how many would you say use the minimum 8 characters for their password? Without a doubt, over half. Out of 10 people, how many would you say use an exclamation point as their special character? Shit, an exclamation point is right there, easy to remember...probably over half. Out of 10 people, how many would you assume put a digit at the end of their password? With the history of the epic password "abc123" I think it's safe to say, over half.
So how can we leverage these assumptions in a program like hashcat for faster cracking? With a simple special charset and a mask! That's how!
Let's examine the exponent potential for such a password. If we assume we have an "!" in the first position of the password, we have 1
1. 1 possibility.
If we assume, we have an "!" and any digit (0-9) at the end of our password, what's our range of possibilities now?
1 + 10
1 = 11. And if we add another digit we have 1 + 10
2 = 101 possibilities.
Here's an example of the templates for our assumed password(s):
!xxxxxxN for 8 chars w/ 1 digit
!xxxxxxxN for 9 chars w/ 1 digit
!xxxxxxNN for 9 chars w/ 2 digits
!xxxxxxxxN for 10 chars w/ 1 digit
!xxxxxxxNN for 10 chars w/ 2 digits
!xxxxxxNNN for 10 chars w/ 3 digits
We are assuming people are lazy, have met the minimum extra-requirements for their password security and now have to come up with any random 6-8 character string + any combo of 1-3 digits.
Let's try to calculate the max number of possibilities UpperLowerAlpha with the most complex of these: 10 chars w/ 1 digit.
1
1 for our exclamation point (or any other specified special character..."!" being the most commonly used) since we are using both Upper and Lower case, per-digit becomes 56 combos:
(1)(56)(56)(56)(56)(56)(56)(56)(56)(10) = X number of Total Possible Passwords
Or
1 * 56
8 * 10
1 = X
1 * 96717311574016 * 10 = 967173115740160
Although that's a big number, that can easily be cracked in a week with a low-end GeForce GTX460 @ 1008M c/s (or 1008000000 tries per second) for $130 (source:
http://golubev.com/gpuest.htm) when used with a charset like this:
--custom-charset1=! --custom-charset2=?l?u <hash> ?1?2?2?2?d
The above tags in hashcat will append a 1 to the beginning of every guess, brute-force uppercase & lowercase letters as it guesses, and append one digit from 0-9 at the end of every guess. It will cause hashcat to attempt to crack 5 character hashes that look similar this until it finally cracks the hash:
!aBCD0
!qweR5
!JfXX3
!PaSs9 <-- cracked
Here are some benchmarks I've performed on some test hashes with my GPU @ ~1050M c/s.
More benchmarks to come in the future. I realize this isn't going to cover every 8-10 character password imaginable, but it should at least work on a very large number of modern hashes. Thoughts?