Articoli

WireLurkerApro l’articolo chiarendo subito che WireLurker è un malware, reale, che colpisce Mac OS X e iOS ovvero i due sistemi operativi creati da Apple. Ma non creiamo allarmismo come stanno facendo in queste ore i principali media copiando a destra e manca porzioni di articoli internazionali e non, anzi ne approfitto per fare un appello e anche un ringraziamento; cari redattori/giornalisti prima di scrivere un articolo principalmente tecnico sul mondo della sicurezza informatica abbiate almeno la buona volontà di contattare un esperto del settore, in Italia siamo in diversi e quasi sempre disponibili una eMail o una Telefonata renderà il vostro lavoro più prezioso e completo. Ringrazio quindi Giuseppe Bottero che puntualmente mi contatta quando vuole scrivere articoli di Sicurezza Informatica sul quotidiano La Stampa.

Le Origini

Qū Chāo,

Tutto nacque per una segnalazione dello sviluppatore Qū Chāo, lo scorso 1 Giugno 2014 rilevò sul suo Mac dei processi sospetti e sul suo iPhone l’installazione automatica di una applicazione che potete vedere nello screenshot soprastante. Nei giorni successivi a questa segnalazione altri utenti segnalarono casi analoghi su un forum di Fan Apple Cinesi, in tutti i casi gli utenti rilevarono due demoni installati sul proprio Mac denominati “machook_damon” e “WatchProc”, gli utenti avrebbero poi dichiarato di aver installato nei giorni precedenti alcune applicazioni provenienti dal Maiyadi App Store che attualmente risulta down. Questo Store alternativo a quello originale permetterebbe di aggirare le restrizioni imposte dal governo Cinese ad Apple e di scaricare software piratati/crackati. Le prime indiscrezioni incolpavano l’applicazione CleanApp scaricata dal Maiyadi App Store, codesta applicazione avrebbe provacato la diffusione del malware.

CleanApp

In realtà una successiva indagine contatta da Paolo Alto Networks ha rivelato che quasi tutte le applicazioni per Mac (per un totale di 467) caricate sul Maiyadi App Store dal 30 aprile 2014 all’11 giugno 2014, erano state trojanized e riconfezionate integrando in esse WireLurker. Queste applicazioni sono state scaricate 356.104 volte, da Aprile ad Ottobre 2014. The Sims 3, Internationa Snooker, Pro Evolution Soccer, ecc sono le tre principali applicazioni scaricate dal Maiyadi App Store ed infette!

Caratteristiche e Analisi

WireLurker WorkFlow

 

Il Diagramma di Flusso dimostra come lavora WireLurker partendo proprio dalla modifica/trojanized di una applicazione dedicata al mondo Mac, tale software modificato è stato diffuso in un App Store alternativo contenente principalmente applicativi illegati (crakkati), gli utenti hanno scaricato l’applicativo e installandolo hanno avviato il circolo vizioso che poi ha permesso di infettare anche device iOS attraverso una connessione USB con il Mac. Il Malware non si limita ad infettare il device iOS ma andrà a modificare/trojanized anche le applicativi per iPhone o iPad garantendo l’estrazione di un maggior numero di dati sensibili

Voglio però soffermarmi un attimo sul mondo iOS che è sempre stato ribattezzato uno dei sistemi operativi mobile più sicuri, come saprete i device iPhone e iPad possono essere Jailbrekkati ottenendo i permessi di root e pertanto caricare software di terze parti (app crakkate, nuovi tweak, ecc ecc) questa tecnica resa sempre più semplice dalla bravura degli sviluppatori crea grossi problemi di sicurezza sui nostri dispositivi. Infatti sono proprio i dispositivi Jailbroken ad essere più soggetti a questi tipi di attacchi.

Per un dispositivo iOS NON Jailbroken, WireLurker installa nuove applicazioni iOS, sfruttando i protocolli di iTunes ovvero la libreria libimobiledevice.
Per un dispositivo iOS Jailbroken, WireLurker esegue il backup delle applicazioni del dispositivo sul computer e le trojanizza sfruttando la capacità elaborativa del Mac, successivamente le riconfeziona (app originale + file dannoni) caricandole nuovamente sull’iPhone. Inoltre, WireLurker si propaga infettando il MobileSubstrate Tweak attraverso il servizio AFC2.

