lunedì 29 novembre 2010

STUN, TURN, ICE: come lottare contro i mulini a vento

Come "veterano" della sicurezza in rete, sentendo parlare di protocolli e specifiche che consentono di attraversare strati di firewall e di debellare tecniche anche sofisticate che si usano per nascondere al mare magnum di Internet la struttura interna delle preziose reti aziendali... mi si sono rizzati tutti i capelli del mio ex-capo (o, se preferite tutti gli ex-capelli del mio capo)!

Ragazzi, qui non stiamo parlando dei soliti hacker/cracker che tentano ingegnosamente di penetrare negli appetibili meandri di qualche server aziendale. Si tratta invece di specifiche studiate e pubblicate dall' Internet Engineering Task Force (IETF), uno degli organismi "super partes" che costruisce quel vasto e variopinto mondo conosciuto come Internet.

Sto parlando di STUN, TURN e ICE. Tre tecniche per vanificare una parte del lavoro svolto da molti firewall.

Citando Wikipedia,
"STUN è l'acronimo di Session Traversal Utilities for Network Address Translators (NATs): si tratta di un protocollo e di un insieme di funzioni che permettono alle applicazioni in esecuzione su un computer di scoprire la presenza ed i tipi di NAT e firewall che si interpongono tra il computer e la rete pubblica."

(il corsivo ovviamente è mio!).

Ora capisco perché, qualche tempo addietro, tentando di mettere in piedi un sistema VOIP (telefonia in rete) e videoconferenza per un cliente, incontrammo infinite difficoltà di implementazione! Evidentemente i protocolli VOIP e videoconferenza non hanno nulla a che vedere con Skype o MSN-Messenger o altri simili programmi che permettono a "tutto il mondo" di comunicare "istantaneamente" attraverso Internet, anche con voce e video, senza particolari seghe mentali ehm... problemi tecnici! Né sanno imparare che la strada più semplice è sempre la migliore.

Per approfondimenti (principalmente in inglese) riguardanti la fantastica terna STUN/TURN/ICE, rimando a questo articolo di Wikipedia, nonché alle relative RFC pubblicate dall'IETF:

  • RFC5389: Session Traversal Utilities for NAT (STUN).

  • RFC5766: Traversal Using Relays around NAT (TURN): Relay Extensions to STUN.

  • RFC5245: Interactive Connectivity Establishment (ICE): A Protocol for NAT Traversal for Offer/Answer Protocols.


Ora vado a farmi una camomilla! E a rileggermi il Don Chisciotte: almeno lui, contro i mulini a vento riusciva a combattere!

domenica 28 novembre 2010

Ping e Traceroute: mini-geografia di una rete

PING (aka "ICMP echo request")

Molto spesso sentiamo ormai parlare di PING in rete, ovvero di una tecnica per sondare se un certo computer (a volte, generalizzando, un certo servizio, ma non è di questo che parleremo in questo articolo) "risponde" in rete.

Strettamente parlando, il comando PING è l'interfaccia utente (a riga di comando) per generare un determinato tipo di pacchetti ICMP (vedi dettagli): esattamente viene generato un ICMP di tipo 8 ("echo request"), attraverso il quale si chiede al computer (host) destinatario di rispondere con un pacchetto ICMP di tipo 0 ("echo reply"). A questo punto, il nostro pacchetto ICMP viaggia in rete, seguendo la "strada" di un normale pacchetto IP (istradamento, e a volte filtraggio e prioritizzazione, a seconda dei casi). Sono possibili diversi scenari:

  1. il pacchetto ICMP tipo 8 arriva a destinazione, e il destinatario risponde con un pacchetto ICMP tipo 0 di ritorno (cioè scambiando IP di origine e destinazione); nel caso più semplice, tale risposta ritorna correttamente e l'utente viene informato con apposito messaggio, che riporta il cosiddetto RTT (round trip time), ossia il tempo lordo di andata-e-ritorno; diversamente, il pacchetto di ritorno può andare perduto, perché filtrato da firewall o scartato da router.

  2. il pacchetto ICMP tipo 8 non arriva a destinazione, perché filtrato da firewall o scartato da router nel suo viaggio di andata.


In tutti i casi in cui il pacchetto ICMP non "ritorna" al mittente entro un tempo prestabilito, l'utente viene informato con apposito messaggio. In questi casi, ovviamente, non è possibile avere informazioni sul RTT (tempo di andata-e-ritorno).

