As I mentioned in my post over at TekDefense, the number of data dumps put out has increased heavily, mostly because of the Anonymous #OpIsreal stuff. With that in mind I figured this would be a great time to talk about my process for finding, gathering, and cracking hashes. I should note that I am a hobbyist in this arena, so don’t take my word as gospel here. Test my methods and develop a solution that fits your needs.
There are many methods for finding database dumps, here are a few:
- PasteLert: Created by Andrew Mohawk, PasteLert will index Pastebin and alert you to items that match whatever query you have. I have it alert for anything matching the MD5 for 123456 as this is the most common password.
- DumpMon: Dumpmon monitors for data dumps and reports them via twitter
- PastebinDorks: PastebinDorks is another great Twitter account to follow for interesting pastes.
All of these sources are great, just monitor them and watch for the links to the data breaches
Collecting the Hashes
Usually the files or URLs that have hashes in them also contain other data. The following screenshot is an example of the typical format:
The way this is formatted, we could pull out the MD5s with the cut command in Linux. For others though, the format is so inconsistent that we would not be able to grab the MD5s easily. A tool I created (tekCollect) can grab them with ease. Download tekCollect here. tekCollect can grab specified data types from a file or URL. In this case I will use the URL option:
root@bt:~/workspace/Automater# ./tekCollect.py -u http://pastebin.com/r
aw.php?i=S6wCigZ5 -t MD5
With a -o option on the command, you can have tekCollect output the results out to a file.
My usual process for cracking hashes is to check the hashes against a wordlist, and for those that can’t be found with the wordlist, I attempt to bruteforce them using hashcat masks.
BackTrack (Kali) comes with a bunch of wordlists. If you need another though I have some available here.
As I am doing my cracking within a VM, and not on a physical machine with hardcore GPUs I use traditional hashcat instead of oclhascat.
When you run hashcat it will hash your wordlist and then compare those hashes to the hashes you want to crack:
hashcat -o crackedhashes.out demohashes.out 1aN0rmusWL.txt
Using this option in less than 5 seconds we were able to crack 33 of the 413 passwords.
Now you may be wondering why only 33. The main reason for this is that this was part of #OpIsreal and because of that my dictionary being primarily English will not detect foreign languages. Notice how all the hashes that were found translated to passwords consisting of only numbers.
No matter how good your wordlists are, you are never going to catch all of the passwords. There may come a time where you will want to bruteforce your way in. What this means is that you’ll need to try every possible combination in an attempt to determine the password. Luckily, running tools like Pipal we are able to understand that most passwords follow certain formats. For instance, we understand that most passwords consist solely of lowercase letters. Using hashcat masks, we can tell hashcat the format we want it to look at.
For this attempt I am going to attempt to bruteforce all combinations of 8 digits:
hashcat -a 3 -o crackedhashes2.out demohashes.out ?d?d?d?d?d?d?d?d
Now, we have captured 46 more hashes. By experimenting with the hashcat masks, you will be able to bruteforce your way into a good number of these.
Like I said in the beginning of the post, I am not an expert in password cracking, but more of a hobbyist. Using my wordlists and hashcat masks, I am usually able to get 60% to 80% of the passwords from a dump. What is your method and how successful is it?