|
Message-ID: <5029665E.1060102@mccme.ru> Date: Tue, 14 Aug 2012 00:41:02 +0400 From: Alexander Cherepanov <cherepan@...me.ru> To: john-users@...ts.openwall.com Subject: Alexander's writeup for CMIYC 2012 Hi! This is the first time I participated in "Crack Me If You Can" contest and as a member of john-users team I got much fun and a ton of experience -- thank you, guys! = Hardware One home computer with Intel Core2 Quad CPU Q6600 @ 2.40GHz (4 cores, 4 threads) used for wordlists manipulations and for running scripts. Two dual-cpu servers with Intel Xeon CPU X5670 @ 2.93GHz (24 cores, 48 threads) used for actual cracking. = Software John the Ripper (contest edition) plus some Perl and bash scripts. = Preparation Fortunately I found time to make some preparations before the contest. 1. I downloaded several full wikipedia dumps -- enwiki, dewiki, eswiki, ruwiki -- and created wordlists (sorted by frequency) from them approximately like this: $ bunzip2 < enwiki-20120702-pages-articles.xml.bz2 | perl -lne 'print lc $& while /\w+/g' | sort | uniq -c | sort -rn | perl -pe 's/\s*\S+\s+//' | bzip2 > enwiki.lst.bz2 (not exact command line used). Tried to do the same with Gutenberg but it was much bigger and slower and didn't finish in time. 2. I wrote a script to generate dates in various formats and a script to calculate salts distribution for each format. Plus some other scripts were sketched during PHD2012 and trial pseudo-contests. 3. I chose and installed ircd on our contest server. = Contest: challenges Challenges were time-critical so I started by looking into challenges. IMHO it's very important to convert source files into the form which john can load and do it as early as possible so that all the team can start crack them instead of fighting with converting. john readily supported encfs, odt, pdf, rar, ssh, truecrypt and zip -- seven, not bad, eh? Well, encfs2john and odf2john didn't run with the python from my Debian Stable, zip2john failed on contest files, pdf2john completely failed and truecrypt2john didn't build for me. Only rar2john and ssh2john worked right away. Not that good overall. Though encfs2john and odf2john happened to run on Debian Unstable. (And JimF fixed zip2john and provided dumps for zip and pdf. Then Dhiru added support for sxc files and provided corresponding dumps.) After these 4 dumps were ready (and uploaded for the team) I started to crack them with default john settings, 10 threads each. And 1h31 later happened to be the first to crack encfs-easy. These jobs were run for ~15h and only odt-easy was additionally cracked but I wasn't the first to do it. Then I tried to keep track which challenges were cracked by us and by others (according to CMIYC tweeter), and update our team on it. = Contest: password hashes After challenges were maxed out I switched to hashes. First of all I tried to convert all hashes to their canonical form. This suprisingly took much more time then it was anticipated. Then I started to adapt my scripts for this contest, improve them, deal with bogus lines in .pot files etc. and ended up by being in charge of all the scripts for processing .pot files on our contest server. That was quite nervous especially when totally switching to improved scripts 8 hours till the end of the contest:-) Working on scripts I had almost no time to actually crack anything. Nevertherless I managed to run several jobs. My workflow was like this: - run some attack against all types of hashes with the following script: ---------------------------------------------------------------------- #! /bin/bash john=path/to/john if [ "$1" = "" ]; then echo "Usage: ./run.sh <attack-name> <john-option> ..." echo "Example: ./run.sh enwiki-ru --wordlist=enwiki.lst --rules" exit 1 fi name="$1" shift for file in hashes-*; do basename=`basename "$file"` format=`echo "$basename" | cut -d . -f 2` $john --session="$name.$basename" --pot="$name.$basename.pot" --format="$format" "$@" "$file" & done ---------------------------------------------------------------------- and let it run in the background; - monitor it sometimes with "top", "wc -l *.pot" and the following script: ---------------------------------------------------------------------- #! /bin/bash john=path/to/john killall -HUP john for file in *.rec; do format=`basename "$file" .rec` printf "%50s " "$format" $john --status="$format" done ---------------------------------------------------------------------- - when fast hashes finish and only 4-6 running johns remain start the next attack; - when time to stop an old job comes use some "ps | grep | cut | xargs kill". I ran john with default settings, with the list of dates generated by my script as a wordlist and with wordlists generated from wikipedia, with and without rules. All attacks were against all hashes hence the large overlap in cracks. The stats: | Attacks | format | dates default dewiki-ru enwiki enwiki-ru eswiki eswiki-ru ruwiki-ru | sum uniq val points ------------+---------------------------------------------------------------------------------+---------------------- bf | 0/23h* 0/14h* 0/08h* 0/14h* 1/31h* 0/16h* 0/08h* 0/08h* | 1 1 5000 5000 sunmd5 | 0/--- 0/--- 0/--- 0/--- 0/--- 0/--- 0/08h* 0/08h* | 0 0 3000 0 sha512crypt | 0/23h* 0/14h* 0/08h* 1/14h* 4/31h* 0/16h* 0/08h* 0/08h* | 5 4 2000 8000 mscash2 | 0/23h* 0/14h* 0/08h* 1/14h* 2/31h* 1/16h* 0/08h* 1/08h* | 5 2 600 1200 md5 | 0/23h* 4/14h* 20/08h* 44/14h* 51/31h* 31/16h* 23/08h* 15/08h* | 188 71 500 35500 dynamic_28 | 0/23h* 11/14h* 25/08h* 42/14h* 51/31h* 36/16h* 23/08h* 16/08h* | 204 76 500 38000 dynamic_21 | 1/03h 6/14h* 59/08h* 41/14h* 45/31h* 65/11h 65/08h* 57/08h* | 339 83 12 996 des | 13/01h 108/14h* 693/08h* 596/14h* 1178/31h* 685/09h 683/08h* 635/08h* | 4591 1292 9 11628 phps | 1/00h 19/14h* 111/08h* 51/08h 164/31h* 91/02h 117/08h* 106/08h* | 660 173 8 1384 salted-sha1 | 2/02h 25/14h* 170/08h* 97/14h* 230/31h* 156/07h 162/08h* 145/08h* | 987 246 8 1968 oracle11 | 2/01h 20/14h* 105/08h* 67/14h* 157/31h* 101/04h 110/08h* 101/08h* | 663 168 7 1176 mscash | 0/00h 5/14h* 86/08h* 41/06h 124/31h* 65/01h 77/08h* 69/08h* | 467 130 7 910 nt | 4/00h 722/14h* 474/00h 188/00h 630/00h 303/00h 456/00h 422/00h | 3199 1132 2 2264 raw-md5u | 0/00h 65/14h* 57/00h 20/00h 73/00h 34/00h 49/00h 45/00h | 343 117 2 234 raw-md4 | 1/00h 172/14h* 118/00h 48/00h 154/00h 69/00h 113/00h 103/00h | 778 277 1 277 raw-md5 | 1/00h 136/14h* 121/00h 59/00h 161/00h 73/00h 114/00h 109/00h | 774 233 1 233 raw-sha1 | 1/00h 272/14h* 253/00h 115/00h 353/00h 167/00h 250/00h 228/00h | 1639 523 1 523 mysql-sha1 | 1/00h 116/14h* 144/00h 56/00h 193/00h 100/00h 142/00h 126/00h | 878 261 1 261 nsldap | 1/00h 218/14h* 214/00h 85/00h 281/00h 128/00h 207/00h 175/00h | 1309 440 1 440 ------------+---------------------------------------------------------------------------------+---------------------- total | | 5229 109994 The time spent on each attack is shown after the slash with the star meaning that the attack didn't complete and was aborted. = Experience This contest gave me a great deal of valuable experience in password cracking and some general sysadmin experience. Multilayered ssh tunneling worked well with autossh. rsync over ssh turned out to be quite nice. OTOH ircii in gnome-terminal was quirky and hard to use leading me to miss some messages and post garbage sometimes. My apologies for that to the team. = Wishlist for Korelogic Here are several suggestions/wishes for Korelogic. - Clarify whether there are any 8-bit passwords in the contest and how to submit them. - Describe how passwords for des are checked -- are 8-bit and long variants accepted as valid or not. - Provide feedback on which passwords were not accepted as valid. And from the table above it seems that phps hashes are somewhat overpriced compared to salted-sha1 and oracle11. = Thanks I'd like to thank Laboratory of Algebraic Geometry, HSE, and its head Alexey Zykin personally for letting me use laboratory's servers in this contest. Thanks to Korelogic for good organization of the contest, to Solar Designer for trusting me to manage server scripts and to all the team for making the experience so fascinating! -- Alexander Cherepanov
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.