01-20-2017, 03:06 AM
01-20-2017, 04:35 AM
It depends. This boils down to the time/memory tradeoff. I'll lay out some of the concepts.
Most real-world passwords are of sufficiently low quality that if they are stored poorly (unsalted/fast hash, which NTLM is), then they will yield quickly to dictionary/rules/masks/hybrid attacks ... which makes hashcat faster.
For rainbow tables to sometimes be faster (thinking out loud here, others in the forums can keep me honest), the following criteria have to be met:
* the hash is fast and unsalted
* the passwords were pretty much randomly generated (no common or semi-common rules/patterns, and not appearing in commonly available wordlists and dumps)
* the length of the password is known
* that length is short enough (<11) to be covered by a practical rainbow table [1]
* that length is also long enough (>6 ) to take more than a couple of minutes to bruteforce
* you have sufficient storage
* you have sufficient I/O throughput (SSD?)
* you have GPU available to offload some of the related computation
* you have a very small set of hashes to crack (I think? I haven't done much rainbow-table work, but I assume that more hashes makes lookups slower?)
... then rainbow tables can be faster than hashcat's bruteforce mode (-a 3). My 6x GTX 970 SC rig will take 1 hour* 30 minutes to bruteforce an 8-character upper/lower/digits password, whereas a RainbowCrack search might take half of that time.
But in practice, the above is a pretty artificially constrained set of criteria. Most people's passwords will fall to hashcat faster, or be of sufficient complexity and/or length to make rainbow tables infeasible.
In other words ... if you had a contest to crack a few thousand real-world passwords, and one team had RainbowCrack and the other team had hashcat, I suspect that the hashcat team would crack more passwords faster.
1. https://project-rainbowcrack.com/table.htm
EDIT: I just realized that I'd left another job running on my 6x 970 system. The 8-char ?l?u?d would take about 30 minutes on that system, not 1 hour.
Most real-world passwords are of sufficiently low quality that if they are stored poorly (unsalted/fast hash, which NTLM is), then they will yield quickly to dictionary/rules/masks/hybrid attacks ... which makes hashcat faster.
For rainbow tables to sometimes be faster (thinking out loud here, others in the forums can keep me honest), the following criteria have to be met:
* the hash is fast and unsalted
* the passwords were pretty much randomly generated (no common or semi-common rules/patterns, and not appearing in commonly available wordlists and dumps)
* the length of the password is known
* that length is short enough (<11) to be covered by a practical rainbow table [1]
* that length is also long enough (>6 ) to take more than a couple of minutes to bruteforce
* you have sufficient storage
* you have sufficient I/O throughput (SSD?)
* you have GPU available to offload some of the related computation
* you have a very small set of hashes to crack (I think? I haven't done much rainbow-table work, but I assume that more hashes makes lookups slower?)
... then rainbow tables can be faster than hashcat's bruteforce mode (-a 3). My 6x GTX 970 SC rig will take 1 hour* 30 minutes to bruteforce an 8-character upper/lower/digits password, whereas a RainbowCrack search might take half of that time.
But in practice, the above is a pretty artificially constrained set of criteria. Most people's passwords will fall to hashcat faster, or be of sufficient complexity and/or length to make rainbow tables infeasible.
In other words ... if you had a contest to crack a few thousand real-world passwords, and one team had RainbowCrack and the other team had hashcat, I suspect that the hashcat team would crack more passwords faster.
1. https://project-rainbowcrack.com/table.htm
EDIT: I just realized that I'd left another job running on my 6x 970 system. The 8-char ?l?u?d would take about 30 minutes on that system, not 1 hour.
01-20-2017, 05:10 AM
I think one of the most important problems with rainbow tables is this:
It's hard to make them useful for multihash cracking. For example:
True, but with hashcat his rig will still take only 1 hour (plus a minimal overhead) to crack 1000000 hashes of that keyspace. RainbowCrack will take (theoretically) 1000000 times that long.
Quote:you have a very small set of hashes to crack (I think? I haven't done much rainbow-table work, but I assume that more hashes makes lookups slower?)
It's hard to make them useful for multihash cracking. For example:
Quote:... then rainbow tables can be faster than hashcat's bruteforce mode (-a 3). My 6x GTX 970 SC rig will take 1 hour to bruteforce an 8-character upper/lower/digits password, whereas a RainbowCrack search might take half of that time.
True, but with hashcat his rig will still take only 1 hour (plus a minimal overhead) to crack 1000000 hashes of that keyspace. RainbowCrack will take (theoretically) 1000000 times that long.
01-20-2017, 05:17 AM
OK, that makes sense. So as soon as you have more than two or three hashes, hashcat will be faster even for limited bruteforce criteria that I listed.