Korelogic Logo Team hashcat has won CMIYC 2015! contact
Back to: Top Teams

hashcat

Link to original writeup (external, pdf)

Resources

Active Members 24
Handles alotdv, J0hnnyBrav0, Szul, atom, K9, tehnlulz, blandyuk, kontrast, The_Mechanic, chancas, legion, T0XlC, coolbry95, m3g9tr0n, undeath, dropdead, NullMode, unix-ninja, EvilMog, philsmd, Xanadrel, Hydraze, RuraPenthe, xmisery
Software hashcat suite, List Condense (Hash Management team software)
Hardware Roughly 75 GPUs and roughly 30 multi-core CPUs.




Team Hashcat: Write-up CMIYC 2015



Preparation
Team Members
Spreadsheet for Information Sharing and Coordination
Google Drive - Our Temporary Information Storage
List Condense
Contest Antics
The Hash Cracking Itself
Patterns Found
Korean Hangul Alphabet (bieup, chieut, digeut, giyok, hieut, ieung, )
Japanese ぱす (means pass and then replaced substrings pass)
German words (umlauts only)
Arabic numbering (written form)
Insert of multibyte char into English plain
Thoughts and Feedback


Team Hashcat would like to congratulate every team that participated in CMIYC 2015. We were also intrigued to see how CynoSure has matured into a real "PRO" team. The "Street" class competitors were also very active and following them was exciting. It appears that the contest is getting more and more attention, thanks to KoreLogic's effort, as well as increasing global trends and awareness of password and password-related matters.

KoreLogic's message to us was that we needed multibyte support in Hashcat. We understood that and, as the tool's developers, we will look into how this can be accomplished whilst still maintaining performance. Implementing a rule engine that is capable of supporting multibyte characters for slow hashes is not a problem and we foresee it being added in the future.

We hope to see everyone again for CMIYC 2016!



Preparation

To mitigate the challenging task of information sharing and collaboration we used our own home grown tool; list condense (which we have mentioned in previous contests), multiple IRC channels, a Teamspeak Server and Google Drive.

To enhance team collaboration we decided to try a different approach than we had in previous contests. The management of subgroups has shown to have a certain overhead and has proven to not be as efficient as we had thought. We opened up the SCRUM approach and let everyone decide on their own what to do and to just give outlines in which scope certain tasks should be. To achieve that, we opted for a Google spreadsheet (as shown below) and assign a team manager to update the available tasks. Furthermore, members updated their findings and impressions on a second sheet to minimize redundancy.

We dropped the idea of our previous organizational groups and decided that every team member should work on all hash lists. The reason is that, typically, during CMIYC contests, the plaintext patterns were shared across all of the hash lists. This means they are not unique per hash list as you would find them in the Positive Hack Days (PHD) contest. Therefore it made sense not to create specific groups where specific team members are assigned to crack specific hash lists.

Team Members

alotdv J0hnnyBrav0 Szul
atom K9 tehnlulz
blandyuk kontrast The_Mechanic
chancas legion T0XlC
coolbry95 m3g9tr0n undeath
dropdead NullMode unix-ninja
EvilMog philsmd Xanadrel
Hydraze RuraPenthe xmisery


Spreadsheet for Information Sharing and Coordination




Google Drive - Our Temporary Information Storage




List Condense




Contest Antics

This time the hash list was not overloaded with tons of different algorithms, which was refreshing because it brought back the original spirit of a hash cracking contest: Pattern detection and finding out how to use tools to produce matching plains. We were able to concentrate on the cracking part itself and not spend significant periods of time finding out which hashing algorithms were used, converting them into a format that hashcat could use, or adding them to our management system. Many thanks for that!

The Hash Cracking Itself

The biggest problem facing the competitors was how to work around the many variations of Unicode characters found during the competition. One of the techniques used that proved to be successful was to insert multi- byte characters into an ASCII plaintext string via hashcat using the tmesis.pl tool from hashcat-utils. Once a charset and a base dictionary could be identified we generated the rules with tmesis.pl run them with hashcat.

Tmesis.pl reads a word line by line from a file and splits the word into bytes. Tmesis.pl creates rules that effectively insert this word into a plaintext password candidate using hashcat's rule engine (like the rule in John The Ripper but does not append it). Tmesis.pl does not handle multibyte unicode characters as single characters but handles them as individual bytes. This technique is typically used to insert whole words into password candidates, but worked to insert multibyte characters into passwords well.

