Lesson 9: Buffer Overflow The Good2know Wall

Articoli Consigliati

Codemotion 2012 - Impressioni e tante emozioni.Codemotion 2012 - Impressioni e tante emozioni.

Come alcuni di voi hanno avuto modo di sapere dal post precedente, ho partecipato come speaker al Codemotion 2012. Il Codemotion è un evento organizzato dalla Facoltà...

Leggi l'articolo

Codemotion a Roma il 23-24 Marzo 2012 - Arduino, quando un aperitivo avvicina elettronica ed informatica.Codemotion a Roma il 23-24 Marzo 2012 - Arduino, quando un aperitivo avvicina elettronica ed informatica.

Cari lettori di Good2know, è con piacere che vi dò l'annuncio della mia presenza al Codemotion di quest'anno. La mattina del Sabato 24 Marzo, alle ore 09.50, terrò un...

Leggi l'articolo

La Successione di Fibonacci - VideoLa Successione di Fibonacci - Video

Ultimamente mi sono appassionato a giochi matematici ed enigmi. Mentre programmo una rubrica su enigmi e giochi matematici da pubblicare qui su Good2know, vi propongo questo...

Leggi l'articolo

Ecografia con l'iPhoneEcografia con l'iPhone

Se è vero il motto "C'è un'applicazione per tutto" anche il numero di gadget per smartphone sta raggiungendo questa definizione. E' il caso di un piccolo strumento...

Leggi l'articolo

Text shadow animation, testo in 3D con CSS3Text shadow animation, testo in 3D con CSS3

Girovagando per il web ho trovato un effetto con i nuovi css3 molto carino., fatto utilizzando i tag introdotti nella terza versione di CSS. Attraverso questi nuovi...

Leggi l'articolo

E dopo robots.txt è il momento di humans.txtE dopo robots.txt è il momento di humans.txt

Il file robots.txt penso che lo conosciamo tutti, è un file txt per aiutare i crawler dei motori di ricerca nell'indicizzazione. Bene, dopo i robot nei siti internet...

Leggi l'articolo

Zend_Acl e Zend_Auth - Sistema di autenticazione e autorizzazione con Zend FrameworkZend_Acl e Zend_Auth - Sistema di autenticazione e autorizzazione con Zend Framework

Zend_Acl è una delle tante classi di Zend molto utili. Consiste in una serie di funzionalità che permettono un controllo molto facile di CHI può fare COSA aumentando...

Leggi l'articolo

Zend_Auth - Gestire le autenticazioni semplicementeZend_Auth - Gestire le autenticazioni semplicemente

Zend_Auth è una classe di Zend Framework che permette la gestione dell'autenticazione su un sito in maniera molto semplice. Consiste in una serie di adapter per gli...

Leggi l'articolo

Aumentare le prestazioni di PHP con Facebook HipHopAumentare le prestazioni di PHP con Facebook HipHop

I carissimi programmatori di Facebook hanno rilasciato un piccolo progetto che ottimizza notevolmente le prestazioni, in fase di esecuzione, di codice php: Facebook HipHop. Come...

Leggi l'articolo

GoPano micro - lente per iPhone 4 per registrare video a 360 gradiGoPano micro - lente per iPhone 4 per registrare video a 360 gradi

Salve a tutti cari lettori, oggi vi vorrei presentare questo gadget per iPhone 4 che permette di registrare video a 360 gradi. Di seguito potete vedere un video d'esempio. Potete...

Leggi l'articolo

voglio una stampante 3D, ma il costo mi sembra ancora eccessivo per un privato. -.-'

Lesson 9: Buffer Overflow

0

Scritto il 16/01/2009 da Filippo Matteo Riggio

Buffer Overflow

Analizziamo ora uno degli attacchi hacker più usati.

Teoria

Il Buffer overflow consiste nello sfruttare la mancanza di un controllo all’interno di programmi affacciati sulla rete.

Il programma in questione non controlla la lunghezza dei dati che riceve ma li scrive direttamente su un buffer di lunghezza prestabilita.

Se vengono inviati più dati di lunghezza maggiore di quella del buffer si blocca il programma o il computer, ma da qualche anno a questa parte si è scoperto che dimensionando a modo i dati extra si riesce a prendere il controllo del programma e a volte anche del computer attaccato.

Effettuare un attacco buffer overflow

Nelle seguenti righe verrà fatto un esempio di buffer overflow, serviranno particolari file, se si vuole effettuare tale test.

Cosa serve avere?

Vuln.c // Il sorgente del programma vulnerabile
Vuln.exe //Il programma vulnerabile compilato per Windows
Perl.exe + perl58.dll // Il compilatore perl a riga di comando
Exp.pl // Un file perl per effettuare l’exploiting

Iniziamo:
1) Mettiamo tutti i file in una cartella a nostro piacimento.

2) Osserviamo il sorgente del programma vulnerabile:

int main(int argc,char *argv[])
{
char buffer[500];
strcpy(buffer, argv[1]);
return 0;
}

3)Analiziamo il codice:
la prima riga decide che il programma ammette un argomento all’avvio (Per esempio: “Vuln.exe Ciao”).

La terza e la quarta sono decisamente piu interessanti, per cui l’argomento passato al programma viene inserito in un buffer che misura 500 byte.

4)Ed ecco l’attacco: se noi inseriamo un contenuto maggiore di 500 byte?

Il programma sovrascriverà la parte adiacente di memoria.

5)Ora proviamo:
se apriamo il file Exp.pl notiamo le seguenti righe:

print “a” x502;

6)Apriamo col prompt dei comandi il file Vuln.exe e procediamo.

Vuln.exe | perl.exe exp.pl

Il carattere “pipe” redirige l’output della compilazione dello script perl (la stampa di 502 volte della lettera “a”,altrimenti impossibile da fare a mano) fino all’argomento del programma,tanto da risultare:

7)Il programma ha dato luogo ad un crash (su linux appare come “segmentation fault” nella shell).

Considerazioni finali
Se invece di accodare 2 caratteri in più nel buffer inseriamo del codice che il programma capisce e interpreta giustamente, possiamo fargli eseguire ciò che vogliamo.

Questo tipo di applicazione è chiamata shellcode.

Quando un attacker prova questo tipo di attacco non è in possesso del sorgente vulnerabile, ma va molto per tentativi.

Tags: , ,

Lascia un commento