July 08, 2007

Challenge Solution: Cracking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Password

The password challenge has come to an end, and we have a winner :) The main goal of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenge was not to show up your brute force capabilities, but to show up your analysis skills and real-world use of common cracking tools.

First of all, thanks everybody that took cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time to participate. We have received multiple submissions and enjoyed reviewing all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m while going through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reasoning and procedures you follow to guess/crack cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password.

In order to obtain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cleartext password from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system/application after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compromise, and provide ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r details about this hash, you first need to identify what type it is. You can try to guess it based on its length (24 chars) and character set used (probably a daunting task), or you can try to use tools like John cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Ripper (under Unix or Windows).

Please, find below cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 official RaDaJo answer.

Questions & Answers:

1. What is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system or application that use this kind of password string and for what purpose?

We have found ourselves confronted against this type of hashes in several occasions during our pen-test activities, and it is used by HP-UX in Trusted System mode. HP's proprietary Unix version has always used cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 /etc/password file to store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user credentials, and when ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Unixes started to use /etc/shadow file to avoid local access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hashes by non-privileged users, HP implemented cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Trusted System mode, where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hashes are stored in a directory structure under /tcb/files/auth, only readable by root, using multi-DES hashes. These hashes use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bigcrypt() function (versus cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standard Unix DES crypt() function).

Fortunately, nowadays HP-UX also supports cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 usage of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standard /etc/shadow mechanism and MD5 hashes.


2. What is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 format and crypto algorithm(s) used on this password string?

This type of hash uses a format similar to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standard Unix DES hashes, but it extends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash length. The standard Unix DES hashes are implemented on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crypt() function and generate an output of 13 characters. The first two characters are a random salt used to encrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user password. Specifically only 6 bits from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se two character are used, for a total of 12 bits, or 4096 possible combinations (2^12). The next 11 characters represent a standard Unix hash generated using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DES algorithm (25 times), taking as input: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 12-bit salt, an all-zeros input block, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user password truncated to 8 characters and taking only 7-bits per character – this conforms cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 56-bit DES key. The output, salt plus final ciphertext, is encoded into a base 64 printable string.

Therefore, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 example, "VOhRrmhZvX7lEG9KvuF/6FVA", cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first portion, "VOhRrmhZvX7lE", is a standard Unix hash that corresponds to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first 8 characters of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password, where "VO" is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 salt and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest, “hRrmhZvX7lE”, is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DES generated hash.

When cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bigcrypt function is used, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first two bytes of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first hash ("hR" in this case) are used as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 salt for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se two characters plus cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remaining 11 characters conform anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r standard Unix DES hash, "hR + G9KvuF/6FVA". This second portion corresponds to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 8 characters (or less) of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password. The final hash is just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concatenation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first hash portion plus cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second portion. You can get all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 man page for bigcrypt().

This means we really have two shorter standard Unix DES hashes to break, instead of a longer one. Is this hash format somehow familiar to you? It starts with an "L" and ends with an "M". Yes!, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Microsoft Windows LM (LANMAN) hashes use a similar algorithm, splitting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original password in two 7 bytes portions and appending cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 output hashes. LM even converts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original password to uppercase, but that's anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r story...

It seems HP designed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 algorithm this way in order to make it reversible. You can easily unconvert an HP-UX system from Trusted System mode to standard Unix mode. No action is required by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 administrator on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 users’ passwords after converting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 operating system automatically leaves just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first portion of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user password (truncated to 8 characters) after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 conversion, as in any standard Unix DES system.

Theoretically, it seems cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are no limits on applying this algorithm, that is, on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of hashes you can append, although cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HP-UX password man page recommends a maximum of 40 character passwords. However, it works with passwords over that limit; we tested it with a 50 character password and it generated a valid seven parts hash.


3. What is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 clear-text password of your critical system? Please, detail cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process you followed and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tools you used to obtain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password.

What do you think it is much more complex to guess, one number between one and one million, or two numbers between one and one thousand? If you review cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 math, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right response is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first one, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365refore, trying to crack this password hashing schema (two 8 character passwords) is much easier than expected, that is, cracking a 16 character password.

