This workshop utilizes knowledge about Linux, Windows and computer hardware. Participants will need a system they have administrative control over to install and run various software and virtual machines in order to learn how to effectively crack Windows passwords.
Rainbowtables such as Project Rainbowcrack and Free Rainbow Tables require terabyes of fast storage to read from. They are ineffective against passwords with salts. Rainbowtables are very specific to a given password hash and type, and would need to be generated for multiple hash types. They are slow to generate and unable to meet the demand of modern password cracking where being dymanic, agile, flexible and scalable are key. Rainbowtables are static, rigid; to this end, they should only be mentioned as a history lesson, and nothing more.
Hashcat is a powerful GPU password cracker. It is free, open source and available on most Operating Systems. It is agile, scalable and up to date. The Hashcat Wiki is highly recommended to keep open as a reference for this workshop.
You should install the latest version of hashcat on your system or virtual machine:
brew install hashcat
NTLM follows a very basic process:
For this lab, please download 2020-200_most_used_passwords.txt from this link.
This is a basic layout on how we will use hashcat from the command line. Most of the command will be the same regardless of the OS. Crack the following password using the following example command:
When you successfully crack a password, you will notice a couple of things:
Wordlists can only take you so far since the text files cannot account for various mutations. Hashcat has the functionality to insert variables that don't exist in the wordlist but can help find the hash.
The following hash has one extra digit at the end. Use variables to solve:
The following hash has four extra characters at the end. Use variables to solve:
Cracking hash5 may result in an odd answer that is not human readable. You will need to convert the hexadecimal result to see what the password is.
Take the hash and convert it in CyberChef as shown below:
The following hash has four extra characters at the beginning. Use variables to solve:
As written in the wiki, this is a complicated attack mode with a wide variety of modifications, making it flexible, accurate and efficient. A simple rule can be using "$1" to append a digit, making password into password1. Here are some other examples:
^!^1 >> password > 1!password
so0 sa@ >> password > p@ssw0rd
c so0 sa@ $1 >> password > P@ssw0rd1
Download and complie or extract the maskprocessor from Github.
With the software ready for use, run the following command that will make a 3 digit rule file:
./mp64.bin -o append_3_digits.rule '$?d $?d $?d'
This rule file will append three digits to whatever password it is trying to break, and it will do it in succession as shown above. Combine the rule we just created and the wordlist to find the following password:
In the same wiki, there is a section on generating rules on the fly.
Use this part of the wiki to find the following password; you may need to play with various numbers of rules to get the right answer. Don’t give up right away!
Mask attacks are a more specific version of brute force. We use certain candidate keyspaces to crack more efficiently. Masks are simple strings that use placeholders, with a question mark and a static letter to define the variable.
The following hash can be cracked with a mask only; you don't need the wordlist. This password contains 4 lowercase letters:
The following password has 3 digits and lowercase letters; there is no need for the wordlist
The following password has 7 uppercase letters and 1 digit (though not in that order); it is a word from the wordlist, but you don't need the wordlist to solve.
Hashcat has some built in rules and masks for you to use. Find them in the program's folders:
TrustedSec's Hate_crack repository has some masks that you can use as well:
PRINCE (PRobability INfinite Chained Elements) takes one input wordlist and builds “chains” of combined words automatically. It is simple to use, requires no monitoring by the hacker, any extensions or syntax knowledge. The tool builds its own wordlist, hybrid, keyboard walks/passphrases and brute force for you. Download from Github here; this thread is also useful to understand PRINCE. As with the prior tool, you'll need to compile or extract to run.
NOTE FOR MAC USERS: this issue explains what you need to do in order to get the tool working on macOS.
If you ran the princeprocessor against the wordlist we have been using in this workshop, what is the result?
Seeing what results from sending a wordlist into princeprocessor, we will do that again, but also pipe that output into hashcat to solve the following hash:
Use the same command, but change the wordlist to use Permutations/1337speak.txt instead to solve the following hash:
The following chart shows how most passwords are sorted by difficulty.
The potilfe stores what passwords were found by hashcat. The default potfile does not differentiate between hash types; it only stores all hashes found in the order they were found. You can use
--potfile-path=/path/to/potfileto specifically select where you want hashes saved, for example, saving all the SHA1 hashes in one potfile and all the NTLM in another.
Submit your answers at this link. Use the hints at the bottom of each section to help you if you get stuck.
Challenge Number | NTLM Hash | Challenge Number | NTLM Hash | Challenge Number | NTLM Hash |
---|---|---|---|---|---|
1 | 774d222fd2128b6802f2586deb544681 |
4 | 002af721365d3098143821fdbeb68618 |
7 | b9b9ec843c3b2965e2ad62d847822cd4 |
2 | 41ff752227c53858fc0fc9c90dbe4d5b |
5 | f80256d11073cc29f23cc0cd48df0cc3 |
8 | 498b372b1ae46c1b70e0b842f68b621c |
3 | 3904b0ffab933fceb6e1734190839903 |
6 | 73752df67783192d0eb7a10c7d7b3f8d |
9 | 83487ef3b85d39dcd3a0a73328c5974e |
Challenges 1-3 are based on one of the words from the first wordlist we used in the workshop.
Challenges 1-3 are permutations on the word "monkey".
Challenges 4-6 are combinations of common words and a single digit.
Challenges 4-6 should be quickly solveable with a wordlist and appending a mask digit.
Challenges 7-9 are are phone numbers.
Challenge Number | NTLM Hash | Challenge Number | NTLM Hash | Challenge Number | NTLM Hash |
---|---|---|---|---|---|
10 | 00a08d9372a3546d0292bb65d3945acb |
13 | 00046ff8f504f4f921cd68b77c04fff5 |
16 | 00216511f59f814b8864481fd377be39 |
11 | 058c61e6208217e954c4735ab6a3f109 |
14 | 0047602fc375c506482010bc998e2ef5 |
17 | 008d4dd9b8ef094ceddf4cbf01f37831 |
12 | 01c5a6518a83da30b8752b6488547516 |
15 | 05ce20143ce083278fe34aa4ad3b7708 |
18 | 018fdf097faeed03c37c9894fc533063 |
Challenges 10-12 are short phrases.
Challenges 10-12 are breakfast food related.
Challenges 10-12 one password has a special character, another has a digit.Between all three, there are only two captial letters.
Challenges 13-15 are used by system/network administrators.
Challenges 13-15 all contain the lowercase word "admin".
Challenges 13-15 all have the word "admin" and contain digits. Only one has a special character.
Challenges 16-18 are all iPhone related passwords
Challenges 16-18 are passwords that express how the user feels about the iPhone.
Challenges 16-18 are passphrases with digits and no special characters.
Challenge Number | NTLM Hash | Challenge Number | NTLM Hash | Challenge Number | NTLM Hash |
---|---|---|---|---|---|
19 | 0000076d1e4487f9e82a5c39dcd23394 |
22 | 00479948a0d0d0d801c0705cbbcf4cf3 |
25 | 00010e0b5de686f44a79d706a032e62d |
20 | 00000787244575a85fa642eb9963e4a2 |
23 | 009bb868b3ebc09fd9b0559a9e1bd21c |
26 | 023b73920ad2321294da1a06daa3bf97 |
21 | 00000790734052dbdf030e40338f51cf |
15 | 022a6e54c2b124eb4291da495e6626f5 |
27 | 0479871d7b684e5a7331528d64cae7fe |
Challenges 19-21 three word passphrases.
Challenges 22-24 are all related to laptop.
Challenges 25-27 are all related to dojo.
Use this tool to get the 7zip password.