Bisogna inoltre tenere presente che, come tutti i pacchetti IP, il pacchetto ICMP porta con sé l'informazione di TTL (time to live), ovvero il massimo numero di "router" che può attraversare senza essere scartato. Questo valore viene solitamente impostato a 255, che consente di attraversare la rete in condizioni normali. Vedremo che proprio il TTL minore di 255 costituirà la tecnica per il tracciamento del percorso che descriveremo in seguito.

TRACEROUTE (aka "TTL expired")

Naturalmente, oltre a sapere se e come un computer (host) in rete "risponde" alle sollecitazioni di tipo PING viste sopra, risulta spesso interessante scoprire quale percorso sta seguendo il generico pacchetto IP dal nostro computer a quello che vogliamo raggiungere. Si parla quindi di Tracerouting (tracciare la rotta). Una tecnica semplice ma efficace per ottenere queste informazioni, consiste nell'inviare un pacchetto IP avente come valore del TTL un numero basso: se per esempio inviamo in ICMP echo request (PING) con TTL = 1, il primo router attraversato dal pacchetto decrementerà il TTL e, vedendolo arrivare a zero, risponderà con un ICMP tipo 11 (TTL expired), mettendo come destinazione l'IP originario e come sorgente il proprio IP (quello del router): in questo modo, sarà noto l'indirizzo IP del primo router attraversato dal pacchetto. Analogamente, facendo partire un successivo pacchetto con TTL = 2, il primo router verrà attraversato senza problemi, mentre il secondo risponderà con un ICMP tipo 11, rendendoci noto il suo IP. Proseguendo con la generazione di pacchetti aventi TTL via via crescenti, potremo ricostruire la catena di router attraversati per arrivare a destinazione.

Naturalmente, questa tecnica si basa sull'ipotesi che le reti attraversate facciano passare pacchetti ICMP e che i router rispettino lo standard che richiede di decrementare il TTL e di inviare ICMP tipo 11 "TTL expired" nel caso in cui il TTL vada a zero. Capita invece di trovarsi di fronte ad apparati che filtrano il traffico (firewall), a router che non rispondono in caso di TTL uguale a zero, e perfino a router che non decrementano il TTL. In questi casi, le informazioni sull'istradamento verso quella destinazione saranno incomplete o poco precise. Bisogna inoltre tenere presente che nello scenario "Big Internet" non è affatto detto che per andare da una certa origine a una certa destinazione i pacchetti passino sempre per lo stesso percorso: esistono ben noti algoritmi di ottimizzazione del traffico che possono istradare i pacchetti su percorsi diversi a seconda delle condizioni della rete e delle caratteristiche dei pacchetti stessi.

In definitiva: i comandi ping e traceroute (tracert sui sistemi Windows) possono essere utili strumenti per una prima diagnosi di raggiungibilità in rete, ma non costituiscono la "prova provata" di eventuali problemi di connettività, anche se spesso forniscono agli specialisti utili indizi per approfondire l'analisi.

Per la cronaca, il comando traceroute in uso sui sistemi *nix e Linux non utilizza (se non a richiesta) pacchetti ICMP, bensì pacchetti UDP, allo scopo di tentare di attraversare più router/firewall possibili verso la propria destinazione.

(vedi anche un mio documento: traceroute )

mercoledì 24 novembre 2010

Steganografia: di che si tratta?

A volte si incontrano parole apparentemente "difficili", che nascondono concetti abbastanza comprensibili. E' il caso della "steganografia": in breve, è una tecnica che permette di nascondere un contenuto (informatico, quindi "binario") dentro un contenitore di altro genere (sempre informatico, quindi sempre di sequenze di bit stiamo parlando), assai meno sospettabile.

Un esempio semplice semplice per tutti: quando visualizziamo un'immagine in formato JPEG (il più diffuso fra quelli usati per pubblicare o trasmettere immagini sulla rete), in realtà il nostro computer ricostruisce l'immagine a partire da una sequenza di bit (il file in formato JPEG, appunto); quello che molti non sanno, è che fra questi bit ce ne sono alcuni assolutamente inutili per la ricostruzione dell'immagine: sono "commenti" o altre informazioni che possono essere aggiunte da chi crea l'immagine, o dai programmi usati per manipolare il formato JPEG (le fotocamere, per esempio, inseriscono marca e modello e altre informazioni relative al setting della macchina al momento dello scatto).

