Password Cracking with
Rainbow Tables
                         Korhan Bircan
                          April 23rd, 2008
Introduction to Computer System Security
                                             1
Outline
zIntroduction
zSecure passwords
zDemo
zHellman’s original method
zRainbow tables
zCracking Windows Passwords
zPassword crackers
zProtection mechanisms
zConclusion
             Password Cracking with Rainbow Tables   2
Introduction
zHow passwords are stored
zWhere passwords are stored
  {Windows: C:\WINDOWS\system32\config\SAM
  {Linux: /etc/passwd
  {MacOS: /var/db/shadow/hash/
zShadow passwords
  {/etc/shadow only readable by root
  {/etc/passwd file shows a character such as '*',
   or x' instead of the hashed password
                  Password Cracking with Rainbow Tables   3
Introduction
               Password Cracking with Rainbow Tables   4
Introduction
z LanManager Hash
  {password converted to uppercase, null-padded or
   truncated to 14B
  {password split into two 7B halves, a zero bit is
   inserted after every 7th bit, the resulting 8B halves
   are used to create two DES keys
  {each of these keys is used to DES-encrypt
   “KGS!@#$%”, resulting in two 8B ciphertext values
  {concatenation the two to get 16B LM Hash.
z supported by all versions of Windows for
  backwards compatibility
                   Password Cracking with Rainbow Tables   5
Introduction
zNTLM Hash: challenge-response
 sequence
  {Client sends supported or requested features
   (eg. encryption key size, mutual authentication
   etc.)
  {Server replies with similar flags plus a random
   challenge
  {Client uses challenge and its credentials to
   calculate the response
                 Password Cracking with Rainbow Tables   6
Introduction
z Salted hashes: For each password, generate a random
  number (a nonce). Hash the password with the nonce,
  and store both the hash and the nonce.
   { usual approach
      z hash = md5(“deliciously salty” + password)
          • MD5 is broken
          • Its modern competitors, like SHA1 and SHA256 are fast, which is a
            problem.
z With 16b hash, there are 2^16 = 65,536 variations to the
  same password
z Speed is exactly what you don’t want in a password
  hash function.
z Using raw hash functions to authenticate passwords is
  as naive as using unsalted hash functions. Don’t.
                          Password Cracking with Rainbow Tables                 7
Introduction
z How passwords are cracked
  {brute force: online vs offline attack. Given
    enough time and CPU power password
    eventually gets cracked
  {dictionary: list of words, encrypt them one at a
    time and check if hashes are equal
  {hybrid: dictionary with mutation filters
                  Password Cracking with Rainbow Tables   8
Secure Passwords
z Password Strength
   {bit-strength
     z[a-z][A-Z][0-9] and symbols = 95 variations per
        character = log(95) ~ 6.6b
     z8 character password x 6.6b = 53b
   {cracking 72b key using current equipment is
    estimated to take about 1,453 years
   {no digital computer is capable of breaking 128b or
    256b encryption
   {NIST recommends 80b for most secure passwords ~
    12 character random password from 95 character
    domain
                   Password Cracking with Rainbow Tables   9
Secure Passwords
zA strong Windows password includes
 characters from at least three of the
 following groups:
zUse pass phrases eg. "I re@lly want to
 buy 11 Dogs!"
               Password Cracking with Rainbow Tables   10
Secure Passwords
zUse >14 characters
  {it is the limit that DOS network boot disks,
   Microsoft Remote Installation Services (RIS)
   Pre eXecutable Environment (PXE) boot disks,
   and older LAN Manager clients (Win9x) utilizes
zUse Alt characters eg. Alt+0709 = Å
zChange passwords often
                 Password Cracking with Rainbow Tables   11
Secure Passwords
z Intel Pentium M 1.60GHz, 512MB RAM
      algorithm                        hash/sec
      LM                               1,300,728
      NTLM                             2,623,294
      MD5                              3,401,360
      SHA1                             924,898
                  Password Cracking with Rainbow Tables   12
Secure Passwords
z key space, N, plain dictionary attack
    { 26 chars, passwd length <= 7                      7
                                                      ∑ 26i = 835.3M
                                                                                     LM         NTLM      MD5        SHA1
                                                                                     10.7min    5.3min    4.1min     15.1min
                                                       i =1
                                                         7
    { 36 chars, passwd length <= 7                    ∑ = 80.6G
                                                       36 i
                                                       i =1
                                                                                     LM
                                                                                     17.2 hr
                                                                                               NTLM
                                                                                               8.5 hr
                                                                                                         MD5
                                                                                                         6.6 hr
                                                                                                                   SHA1
                                                                                                                   1.0 day
    { 256 chars, passwd length <= 7                   ∑ 256
                                                       i =1
                                                                    i
                                                                        = 7.2 x10 7 G = 72 P
        LM             NTLM           MD5           SHA1
        1755.3 years   870.3 years    671.2 years   2468.5 years
                                                       14
    { 26 chars, passwd length <=14                    ∑ 26
                                                       i =1
                                                                i
                                                                        = 6.7 x1010 G = 67 E
        LM                           NTLM                     MD5                  SHA1
        1,633,359.2 years            809,881.0 years          624,619.6 years      2,297,070.7 years
                                         Password Cracking with Rainbow Tables                                                 13
Secure Passwords
zsecpol.msc
              Password Cracking with Rainbow Tables   14
Secure Passwords
zdon’t
  { use personal information
  { use any word in any language spelled forward
   or backward
  { tie passwords to the month
  { create new passwords that are substantially
   similar to ones you've previously used
  { use the same password for different systems
                 Password Cracking with Rainbow Tables   15
Secure Passwords
zDisable LM Hash
             Password Cracking with Rainbow Tables   16
Demo Setup
zCreate guest account for each student
zPasswords need to be alphanumeric and
 <15 characters long
zCrack them!
              Password Cracking with Rainbow Tables   17
Classical Tables
z 1980 Martin Hellman: N keys, N 2 / 3 operations&memory
   { ciphertexts are organised in chains, only first and last element
     stored; k:key, S:cipher, C:ciphertext P:plaintext, R:reduction
     function
   {              =   and generates a key from another key to form
       a chain:
   { m chains of length t are created, first and last elements are
     stored in a table.
                        Password Cracking with Rainbow Tables        18
Classical Tables
z To find a key, generate a chain of keys starting with
  R(C) and up to length t
z If C was indeed obtained with a key used while
  creating the table then we will eventually
  generate the key that matches the last key of the
  corresponding chain
z Using the first key of the chain, whole chain is
  regenerated
z The key right before R(C) is the key we are
  looking for
                    Password Cracking with Rainbow Tables   19
Classical Tables
z There is a chance that chains starting at different
  keys collide and merge
z Probability of finding a key, m rows and t keys:
z Probability of finding a key, l tables with
  different reduction functions:
                   Password Cracking with Rainbow Tables   20
Classical Tables
zFalse alarms:
  {key may be a part of a chain which has the
   same endpoint but is not in the table
  {key is in a chain that is part of the table but
   which merges with other chains of the table
zMerges correspond to same endpoint,
 detected during sort. They are replaced
 with new chains
                  Password Cracking with Rainbow Tables   21
Bounds and Parameters
 Memory
          M = m × l × m0                                                   m0
   Time
                                   M: bounds on memory
  T = t × l × t0                   T: cryptanalysis time
                                   m: number of chains per table
  M = m × l × m0
                                   l: number of tables             m0 : starting point + end point = 8B
                                    t: average chain length        t0 : time to encrypt a plaintext
                           Password Cracking with Rainbow Tables                                          22
Bounds and Parameters
zWinrtgen Benchmarks:
             Password Cracking with Rainbow Tables   23
Rainbow Tables
zA rainbow table is a compact
 representation of related plaintext
 password chains
                Password Cracking with Rainbow Tables   24
Rainbow Tables
zRecovering a password
             Password Cracking with Rainbow Tables   25
Rainbow Tables
z Probability of success in an m x t size table:
   {start with m1 = m distinct keys in the first column
   {in the second column the m1 keys are randomly
    distributed over the key space of size N, generating m2
    keys:
   {each column i has mi distinct keys. Success rate of
    table:
                     Password Cracking with Rainbow Tables    26
Rainbow Tables
zAdvantages over classical tables:
  {t(t-1)/2 look-ups as opposed to t^2
  {merges result in identical endpoints and are
   thus detectable
  {no loops since each reduction function appears
   once
  {constant length rainbow chains
                 Password Cracking with Rainbow Tables   27
 Rainbow Tables
zAdvantages over classical tables:
  {When two chains collide in a single table they
   merge
  {Instead use successive reduction functions 1 to t
  {If two chains can collide they merge iff collision
   appears at the same position in both chains
   (probability is 1/t)
  {If key is found early, gain can be up to a factor of
   t because while the rainbow table is searched,
   the amount of calculation increases quadritically
   to (t^2-1)/2 whereas in classical tables it
   increases linearly to t^2.
                    Password Cracking with Rainbow Tables   28
Rainbow Tables: Parameter Optimization
    charset               [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
    keyspace              8353082582
    table size            610 MB
    success probability   0.9990
    charset               [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
    keyspace              80603140212
    table size            3 GB
    success probability   0.9904
    charset               [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ]
    keyspace              915358891407 (2^39.7)
    table size            24 GB
    success probability   0.99909
    charset               [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
    keyspace              7555858447479 (2^42.8)
    table size            64 GB
    success probability   0.999
    Last table would take 41.3 years to generate on my laptop.
                                    Password Cracking with Rainbow Tables                           29
Rainbow Tables: Parameter Optimization
hash   charset          len_min       len_max            table index   len_chain   num_chains
lm     alpha[numeric]   1             7                  0:4           2100        8000000,
                                                                                   40000000
                            Password Cracking with Rainbow Tables                               30
Password Crackers: RainbowCrack
zextract password hashes using pwdump or
 fgdump
              Password Cracking with Rainbow Tables   31
Password Crackers: RainbowCrack
zcreate rainbow tables
zsort the tables
               Password Cracking with Rainbow Tables   32
Password Crackers: RainbowCrack
zRun the cracker
              Password Cracking with Rainbow Tables   33
Password Crackers: Cain&Abel
zGo to “Cracker”, right click to import
 hashes from pwdump file
                Password Cracking with Rainbow Tables   34
Password Crackers: Ophcrack
           Password Cracking with Rainbow Tables   35
Password Crackers: Ophcrack
zLive CD: dumps the hashes from the SAM
 and SYSTEM files and you don’t need to
 be admin
              Password Cracking with Rainbow Tables   36
Limitations of Rainbow Tables
ztable generation takes a long time
zfalse alarms occur often
zsimple salting algorithm nullifies rainbow
 tables
                Password Cracking with Rainbow Tables   37
Protection Mechanisms
zLimiting physical access
zContinue to force the use of special
 characters
zKeep up with updates
zUse Multi-factor authentication
zsalted hashes
zUse NTLM
zUse secure passwords
               Password Cracking with Rainbow Tables   38
Protection Mechanisms
zUse state of the art password schemes
  {Use what your operating system gives you (eg.
   PHK’s FreeBSD MD5)
  {Stanford Secure Remote Password
  {Adaptive hashing: bcrypt
    zuses pessimized Blowfish
                 Password Cracking with Rainbow Tables   39
Conclusion
zRainbow tables reduce the number of
 table look-ups by length of chains
zComputations reduced by 2, average case
 performance even greater
zSome cryptographic systems believed to
 be secure when implemented can be
 cracked by anyone today
zBe smart about choosing passwords and
 storing them
              Password Cracking with Rainbow Tables   40
References
z “Making a Faster Cryptanalytic Time-Memory Trade-Off”, Philipppe
  Oechslin, CRYPTO 2003: pp617–630
z “Top 10 Password Crackers”, http://sectools.org/crackers.html
z “Cain&Abel”, http://www.oxid.it/cain.html
z “PWDump”, http://www.foofus.net/fizzgig/pwdump/
z “RainbowCrack”, http://www.antsight.com/zsl/rainbowcrack/
z “Ophcrack”, http://lasecwww.epfl.ch/~oechslin/projects/ophcrack/
z “Winrtgen”, http://www.oxid.it/projects.html
z “Hacking dei Sistemi: Password”, Cardinale, Giacchetti, Giovannetti
z “Mac OS X password hashes”,
  http://www.macshadows.com/kb/index.php?title=Mac_OS_X_password_has
  hes
z “Shadow Password”, http://en.wikipedia.org/wiki/Shadow_password
z “Password Cracking”,http://en.wikipedia.org/wiki/Password_cracking
z “Selecting Secure Passwords”,
  http://www.microsoft.com/smallbusiness/support/articles/select_sec_passw
  ords.mspx
                          Password Cracking with Rainbow Tables         41