Another efficient cracking method was using the increase/decrease rules supported by hashcat and oclHashcat. UTF 8 follows some logic in its character ordering, similar to the ASCII character set. This functionality is useful because it allows you to generate words that do not currently exist in a wordlist. For example, a wordlist may contain the word "password45" but not "password46". By using this functionality within the rule engine, it is possible to generate the missing candidate because the character follows the character in the ASCII table. After doing this, it was possible to identify that KoreLogic had inserted randomly selected UTF-8 characters into random places in the given passwords. That together means we can assume the byte wise increment or decrement of any random position of a to generated plain, even if it a UTF-8 character, which is likely to crack something successfully. For slow hashes, this technique generates too many candidates for it to be a viable attack vector. However, this technique was effective at cracking the fast hashes. It was helpful in discovering which UTF-8 characters were used to generate the passwords and also helped in the identification of other patterns that existed within the hashes.

Patterns Found

Korean Hangul Alphabet (bieup, chieut, digeut, giyok, hieut, ieung, )

To make use of this pattern we used combinator.bin and combinator3.bin from hashcat-utils. This is like a Brute Force attack since it combines all variations of the alphabet with all of them again and again. Of course this technique only worked for the fast hashes. We create 3 wordlists, were each wordlist was of the size of the alphabet ^ N to have a good base for the a 1 combinator attack-mode in oclHashcat itself. After that we used those wordlists for the attack, for example length 3 plus length 1 to crack 4 length words of that alphabet. For the slow hashes we simply used plain dictionary attack up to length 3.

Japanese ぱす (means pass and then replaced substrings pass)
Base words: rockyou. There is no way to replace whole substrings with whole substrings in the rule engine. But since we tried to crack slow hashes only with this pattern, it was enough to simply sed our wordlists.

German words (umlauts only)
These were kinda hard because there are so many different German dictionaries floating around the net and it was not easy to find the one which KoreLogic was using. Also, some of them were encoded using ISO-8859-1, so we had to make sure to re encode them to UTF-8 before trying to attack with it. At least we thought so because it was clear that KoreLogic tried to tell (we could see this because of the already cracked plains) that this contest has an internalization focus and to be true internationalization you need at least UTF-8.

Arabic numbering (written form)
A very easy pattern to detect for the human eye. Once we saw some appear we translated them and the pattern almost immediately presented itself. A quick combination of dictionaries containing all the possible variations brought quite a few hits.

Insert of multibyte char into English plain
This is how rules-trash.rule was made: A constant monitoring of all the found plains were necessary to see those patterns. Luckily a bunch of them got cracked by chance which we picked up after already realizing the focus on multibyte chars (without the hints from the contest t-shirt, which we got to see 12 hours before the end of the contest). We quickly realized that there must have been a lot more charsets in use and in a lot more combinations than we thought initially. After a first test with the already identified charset Malayalam inserted via tmesis into rockyou got quite a few hits on the fast algos. After a little refinement rules-trash.rule came about that covered all the identified characters from Malayalam, Arabic, Thai, Greek and Currency Symbols. The selection of the dictionary to apply the ruleset on was quite a bit harder. We identified WikiTop50k as a good start but it turned out not to hold all the base words. At the end of the contest we were still in the middle of finding the right base words.

Thoughts and Feedback

The team was very impressed with the competition for a number of reasons:
  • A manageable number of hash lists: This made the competition easier to manage as a team and allowed us time to concentrate and focus on the lists we had rather than spend time trying to organize the team around a larger number of hash lists
  • Standard algorithms: The use of fairly common algorithms meant that the competition time could be spent cracking passwords instead of needing the hashcat developer to work on developing new algorithms
  • Using largely unicode based passwords was both interesting and useful to the team as password crackers. It was a welcome change to standard ASCII passwords and allowed the team to hone their skills, develop tools and get familiar with cracking UTF-8
  • The team members scores were relatively close to each other, and all of the members did well to contribute
  • "DO IT, JUST DO IT" became the theme of the competition for the team and the default answer to questions in general


Here's Team Hashcat signing off for this year's CMIYC.
Thanks to all who participated and to KoreLogic!
Until next year...
Please contact us if you would like more information about our services, tools, or careers with us.
Privacy Policy : Copyright 2024. KoreLogic Security. All rights reserved