A questo punto, nuove applicazioni/icone sono visibili all’utente sul dispositivo iOS, jailbroken o meno. Per un dispositivo Jailbroken del codice malevolo viene iniettato in applicazioni di sistema, e sarà quindi possibile eseguire query sui Database di sistema ottenendo Messaggi, Cronologia WhatsApp, Contatti, eMail, ID Apple, Foto, Video, ecc. Tali dati verranno inviati al server C2 insieme alle informazioni di stato di WireLurker. Per i dispositivi NON Jailbroken gli utenti si vedranno sottratti dei loro dati solo se all’apertura della nuova App acconsentiranno di accedere alla Rubrica, Calendari, Posizione, ecc.

Dal 30 Aprile al 17 ottobre 2014 la Palo Alto Network ha identificato 3 versioni di WireLurker la prima versione denominata A fino alla versione C rilevata lo scorso agosto, ogni versione introduceva nuove funzionalità la prima non prevedeva l’infezione dei dispositivi iOS funzionalità introdotta nella versione B solo per i dispositivi Jailbroken e infine nella versione C è stata introdotta la modalità per i dispositivi NON Jailbroken.

Rimozione e Prevenzione

La società Paolo Alto Network attraverso GitHub ha reso disponibile uno script scritto in Pyhton per identificare se il vostro Mac è stato infettato dal malware WireLurker, nello screenshot di apertura potete vedere lo script in funzione con i relativi comandi per scaricarlo e avviarlo ma per comodità vi riepilogo i comandi di seguito:

$ curl -O https://raw.githubusercontent.com/PaloAltoNetworks-BD/WireLurkerDetector/master/WireLurkerDetectorOSX.py

$ python WireLurkerDetectorOSX.py

attraverso il primo comando andremo a scaricare lo script e successivamente lo avvieremo. Basterà attendere qualche minuto per conoscere se il vostro PC è stato infettato o meno!

Per prevenire in futuro possibili attacchi le regole fondamentali da seguire sono:

  • Evitare di modificare il proprio dispositivo mobile ottenendo i permessi di Root se non si è un utente esperto;
  • Evitare il download di applicazioni illegali/crakkate esse sono la principale causa di virus, trojan o malware;
  • Scaricare software solo da Store o siti Web Autorevoli;
  • Controllare sempre i permessi che attribuire ad ogni applicazioni del vostro iPhone e iPad (selezionare sempre OK non è la soluzione ai vostri problemi);
  • Aggiornate sempre il vostro dispositivo.

Conclusione

Non è ancora chiara la motivazione e i mandatari di tale attacco, ma indubbiamente è importante sottolineare che l’attenzione sui dispositivi Apple sta cambiando e potremmo presto vedere nuovi attacchi! La prevenzione dell’utente e la tempestività del Brand nel correggere vulnerabilità sono sempre la prima arma per evitare un propagarsi di malware, virus, ecc ecc.

Per chi volesse approfondire maggiormente l’argomento (Analisi del Codice, Statistiche, ecc) può scaricare il documento creato dalla Palo Alto Networks, for the English Friends would also recommend reading the article by Marco Ramilli’s Blog.

 

Il noto programma televisivo le Iene ha recentemente trasmetto un servizio sulla protezione delle reti Wireless dove è possibile visionare come sia possibile accedere ad una rete WiFi altrui utilizzando diverse metodologie di attacco ed una volta connessi visualizzare tutto il traffico di rete della vittima.

I metodi descritti per accedere alla Wireless sono principalmente due:

  • Attacco dizionario della password wireless tramite AirCrack-NG
  • Recupero della password Wireless preimpostata dall’operatore telefonico Fastweb o Alice

successivamente attraverso Wireshark è possibile analizzare il traffico di rete generato e sfruttare a proprio piacimento i dati catturati.

E’ possibile recuperare la chiave Wireless preimpostata attraverso uno dei tanti software da noi recensiti e visualizzabili nella sezione WPA Recovery compatibili con Windows, Unix, Mac e Dispositivi Mobili mentre per l’utilizzo del primo metodo è possibile consultare i nostri articoli su AirCrack-NG.

Per chi volesse visualizzare il servizio integrale può accedere al sito di Mediaset Video, infine vi ricordiamo che l’accesso abusivo ad un sistema informatico o telematico è un reato perseguibile a termine di legge art. 615-ter c.p.

Pietro Naccari ha recentemente rilasciato il software grafico (GUI) WiFiRec per il recupero della chiave Wireless di Alice su piattaforma Apple MAC, ad oggi era possibile effettuare tale procedura grazie all’ottima utility sviluppata da Salvatore Fresta tramite riga di comando ma sicuramente non comoda per i meno esperti.