Finché si tratta di informazioni innocue o comunque pertinenti l'oggetto che stiamo manipolando, tutto bene. Le problematiche di sicurezza (e le tecniche di steganografia) entrano in gioco quando questi "spazi quasi inutili" vengono riempiti con informazioni che nulla hanno a che vedere con l'oggetto originario (che per esempio potrebbe essere una foto scattata al mare), ma riguardano invece informazioni "sensibili" o riservate, catturate magari da uno dei tanti programmi "trojan" che si installano silenziosamente sui computer. Insomma, ritrovarsi i codici di accesso al conto bancario "a bordo" di una foto delle vacanze pubblicata su Facebook (questo è solo un esempio!) non farebbe piacere a nessuno. Ovviamente, bisogna essere in possesso di tecniche steganografiche per estrarre tali informazioni dai file "innocui". Ma i pirati della rete ne hanno certamente a disposizione.

Nota bene: il formato JPEG citato nell'esempio non è l'unico che prevede "spazio a disposizione" in cui si possano inserire informazioni aggiuntive (e quindi utilizzabile per operazioni di steganografia); la maggior parte dei formati di memorizzazione delle informazioni prevedono tali spazi aggiuntivi, senza contare che in steganografia si possono utilizzare anche formati che prevedano soltanto dati "puliti" (senza aggiunte), semplicemente alterando ad arte qualche bit qua e là (ma di questo, se interessa, parleremo eventualmente un'altra volta).

Una frontiera illecita ma remunerativa (e vecchia come lo spionaggio) nell'uso della steganografia è quella della trasmissione "coperta" di informazioni segrete o riservate (a volte di estrema di rilevanza economica o politica), oppure il controllo a distanza di computer "zombie" appartenenti a BotNet (ne abbiamo parlato in un altro articolo).

Sviluppi recenti nell'uso della steganografia, indicano un'evoluzione verso l'utilizzo "distribuito" delle informazioni "coperte", come ad esempio con la tecnologia "Collage" (per ulteriori informazioni cercare "collage steganography" su un motore di ricerca).

domenica 21 novembre 2010

Attento, con quell'email, Eugene!

(Per essere chiari, il titolo è la parafrasi un famoso brano dei Pink Floyd: Careful with That Axe, Eugene).

Non si insisterà mai abbastanza sulla necessità di un trattamento responsabile delle email che si ricevono. Per non cadere vittima dei tanti tentativi di phishing o frode che quotidianamente ci vengono proposti attraverso messaggi email, bisogna tenere presenti i seguenti principi e comportamenti (anche se, nei casi più ostici, non sono sufficienti da soli a salvaguardare la sicurezza informatica):

  • disabilitare la funzionalità di "preview" dei messaggi email: tale funzione, se abilitata, provvede infatti ad aprire e "leggere" i messaggi email prima che si abbia l'opportunità di ignorarli o cancellarli (e molto spesso, a quel punto, la "frittata" è fatta!)

  • trattare con estrema diffidenza tutti i messaggi provenienti da mittenti sconosciuti o dubbi: osservare attentamente la formulazione del mittente (non solo la parte "in chiaro", ma l'effettivo indirizzo "qualcuno@qualcosa.boh" che può essere visualizzato nell'intestazione); in caso del minimo dubbio, non aprire il messaggio, cancellarlo o segnalarlo come "spam"

  • diffidare di messaggi aventi per "oggetto" proposte mirabolanti, sconti o presunte vincite di premi: nel migliore dei casi, sono messaggi di phishing che sfruttano l'ingenua curiosità e "rubano" informazioni; il solito consiglio è: cancellarli, o meglio segnalarli come "spam" se il servizio di email lo prevede

  • usare prudenza anche nell'aprire messaggi provenienti da mittenti conosciuti o fidati: spesso un colpo di telefono all'amico che ci sta inviando un succoso allegato ci può salvare da lunghe e costose "bonifiche" del computer

  • non aprire direttamente gli allegati (di nessun tipo); se proprio ci sembrano "buoni", salvarli su disco e sottoporli ad una scansione ad-hoc con l'antivirus (che abbiamo aggiornato. vero?)

  • disabilitare (se possibile) la visualizzazione di immagini e di altro contenuto multimediale (es.: animazioni "flash") inserito direttamente nei messaggi email

  • non visitare siti segnalati nel messaggio cliccando direttamente gli indirizzi proposti: molto spesso l'indirizzo che viene visualizzato non corrisponde a quello del sito su cui si viene "teletrasportati" cliccandoci sopra; se proprio siamo convinti e vogliamo vedere di che si tratta, è meglio ridigitare a mano l'indirizzo visualizzato, in un'altra finestra del browser

Come ricordato sopra, questi accorgimenti, da soli, potrebbero non bastare per evitare rischi di sicurezza, ma certamente disattenderli ci porta un passo più vicino alla "fossa dei serpenti", che contiene diversi tipi di frodi informatiche, alcune delle quali piuttosto importanti.

Un caso molto particolare, per chi si interessa e sa leggere articoli in inglese: un problema con gmail.

Buona navigazione, e... la paranoia sia con noi!

sabato 20 novembre 2010

BotNet

Una delle tecniche maggiormente utilizzate (e redditizie) per approfittare delle falle di sicurezza presenti su milioni di computer è indicata col termine "BotNet". In pratica si costruisce una rete ("net") di computer (detti "zombie") che rispondono supinamente ("bot", da "robot") a comandi impartiti da remoto, senza che l'utente "normale" dei suddetti computer si renda conto di ciò che sta succedendo.

Questo tipo di attacco alla sicurezza avviene in due fasi: prima si sfrutta un vulnerabilità, installando uno o più programmi nascosti che permettono a loro volta di caricare a bordo del computer colpito altro software (sempre in modalità difficilmente rilevabile); successivamente, uno (o più) dei programmi così caricati si pone "in ascolto" sulla rete, attendendo "ordini" da quelli che vengono chiamati "centri di comando" di quella particolare BotNet.

Le tecniche di comunicazione sono tutte basate sui protocolli IP (quelli su cui è basata Internet), ma possono variare, dal più "naif" (e facilmente riscontrabile) TCP, al più mimetizzabile UDP, fino a sfruttare canali IRC o altri meccanismi di comunicazione più sofisticati (stream "nascoste" nei protocolli peer-to-peer, encryption).

In questo modo, molte decine di migliaia di computer (specialmente desktop) diventano ignari complici di attacchi ben più importanti, condotti con la garanzia quasi completa dell'anonimato. Basta cercare il termine "botnet" per rendersi conto di che cosa stiamo parlando. Molto spesso chi costruisce queste BotNet le "affitta" o rivende ad altri, in cambio di soldi.

Come difendersi da questa vera e propria frode informatica? Come al solito, il primo passo è la prevenzione: installare e tenere aggiornato un buon prodotto antivirus, che comprenda anche tecniche "anti-rootkit" (i "rootkit" sono programmi che permettono di prendere il controllo del computer da remoto, senza che l'utilizzatore normale se ne accorga). Il secondo livello di difesa è costituito da periodici controlli e "scansioni", magari condotte utilizzando software diverso dal normale antivirus; è anche possibile effettuare scansioni "online", senza dover necessariamente installare altro software: in questo caso, accertarsi che il sito che propone tale servizio sia affidabile, altrimenti si corre il rischio di cadere... nella bocca del leone!

Infine, non si parlerà mai abbastanza dell'importanza del comportamento online degli utenti: tutti i vari tipi di software malevolo sono costruiti in modo da dover essere "pescati" in rete, e nessuno viene a cercare i vostri computer in maniera troppo nascosta. Gli allegati a messaggi email provenienti da fonti generiche o sconosciute (anche se talvolta mascherate da "grandi firme" del software) sono tutti sospetti e potenzialmente pericolosi. Altro software "miracoloso" consigliato in giro per la rete (vari "ottimizzatori" e simili) deve essere attentamente vagliato prima di poter essere installato e utilizzato sui propri computer. I supporti esterni rimovibili, infine, sono stati storicamente veicolo di gradi "infezioni" (si ricordino i floppy disk infetti da virus), e quindi chiavette USB, CD-ROM, DVD e simili contenenti "dati" (programmi, musica, video) possono risultare dannosi, anche all'insaputa di chi ce li fornisce: prima di usarli, sarebbe buona norma effettuare su di essi una scansione con gli strumenti sopra descritti, e prestare la massima attenzione ad eventuali segnalazioni dell'antivirus al momento in cui questi supporti esterni vengono inseriti nel computer.

Buona navigazione e... attenti a non finire nelle "reti" dei pirati informatici!