The 14 character password from where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "VOhRrmhZvX7lEG9KvuF/6FVA" hash was derived is "winniecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365pooh9".

By default, John cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Ripper cannot crack cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two part hash even if you have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 complete password in your dictionary. The reason is that it tries to crack both parts individually, so it uses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same dictionary words (starting with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first character of each word) for both parts, independently.

In order to run John against this hash successfully, you simply need to create a new file, called "password" in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 examples, containing a valid Unix username/password entry, such as:

root:VOhRrmhZvX7lEG9KvuF/6FVA


If you run John with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default options, you immediately will get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following results:

$ john password
Loaded 2 password hashes with 2 different salts (Traditional DES [24/32 4K])
winnieth (root:1)

If you wait for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prompt to return back, depending on your CPU power, you can wait for hours till John finds cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 complete password using brute force techniques. The main hints to guess cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hashing algorithm are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 indications that John provides about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 existence of multiple hash portions, with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Loaded 2 password hashes with 2 different salts" message, and with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ":1" appended at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 username, indicating it found cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first part of a hash.

With cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 knowledge of how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hashing algorithm works, you can create a new dictionary where you split cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 words that are bigger than 8 character on your dictionary, in multiple 8 character (or less) words, so that "winniecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365pooh" will become "winnieth" (first 8 characters) and "epooh"(remaining characters). The first word will be used and succeed breaking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second word will be used to break cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second part. Easy, isn't it? (elegance versus brute force)

This basic Perl script, "split_dict.pl", splits a dictionary file to be used against this type of hashes. It reads your dictionary file from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standard input and generates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new "splitted" dictionary on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standard output:

- On windows:

C:\>perl split_dict.pl <> password_splitted.lst

- On Unix:

$ cat password.lst | ./split_dict.pl > password_splitted.lst

Now, it is time to start auditing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 strength of your HP-UX Trusted Systems passwords!

For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenge example, John is able to provide cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results immediately, without using any of its brute forcing capabilities, because "winniecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365pooh" is a word (apart from being a bear ;) ) included in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default John's dictionary file, called "password.lst" (nowadays, with 3107 word entries). We wanted you to solve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenge without requiring a huge dictionary file, so we used cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default one :) The single digit number at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password is tried by one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default John's rules.

Using John after processing and splitting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dictionary file, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results are:

$ john password
Loaded 2 password hashes with 2 different salts (Traditional DES [24/32 4K])
winnieth (root:1)
epooh9 (root:2)
guesses: 2 time: 0:00:00:00 100% (2) c/s: 119000 trying: tabatha9 - action9

Unfortunately, this type of hash is used in very critical environments world-wide, and breaking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m is like breaking several individual traditional Unix hashes, no matter how long cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password is.

Finally, John cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Ripper by default cannot crack cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se hashes if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are bigger than 16 characters, or two-portion bigcrypt() hashes, but this doesn't mean you cannot modify John's source code to recursively apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same algorithm on bigger hashes, using our "splitted "dictionary file.


The results:

The winner is Pieter Danhieux from Belgium. Congratulations Pieter! To win cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenge, all skills are useful, technical and social. Pieter could partially validate his technical submission by knowing some social details about our past/current professional life. I really enjoyed your submission ;) The autographed copy of Ed Skoudis' "Counter Hack" book is on your way!

An honorable mention goes to Rafael Serrada from Spain. Rafa, thanks for sending an image showing how Winnie (PEZ) finally surrendered and provided you cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password :) (see below) Great job gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ring most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details!

I hope you all enjoyed this challenge and I encourage you to participate on new future RaDaJo challenges.



Labels:

3 Comments:

Blogger rafa said...

Hi Raul and Rajajo CRew !

Thank you very much for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mention ! It is my first challenge and it will not be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last one !

I had really a great time trying to resolve it, and reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 solution and Pieter answer.

Thank so much for such a great time and your blog,

hasta luego !!

4:27 PM  
Blogger summun said...

prfff... lo que me queda por aprender...
Sois los amos! Gracias por este reto!

12:45 AM  
Blogger Raul Siles said...

¡Muchas gracias! (Thanks!!)

[ Please, leave your comments in English ;) ]

1:33 AM  

Post a Comment

<< Home