Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore:...

44
Buffer Overflow Win–OBOE Conclusioni e Sviluppi Futuri Studio di buffer overflow in ambiente Win32 e realizzazione di un tool per la ricerca automatica di programmi vulnerabili a questo tipo di attacco Universit` a degli Studi di Milano Facolt` a di Scienze Matematiche, Fisiche e Naturali Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone Studio di buffer overflow in ambiente Win32

Transcript of Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore:...

Page 1: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Studio di buffer overflow in ambiente Win32 erealizzazione di un tool per la ricerca automatica di

programmi vulnerabili a questo tipo di attacco

Universita degli Studi di MilanoFacolta di Scienze Matematiche, Fisiche e Naturali

Corso di Laurea Triennale in Informatica

Relatore: Ing. Mattia MONGA

Tesi di Laurea di:Davide MARRONEMatricola 654241

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 2: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Sommario

1 Buffer OverflowIl problemaLe soluzioni

2 Win–OBOEIntroduzioneImplementazioneRisultati

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 3: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Sommario

1 Buffer OverflowIl problemaLe soluzioni

2 Win–OBOEIntroduzioneImplementazioneRisultati

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 4: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Introduzione

Definizione del problema

Con il termine buffer overflow si indica la scrittura in un buffer(o array) di una quantita di dati superiore alla sua capacita

Alcuni linguaggi di programmazione non controllano che lascrittura avvenga esclusivamente nei limiti del buffer

La causa del problema

Assenza nei linguaggi di programmazione di controlliautomatici di integrita

Assenza nei programmi di controlli accurati sull’input ricevuto

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 5: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Introduzione

Definizione del problema

Con il termine buffer overflow si indica la scrittura in un buffer(o array) di una quantita di dati superiore alla sua capacita

Alcuni linguaggi di programmazione non controllano che lascrittura avvenga esclusivamente nei limiti del buffer

La causa del problema

Assenza nei linguaggi di programmazione di controlliautomatici di integrita

Assenza nei programmi di controlli accurati sull’input ricevuto

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 6: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Introduzione

Definizione del problema

Con il termine buffer overflow si indica la scrittura in un buffer(o array) di una quantita di dati superiore alla sua capacita

Alcuni linguaggi di programmazione non controllano che lascrittura avvenga esclusivamente nei limiti del buffer

La causa del problema

Assenza nei linguaggi di programmazione di controlliautomatici di integrita

Assenza nei programmi di controlli accurati sull’input ricevuto

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 7: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Introduzione

Definizione del problema

Con il termine buffer overflow si indica la scrittura in un buffer(o array) di una quantita di dati superiore alla sua capacita

Alcuni linguaggi di programmazione non controllano che lascrittura avvenga esclusivamente nei limiti del buffer

La causa del problema

Assenza nei linguaggi di programmazione di controlliautomatici di integrita

Assenza nei programmi di controlli accurati sull’input ricevuto

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 8: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Sovvertire il normale funzionamento di un programma

0xFFFFFFFF

0x00000000

?

Chiamare una funzione

1 I parametri sono passati sullostack in ordine inverso

2 L’istruzione call salva sullo stackil return address

3 Il prologo della funzione alloca lospazio per le variabili locali

Buffer overflow

E possibile prendere il controllodel return address

E possibile far eseguire alprocesso del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 9: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Sovvertire il normale funzionamento di un programma

param due

param unoESP -

0xFFFFFFFF

0x00000000

?

Chiamare una funzione

1 I parametri sono passati sullostack in ordine inverso

2 L’istruzione call salva sullo stackil return address

3 Il prologo della funzione alloca lospazio per le variabili locali

Buffer overflow

E possibile prendere il controllodel return address

E possibile far eseguire alprocesso del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 10: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Sovvertire il normale funzionamento di un programma

param due

param uno

return addressESP -

0xFFFFFFFF

0x00000000

?

Chiamare una funzione

1 I parametri sono passati sullostack in ordine inverso

2 L’istruzione call salva sullo stackil return address

3 Il prologo della funzione alloca lospazio per le variabili locali

Buffer overflow

E possibile prendere il controllodel return address

E possibile far eseguire alprocesso del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 11: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Sovvertire il normale funzionamento di un programma

param due

param uno

return address

EBP

variabili

locali

della

funzioneESP -

0xFFFFFFFF

0x00000000

?

Chiamare una funzione

1 I parametri sono passati sullostack in ordine inverso

2 L’istruzione call salva sullo stackil return address

3 Il prologo della funzione alloca lospazio per le variabili locali

Buffer overflow

E possibile prendere il controllodel return address

E possibile far eseguire alprocesso del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 12: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Sovvertire il normale funzionamento di un programma

param due

param uno0x410x410x410x41

0x410x410x410x41

0x410x410x410x41

0x410x410x410x41

0x410x410x410x41

0x410x410x410x41ESP -

0xFFFFFFFF

0x00000000

?

Chiamare una funzione

1 I parametri sono passati sullostack in ordine inverso

2 L’istruzione call salva sullo stackil return address

3 Il prologo della funzione alloca lospazio per le variabili locali

Buffer overflow

E possibile prendere il controllodel return address

E possibile far eseguire alprocesso del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 13: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Sovvertire il normale funzionamento di un programma

param due

param uno

nuovo ra

codice

macchina

eseguibile-

0xFFFFFFFF

0x00000000

?

Chiamare una funzione

1 I parametri sono passati sullostack in ordine inverso

2 L’istruzione call salva sullo stackil return address

3 Il prologo della funzione alloca lospazio per le variabili locali

Buffer overflow

E possibile prendere il controllodel return address

E possibile far eseguire alprocesso del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 14: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Come limitare il problema

Soluzioni esistenti

Ispezione automatica del codice

Modifiche ai compilatori per aggiungere del codice nel prologoe nell’epilogo delle funzioni (tecnica canary)

Proposta del CERT–IT

Il CERT–IT per l’ambiente unix ha sviluppato OBOE (Object–codeBuffer Overflow Evaluator)

Si parte dal presupposto che il codice sorgente del target nonsia a disposizione

Si effettua del fault–injection sui programmi

Scopo di questo lavoro

Realizzare OBOE per l’ambiente Win32 (Win–OBOE)

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 15: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Come limitare il problema

Soluzioni esistenti

Ispezione automatica del codice

Modifiche ai compilatori per aggiungere del codice nel prologoe nell’epilogo delle funzioni (tecnica canary)

Proposta del CERT–IT

Il CERT–IT per l’ambiente unix ha sviluppato OBOE (Object–codeBuffer Overflow Evaluator)

Si parte dal presupposto che il codice sorgente del target nonsia a disposizione

Si effettua del fault–injection sui programmi

Scopo di questo lavoro

Realizzare OBOE per l’ambiente Win32 (Win–OBOE)

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 16: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Come limitare il problema

Soluzioni esistenti

Ispezione automatica del codice

Modifiche ai compilatori per aggiungere del codice nel prologoe nell’epilogo delle funzioni (tecnica canary)

Proposta del CERT–IT

Il CERT–IT per l’ambiente unix ha sviluppato OBOE (Object–codeBuffer Overflow Evaluator)

Si parte dal presupposto che il codice sorgente del target nonsia a disposizione

Si effettua del fault–injection sui programmi

Scopo di questo lavoro

Realizzare OBOE per l’ambiente Win32 (Win–OBOE)

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 17: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Come limitare il problema

Soluzioni esistenti

Ispezione automatica del codice

Modifiche ai compilatori per aggiungere del codice nel prologoe nell’epilogo delle funzioni (tecnica canary)

Proposta del CERT–IT

Il CERT–IT per l’ambiente unix ha sviluppato OBOE (Object–codeBuffer Overflow Evaluator)

Si parte dal presupposto che il codice sorgente del target nonsia a disposizione

Si effettua del fault–injection sui programmi

Scopo di questo lavoro

Realizzare OBOE per l’ambiente Win32 (Win–OBOE)

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 18: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Come limitare il problema

Soluzioni esistenti

Ispezione automatica del codice

Modifiche ai compilatori per aggiungere del codice nel prologoe nell’epilogo delle funzioni (tecnica canary)

Proposta del CERT–IT

Il CERT–IT per l’ambiente unix ha sviluppato OBOE (Object–codeBuffer Overflow Evaluator)

Si parte dal presupposto che il codice sorgente del target nonsia a disposizione

Si effettua del fault–injection sui programmi

Scopo di questo lavoro

Realizzare OBOE per l’ambiente Win32 (Win–OBOE)

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 19: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Il problemaLe soluzioni

Come limitare il problema

Soluzioni esistenti

Ispezione automatica del codice

Modifiche ai compilatori per aggiungere del codice nel prologoe nell’epilogo delle funzioni (tecnica canary)

Proposta del CERT–IT

Il CERT–IT per l’ambiente unix ha sviluppato OBOE (Object–codeBuffer Overflow Evaluator)

Si parte dal presupposto che il codice sorgente del target nonsia a disposizione

Si effettua del fault–injection sui programmi

Scopo di questo lavoro

Realizzare OBOE per l’ambiente Win32 (Win–OBOE)

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 20: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

OBOE per l’ambiente Win32

Obbiettivo

Individuare buffer overflow causati dall’input che viene passato alprogramma

Input considerato

Tutti i dati di input, se gestiti in maniera scorretta, possonocausare un buffer overflow, le due fonti analizzate sono:

1 Parametri passati a linea di comando

2 Chiavi di registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 21: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

OBOE per l’ambiente Win32

Obbiettivo

Individuare buffer overflow causati dall’input che viene passato alprogramma

Input considerato

Tutti i dati di input, se gestiti in maniera scorretta, possonocausare un buffer overflow, le due fonti analizzate sono:

1 Parametri passati a linea di comando

2 Chiavi di registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 22: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

OBOE per l’ambiente Win32

Obbiettivo

Individuare buffer overflow causati dall’input che viene passato alprogramma

Input considerato

Tutti i dati di input, se gestiti in maniera scorretta, possonocausare un buffer overflow, le due fonti analizzate sono:

1 Parametri passati a linea di comando

2 Chiavi di registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 23: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

OBOE per l’ambiente Win32

Obbiettivo

Individuare buffer overflow causati dall’input che viene passato alprogramma

Input considerato

Tutti i dati di input, se gestiti in maniera scorretta, possonocausare un buffer overflow, le due fonti analizzate sono:

1 Parametri passati a linea di comando

2 Chiavi di registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 24: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Composizione dell’input per la ricerca di buffer overflow

Stringhe utilizzate

Stringhe composte da caratteri fissi

→ formano degli indirizzi che fanno riferimento a zone dimemoria del kernel

Stringhe composte da caratteri pseudocasuali

→ sono utilizzate per diversificare i possibili flussi diesecuzione dei programmi

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 25: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Composizione dell’input per la ricerca di buffer overflow

Stringhe utilizzate

Stringhe composte da caratteri fissi→ formano degli indirizzi che fanno riferimento a zone di

memoria del kernel

Stringhe composte da caratteri pseudocasuali

→ sono utilizzate per diversificare i possibili flussi diesecuzione dei programmi

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 26: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Composizione dell’input per la ricerca di buffer overflow

Stringhe utilizzate

Stringhe composte da caratteri fissi→ formano degli indirizzi che fanno riferimento a zone di

memoria del kernel

Stringhe composte da caratteri pseudocasuali

→ sono utilizzate per diversificare i possibili flussi diesecuzione dei programmi

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 27: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Composizione dell’input per la ricerca di buffer overflow

Stringhe utilizzate

Stringhe composte da caratteri fissi→ formano degli indirizzi che fanno riferimento a zone di

memoria del kernel

Stringhe composte da caratteri pseudocasuali→ sono utilizzate per diversificare i possibili flussi di

esecuzione dei programmi

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 28: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Come individuare un buffer overflow

Stategia utilizzata

Per capire se sia presente un buffer overflow:

1 Si crea il target passando una stringa con la lunghezzamassima per il tipo di input considerato

2 Si analizza il comportamento del processo in funzionedell’input

3 Se il processo genera un’eccezione si cerca di determinare laposizione del return address

4 Si diminuisce la stringa fino a sovrascrivere esattamente iquattro byte del return address

5 Quando viene trovata la posizione del return address si tentadi far eseguire al processo del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 29: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Come individuare un buffer overflow

Stategia utilizzata

Per capire se sia presente un buffer overflow:

1 Si crea il target passando una stringa con la lunghezzamassima per il tipo di input considerato

2 Si analizza il comportamento del processo in funzionedell’input

3 Se il processo genera un’eccezione si cerca di determinare laposizione del return address

4 Si diminuisce la stringa fino a sovrascrivere esattamente iquattro byte del return address

5 Quando viene trovata la posizione del return address si tentadi far eseguire al processo del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 30: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Come individuare un buffer overflow

Stategia utilizzata

Per capire se sia presente un buffer overflow:

1 Si crea il target passando una stringa con la lunghezzamassima per il tipo di input considerato

2 Si analizza il comportamento del processo in funzionedell’input

3 Se il processo genera un’eccezione si cerca di determinare laposizione del return address

4 Si diminuisce la stringa fino a sovrascrivere esattamente iquattro byte del return address

5 Quando viene trovata la posizione del return address si tentadi far eseguire al processo del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 31: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Come individuare un buffer overflow

Stategia utilizzata

Per capire se sia presente un buffer overflow:

1 Si crea il target passando una stringa con la lunghezzamassima per il tipo di input considerato

2 Si analizza il comportamento del processo in funzionedell’input

3 Se il processo genera un’eccezione si cerca di determinare laposizione del return address

4 Si diminuisce la stringa fino a sovrascrivere esattamente iquattro byte del return address

5 Quando viene trovata la posizione del return address si tentadi far eseguire al processo del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 32: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Come individuare un buffer overflow

Stategia utilizzata

Per capire se sia presente un buffer overflow:

1 Si crea il target passando una stringa con la lunghezzamassima per il tipo di input considerato

2 Si analizza il comportamento del processo in funzionedell’input

3 Se il processo genera un’eccezione si cerca di determinare laposizione del return address

4 Si diminuisce la stringa fino a sovrascrivere esattamente iquattro byte del return address

5 Quando viene trovata la posizione del return address si tentadi far eseguire al processo del codice arbitrario

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 33: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Prove effettuate

Parametri passati a linea di comando

Sono stati testati 40 programmi che accettano parametri da lineadi comando

In 8 programmi sono state rilevate diverse eccezioni

In un caso (mysql.exe) Win–OBOE e riuscito in automatico afar eseguire del codice arbitrario al target

Chiavi di registro

Sono stati testati 60 programmi che utilizzano il registro

Non e stata rilevata nessuna eccezione

→ Risultato dovuto al funzionamento della API che legge lestringhe dal registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 34: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Prove effettuate

Parametri passati a linea di comando

Sono stati testati 40 programmi che accettano parametri da lineadi comando

In 8 programmi sono state rilevate diverse eccezioni

In un caso (mysql.exe) Win–OBOE e riuscito in automatico afar eseguire del codice arbitrario al target

Chiavi di registro

Sono stati testati 60 programmi che utilizzano il registro

Non e stata rilevata nessuna eccezione

→ Risultato dovuto al funzionamento della API che legge lestringhe dal registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 35: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Prove effettuate

Parametri passati a linea di comando

Sono stati testati 40 programmi che accettano parametri da lineadi comando

In 8 programmi sono state rilevate diverse eccezioni

In un caso (mysql.exe) Win–OBOE e riuscito in automatico afar eseguire del codice arbitrario al target

Chiavi di registro

Sono stati testati 60 programmi che utilizzano il registro

Non e stata rilevata nessuna eccezione

→ Risultato dovuto al funzionamento della API che legge lestringhe dal registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 36: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Prove effettuate

Parametri passati a linea di comando

Sono stati testati 40 programmi che accettano parametri da lineadi comando

In 8 programmi sono state rilevate diverse eccezioni

In un caso (mysql.exe) Win–OBOE e riuscito in automatico afar eseguire del codice arbitrario al target

Chiavi di registro

Sono stati testati 60 programmi che utilizzano il registro

Non e stata rilevata nessuna eccezione

→ Risultato dovuto al funzionamento della API che legge lestringhe dal registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 37: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Prove effettuate

Parametri passati a linea di comando

Sono stati testati 40 programmi che accettano parametri da lineadi comando

In 8 programmi sono state rilevate diverse eccezioni

In un caso (mysql.exe) Win–OBOE e riuscito in automatico afar eseguire del codice arbitrario al target

Chiavi di registro

Sono stati testati 60 programmi che utilizzano il registro

Non e stata rilevata nessuna eccezione

→ Risultato dovuto al funzionamento della API che legge lestringhe dal registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 38: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

IntroduzioneImplementazioneRisultati

Prove effettuate

Parametri passati a linea di comando

Sono stati testati 40 programmi che accettano parametri da lineadi comando

In 8 programmi sono state rilevate diverse eccezioni

In un caso (mysql.exe) Win–OBOE e riuscito in automatico afar eseguire del codice arbitrario al target

Chiavi di registro

Sono stati testati 60 programmi che utilizzano il registro

Non e stata rilevata nessuna eccezione→ Risultato dovuto al funzionamento della API che legge le

stringhe dal registro

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 39: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

I buffer overflow ancora oggi sono un problema, soprattuttoper i programmi in cui il sorgente non e disponibile

In ambiente open–source sono disponibili delle patch per ilkernel del sistema operativo (PaX)

Win–OBOE puo essere uno strumento valido soprattutto peraltri tipi di input

Si puo estendere la versione sviluppata per analizzare altrefonti di input

→ Socket→ File

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 40: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

I buffer overflow ancora oggi sono un problema, soprattuttoper i programmi in cui il sorgente non e disponibile

In ambiente open–source sono disponibili delle patch per ilkernel del sistema operativo (PaX)

Win–OBOE puo essere uno strumento valido soprattutto peraltri tipi di input

Si puo estendere la versione sviluppata per analizzare altrefonti di input

→ Socket→ File

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 41: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

I buffer overflow ancora oggi sono un problema, soprattuttoper i programmi in cui il sorgente non e disponibile

In ambiente open–source sono disponibili delle patch per ilkernel del sistema operativo (PaX)

Win–OBOE puo essere uno strumento valido soprattutto peraltri tipi di input

Si puo estendere la versione sviluppata per analizzare altrefonti di input

→ Socket→ File

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 42: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

I buffer overflow ancora oggi sono un problema, soprattuttoper i programmi in cui il sorgente non e disponibile

In ambiente open–source sono disponibili delle patch per ilkernel del sistema operativo (PaX)

Win–OBOE puo essere uno strumento valido soprattutto peraltri tipi di input

Si puo estendere la versione sviluppata per analizzare altrefonti di input

→ Socket→ File

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 43: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

I buffer overflow ancora oggi sono un problema, soprattuttoper i programmi in cui il sorgente non e disponibile

In ambiente open–source sono disponibili delle patch per ilkernel del sistema operativo (PaX)

Win–OBOE puo essere uno strumento valido soprattutto peraltri tipi di input

Si puo estendere la versione sviluppata per analizzare altrefonti di input→ Socket

→ File

Davide Marrone Studio di buffer overflow in ambiente Win32

Page 44: Studio di buffer overflow in ambiente Win32 e ...Corso di Laurea Triennale in Informatica Relatore: Ing. Mattia MONGA Tesi di Laurea di: Davide MARRONE Matricola 654241 Davide Marrone

Buffer OverflowWin–OBOE

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

Conclusioni e Sviluppi Futuri

I buffer overflow ancora oggi sono un problema, soprattuttoper i programmi in cui il sorgente non e disponibile

In ambiente open–source sono disponibili delle patch per ilkernel del sistema operativo (PaX)

Win–OBOE puo essere uno strumento valido soprattutto peraltri tipi di input

Si puo estendere la versione sviluppata per analizzare altrefonti di input→ Socket→ File

Davide Marrone Studio di buffer overflow in ambiente Win32