d06 rainbow tables

Upload: lezan

Post on 03-Apr-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 D06 Rainbow Tables

    1/44

    Rainbow Tables

    Luca Grilli,

    Fabrizio Montecchiani

  • 7/29/2019 D06 Rainbow Tables

    2/44

    Funzioni di Hash sicure

    Una funzionehash h() riceve in input un messaggio m di lunghezza arbitraria, e ritorna un output hm = h(m) di lunghezza prefissata (128 bit)

    Propriet importanti di una funzione di hash (crittografica)sicura1. noto m facile calcolare hm = h(m)2. dato h, difficile calcolare m tale che h = h(m) (one-way o

    resistenza alla pre-immagine)

    3. dato m, difficile trovare m m tale che h(m) = h(m')(resistenza alla seconda pre-immagine)4. difficile trovare m, mtali che h(m) = h(m') (resistenza alle

    collisioni) le propriet 3 implica la 2, ma non il contrario la propriet 4 implica la 3, ma non il contrario

  • 7/29/2019 D06 Rainbow Tables

    3/44

    Attacco Brute-Force

    Sia h:{0, 1}* {0, 1}b una funzione crittografica di hash K= 2b: cardinalit dello spazio dei possibili valori di hash

    Supponiamo che l'output distribuito in modo casuale

    in questo spazio

    Considerando un insieme di n stringhe

    Quanto deve valere n al fine di avere una probabilit >

    0.5 che una stringa abbia un valore di hash dato?n = ln 2 / (ln K ln(K1))

    per Kgrande circa n = (ln 2)K

  • 7/29/2019 D06 Rainbow Tables

    4/44

    Attacco Brute-Force

    Per una funzione hash a 128 bit, necessariotestare (ln2)2128 possibili input (circa 1038)per ottenere una probabilit di 0.5 di ottenereun valore hash specificato

    10

    38

    microsecondi equivalgono a circa 1024

    anni!

  • 7/29/2019 D06 Rainbow Tables

    5/44

    Compromesso Tempo-Memoria

    Si pu pensare di ridurre il tempo di calcoloaumentando loccupazione di memoria (oviceversa)

    sembrerebbe pi efficace effettuare un attacco brute-force una prima volta,

    memorizzare il risultato in un hash database,

    quindi utilizzare questo database per accelerare il

    cracking su qualsiasi macchina Questo approccio richiederebbe memorie con

    capacit dellordine delle centinaia di Terabyte limite ancora troppo elevato

  • 7/29/2019 D06 Rainbow Tables

    6/44

    Rainbow Tables

    Una rainbow table una rappresentazionecompatta che mira a ridurre le dimensioni diun hash database a una tabella molto pi

    compatta, incrementando leggermente itempi di calcolo

    Viene calcolato lhash di tutte le password mane viene memorizzata solo una piccola parte

  • 7/29/2019 D06 Rainbow Tables

    7/44

    Rainbow Tables

    Siano h() una funzione di hash e P un insieme finito dipassword

    Lobiettivo di precalcolare una struttura dati tale che, dato un qualsiasi output h della funzione hash,

    pu individuare la passwordp in P tale che h(p) = h,

    oppure stabilire che non esiste una talep in P

    Il modo pi semplice per farlo calcolare h(p) per ogni

    p in P memorizzare la tabella richiede (|P|b)bit di spazio,

    dove b le dimensioni di un output di h(),

    proibitivo per grandi P

  • 7/29/2019 D06 Rainbow Tables

    8/44

    Funzione di Riduzione

    L'idea di definire una funzione di riduzioner()che mappa a ritroso i valori di hash in valori di P

    esistonodiverse possibili funzioni di riduzione pseudo-

    random una funzione di riduzione non linverso di una

    funzione di hash!

  • 7/29/2019 D06 Rainbow Tables

    9/44

    Funzione di Riduzione

    Alternando

    la funzione di hash con

    la funzione di riduzione,

    possiamo formare catene alternate di password evalori di hash

  • 7/29/2019 D06 Rainbow Tables

    10/44

    Generazione

    Per generare una rainbow table: scegliere un insieme iniziale casuale di password in P

    calcolare per ognuna di esse le catene di lunghezza

    fissa l memorizzare in tabella soltanto

    la prima (startpoint) password e

    lultima (endpoint) password di ogni catena

    Esempioaaaaaa h() 281DAF40 r() sgfnydh()920ECF10r() kiebgt

  • 7/29/2019 D06 Rainbow Tables

    11/44

    Lookup e Inversione

    Per invertire un valore hash h* necessarioeffettuare

    una prima fase detta di lookup

    una seconda fase detta di inversione

  • 7/29/2019 D06 Rainbow Tables

    12/44

    Lookup

    1. Calcolare una catena a partire da h,applicando r() e h() alternativamente

    2. Se in qualsiasi punto si osserva un valorecorrisponde ad uno degli endpoint dellatabella, recuperare il corrispondente

    startpoint

  • 7/29/2019 D06 Rainbow Tables

    13/44

    Inversione

    1. Utilizzare lo startpoint trovato in fase dilookup per ricreare la catena

    2. Se la catena prodotta contiene il valore h*allora il valore immediatamente precedentenella catena la passwordp cercata

  • 7/29/2019 D06 Rainbow Tables

    14/44

    Esempio

    Hash h* = 920ECF10

    Lookup: calcoliamo la sua catena finch non troviamo un valore intabella (un endpoint):

    920ECF10 r() kiebgt

    kiebgt contenuto nella tabella con startpoint aaaaaa (vedi esempioprecedente)

    Inversione: ricostruiamo la catena partendo da aaaaaa:

    aaaaaa h() 281DAF40 r() sgfnydh() 920ECF10

    La password sgfnyd

  • 7/29/2019 D06 Rainbow Tables

    15/44

    Falso Allarme

    La catena ricostruita non sempre contiene il valorehash h* Esempio: h* = FB107E70

    FB107E70 r() bvtdll h() 0EE80890 r() kiebgt

    FB107E70 non nella catena di aaaaaa (falso allarme)

    In questo caso, il match viene ignorato e si continua adestendere la catena di h* in cerca di un altro match

    Se la catena di h* raggiunge la lunghezza lsenza match buoni,la password non mai stata prodotta in una delle catene e

    pertanto non pu essere invertita

  • 7/29/2019 D06 Rainbow Tables

    16/44

    Propriet

    Il contenuto della tabella non dipende dal valorehash da invertire il contenuto viene creato una sola volta e riutilizzato in

    ogni attacco senza alcuna modifica

    Aumentando la lunghezza delle catene siriducono le dimensioni della tabella

    aumenta per il tempo richiesto per eseguire lericerche (compromesso tempo-memoria)

    nel semplice caso di catene di un elemento, la ricerca molto veloce, ma la tabella molto grande (hash

    database)

  • 7/29/2019 D06 Rainbow Tables

    17/44

    Collisioni

    Pu accadere che in un qualsiasi punto due cateneproducano lo stesso valore (collision)

    Le due catene si fondono (merge) nel punto di collisione

    di conseguenza la tabella coprir un minor numero dipassword poich le catene precedenti non sono memorizzate

    completamente, una collisione impossibile da individuare in modo efficiente

    La funzione di hash h() genera raramente collisioni(collision-resistant) mentre la funzione di riduzione r()non altrettanto robusta

  • 7/29/2019 D06 Rainbow Tables

    18/44

    Funzioni di Riduzione Multiple

    Per risolvere il problema delle collisioni possibile utilizzare, anzich una sola funzione di riduzione r(), un insieme di funzioni r1()rk()utilizzate

    alternativamente

    In questo modo, perch due catene collidano e sifondino, devono colpire lo stesso valore nella

    stessa iterazione ancora possibile avere delle collisioni, ma che non comporteranno la fusione delle catene

  • 7/29/2019 D06 Rainbow Tables

    19/44

    Esempio

  • 7/29/2019 D06 Rainbow Tables

    20/44

    Lookup

    Poich il valore hash di interesse pu essere trovato inqualsiasi punto della catena, necessario generare kcatene diverse

    La prima catena assume che il valore di hash sia nell ultima

    posizione e applica soltanto rk() la seconda catena assume che il valore di hash sia nellapenultima posizione e applica in sequenza rk-1(), h() e rk(),

    l'ultima catena applica tutte le funzioni di riduzione alternate

    con h()

    Questo procedimento comporta che alcune catenepossano essere prodotte e valutate inutilmente (falsealarm)

  • 7/29/2019 D06 Rainbow Tables

    21/44

    Esempio

  • 7/29/2019 D06 Rainbow Tables

    22/44

    Debolezze

    La generazione richiede molto tempo

    Possono verificarsi molti false alarm

    Inefficiente con meccanismi di salt

    Lo spazio di ricerca cresce notevolmentesuperando i limiti di memoria attuali

  • 7/29/2019 D06 Rainbow Tables

    23/44

    Approfondimenti

    A Cryptanalitic Time-Memory Trade-Off,Martin E. Hellman

    www-ee.stanford.edu/~hellman/publications/36.pdf

    Making a Faster Cryptanalytic Time-Memory

    Trade-Off, Philippe Oechslin

    lasecwww.epfl.ch/~oechslin/publications/crypto03.pdf

    http://www-ee.stanford.edu/~hellman/publications/36.pdfhttp://lasecwww.epfl.ch/~oechslin/publications/crypto03.pdfhttp://lasecwww.epfl.ch/~oechslin/publications/crypto03.pdfhttp://lasecwww.epfl.ch/~oechslin/publications/crypto03.pdfhttp://www-ee.stanford.edu/~hellman/publications/36.pdfhttp://www-ee.stanford.edu/~hellman/publications/36.pdfhttp://www-ee.stanford.edu/~hellman/publications/36.pdfhttp://www-ee.stanford.edu/~hellman/publications/36.pdfhttp://www-ee.stanford.edu/~hellman/publications/36.pdfhttp://www-ee.stanford.edu/~hellman/publications/36.pdfhttp://www-ee.stanford.edu/~hellman/publications/36.pdfhttp://www-ee.stanford.edu/~hellman/publications/36.pdf
  • 7/29/2019 D06 Rainbow Tables

    24/44

    LanManager Hash

    UPPERCASE+

    NULL PADDING / TRUNCATING

  • 7/29/2019 D06 Rainbow Tables

    25/44

  • 7/29/2019 D06 Rainbow Tables

    26/44

    Rainbow Tables e LM Hash

  • 7/29/2019 D06 Rainbow Tables

    27/44

    L0pht Heavy Industries

    L0pht Heavy Industries stato un collettivo di hacker attivo tra il 1992 eil 2000 e situato a Boston

    Durante la sua attivit ha rilasciato numerosi avvisi relativi alla sicurezzainformatica e prodotto strumenti software ampiamente utilizzati comeL0phtCrack, un password cracker per OS Windows

    Il 19 maggio 1998, tutti i sette membri di L0pht (Brian Oblivion, Kingpin,Mudge, Space Rogue, Stefan Von Neumann, John Tan, Weld Pond)diedero una famosa testimonianza davanti al Congresso degli Stati Uniti,asserendo che avrebbero potuto spegnere l'intera rete Internet in 30minuti

    Nel gennaio 2000, L0pht Heavy Industries si fusa con la startup @stake,completando la lenta transizione da un'organizzazione underground auna societ "whitehat" di sicurezza informatica. Symantec ha annunciatol'acquisizione di @stake il 16 settembre 2004, e completato l'operazionel'8 ottobre dello stesso anno

  • 7/29/2019 D06 Rainbow Tables

    28/44

    L0phtCrack

    L0phtCrack unapplicazione per il recupero e il test dipassword originariamente prodotto da Mudge (L0phtHeavy Industries)

    Utilizza attacchi con dizionario, brute-force, e con rainbowtables

    E uno degli strumenti preferiti dagli hacker, specialmentele vecchie versioni (basso prezzo e alta disponibilit)

    Nel gennaio 2009 L0phtCrack stato acquisito dagli autorioriginali Zatko (Mudge), Wysopal e Rioux da Symantec

    L0phtCrack 6 stato annunciato l11 marzo 2009 allaconferenza SOURCE Boston Conference

  • 7/29/2019 D06 Rainbow Tables

    29/44

    L0phtCrack 6

    Alcune features: OS target

    Windows XP, Vista Seven (32 e 64 bit) reti con Windows NT, 2000, XP, Server 2003, Server 2008 (32 e 64

    bit) varianti principali di BSD e Linux con demone SSH

    password scoring punteggio basato su metrica per valutare rapidamente la qualit

    delle password

    metodi per Password Audit dizionario hash DB precalcolato brute force rainbow tables

  • 7/29/2019 D06 Rainbow Tables

    30/44

    www.l0phtcrack.com

  • 7/29/2019 D06 Rainbow Tables

    31/44

    www.l0phtcrack.com

  • 7/29/2019 D06 Rainbow Tables

    32/44

    L0phtCrack e LM Hash

    La prima versione di l0phtCrack fu utilizzata percrackare lalgoritmo LM Hash

    LM Hash stato mantenuto da Microsoft fino aWindows Vista per garantire la retrocompatibilit coni vecchi sistemi

    Windows mantiene per ogni password sia la versioneottenuta con LM Hash sia quella ottenuta con NT Hash

    se un attaccante riesce a crackare la versione LM Hashdella password (ad esempio tramite rainbow tables)allora pu sfruttare questa informazione per crackareanche la versione NTLM Hash

  • 7/29/2019 D06 Rainbow Tables

    33/44

    L0phtCrack e LM Hash

    Il cracking della versione LM Hash fornisce iprimi 14 caratteri della password

    per password di dimensioni maggiori i restanticaratteri possono essere trovati per inferenza o con

    attacco brute-force

    Lalgoritmo NT Hash case-sensistive una volta crackata la versione LM Hash della

    password restano soltanto 2xpossibili password, conxpari alla lunghezza della password

    x un numero minore o uguale a 14 (al pi 16384tentativi)!

  • 7/29/2019 D06 Rainbow Tables

    34/44

    NTLM Protocol

    NTLM Protocol: protocollo Microsoft perlautenticazione su dominio di tipo challenge-

    response introdotto con lalgoritmo NTLM Hash

  • 7/29/2019 D06 Rainbow Tables

    35/44

    NTLM Protocol

    Ogni volta che un utente richiede lautenticazionesu dominio entrambe le versioni della password (LMHash e NTLM Hash) subiscono il seguente processo:

    1. NULL padding fino a 21B

    2. divisione dellhash in 3 parti da 7B

    3. ognuna delle 3 parti viene convertita in una chiave DES di8B aggiungendo 1B di parit

    4. con ogni chiave viene criptato un challenge di 8B inviatoin chiaro in rete dal server di autenticazione

    5. i 3 output ottenuti al passo precedente sono concatenatiper formare un output finale di 24B che viene inviato inrete al server per verificare lautenticazione

  • 7/29/2019 D06 Rainbow Tables

    36/44

    L0phtCrack e LM Hash

    Il meccanismo di challenge-responsedovrebbe rendere pi difficile il cracking

    In realt louput contiene informazionesfruttabile da un attaccante

    solo 2B dellhash originale (16B) finiscono nella

    terza componente da 7B, il resto sono caratteriNULL noti

    solo lottavo byte della prima met dellhashoriginale finisce nella seconda componente da 7B

  • 7/29/2019 D06 Rainbow Tables

    37/44

    L0phtCrack e LM Hash

    Esempio: password di dimensione pari al pia 7 caratteri (scelta molto frequente perutenti non esperti)

    nella versione LM Hash il secondo gruppo da 7B composto da soli caratteri NULL

    nella versione prodotta dallNTLM Protocol i

    primi 8B corrispondono al challenge cifrato conlLM Hash, non serve decriptare i restanti 16B!

  • 7/29/2019 D06 Rainbow Tables

    38/44

    Kerberos

    Microsoft ha adottato Kerberos come protocollo diautenticazione di defualt da Windows 2000 e per i dominiActive Directory

    NTLMv2 ancora utilizzato in diverse seguenti situazioni,tra cui:

    il cliente si autentica a un server che non appartiene a un

    dominio non esiste un dominio Active Directory (modalit

    workgroup"o "peer-to-peer") nei casi in cui un firewall blocca le porte richieste da Kerberos

  • 7/29/2019 D06 Rainbow Tables

    39/44

    Ophcrack

    Ophcrack unapplicazione open source peril recupero delle password di sistemioperativi Windows

    Si avvale di rainbow tables per crackare glihash LM ed NTLM

    Sviluppata da Cedric Tissieres e PhilippeOechslin

  • 7/29/2019 D06 Rainbow Tables

    40/44

    Ophcrack

  • 7/29/2019 D06 Rainbow Tables

    41/44

    Xp Rainbow Tables

    XP free small (380MB) Success rate: 99.9% Charset: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

    XP free fast (703MB) Success rate: 99.9% Charset: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

    XP special (7.5GB) Success rate: 96% Charset: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !"#$%&'()*+,-./:;?@[\]^_`{|}~

    XP german (7.4GB) Success rate: 99%

    Only for passwords that contains at least one german character () Charset: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !"#$%&'()*+,-./:;?@[\]^_`{|}~

  • 7/29/2019 D06 Rainbow Tables

    42/44

    Vista Rainbow Tables

  • 7/29/2019 D06 Rainbow Tables

    43/44

    www.freerainbowtables.com

    L'obiettivo di FreeRainbowTables.com quellodi dimostrare l'insicurezza delle funzioni hashsemplici

    DistrRTgen (Distributed Rainbow TableGenerator): generazione distribuita di catene

    possibile generare rainbow tables enormi che sono

    in grado di rompere password anche molto lunghe il client BOINC disponibile dalla pagina di download

    del sito

  • 7/29/2019 D06 Rainbow Tables

    44/44

    Fonti

    Beautiful Security Leading Security Experts ExplainHow They Think, Andy Oram, John Viega , O'ReillyMedia, 2009

    www.wikipedia.org

    www.l0phtcrack.com

    www.ophcrack.sourceforge.net

    www.freerainbowtables.com

    http://www.wikipedia.org/http://www.l0phtcrack.com/http://www.ophcrack.sourceforge.net/http://www.freerainbowtables.com/http://www.freerainbowtables.com/http://www.ophcrack.sourceforge.net/http://www.l0phtcrack.com/http://www.wikipedia.org/