Results of a Password Cracking Contest in My Security Class (Fall 2021)
Each time I teach my Security class, I give a month-long lab to crack as many passwords as possible. For this fall’s contest (opened on October 4, 2021), I used two different hash types: MD5 and SHA-512. The contest closed on November 5th at 11:59 PM EST. The password hashes (16 total):
papabear:$1$kZDH71xq$alA2JftQaUWHlfrIENNIU.:1001:1001:,,,:/home/papabear:/bin/bash bluebear:$1$HS8m5A12$Ea22yiq0YjxSlc2CSSel5.:1002:1002:,,,:/home/bluebear:/bin/bash carebear:$1$yFRLir2I$FVJZ7xiQmK15Ae3gWONOx0:1003:1003:,,,:/home/carebear:/bin/bash polarbear:$1$Kn5uFJEh$H.MV5kUMuDaQ9X4t1vrwP/:1004:1004:,,,:/home/polarbear:/bin/bash sisterbear:$1$aBe48qS3$5ZvmIyFnjbehi4Zrd.5WK0:1005:1005:,,,:/home/sisterbear:/bin/bash barneybear:$1$lxWP2.6n$QLn5qBe95Eqwah7qRlGOh/:1006:1006:,,,:/home/barneybear:/bin/bash grizzlybear:$1$3ld2q9Oy$6/ZbRiTaAbUMlYgUHB2/H.:1007:1007:,,,:/home/grizzlybear:/bin/bash mamabear:$1$1bmGbv8A$cpdsAX3AYwDaU0aafJLZs/:1008:1008:,,,:/home/mamabear:/bin/bash brotherbear:$6$n9/hFY8Bd0FKsyWo$tBb/4UcJ6UDUM8SwNs3LFP/K9LAYUUyNaN0a10evcPSaJV1UkopIkI.XK1hwvALRn2fpmTD9dzfcImBteyjcs0:1001:1001:,,,:/home/brotherbear:/bin/bash pandabear:$6$Pm/RgBahkZLHPEj8$hTMTkUDTYulEuNm1jCQ8euWPnYGGbnoODsK7uP2sYfobUzKmfacDHkMDte0dQrEA9suTtJYTaXX.pEtnvn/Br0:1002:1002:,,,:/home/pandabear:/bin/bash cozybear:$6$8OJwuiFE1Q5ciMQK$4Lj9G2l7guIFWocRN5th5lJ361y/T5/DbCvRmpUzYwavsKOV3EFk64g96mEjWGIgnYfHdid3OLiRWP3yxzIP51:1003:1003:,,,:/home/cozybear:/bin/bash fancybear:$6$HNNO7e/xEtIzKilx$O9yFvvpFgzAUYD2w5ucIgSxGDRBKaMqb6Enn34vwyyt2QcT9SJRjtNANeOqVYGSHAHFxGLAX1EK1BNlUmdMb21:1004:1004:,,,:/home/fancybear:/bin/bash teddybear:$6$J5uVdrUK2GhBWYbM$0YUwIFIMMcuTm1A9Lb2ltiMtokjERuQFGGk6xVlkTMi49KKu17g9kJsHwCsMczc0cvqRoI2J.UMBSVC2viqM70:1005:1005:,,,:/home/teddybear:/bin/bash blackbear:$6$7PiFIzqAULeBkEFL$MYBjrfznucVWcElISyh.7SCd71jO2/J0N.dbzuhUEkgFgdnH9Sk4W8O3itHI5Z5De6Rn258VRsPJ/N5fO5E6l/:1006:1006:,,,:/home/blackbear:/bin/bash yogibear:$6$ae7QknT7/WKAGvNp$y2ZxVrfVdPqOXMWw2Cw0.psVHcHxNaBSxSGJ4DI8M4tz1m8R6cd7qlWzPCVZ8XymFOqYfqC2l7nZWpfDb7CFd0:1007:1007:,,,:/home/yogibear:/bin/bash jackbear:$6$jhAVayQIUbfKT3w2$qqOUPufJJI74EW5vlPMkZpmnr4wzxzkmjQxgv/qgNwC8JjA7sMwbf.XkXdR.xsuNz/a8vuDJU00Ehcz.BYzDA.:1008:1008:,,,:/home/jackbear:/bin/bash
105 submissions across two classes. The answers:
- (MD5) papabear:ishikariense => 94 students cracked this
- (MD5) bluebear:Leto => 99 students cracked this
- (MD5) carebear:panthers => 104 students cracked this
- (MD5) polarbear:931592 => 52 students cracked this
- (MD5) sisterbear:QHVRMHG => 1 student cracked this
- (MD5) barneybear:hUYBW5tB => 0 student cracked this
- (MD5) grizzlybear:WwdQUyJdXb => 0 student cracked this
- (MD5) mamabear:nwf_eBB{Bm => 0 student cracked this
- (SHA-512) brotherbear:hedleyite => 63 students cracked this
- (SHA-512) pandabear:41255066 => 71 student cracked this
- (SHA-512) cozybear:jacket025 => 53 students cracked this
- (SHA-512) fancybear:letmein123 => 97 students cracked this
- (SHA-512) teddybear:IDQhVo => 1 student cracked this
- (SHA-512) blackbear:zL8sYNSY => 0 student cracked this
- (SHA-512) yogibear:9ewmgtGJv6 => 0 student cracked this
- (SHA-512) jackbear:^/h5AVNH=b => 0 student cracked this
To earn all 10 / 10 points for the lab, students had to crack 6 or more passwords. The final distribution:
10 8 (x15) 7 (x29) 6 (x30) 5 (x13) 4 (x10) 3 (x4) 2 (x2) 1
The winner’s methodology and haul:
Passwords Cracked (10): carebear:panthers polarbear:931592 papabear:ishikariense bluebear:Leto pandabear:41255066 fancybear:letmein123 brotherbear:hedleyite cozybear:jacket025 sisterbear:QHVRMHG teddybear:IDQhVo Methods: carebear : found in rockyou.txt (MySpace leak) polarbear : bruteforced all 1-8 length digit combinations papabear : found in crackstation's password dictionary bluebear : found in crackstation's password dictionary pandabear : found in crackstation's password dictionary fancybear : found in crackstation's password dictionary brotherbear : found in crackstation's password dictionary cozybear : found in the Hashmob Combined Full wordlist sisterbear : bruteforced length-7 all upercase teddybear : bruteforced length-6 uppercase-lowercase combinations General details: Since did not have enough power to brutforce longer password, I decided to bruteforce smaller keyspaces using the mask feature of Hashccat starting small (eg. only lowercase) and working my way up to harder ones. Additonal Hashcat flags I like to use: -O : optimized kernel -w4 : using as many resources as possible. I turn this down to w3 if I'm doing something else on my computer.
Methodologies used by students:
Used john the ripper, ran simple "john file.txt" for 3.5 days and found 3 passwords so far that way. Also ran john with password lists from danielmeissler using --format== sha512crypt to get fancy bear, and --format== HMAC-SHA256 for cozy bear. carebear: panthers bluebear: Leto polarbear: 931592 fancybear: letmein123 cozybear: jacket025 pandabear: 41255066
papabear:ishikariense bluebear:Leto carebear:panthers brotherbear:hedleyite pandabear:41255066 cozybear:jacket025 fancybear:letmein123 METHODOLOGY Used wordlists: - darkc0de.txt - Common-Credentials/500-worst-passwords.txt - Common-Credentials/100k-most-used-passwords-NCSC.txt - unkown-azul.txt - Keyboard-Combinations.txt - darkweb2017-top10000.txt - xato-net-10-million-passwords.txt I mainly used John the Ripper, and let it run in the background while I did other work. Specifically I looked for LONG wordlists, that are MB long, so that I minimized the amount of time that I spent picking/setting up/running the commands. I also let my computer run overnight, changing the screen display to never time out. I hear that's bad for my battery, but my battery is already pretty bad, so I always make sure to have my charger with me.
carebear: panthers, I cracked this password using john without adding my own wordlist. bluebear: Leto, I cracked this password by passing the first 8 into john using the 10 million most common passwords as the wordlist. fancybear: letmein123, I cracked this password by passing the last 8 into john using the 10 million most common passwords as the wordlist. pandabear: 41255066, I cracked this password by passing the last 8 into john using the 10 million most common passwords as the wordlist. cozybear: jacket025, I cracked this password by passing the last 8 into john using the 2020-200_most_used_passwords.txt papabear: ishikariense, I cracked this password by passing the first 8 into john using the darkc0de.txt as the wordlist.
pandabear:41255066 fancybear:letmein123 brotherbear:hedleyite cozybear:jacket025 papabear:ishikariense bluebear:Leto carebear:panthers polarbear:931592 I divided the given set of hashes into two files based on hash type. Then, I concatenated all of the text files in the outermost directory of the SecLists Password folder into one large files of passwords. I did the same for each directory within Passwords. Then I ran John-Jumbo with each of these lists on each of the two files of hashes. I also ran the MD5 passwords with a larger list from crackstation.
papabear:ishikariense bluebear:Leto carebear:panthers polarbear:931592 brotherbear:hedleyite fancybear:letmein123 cozybear:jacket025 For the MD5 hashes, I primarily used John the Ripper to crack the passwords. I went through all files in SecLists and also went online for additional lists such as Kaonashi. For the SHA512 hashes, I used hashcat because I realized it would be faster after John the Ripper took too long. I reran hashcat with the largest text files in SecLists to search for SHA512, which is how I managed to find the 3 SHA512 hashes listed as the bottom 3 from the list above.
Passwords Cracked: bluebear:Leto carebear:panthers papabear:ishikariense polarbear:931592 brotherbear:hedleyite cozybear:jacket025 fancybear:letmein123 pandabear:41255066 Methodology: It did not take much time to realize that password cracking takes a lot of time. Before starting I did a bit of research on john and hashcat to understand how to efficiently use them. Additionally, I searched the web for more wordlists other than those in SecLists to download and run with the password crackers. After doing a bit of research I tried split the given passwords into two separate files, one file contained the md5 typed passwords and the other contained the sha512 typed passwords. I then tried to use hashcat, but after spending some time on it and reading tutorials, I was not able to get the correct settings and kept get warnings, so I resorted to using john. My first run of john I ran without any arguments on the file containing the md5 passwords. I quickly got carebear's password this way, (carebear:panthers), after which john then began its incremental password cracking strategy. I left john running on this mode for quite some time (about 2 days) and was unsuccessful in cracking anymore passwords, so I decided to terminate the process and try more wordlists. With this methodology I was able to crack a number of passwords. Using the bt4-password.txt wordlist, I cracked bluebear's password (bluebear:Leto). Using the darkc0de.txt wordlist, I cracked papabear}'s password (papabear:ishikariense). Using a wordlist that I had downloaded from the internet, kaonashi.txt, I cracked polarbear's password (polarbear:931592). While john ran to crack these passwords, I was doing more research on how to crack the password hashes. One strategy was to literally search for the usernames and hashes in google. To my surprise, I found write ups to previous CS116 Password Cracking Contests this way. Since any method other than collaborating with other students in the class was fair game I looked at the password solutions for every previous Password contest and made my own wordlist this way. However, even though I was sure at least L1verpool were to be a password this year as it had been a password used multiple times in previous semester, this wordlists did not yield any cracked passwords. After my wordlist of previous passwords was made, I found that it was getting a bit tedious having to switch from wordlist to wordlist once a wordlist had finished. Additionally, if I were not at my computer at the time a wordlist finished I lost valuable password cracking time. To resolve this, I created a simple script in BASH that took in a file of password hashes to crack, and a directory filled with password cracking wordlists. The script would then proceed to run john using each wordlist in the directory with the provided password hash file. This method saved a lot of time as I would no longer have to continuously check the progress john was making on a single wordlist as the next wordlist in the directory would automatically run. I even installed an application to my computer to prevent my computer from going to sleep so the script could run continuously. I let the script run for approximately a week on all the wordlists I had downloaded, and was able to crack the following passwords: - fancybear:letmein123 with wordlist 000webhost.txt - cozybear:jacket025 with wordlist 100k-most-used-passwords-NCSC.txt - pandabear:41255066 with wordlist 10-million-password-list-top-10000000.txt - brotherbear:hedleyite with wordlist bt4-password.txt Some other methods I used including running a 15GB wordlist on a separate computer I had available to me. This took a week to complete, and after it completed, the passwords it cracked were ones I had already cracked with the methods I used above. Additionally, I looked into running a password cracker on a cloud server, however, this method was not practical for me to use, having really only one other computer (my laptop) available at this point I was consistently moving around and losing connection with the cloud server, which would then stop the process. I attempted to research a way to resolve this issue but was unsuccessful, likely with more time and experience with cloud servers I would have been successful in solving this issue. All in all, this was a great learning experience. In future password cracking, some ways I would adjust my methods would be to merge all the wordlists I plan to use into one master wordlist and remove any intersections that might be found between wordlists. Having zero duplicate between wordlists would save a lot of time as it would avoid processing the same password multiple times. I would also designate a single computer to run the password cracker and a cloud server at the same time so I would still have full use of the computer I use for work. The main lesson learned is that password cracking takes a lot of time and resources, and the more time and resources you have available to you, the more successful you will be. BASH Script #!/bin/bash if [ ${#} -lt 2 ] then echo "Usage: ${0} password_hashes wordlist_directory" exit -1 fi WORDLISTS=$(ls ${2}/*.txt) for LIST in $WORDLISTS do echo "---------------------------------------------------------------------" echo "Now running john with wordlist: "${LIST##*/} echo "---------------------------------------------------------------------" echo john --wordlist=${LIST} $1 done