Il software permette inoltre di scansionare le reti wireless e copiarsi la porzione di SSID necessaria per il calcolo della chiave WPA inoltre integra un ottimo sistema di auto aggiornamento garantendo all’utente di avere i più recenti magic numbers e l’ultima relase del software.

E’ possibile effettuare il download attraverso MultiUpload invece per qualsiasi informazione vi rimando al Blog dell’Autore.

Oggigiorno l’utilizzo di computer targati Apple o di sistemi operativi virtuali è sicuramente più frequente pertanto vi abbiamo creato una piccola guida per aiutarvi nell’installazione della distribuzione di Security Auditing BackBox sul vostro sistema.

Installiamo BackBox su Mac

  1. Innanzitutto vi consiglio di effettuare un Backup integrale del vostro sistema;
  2. Scarica le seguenti applicazioni: rEFfit (che ci permetterà di eseguire il dualboot), MacFUSE e ntfs-3g (che consentono la scrittura su partizioni NTFS), sono tutti software liberi;
  3. Inserire il DVD di Snow Leopard e Riavviare il sistema!
  4. Premere il tasto “C” in fase di riavvio del Mac per accedere all’Utility di Sistema;
  5. Ora usare Utility Disco per creare la partizione per installare il sistema operativo. La partizione deve essere in formattato HFS + Journaled;
  6. Inserire il CD di BackBox e  Riavviare il sistema!
  7. Premere il tasto Alt  e selezionare l’avvio mediante il CD di BackBox. Ora completare l’installazione attraverso l’apposita guida di sistema;
  8. Ad installazione terminata potrete accedere al menu di MultiBoot Grafico in fase di avvio del Mac semplicemente premendo il tasto Alt

Se notate problemi con l’audio vi consigliamo di installare degli appositi pacchetti con il seguente comando da terminale:

sudo apt-get update && sudo apt-get install build-essential ncurses-dev gettext libasound2-dev xmlto && sudo apt-get install linux-headers-$ (uname-r) libncursesw5-dev

Installiamo BackBox su una Macchina Virtuale

[Aggiornato al 30/10/2013]

Visti l’elevata computazione dei moderni computer sempre più spesso si sfruttano le macchine virtuali, questo ci permetterà di virtualizzazione BackBox in tempi veramente minimi ed avere un ottima stabilità del sistema; nonostante la procedura sia veramente facile è bene notare un passaggio che prevede l’installazione di librerie necessarie per una corretta virtualizzazione.

  1. Avviamo il programma di virtualizzazione ed iniziamo l’installazione di una nuova macchina;
  2. Selezioniamo la ISO da installare precedentemente scaricate dal sito ufficiale di BackBox (consigliamo la versione i386);
  3. Selezionate come caratteristica dell’OS: Ubuntu a 32bit o 64Bit in base alla versione che vorrete virtualizzare;
  4. Ad installazione avvenuta avviate il terminale e digitate i seguenti comandi in base alla versione di Kernel installata sul sistema, se non la conoscete digitate il comando “$ uname -a”:

Per il Kernel v.3.2 o precedenti

$ sudo apt-get install linux-headers-generic -y
$ sudo apt-get install build-essential -y

Per il Kernel v.3.5

$ sudo apt-get install linux-headers-generic-lts-quantal -y
$ sudo apt-get instal build-essential -y

Per il Kernel v.3.8

$ sudo apt-get install linux-headers-generic-lts-raring -y
$ sudo apt-get install build-essential -y

Ora potete installare le utility virtuali (differenti in base al software di virtualizzazione che state usando) necessarie per una corretta virtualizzazione del sistema, generalmente apportano tali migliorie:

  • Driver grafici per migliorare la qualità e la velocità dell’adattatore grafico;
  • Driver per la scheda di rete più performanti talvolta richiesti da alcuni sistemi operativi più vecchi;
  • Un modulo per gestire le cartelle condivise per Linux, Solaris e Windows così da poter condividere i file tra macchina virtuale e il sistema operativo installato fisicamente sul computer;
  • Condivisione degli appunti e file tramite drag and drop tra guest e host;
  • Si può uscire dalla finestra della virtual machine col mouse senza dover premere il tasto di uscita.

Potete inoltre leggere altre guide sulla distribuzione BackBox in lingua Inglese sull’apposita sezione HowTos della WiKi ufficiale.

Oggi, il produttore di antivirus Intego segnala un trojan che sembra diffondersi pericolosamente su Mac OS X.

Il trojan in questione è stato nominato OSX/OpinionSpy ed aprirebbe il port HTTP 8245 come backdoor sui Mac infettati. L’applicazione spyware andrebbe a processare tutti i file presenti sul computer e sui dischi ad esso connessi, copierebbe codice malevolo in programmi come Safari, Firefox e iChat, raccogliendo informazioni personali, per poi inviare i dati registrati ad un server remoto.

Senza voler gridare “al lupo” per ogni nuovo attacco alla sicurezza, Lionel di MacBidouille fa notare che, se la pericolosità di questo trojan si confermasse, OpinionSpy rappresenterebbe uno degli attacchi più importanti subiti da Mac OS X. Lo spyware si scaricherebbe dopo l’installazione di applicazioni e screensaver disponibili regolarmente su MacUpdate, Version Tacker e Softpedia.

Fonte

Analizziamo in questo articolo il funzionamento e la tecnica che ci ha permesso di costruire WPA Recovery e pertanto al Disassemblaggio della funzione generatrice di tutte le chiavi WPA Pirelli/FastWeb.

Nonostante questo post sia esclusivamente relativo a Fastweb, il problema non riguarda solamente questo provider ma la più generale nozione di sicurezza dei provider Italiani.

La maggior parte degli utenti che scelgono una encriptazione WPA-PSK si sentono abbastanza sicuri in quanto questo protocollo risulta essere molto robusto, e ciò è effettivamente vero! Ma da quello che apprenderete vi renderete subito conto che il problema sta da un altra parte. Molto spesso tra le sedia e la tastiera! Molte società preferiscono spendere milioni di € in campagne pubblicitarie e non si curano di realizzare dei progetti robusti in termini di sicurezza per garantire la privacy del Cliente.

  • La prima parte di questo articolo sarà una breve introduzione alle notazioni utilizzate e le specifiche tecniche a cui si farà riferimento.
  • Nella seconda parte vedremo nel dettaglio le scelte progetuali adottate per la costruzione della chiave WPA-PSK predefinita impressa nell’etichetta sotto ogni router. Parleremo inoltre dell’architettura degli HAG Fastweb e del modello Pirelli in particolare.
  • Nella terza parte vedremo invece la tecnica di Reverse Enginnering applicata ad un firmware Pirelli Fastweb che ci ha portato alla scoperta dell’algoritmo di generazione della chiave WPA di default.
  • Infine nell’ultima parte accenneremo alle possibili soluzioni per ovviare questi tipi di problemi e garantire perciò una maggiore sicurezza per le comunicazioni di tipo wireless.

Notazioni

MAC Address: codice di 48 bit (6 byte) assegnato in modo univoco ad ogni scheda di rete ethernet prodotta al mondo. Rappresenta in sostanza un nome per un particolare dispositivo di rete. Gli indirizzi MAC vengono solitamente rappresentati in formato esadecimale, separando ciascun ottetto con un trattino o con i due punti. Un esempio di indirizzo MAC è “00-08-74-4C-7F-1D”. Confrontando i primi tre ottetti con le assegnazioni OUI dell’IEEE, si può osservare come esso appartenga alla Dell Corporation, mentre gli ultimi tre ottetti rappresentano il numero seriale assegnato al componente dal produttore.

Ogni scheda ha un indirizzo unico perché i primi 24 bit sono identificativi della casa produttrice e i successivi della scheda. In questo modo ogni casa produttrice ha a disposizione 2 alla 24 indirizzi, quindi può produrre più di 16 milioni di schede; se un produttore ne produce meno, gli indirizzi (a 48 bit) non assegnati vengono persi, non potendo essere utilizzati da altri costruttori. Una lista dei vendors si può trovare a questo indirizzo: Vendors

SSID: il Service Set Identifier è il nome con cui una rete Wi-Fi si identifica ai suoi utenti. Spesso gli access point sono configurati in modo da annunciare continuamente i loro SSID, cossicché i dispositivi Wi-Fi possano creare un elenco delle reti disponibili nella zona in cui si trovano.

WEP: Wired Equivalent Privacy: è un protocollo di sicurezza per reti wireless ormai insicuro e ritenuto legacy.

WPA-PSK: Wi-Fi Protected Access (WPA e WPA 2) è un programma di certificazione e un protocollo per la sicurezza di reti wireless, basato sull’uso di password, amministrato dall’alleanza del Wi-Fi come forma di protezione per le reti di computer wireless.

HAG: Home Access Gateway. Apparato di rete in dotazione dei clienti Fastweb, l’equivalente router/modem fornito ai clienti di altri ISP nazionali. In ingresso riceve un segnale digitale proveniente dalla rete Fastweb, in uscita fornisce un segnale telefonico analogico tradizionale e un segnale dati a velocità variabile, dipendente dal tipo di cablaggio dell’utenza: fibra ottica o xDSL.

Brute Force: Il metodo “forza bruta” è un algoritmo di risoluzione di un problema che consiste nel verificare tutte le soluzioni teoricamente possibili fino a che si trova quella effettivamente corretta.

Il suo principale fattore positivo è che consente teoricamente sempre di trovare la soluzione corretta, ma per contro è sempre la soluzione più lenta o dispendiosa; viene utilizzato come ultima risorsa sia in crittanalisi che in altre parti della matematica solamente in quei casi dove sia l’unico procedimento conosciuto.

Attacco a dizionario: Nella crittanalisi e nella sicurezza informatica, un attacco a dizionario è una tecnica per “rompere” un codice cifrato o un meccanismo di autenticazione provando a decifrare il codice o a determinare la passphrase cercando tra un gran numero di possibilità. In pratica si tenta di accedere a dati protetti da password (sia remoti, come ad esempio accounts su siti web o server di posta; sia locali, come documenti o archivi protetti da password) tramite una serie continuativa e sistematica di tentativi di inserimento della password, solitamente effettuati in modo automatizzato, basandosi su uno o più dizionari. In contrasto con un metodo forza bruta (o attacco brute force), dove tutte le possibili password sono ricercate in maniera esaustiva, un attacco a dizionario prova solamente le possibili password più probabili. Si può usare una lista di parole probabili (detta dizionario).

 

MIPS: acronimo di Microprocessor without Interlocked Pipeline Stages, è un processore di architettura RISC sviluppato da MIPS Computer Systems Inc. Il MIPS è utilizzato nel campo dei computer SGI, e hanno trovato grossa diffusione nell’ambito dei sistemi embedded, dei devices di Windows CE e nei router di Cisco . Le console Nintendo 64, Sony PlayStation, Sony PlayStation 2 e Sony PlayStation Portable utilizzano processori MIPS, nonchè gli HAG forniti da Fastweb ISP, che si basano su un’architettura a 32 bit.

 

IDA: IDA Pro Disassembler and Debugger è un interattivo, programmabile, estensibile, multi-processore, disassemblatore disponibile per sistemi Windows, Linux e Mac OS X. IDA PRO è diventato un software standard per l’analisi del codice ostile alla ricerca di vulnerabilità. Per maggiori informazioni visitare il seguente link: executive overview

Gli HAG Fastweb oggi

La rete Fastweb attualmente distribuisce due modelli di Hag-Fastweb WiFi di due ben note case costrustrici: Telsey e Pirelli.

Per entrambi, Fastweb utilizza un algoritmo proprietario per assegnare in modo univoco una chiave WPA-PSK predefinita dato il rispettivo MAC ADDRESS della scheda wifi interna. Ciò significa che dato un qualsiasi Hag questo è identificato da tre parametri principali: Serial, SSID, WPA-PSK default, MAC Address.

Inoltre l’SSID di rete ha il sequente forato: “Fastweb-A-xxxxxxxxxxxx” dove A può assumere il valore 1 o 2, le x rispecchiano di solito il Mac Address della scheda wireless interna. Dalle prime 3 coppie del MAC è quindi possibile capire di che Hag si tratta. Per i Pirelli Fastweb gli indirizzi sono comunemente del tipo: FASTWEB-1-001CA2xxxxxx o FASTWEB-1-001DBXxxxxxx mentre per i Telsey Fastweb: FASTWEB-1-00036Fxxxxxx oppure FASTWEB-1-002196xxxxxx. Può capitare però che l’SSID non corrisponda al MAC, almeno per le ultime tre coppie. Questo si può facilmente verificare facendo un confronto diretto oppure attraverso uno sniffer di rete come ad esempio kismet.

La chiave WPA-PSK generata di default per ogni Hag è una chiave composta da 10 cifre esadecimali (10 cifre in modo che la stessa chiave supporti contemporanemente lo standard WPA e WEP). Facendo diverse ricerche e riscontri su questo tipo di dati siamo riusciti a capire il significato di quelle lettere apparentemente casuali ed insensate. Per capire meglio il concetto ci affidiamo a qualche esempio pratico reale.

Questi sono i dati (fac-simili) di possibili reti Fastweb Pirelli:

SSID: FASTWEB-1-001CA2AAAAAA

Mac: 00-1C-A2-AA-AA-AA

WEP/WPA PSK: 0964080272

 

SSID: FASTWEB-1-001CA2BBBBBB

Mac: 00-1C-A2-BB-BB-BB

WEP/WPA PSK: 6b6c657368

 

SSID: FASTWEB-1-001CA2CCCCCC

Mac: 00-1C-A2-CC-CC-CC

WEP/WPA PSK: 690268086f

 

Adesso analizziamo le tre chiavi WPA un po’ più da vicino.

0964080272, 6b6c657368, 690268086f

Notiamo subito che le chiavi sono composte da valori esadecimali, aventi quindi un charset di questo tipo {0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}

Qui notiamo subito il primo errore progettuale: Scegliere una chiave WPA di 10 caratteri in uno spazio chiavi abbastanza ristretto, tale da favorire un bruteforce attack. Date le crescenti potenze di calcolo, le chiavi WPA dovrebbero tendere più alla lunghezza massima di 64 caratteri che alla minima di 8. 10 caratteri (casuali) sembrano ancora tutt’oggi un numero tale da scoraggiare la forza bruta, ma come vedremo in realtà lo spazio di ricerca in questo caso è molto più stretto.

Maggiori dettagli

Come accennato sopra la password Fastweb WPA è violabile in tempi più che ragionevoli con un meccanismo di bruteforce. Però, l’assunzione alla base di questa procedura è che la generazione della PSK sia casuale. E se invece casuale non fosse ciò che casuale appare? E, soprattutto, se l’algoritmo del tutto deterministico e ripetibile alla base di questa generazione, dipendesse da dati che è alla portata di chiunque ottenere? Se così fosse l’intero scopo della protezione WPA sarebbe sconfitto in partenza: chiunque potrebbe estrarre i dati e calcolare le PSK che gli interessano.

La nostra ricerca intende dimostrare che nel caso dei router Fastweb Pirelli la preshared key è funzione dell’SSID (ovvero, del nome stesso della rete). La vulnerabilità è particolarmente grave, in quanto l’SSID è il dato pubblico per definizione: volendo o meno, qualsiasi software di gestione wifi lo mostra apertamente.

Primo passo necessario allo sviluppo della ricerca è stata l’estrazione del firmware da un router e la successiva importazione in un ambiente adatto allo studio del codice assembler così ottenuto.

A tale scopo abbiamo analizzato il firmware utilizzando un ottimo software: IDA PRO.

Tale ambiente consente la navigazione del codice ASM MIPS, risolve automaticamente i riferimenti tramite le tabelle dei simboli e in generale semplifica enormemente il lavoro di reversing consentendo di concentrarsi sulla lettura e comprensione del codice.

Una spiacevole (piacevole) sopresa è stata la presenza, nel disassemblato di tutte le funzioni con nomi fortemente autoesplicativi (ulteriore grave errore, a nostro avviso, da parte dei programmatori) questo ci ha permesso di semplificare straordinariamente l’analisi del firmmware.

Il cuore dell’algoritmo si svolge nella soubroutine: cript_it. Tale funzione, dal nome palesemente esplicativo, viene invocata indirettamente durante la generazione dei parametri WiFi del dispositivo. Ad essa viene passato come parametro proprio il nome della rete, o meglio parte di esso, che sostanzialmente rappresenta il MAC Address della scheda wifi contenuta nell’HAG, trattato secondo un algoritmo proprietario non difficile da comprendere.

Analisi dell’Algoritmo

In sintesi questi sono i passi svolti dall’algoritmo per ricavare la WPA predefinita partendo dall’SSID di rete.

 

  1. Estrae una sequenza di 6 byte dall’SSID.
  2. Inizializza i vettori MD5 (MD5Init).
  3. Inserisce i 6 byte dell’SSID nella sequenza di cui calcola l’hash MD5 (MD5Update).
  4. Ricalcola l’hash MD5 (dell’hash precedente) utilizzando una sequenza di 20 byte predefinita (MD5Update).
  5. Finalizza l’hash MD5 (MD5Finish).
  6. Dall’hash finale crea una squenza binaria ottenuta considerando i primi 4 byte più significativi dell’hash.
  7. Questa sequenza viene a sua volta suddivisa in 5 gruppi da 5 bit ciascuno. I bit in eccesso vengono scartati. Ed ogni gruppo di 5 bit viene riconvertito in esadecimale (*)  riottenendo una sequenza di 5 byte.
  8. Somma 0×57 ad ogni byte il cui valore sia >= 0xA (**).
  9. La concatenazione di queste rappresentazioni (con lettere minuscole) è la WPA PSK di default.
(*) 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 dell’SSID raggruppando i byte in 6 gruppi da 2 cifre cadauno (00,12,34,56,78,90), e considerando ciascun gruppo un byte espresso in base 16.

Cosa ne fa è presto detto: ne calcola l’MD5 (per la precisione, inserisce questi 6 byte in una sequenza di cui sarà calcolato l’MD5). La procedura MD5 è nota, documentata, e trovarne implementazioni è alla portata di tutti, in ogni linguaggio: BASIC, C/C++, Pascal, C#, COBOL, … basta una semplice ricerca.

Un esperto di tecniche crittografiche avrebbe sicuramente riconosciuto l’algoritmo anche se la routine invocata si fosse chiamata in modo più oscuro (e avrebbe comunque potuto replicare il codice ASM in un linguaggio a scelta, senza capire di star reimplementando un algoritmo noto in letteratura), ma dichiarare platealmente l’uso dell’MD5 è stata un‘ulteriore semplificazione al nostro lavoro.

Usare solo l’SSID così trattato sarà però sembrato sin troppo banale. Si è allora deciso di aggiungere un salt, ovvero una sequenza speciale prefissata di 0×14 (20) byte, da inserire nella sequenza alterando in modo originale la creazione dell’hash MD5! Derivare il salt è stato abbastanza semplice per chi aveva conoscenze pregresse di assembler MIPS, in quanto il codice si avvaleva di una feature tipica di quell’architettura: il delay slot (riteniamo che non sia stata una deliberata scelta offuscativa dei programmatori, ma l’opera del compilatore intenzionato ad usare ogni ciclo in computazione attiva, e minimizzare i NOP).

Tale caratteristica del MIPS32 implica che quando si esegue un salto (o una chiamata di subroutine), la CPU non la esegue subito, ma ha appunto un ciclo “libero” per svolgere un’altra istruzione.

Di seguito è riportato un’estratto della funzione in questione (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

Esempio pratico

 

Poniamo il caso in cui si abbia la propria rete Fastweb avente un SSID di questo tipo FASTWEB-1-00193EA1B2C3.

I 6 byte da considerare sono 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. Di questa sequenza binaria si formano 5 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 WPA key si ottiene da questa sequenza di byte confrontanto ciascun byte con 0×0A, se risulta essere maggiore viene aggiunto il valore hex 0×57 (per il motivo precedentemente spiegato) ottenendo così la seguente chiave: 6b64756b04.

Ovviamente, questi sono dati d’esempio (non reali) utilizzati per dimostrare la validità dell’algoritmo.

Le nostre Conclusioni

Non si può evitare, in conclusione, di segnalare che le operazioni dei progettisti sono carenti sotto diversi aspetti:

1) Legare la chiave WPA a dati pubblicamente conoscibili. Chiunque può usare uno sniffer (kismet o airodump) per ricavare ESSID e MAC Address delle reti Fastweb Pirelli (tra l’altro, l’ESSID viene rivelato già dal software di gestione delle reti wireless, senza necessità di un approccio attivo di wardriving). Legare la chiave a informazioni interne del router/modem non deducibili da alcuna combinazione di MAC ed ESSID sarebbe stata una scelta più accurata. Usare algoritmi casuali sarebbe la scelta ideale . Ovviamente, l’uso di casualità deve essere tale da rendere innocuo ogni tentativo di bruteforcing. Ad esempio, rendere del tutto random il quinto byte della chiave non ha senso (un bruteforce su 256 valori si completa in tempi inferiori al secondo su molti sistemi). Selezionare in maniera totalmente random i 20 byte della sequenza, questo sì avrebbe impedito l’approccio alla base di quest’articolo.

Una soluzione più semplice, ma altrettanto efficace, sarebbe stata quella di legare la chiave WPA non al MAC della scheda 802.11 dell’HAG, ma a quello dell’interfaccia Ethernet (ogni scheda Ethernet ha un MAC univoco). Non essendoci alcun legame tra la scheda WiFi e quella Ethernet all’interno dello stesso Hag, la scelta avrebbe impedito una reperibilità on the fly dei dati necessari all’algoritmo, annullando la vulnerabilità concreta connessa alla scoperta dell’algoritmo.

2) Fare il deployment in produzione di router con un firmware con i simboli presenti. La totale mancanza di nomi delle funzioni e variabili avrebbe reso fortemente complicato se non quasi impossibile il lavoro di analisi del firmware. L’unico approccio utilizzabile in tal caso, sarebbe stata la simulazione del codice MIPS su un sistema di emulazione, al fine di dedurre il “punto” in cui effettivamente veniva scritta in memoria la chiave di rete, e un successivo traceback nel codice. Si sarebbe potuto anche far uso di tecniche di offuscamento del codice e di meccanismi anti-debugging, tipici di software commerciali.

3) Aver generato password di soli 10 simboli, tra l’altro cifre esadecimali. Ad una analisi fortemente sommaria è possibile restringere lo spazio di ricerca a 256 alla quinta valori (256 valori possibili in un byte per 5 byte, che danno luogo a 10 cifre se stampati in esadecimale). Analisi più accurate rivelano che i valori dei byte rappresentano lettere dell’alfabeto in minuscolo (a-z) e numeri da 00 a 09 della tabella ASCII. Le possibili combinazioni sono quindi: 26 lettere dell’alfabeto più 10 numeri per un totale di 36 simboli che ognuna di queste coppie può assumere. Ciò significa che in totale abbiamo 36^5 combinazioni possibili, cioè 60466176 combinazioni ~ 60 Milioni. Avendo a disposizione l’handshake di rete, diventa fattibile (avendo un dizionario, banalmente creabile) l’attacco a forza bruta. Questo numero sembra molto alto, ma con la potenza di calcolo che oggi si ha a disposizione è possibile per chiunque testare tutto lo spazio chiavi in meno di un giorno. Considerando la media di 1300 keys/s ci vorranno ~ 13 h nel peggiore dei casi. Se poi distribuiamo il carico di lavoro su più computer (possibilmente più potenti) riusciremo ad avere la chiave nel giro di qualche ora, o addirittura di qualche decina di minuti se si utilizza la potenza di calcolo delle GPU di potenti schede video.

4) Sarebbe buona regola da parte dell’Assistenza Fastweb invitare i nuovi Clienti a modificare il prima possibile le configurazioni inziali accessibili dalla MyFastPage. La chiave di rete predefinita è utile solo inizialmente per testare il corretto funzionamento della linea ADSL e dei vari PC connessi all’HAG, dopodichè deve essere sostituita con una più robusta. L’opzione che mantiene l’accesso automatico dai PC connessi a quella rete va assolutamente evitato.

Dalla MyFastPage è possibile reperire moltissime informazioni sensibili del Cliente, ovvero: Cognome e Nome dell’intestatario, Codici bancari, Codice fiscale (e quindi data di nascita e luogo), Indirizzo e Numero civico dell’abitazione, Numero di telefono fisso ed eventualmente mobile, le fatture associate al conto Fastweb con i relativi dettagli alle chiamate e costi, e i MAC address dei PC connessi alla rete.

Fortunatamente, Fastweb mette a disposizione un modo abbastanza semplice per evitare questi spiacevoli inconvenienti. Modificare la password di default. Infatti dalla MyFastPage->Gestione Abbonamento->Configura WiFi con una semplice procedura è possibile modificare la chiave predefinita. Ma in quanti lo fanno? Lavorando nell’ambito delle reti, per esperienza personale vi possiamo dire che Fastweb copre una buona fetta di mercato per quanto riguarda la fornitura dei servizi internet nelle aziende; il 70% di queste lascia le impostazioni WiFi di default, mentre il 95% lascia l’accesso automatico alla MyFastPage con le password di default.

Noterete che la situazione non è per niente banale o da sottovalutare.

Ci teniamo a sottolineare che più volte abbiamo sollecitato personalmente il suddetto Provider a prendere provvedimenti a riguardo, ma le nostre segnalazioni sono state del tutto snobbate, e la risposta più intelligente è stata: “Gentile cliente, la ringraziamo per il suo contributo ma i nostri clienti possono modificare la chiave wifi dalla MyFastPage.”

Siamo i primi a consigliare (ove possibile) la modifica della chiave di default a prescindere dal gestore, non solo perché lo riteniamo opportuno, ma anche perché la nostra etica ce lo impone.

Siamo convinti che la sicurezza informatica dipende principalmente dal fattore umano. Abbiamo tentato di far sentire la nostra voce a Fastweb, ma non abbiamo ottenuto risposta nè interesse al problema. Per questo motivo abbiamo deciso di pubblicare questo articolo, per informare le persone di una falla di sicurezza che altrimenti resterebbe ad esclusivo beneficio di una ristretta cerchia di savants, a tutto danno del grande pubblico. Auspichiamo che la pubblicazione di questo articolo incentivi le persone a salguardare i propri dati personali evitando così di essere accusati di reati commessi da crackers informatici che sfruttano la nostra rete in modo illegale.

Auspichiamo inoltre che i Provider Italiani possano prendere i giusti provvedimenti a riguardo, progettando sistemi di sicurezza molto più sicuri di quelli attuali.

Fonte