di: Andrea Draghetti 12 Luglio 2011
Il reverse engineering è la migliore tecnica per analizzare nel dettaglio il funzionamento di un qualsiasi codice del quale non si conosca il sorgente. In questo articolo applicheremo il reverse engineering agli access point di FastWeb e Alice per analizzare e ricavare l'algoritmo di assegnazione della chiave Wirelss WPA.
Accendendo l'access point il primo dato più evidente è l'SSID (il nome della rete Wireless), così formato: "Fastweb-Y-xxxxxxxxxxxx" dove Y può assumere il valore 1 o 2, le x rispecchiano il MAC Address della scheda wireless interna. Dalle prime 3 coppie del MAC è quindi possibile capire il produttore dell'Access Point. Noi analizzeremo un Access Point Pirelli identificabili dalle seguenti prime tre coppie di MAC Address: 00:08:27, 00:13:C8, 00:17:C2, 00:19:3E, 00:1C:A2, 00:1D:8B, 00:22:33, 00:23:8E, 00:25:53.
I passi svolti dall'algoritmo per generare la WPA predefinita partendo dal SSID sono i seguenti:
(*) Una sequenza da 5 bit può assumere il valore compreso tra 0×00 e 0×1F.
(**) L'aggiunta della costante 0×57 avviene poiché i caratteri tra 0xA e 0×60 (estremi inclusi) non sono validi nello spazio chiavi considerato, per cui aggiungendo 0×57 a 0xA si ottiene, appunto, ox61 (primo carattere ammesso dopo 0×09).
I punti 2, 3 e 4 dell'algoritmo sono svolti dalla funzione cript_it; essa riceve in input una sequenza di 6 byte ottenuta dalla parte terminale del SSID raggruppando i byte in 6 gruppi da 2 cifre cadauno (00,12,34,56,78,90) e ne calcola MD5, algoritmo crittografico di hashing realizzato da Ronald Rivest nel 1991 e standardizzato con la RFC 1321.
Per migliorare l'algoritmo hanno aggiunto un salt (unk_100220D0), ovvero una sequenza speciale prefissata di 0×14 (20) byte, da inserire nella sequenza alterando in modo originale la creazione dell'hash MD5. Di seguito è riportato
un estratto della funzione in questione
(cript_it).Cript_it .text:00480FF8 la $t9, atomac .text:00480FFC jalr $t9 ; atomac .text:00481000 move $a0, $s0 .text:00481004 lw $gp, 0xA8+var_98($sp) .text:00481008 move $s0, $v0 .text:0048100C addiu $a0, $sp, 0xA8+var_90 .text:00481010 beqz $s1, loc_48109C .text:00481014 la $t9, MD5Init .text:00481018 jalr $t9 ; MD5Init .text:0048101C nop .text:00481020 lw $gp, 0xA8+var_98($sp) .text:00481024 move $a1, $s0 .text:00481028 addiu $a0, $sp, 0xA8+var_90 .text:0048102C la $t9, MD5Update .text:00481030 jalr $t9 ; MD5Update .text:00481034 li $a2, 6 .text:00481038 lw $gp, 0xA8+var_98($sp) .text:0048103C addiu $a0, $sp, 0xA8+var_90 .text:00481040 li $a2, 0x14 .text:00481044 la $a1, 0x10020000 .text:00481048 la $t9, MD5Update .text:0048104C jalr $t9 ; MD5Update .text:00481050 addiu $a1, (unk_100220D0 - 0x10020000) .text:00481054 lw $gp, 0xA8+var_98($sp) .text:00481058 addiu $a0, $sp, 0xA8+var_20 .text:0048105C la $t9, MD5Final .text:00481060 jalr $t9 ; MD5Final
Conoscendo il delay slot, è evidente che l'indirizzo della sequenza segreta è unk_100220D0. A tale indirizzo troviamo:
0x22,0x33,0x11,0x34,0x02,0x81,0xFA,0x22,0x11,0x41,0x68,0x11,0x12,0x01,0x05,0x22,0x71,0x42,0x10,0x66
Un esempio pratico possiamo farlo con una rete avente SSID: FASTWEB-1-00193EA1B2C al stringa di 6 byte corrisponderà a: 00,19,3E,A1,B2,C3.
Si calcola l'hash MD5 di questi 6 byte secondo l'algoritmo sopracitato ottenendo: a37d4267f1d177f44d352978d95558a9. Di questo hash si considerano i primi 4 byte nella rappresentazione binaria, ovvero 10100011 01111101 01000010 01100111. Prendiamo questa sequenza e creiamo cinque gruppi di 5 bit ciascuno, ottenendo: 10100 01101 11110 10100 00100, che rappresentati in esadecimale diventano 0×14 0×0D 0×1E 0×14 0×04.
La chiave WPA che si ottiene da questa sequenza di byte confrontando ciascun byte con 0×0A, se risulta essere maggiore viene aggiunto il valore hex 0×57, sarà: 6b64756b04.
Guida SQL Injection con SqlmapScopriamo se le nostre applicazioni web sono vulnerabili alle SQL... |
Guida sicurezza applicazioni WebLe tecniche di attacco più comuni, i metodi per verificare la... |
Guida Sicurezza wirelessQuali sono i pericoli di sicurezza di una rete senza filo e quali... |
Ogni lunedì, direttamente nella tua e-mail: approfondimenti e bollettini su virus, vulnerabilità e sicurezza informatica.
Iscriviti alla newsletter
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |