sabato 25 settembre 2010

I tool per le analisi delle reti WiFi

Visto che ho cominciato a parlare delle reti WiFi, continuiamo con la loro analisi e con gli strumenti necessari all'identificazione.
Prima di tutto una introduzione: ogni dispositivo WiFi, per poterlo usare in modalità "avanzata" con questi tool, deve supportare determinate modalità; non tutte le periferiche possono farlo e soprattutto queste funzioni possono essere state implementate in release più recenti del software o dei driver (nel kernel od a parte)... quindi prima di pensare che non siate in grado di ottenere i risultati che volete prestate attenzione ad utilizzare release di software, driver e kernel aggiornati.
Adesso una piccola considerazione... i tool più diffusi e documentati si trovano su linux; l'unico tool degno di nota, per le analisi dello spettro di frequenze sotto windows, trovo che sia NetStumbler, ma questa è un'opinione altamente personale personale... ci sono dei porting per windows dei tool linux, ma io preferisco utilizzarli sotto il loro sistema operativo nativo.
Ora passiamo ai tool che si utilizzano sotto linux; sono tool completi e che coprono la maggior parte delle necessità, logging compreso e devono essere necessariamente utilizzati dall'utente amministrativo, quindi da root. I due principali sono:
  • kismet;
  • airodump.
kismet è il software più complesso, si basa su di un'interfaccia testuale a finestre, visualizza le reti presenti, gli eventuali client connessi, la potenza del segnale, il canale utilizzato e molte altre informazioni utili oltre che eseguire la cattura del traffico; ha la possibilità di essere collegato a dispositivi GPS per localizzare le reti individuate e ci sono anche dei tool che dai log permettono di importare gli AP all'interno di google maps o google earth (kisgearth e pykismetearth).
airodump fa parte della suite di aircrack-ng ed è un tool minimale, indirizzato principalmente ad individuare le reti WiFi, il loro SSID, il mac address, il canale e se vi sono client connessi.
Entrambi gli strumenti sono ottimi per eseguire le analisi prima dell'installazione di una propria apparecchiatura WiFi per trovare i canali liberi e ridurre al minimo le possibilità di interferenze con altre apparecchiature già presenti od che verranno installate in seguito dai vostri vicini.
L'utilizzo di kismet è più complessa perchè offre molte possibilità di configurazione e personalizzazione, quindi è da configurare prima dell'utilizzo e la sua configurazione risiede all'interno del file /etc/kismet/kismet.conf... la parte più importante e sicuramente da impostare prima dell'utilizzo è il parametro ncsource che rappresenta l'interfaccia wireless da mettere in modalità promiscua.
Io ho eseguito i test con varie schede e riporto le linee necessarie per configurare la sorgente:
  • Belkin F5D7011 (Broadcom b43): ncsource=wlanX:name=broadcom
  • Intel IPW2200: ncsource=ethX:type=ipw2200
  • Zydas ZD1211: ncsource=wlanX:type=zd1211
Una volta configurato il source è necessario lanciare il comando: kismet
Invece airodump non ha alcun file di configurazione, ma tutti i parametri vengono passati dalla linea di comando; prima è necessario porre l'interfaccia in modalità di monitor e successivamente si inzia a loggare il traffico con i seguenti comandi: airmon-ng start ethX && airodump-ng ethX
Un'ultima considerazione da fare riguarda la pratica chiamata "packet injection"; questa è una tecnica molto particolare perchè permette di creare dei pacchetti secondo ke proprie esigenze ed inviarli tramite la propria scheda wireless... ricordatevi che normalmente i driver del kernel, in versione originale, non permettono questa tecnica, quindi per poterla utilizzare è spesso necessario patchare i driver od utilizzare distribuzioni che utilizzano driver già modificati (ad esempio la distribuzione backtrack).
Per la packet injection (aireplay-ng --test <ath|eth|wlan>X) ho fatto dei test con le schede WiFi che possiedo e varie versioni di BackTrack... i risultati sono qui riportati:

  • Belkin F5D7011: BT3 final con modulo bcm43xx - KO, BT4 final - OK, BT4 r1 con modulo b43 - non è supportato il cardbus, quindi non funziona
  • Intel IPW2200: BT3 final - KO, BT4 final - KO, BT4 r1 - KO
  • Zydas ZD1211:BT3 final - OK, BT4 final - OK, BT4 r1 - OK
Direi che anche oggi le informazioni essenziali da cui partire sono state fornite... in rete c'è moltissima documentazione, quindi non è sicuramente un problema trovare gli approfondimenti.

giovedì 23 settembre 2010

Le reti WiFi... configurazione e considerazioni

Piccola introduzione... le comunicazioni wireless sono rilevabili da chiunque senza che l'interessato possa accorgersene ed avvengono a determinate frequenze, queste sono stabilite dai canali (11 o 13 a seconda del posto in cui si vive). Affinchè trasmissione e ricezione siano di buona qualità non devono esserci interferenze; per ridurre al minimo le possibili interferenze è necessario trovare le frequenze libere "più libere" da utilizzare e quindi prima di procedere alla scelta del canale si deve rilevare con uno scanner la presenza di altri eventuali access point; una volta appuntati quelli presenti ed i canali utilizzati, si sceglierà il proprio in modo che sia il più possibile lontano dagli altri e cercando comunque di evitare sovrapposizioni; questo aiuta a massimizzare l'area coperta riducendo le interferenze (ricevute e prodotte per le apparecchiature già presenti).
Ora passiamo alla parte interessante e che ha a che fare con la sicurezza delle comunicazioni wireless ormai spesso presenti nelle nostre case vista la comodità di collegamento che offrono...
La configurazione di un router non deve assolutamente tralasciare la sicurezza della connettività dato che per la normativa italiana (ed anche altre) sei legalmente responsabile delle azioni compiute dal tuo indirizzo IP; inoltre non è previsto che tu sia "inconsapevole" delle azioni fatte o tecnicamente incapace di proteggere la tua linea... per la legge l'ignoranza non è una scusante.
Per mantenere il controllo della propria linea e sapere cosa succede sulla propria rete è essenziale ed obbligatorio utilizzare sistemi che impediscano a chiunque di infiltrarsi, inoltre per la propria privacy è essenziale nascondere il traffico da occhi indiscreti... tutto questo viene risolto utilizzando uno standard crittografico per la trasmissione e ricezione dei dati.
Prima di passare all'analisi vera e propria degli standard crittografici, analizziamo prima i dati necessari per collegarsi ad una rete WiFi facndo alcune considerazioni anche sugli altri parametri al fine di aumentare la sicurezza... il SSID e la Key/PSK/certificato se presente.Le prime considerazioni che possiamo fare riguardano il SSID; questo è il nome della connessione WiFi che verrà visualizzato, o deve essere impostato, da chi tenta di connettersi alla rete. E' sempre consigliabile modificare quello di default, se possibile, ed inserirne uno di fantasia... è sconsigliato inserire nomi o cognomi che vi identifichino in maniera certa; se per qualcuno siete voi l'obbiettivo, tenterà finchè non riuscirà ad ottenere quello che vuole ed anche se si è abili, non è bello fare da bersaglio.
Un secondo passo riguarda la modalità di diffusione del SSID: normale o nascosto. Siccome per collegarsi si deve conoscere il SSID della rete, impostarlo al valore nascosto può aiutarci a tenere la rete nascosta, ma questo solamente finchè non si collega qualcuno di autorizzato... nel momento in cui avviene la connessione, ovvero in fase di handshake, questo viene trasmesso e se qualcuno è in fase di sniffing può facilmente recuperarlo.
Ora passiamo alle possibili connessioni ed ai protocolli crittografici cercando di spiegarli in seguito:
  • open/not crypted;
  • WEP (64/128 e 256bit, ma non l'ho mai visto dato che è stato subito superato da WPA);
  • WPA (PSK/personal o Radius/enterprise basato su TKIP);
  • WPA2 (PSK/personal o Radius/enterprise basato su AES).
Una rete di tipo open od uncrypted offre la possibilità, a chiunque conosca il proprio SSID, di collegarsi e di non crittografare il traffico lasciandolo esposto a chiunque in ascolto... queste considerazioni fanno sì che sia la configurazione più insicura. Inoltre è da considerare il fatto che molte apparecchiature sono in grado di collegarsi senza neanche chiedere conferma all'utente (spesso dipende dalla configurazione del dispositivo) e rendendo la propria rete un "porto di mare".
I primi standard crittografici erano nati più per proteggere il traffico che la propria rete, in modo da impedire a persone non autorizzate l'accesso ai dati ed in seguito alle reti WiFi.
Il primo protocollo nato è stato il WEP; attualmente è considerato un protocollo obsoleto in quanto ha vulnerabilità note che permettono di risalire alla chiave di cifratura analizzando semplicemente il traffico che viene generato tra il client e l'access point. L'utilizzo è altamente sconsigliato, ma in alcuni casi i dispositivi obsoleti permettono solamente questo livello di crittografia... è inoltre l'unico che permette la creazione di rete WiFi diffuse da più access point collegati tra loro via radio (e non via ethernet); questa particolare configurazione si chiama W.D.S. (Wireless Distribution System) e pochi router la supportano.
L'evoluzione del WEP, per sopperire alle sue mancanze e correggerne le vulnerabilità, è stata la famiglia di protocolli WPA che al momento è la più robusta conosciuta; questa permette di crittografare il traffico, impedisce l'accesso a chi non è a conoscenza delle credenziali necessarie alla connessione e non è possibile risalire alla PSK attraverso la semplice analisi del traffico. WPA è stato un protocollo di passaggio, transitorio, e nato per sopperire alla veloce "caduta" del WEP; le debolezze del WEP sono state superate grazie all'utilizzo di un handshake in 4 fasi, l'utilizzo di funzioni di hash legate al SSID e la crittografia TKIP. In realtà il protocollo che era in studio e che avrebbe dovuto sostituire il WEP era denominato 802.11i e prevedeva l'utilizzo della cifratura AES, ma a quei tempi non era ancora pronto... quando è stato pronto è giunto sul mercato e chiamato WPA2.
A livello di protocollo WPA/WPA2 possiamo subito notare due sotto tipologie:
  • PSK/personal utilizzato a livello domestico e vulnerabile ad attacchi di tipo brute force;
  • Radius/enterprise utilizzato all'interno di ambienti in cui sono presenti server radius di appoggio con la possibilità di autenticazione tramite l'utilizzo dei certificati, quindi invulnerabile ad attacchi di tipo brute force.
Come detto, i protocolli della famiglia WPA sono attualmente i più sicuri anche se quelli di tipologia personal sono attaccabili attraverso metodi di brute forcing, ma la complessità numerica legata all'algoritmo fa supporre che attacchi di questo tipo siano computazionalmente molto pesanti e lunghi da portare a termine.
Logicamente, in queste condizioni, è necessario che la Key o PSK sia scelta adeguatamente e non dovrebbe essere composta da parole semplici e presenti all'interno di un dizionario, ma formata da stringhe contenenti lettere maiuscole, minuscole, numeri e simboli... in poche parole una buona password policy rende la vita molto complicata a chi vuole introdursi all'interno della nostra rete (come anche in tutte le altre situazioni).
Per oggi direi che è tutto... a presto!

domenica 12 settembre 2010

Duplicare un server Debian

Oggi ci occupiamo di come duplicare un server Debian running, ma prima dobbiamo definire la parola "duplicare"... per duplicare non si intende clonare completamente la macchina (quindi compresa la configurazione), ma ottenere un sistema installato da nuovo con gli stessi pacchetti che sono sulla macchina presa come master.
Ricordo che come per tutte le operazioni critiche è sempre consigliabile fare un backup dei dati vitali... anche se non dovrebbero esserci eventi imprevisti, in questo modo si è certi di non perdere dati vitali qualunque comando venga lanciato.
I passi che seguiremo sono i seguenti:
  1. installare e configurare un sistema secondo le proprie necessità;
  2. creare una lista dei pacchetti installati;
  3. installare un sistema base sulla nuova macchina;
  4. usare la lista dei pacchetti generata in precedenza per ottenerne un sistema in grado di svolgere le stesse funzioni.
A questo punto sappiamo che il punto di partenza è avere un sistema installato come quello che vogliamo creare, ed utilizzeremo quindi la lista dei pacchetti installati su questo per generare il nostro duplicato dato che con alte probabilità saranno stati aggiunti e rimossi determinati pacchetti.
Un punto importante da considerare è il tipo di distribuzione installata; da un sistema stable noi possiamo clonare/generare un sistema testing, ma da un sistema testing non possiamo generare un sistema stable, o meglio, potrebbero esserci dei problemi a causa della presenza di un maggiore numero di pacchetti nella distribuzione testing e non presenti nella stable.
Avendo un sistema di partenza dobbiamo prelevare la lista dei pacchetti presenti e per operare con i pacchetti la distribuzione Debian, o altre debian-like, si affidano all'utilizzo del comando "dpkg"; quindi per prelevare la lista dei pacchetti installati procediamo nella seguente maniera:

  • dpkg --get-selections > /tmp/installed.pkg
Questo comando restituisce la lista dei pacchetti installati e la scrive all'interno del file /tmp/installed.pkg; di questo file ne avremo bisogno in seguito.
Ora dobbiamo installare la nuova macchina, ma non mi occuperò di questo procedimento in quanto ci sono molti tutorial che spiegano come procedere... il nostro scopo è solamente quello di arrivare ad avere un sistema base installato da cui proseguire per ottenere il nostro duplicato.
Una volta installato il sistema base, procediamo all'aggiornamento dei pacchetti già installati con i comandi:
  • apt-get update && apt-get upgrade
A questo punto possiamo occuparci dell'installazione, o rimozione, secondo i pacchetti presenti sul sistema master e, supponendo che il file generato in precedenza sia di nuovo posizionato in /tmp, è necessario eseguire i seguenti comandi:
  • dpkg --set-selections < /tmp/installed.pkg && apt-get -u dselect-upgrade
La prima parte del comando esegue il preselect dei pacchetti presenti nella lista, mentre la seconda parte utilizza apt-get per aggiornare il sistema in base alla lista dei pacchetti forniti da dpkg. A questo punto c'è solamente da aspettare il download e l'installazione, o rimozione, dei pacchetti desiderati.
L'ultima operazione da eseguire per avere il nuovo sistema funzionante è la configurazione di tutti i pacchetti necessari; qui è possibile procedere in due modi:
procedere manualmente alla configurazione dei singoli pacchetti;
eseguire un diff tra i vecchi file di configurazione ed i nuovi, eseguendo sui file solamente le modifiche "appprovate";
copiare i file di configurazione dal sistema master su di questo nuovo.
Il primo sistema è quello più pulito (non vengono trasferite configurazioni obsolete), ma anche il più lungo; il secondo sistema è un buon compromesso, permettendo di agire manualmente sulle singole modifiche e/o decidere quali trasferire; mentre l'ultimo sistema potrebbe lasciare un sistema sporco, trasferendo file obsoleti o non più necessari alla configurazione di determinati pacchetti.
Ed anche per oggi direi che è tutto, buona clonazione dei sistemi!

P.S.: clonare può anche essere letto come backup del sistema... e come si suol dire: "A buon intenditore, poche parole!"