<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2157209360494289077</id><updated>2011-07-07T22:46:28.637+02:00</updated><title type='text'>Linux Buffer Overflow (il libro)</title><subtitle type='html'>In questo blog annoterò tutti gli avanzamenti fatti durante la stesura del mio libro "Linux Buffer Overflow", cercando di trarre spunti e consigli da tutti coloro che vorranno fornirmene</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-7608472456877760096</id><published>2009-10-18T17:37:00.002+02:00</published><updated>2009-10-18T17:43:45.843+02:00</updated><title type='text'></title><content type='html'>Ammazza quanto tempo è passato dall'ultimo post!! Non mi sono reso conto di essere stato assorbito così totalmente dagli impegni lavorativi e di real life!&lt;br /&gt;&lt;br /&gt;Beh nelle scorse settimane ho preso una decisione importante. Per non gettare nel gabinetto tuttò ciò che di "stabile" avevo scritto (circa 200 pagine), ho deciso di suddivere la pubblicazione del libro in diversi Moduli. Il Modulo 1 di Linux Buffer Overflow lo trovate qui &lt;a href="http://ilmiolibro.kataweb.it/libro.asp?id=337493"&gt;http://ilmiolibro.kataweb.it/libro.asp?id=337493&lt;/a&gt; (per l'acquisto dovete essere registrati ed è necessaria una carta di credito o semplicemente la postepay).&lt;br /&gt;&lt;br /&gt;Questo sono i capitoli che tratta:&lt;br /&gt;&lt;br /&gt;1 Concetti Base&lt;br /&gt;2 Lo Stack&lt;br /&gt;3 Stack Overflow: Vanilla&lt;br /&gt;4 Off by One &amp;amp; Buffer Adiacenti&lt;br /&gt;5 GOT &amp;amp; PLT&lt;br /&gt;6 Format String Overflow&lt;br /&gt;7 Address Space Layout Randomization&lt;br /&gt;&lt;br /&gt;Il modulo 2 è in preparazione ma meglio che non dica quando ho intenzione di pubblicarlo perchè se no rischio di fare un'altra brutta figura (si lo so con il Modulo 1 sono in ritardo di quasi 10 mesi :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-7608472456877760096?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/7608472456877760096/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=7608472456877760096' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/7608472456877760096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/7608472456877760096'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2009/10/ammazza-quanto-tempo-e-passato.html' title=''/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-8130914347368242833</id><published>2009-03-05T11:17:00.003+01:00</published><updated>2009-03-05T11:28:11.262+01:00</updated><title type='text'>Punto della situazione</title><content type='html'>Eccomi qui a riscrivere dopo un mese di assenza. In realtà in questo periodo ho potuto lavorare poco al libro. Attualmente infatti ho scritto appena il 15% dei contenuti del capitolo No-Execute. Mi ero prefisso di terminarlo a fine Marzo ma credo che in questo momento nemmeno l'ipotesi fine Aprile sia auspicabile. Lo so è la terza volta che toppo (vi ricordate quando dicevo che volevo ultimarlo per natale???), però per noi consulenti è così: ieri ti grattavi le balls, oggi ti entrano delle grosse commesse tutte di un colpo che ti tolgono un sacco di tempo ma a cui non puoi certo dire di no.&lt;br /&gt;&lt;br /&gt;A questo punto (e vorrei anche un vostro parare personale) sto seriamente pensando di pubblicare i capitoli già terminati. Nello specifico in questo periodo ho ricevuto molte e-mail o richieste di aiuto da parte di chi voleva avere qualche ragguaglio in più su come aggirare l'Address Space Layout Randomization. Leggendo i commenti del post precedente noterete che mi è stato chiesto anche in questo blog. Si tratta tuttavia solamente della punta dell'iceberg rispetto a quanti mi hanno fatto la stessa domanda. L'idea che mi bazzica in testa è quindi quella di prendere il capitolo 2 (generico sullo stack), capitolo 3 (pratico sugli stack overflow nei kernel 2.4) e capitolo 11 (pratico su ASLR nei kernel 2.6), unirli e cominciare già a pubblicarli (si tratta di circa 120 pagine). Che ne pensate?&lt;br /&gt;&lt;br /&gt;A voi la parola...(sempre che ci sia ancora qualcuno a leggermi ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-8130914347368242833?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/8130914347368242833/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=8130914347368242833' title='12 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/8130914347368242833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/8130914347368242833'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2009/03/punto-della-situazione.html' title='Punto della situazione'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-8693545666695029215</id><published>2009-01-26T14:39:00.005+01:00</published><updated>2009-01-26T14:51:21.081+01:00</updated><title type='text'>Capitolo su FORTIFY_SOURCE terminato: Enter No-Execute</title><content type='html'>Ho appena terminato il capitolo su FORTIFY_SOURCE, una patch per GCC implementata oramai su diverse distribuzioni linux, ma utilizzata ancora da poche (Fedora e Red Hat in primis) per proteggere i pacchetti precompilati ed aggiungere un ulteriore livello di protezione contro Stack, Heap e Format String Overflow. La patch non è comunque infallibile, nel senso che vi sono dei casi (soprattutto in presenza di buffer allocati dinamicamente) che non riesce efficacemente a controllare.&lt;br /&gt;&lt;br /&gt;Facciamo invece il punto della situazione del lavoro fin qui svolto:&lt;br /&gt;&lt;br /&gt;- Ho scritto in tutto al momento 7 capitoli per un totale di 188 pagine nette&lt;br /&gt;&lt;br /&gt;Nella prima parte del libro all'appello mancano ancora i seguenti argomenti:&lt;br /&gt;&lt;br /&gt;- Come il processore gestisce i calcoli matemici (in particolare sugli interi)&lt;br /&gt;- Integer Overflow&lt;br /&gt;- Descrizione dell'Heap&lt;br /&gt;- Heap Overflow&lt;br /&gt;&lt;br /&gt;Nella seconda parte devo invece ancora parlare di:&lt;br /&gt;&lt;br /&gt;- Protezione No-Execute&lt;br /&gt;- Propolice&lt;br /&gt;- Sfruttamento avanzato degli Heap Overflow&lt;br /&gt;&lt;br /&gt;Penso di procedere in questo modo. Il prossimo capitolo che tratterò sarà No-Execute. Poi toglierò di mezzo gli Integer Overflow, quindi parlerò di Propolice ed alla fine farò tutta una tirata con le tematiche Heap.&lt;br /&gt;&lt;br /&gt;Tempo stimato alla conclusione del testo: francamento non lo so. Spero per fine Febbraio ma è più probabile Marzo. Dipenderà molto dai carichi di lavoro che dovrò sopportare in queste settimane.&lt;br /&gt;&lt;br /&gt;Un saluto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-8693545666695029215?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/8693545666695029215/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=8693545666695029215' title='5 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/8693545666695029215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/8693545666695029215'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2009/01/capitolo-su-fortifysource-terminato.html' title='Capitolo su FORTIFY_SOURCE terminato: Enter No-Execute'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-4355595323223395965</id><published>2009-01-11T15:56:00.003+01:00</published><updated>2009-01-12T08:50:38.829+01:00</updated><title type='text'>Capitolo 13: primi passi</title><content type='html'>Sono rientrato dalle festività oramai da qualche giorno e mi sono subito messo al lavoro per portare a termine il capitolo sui Format String Overflow rimasto in sospeso. Completato questo sto adesso balzando direttamente al capitolo 13 sempre collegato con la stessa tematica ma vista nell'ottica dei kernel 2.6. Nella loro metodica di sfruttamento, in alcune distro non cambia nulla a parte la necessità di indovinare il punto in cui lo shellcode verrà collocato (ostacolo che abbiamo già visto come superare nel capitolo 11 sull'ASLR). Le cose si complicano un pò invece su quelle distribuzioni o quelle architetture che supportano l'NX e diventano ancor più complesse in caso di applicazioni vulnerabile compilate con FORTIFY_SOURCE=2. Questi sono i 3 scenari che analizzerò nel capitolo. Il tutto verrà completato (spero) con un caso di vulnerabilità reale.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-4355595323223395965?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/4355595323223395965/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=4355595323223395965' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/4355595323223395965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/4355595323223395965'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2009/01/capitolo-13-primi-passi.html' title='Capitolo 13: primi passi'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-1429621692267277642</id><published>2008-12-21T12:02:00.009+01:00</published><updated>2008-12-21T17:32:58.938+01:00</updated><title type='text'>Format String Overflow: Completamento al 50%</title><content type='html'>Sono giunto alla metà abbondante del capitolo format string overflow. E' interessante come ci siano degli usi poco noti di questa tecnica. Solitamente si tende a sovrascrivere un puntatore nel &lt;strong&gt;GOT&lt;/strong&gt; o nella sezione &lt;strong&gt;DTORS&lt;/strong&gt; per eseguire uno shellcode. Nelle vecchie distribuzioni potevi anche alterare la sezione &lt;strong&gt;PLT&lt;/strong&gt; o il punto in cui veniva mappata la funzione &lt;span style="font-family:courier new;"&gt;_fini()&lt;/span&gt;. Oggi comunque entrambi quest'ultimi vengono mappati in aree eseguibili ma non modificabili (basta elencarle con &lt;strong&gt;readelf&lt;/strong&gt; per accorgersene). Un qualsiasi tentativo di scrittura causerà quindi un crash dell'applicazione.&lt;br /&gt;&lt;br /&gt;Per fortuna esistono ancora molte distribuzioni (Slackware, Debian ed Ubuntu tanto per fare qualche nome ) che permettono di copiare uno shellcode in aree scrivibili (non executable quindi) ma che una volta accedute dal GOT (o da qualsiasi altra zona "puntatore") permettono di eseguire lo shellcode. Le cose si complicano notevolmente comunque in presenza di distribuzioni con funzionalità simili ad Exec Shield (Fedora/RHEL o quelle distro hardenizzate con GrSecurity). L'exploiting diventa assai difficile ma non impossibile.&lt;br /&gt;&lt;br /&gt;Per non parlare poi delle applicazioni compilate con FORTIFY_SOURCE. Questa è una bella bestia che rende impossibile l'utilizzo dell'operatore "%n" in zone di memoria su cui si potrebbe scrivere, ma ne parlerò magari in un altro intervento del blog.&lt;br /&gt;&lt;br /&gt;A presto&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-1429621692267277642?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/1429621692267277642/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=1429621692267277642' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/1429621692267277642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/1429621692267277642'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2008/12/format-string-overflow-completamento-al.html' title='Format String Overflow: Completamento al 50%'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-6669949441821993536</id><published>2008-12-05T09:38:00.002+01:00</published><updated>2008-12-05T09:43:07.325+01:00</updated><title type='text'>Enter The Format String Overflow</title><content type='html'>Ho completato il capitolo che ho già dettagliato nel precedente post. Adesso passerò ai format string overflow. Oggi ho anche definitivamente abbandonato l'idea di lanciare il mio libro per il periodo natalizio. Non ci arrivo. Ogni tanto mi distraggo e lavoro :P&lt;br /&gt;&lt;br /&gt;Forse è meglio così. Il 2008 è stato un anno difficile (non parlo della crisi economica, ma proprio a livello personale). Magari il 2009 porterà più fortuna. Una considerazione poi va indubbiamente alla frequentazione di questo blog. In effetti comincio a temere di essere l'unico a leggerlo :&lt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-6669949441821993536?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/6669949441821993536/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=6669949441821993536' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/6669949441821993536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/6669949441821993536'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2008/12/enter-format-string-overflow.html' title='Enter The Format String Overflow'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-736803599992788695</id><published>2008-11-30T09:37:00.006+01:00</published><updated>2009-01-26T14:57:55.514+01:00</updated><title type='text'>Off-by-one / Off-by Few e blocchi di memoria adiacenti</title><content type='html'>Ho terminato il capitolo sull'Address Space Layout Randomization da una settimana. Purtroppo impegni di lavoro mi hanno tenuto impegnato più del dovuto ed ho potuto lavorare al mio libro solo negli orari notturni in cui solitamente sono meno lucido. Non riesco più a fare come un tempo, a passare intere nottate davanti al PC...quindi fino a qualche giorno fa ho svolto principalmente un lavoro di revisione del pregresso.&lt;br /&gt;&lt;br /&gt;Ho cominciato il capitolo sugli Off-by-one / Off-by-few da poco quindi.&lt;br /&gt;&lt;br /&gt;In merito agli off-by-one gli scenari più importanti che sto descrivendo sono due. Il primo è quando, all'interno di una funzione, il buffer che viene sovrascritto di un byte oltre le sue reali capacità di contenimento si trova in testa alla funzione stessa. In questo caso l'overflow può alterare il byte meno significativo (che nei sistemi little-endian si trova prima in memoria) dell'indirizzo del frame della funzione chiamante salvato nello stack. Nelle distribuzioni Linux più recenti però, il compilatore gcc aggiunge del padding e dilata la distanza in memoria tra il buffer ed il frame pointer, quindi solitamente si può arrivare ad alternarne l'indirizzo con un off-by-few.&lt;br /&gt;&lt;br /&gt;Il secondo scenario tratta i blocchi di memoria adiacenti. In alcuni casi, giocando sul comportamento di alcune funzioni libc che non terminano le stringhe con il carattere NULL (ad esempio nel caso di &lt;span style="font-family:courier new;"&gt;strncpy()&lt;/span&gt; se &lt;em&gt;source &lt;/em&gt;non è minore di &lt;em&gt;len&lt;/em&gt;) si può rendere due blocchi di memoria contigui un unico blocco. Ciò può causare problemi più avanti nel codice dell'applicazione. Non si tratta di un off-by-one nel vero senso della parola ma mi è sembrato il giusto capitolo in cui inserire questo scenario.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-736803599992788695?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/736803599992788695/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=736803599992788695' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/736803599992788695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/736803599992788695'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2008/11/off-by-one-off-by-few-e-blocchi-di.html' title='Off-by-one / Off-by Few e blocchi di memoria adiacenti'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-4465050862359140083</id><published>2008-11-16T10:19:00.004+01:00</published><updated>2008-11-17T09:01:42.374+01:00</updated><title type='text'>Capitolo su ASLR quasi terminato</title><content type='html'>Tra oggi e domani penso che completerò il capitolo sull'Address Space Layout Randomization. Ho analizzato tutti gli scenari possibili ed immaginabili (RET2ESP, RET2RET, RET2EAX e RET2&lt;em&gt;REG&lt;/em&gt; in generale). Adesso mi rimane solo da presentare la parte relativa a Return into Libc coadiuvata da un'attacco bruteforcing. Se in un sistema con ASLR osservate infatti come cambia durante l'esecuzione ripetuta di un programma lo spazio di indirizzamento dello stack e degli indirizzi libc , noterete un notevole mutamento. Ma se ad essere in esecuzione in memoria è un servizio (processo parente) che ad ogni connessione di un client genera un processo figlio per gestire la risultante richieste, bhe l'organizzazione dello stack e gli indirizzi in memoria di funzioni importanti come system() o execl() rimarranno sempre gli stessi da figlio a figlio (almeno fino a quando il parente non verrà riavviato). Ciò spalanca le porte ad un possibile scenario di brute-forcing che necessita di un numero di tentativi limitato prima di concludersi con successo. E' proprio l'ultima parte che sto trattando in questo capitolo.&lt;br /&gt;&lt;br /&gt;Bau!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-4465050862359140083?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/4465050862359140083/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=4465050862359140083' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/4465050862359140083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/4465050862359140083'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2008/11/capitolo-su-aslr-quasi-terminato.html' title='Capitolo su ASLR quasi terminato'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-4944740329523559442</id><published>2008-11-12T15:26:00.004+01:00</published><updated>2008-11-12T15:45:34.072+01:00</updated><title type='text'>Capitolo ASLR quasi terminato</title><content type='html'>Sono quasi giunto al termine del capitolo che parla dell'Address Space Layout Randomization. Mi manca un'ultima parte. Nel frattempo ho buttato su carta l'organizzazione del capitolo 4 "Off by one / Off by few". Ora che ci penso non ho mai descritto quali categorie di buffer overflow sto esaminando nel mio libro:&lt;br /&gt;&lt;br /&gt;- Stack Overflow&lt;br /&gt;- Off by one / Off by few Overflow&lt;br /&gt;- Format String Overflow&lt;br /&gt;- Heap Overflow&lt;br /&gt;- Integer Overflow&lt;br /&gt;&lt;br /&gt;Dicevo che prossimamente mi cimenterò nel capitolo degli off by one/off by few overflow. Qui mi trovo ad un bivio. Alcuni off by one si manifestano nello stack, altri invece nell'heap. Poiché intendo trattare gli heap overflow nei capitoli 8 (basic) e 15 (advanced), credo che dovrò dividere la trattazione sugli off by one/ off by few anche su due capitoli diversi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-4944740329523559442?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/4944740329523559442/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=4944740329523559442' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/4944740329523559442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/4944740329523559442'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2008/11/capitolo-aslr-quasi-terminato.html' title='Capitolo ASLR quasi terminato'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-2507062356135519942</id><published>2008-11-09T11:19:00.005+01:00</published><updated>2008-11-09T12:10:07.132+01:00</updated><title type='text'>Organizzazione del libro</title><content type='html'>L'organizzazione del libro ce l'ho già in testa da un pò. Ho buttato una bozza dei capitoli presenti ma per adesso mi soffermerò più su linee generiche. Il book sarà suddiviso in due parti. Nella prima(composta da dieci capitoli) affronterò le basi per chi ha solo un'infarinatura di questi argomenti alternando un capitolo teorico ad uno o più pratici. Ovvero, se dovrò orientarmi sugli Heap Overflow, il capitolo prima sarà immancabilmente una trattazione su cosa è l'heap, le operazioni che vi si possono condurre, i controlli, etc.. Idem con patate per lo Stack. Se devo parlare di format string overflow, prima è doveroso capire cosa sono le sezioni GOT e PLT di un file ELF, così come prima di parlare di integer overflow vi sarà un capitolo che tratterà la parte teorica, ovvero come il sistema effettua i calcoli sugli interi e roba simile.&lt;br /&gt;&lt;br /&gt;Immancabilmente i capitoli teorici saranno molto più brevi di quelli pratici. Ad esempio ho già terminato quelli su Stack Overflow. Il teorico (capitolo 2) è venuto 9 pagine, il pratico (capitolo 3) sono 45 pagine. Ho anche terminato il teorico su Global Offset Table e Procedure Linkage Table (capitolo 5) ed è venuto di 16 pagine.&lt;br /&gt;&lt;br /&gt;La seconda parte del libro (per il momento altri 5 capitoli) parlerà degli argomenti più avanzati, principalmente di tutte quelle migliorie introdotte nei kernel 2.6. La prima parte si può invece considerare più orientata alle installazioni con kernel 2.4 (che sono ancora numerosissime in rete). Al momento stavo lavorando sul capitolo 11 della seconda parte del libro (Address Space Layout Randomization). Penso di essere verso la metà dell'argomento e sono già a 26 pagine.&lt;br /&gt;&lt;br /&gt;Ovviamente gli scenari che sto trattando sono sia locali che remoti ed in ogni capitolo pratico, alla fine, sto mettendo anche casi di exploit reali, insomma non semplicemente quei programmini di esempio con strcpy() utilizzato a minchia tanto per far vedere come un buffer viene sovrascritto (non fraintendetemi, all'inizio sono importanti ma poi per far pratica bisogna pur elevarsi con casi reali).&lt;br /&gt;&lt;br /&gt;Se 15 capitoli vi sembrano una cosa da poco considerate che il target dell'argomento è &lt;strong&gt;solo&lt;/strong&gt; Linux. Inoltre questo è un libro specifico sui buffer overflow e non un calderone dispersivo su altri temi, come spesso sono invece organizzati altri testi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-2507062356135519942?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/2507062356135519942/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=2507062356135519942' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/2507062356135519942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/2507062356135519942'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2008/11/organizzazione-del-libro.html' title='Organizzazione del libro'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157209360494289077.post-498392225862591749</id><published>2008-11-08T13:03:00.007+01:00</published><updated>2008-11-08T14:17:16.847+01:00</updated><title type='text'>Perchè un altro libro sui buffer overflow</title><content type='html'>Ultimamente mi è capitata tra le mani la seconda edizione di &lt;strong&gt;Shellcoder's Handbook&lt;/strong&gt;, un libro inglese edito da Wiley, che aspira a fare luce su alcune classiche tematiche hacking fra le quali i buffer overflow. Il tizio che me lo ha mostrato durante un mio intervento sulla sicurezza in un convegno a Roma organizzato da un cliente per cui lavoravo, era tutto felice e non stava più nella pelle per l'uscita di questa nuova edizione. In realtà sfogliando il testo ne sono rimasto profondamente deluso. Avendo acquistato la prima edizione nel 2004, ho notato che da allora non è stato aggiunto molto materiale (a parte qualche capitolo di rintoppo qua e là come quello sugli apparati di rete Cisco). Ad esempio, le tecniche di buffer overflow descritte sono rimaste esattamente quelle di 4 anni fa, quando ancora la pressocché assenza in quasi tutte le distribuzioni Linux di meccanismi di protezione come ASLR e Propolice (tanto per citarne un paio) permetteva di piazzare uno shellcode ovunque in memoria ed eseguirlo. Mi verrebbe da dire però a Litchfield, Koziol, Aitel e compagni che siamo già nel 2008. Oggi non puoi pensare che Exec Shield non si incazzi quando provi a fare ritornare una funzione verso un'indirizzo dello stack o che la macro unlink() sia così stupida da non fare un controllo di base per capire se l'heap è corrotto o meno. Shellcoder's Handbook seconda edizione si limita invece solamente a dare qualche consiglio e fare qualche accenno sui moderni "ostacoli". Nessuna nuova tecnica, nessun esempio pratico, nessuna sessione di debugging! Solo vaghi riferimenti sul web. Al momento inoltre non esiste, a mio parere, nella letteratura esistente, un buon testo che discuta su questi temi anche prendendo in considerazione gli ultimi meccanismi di protezione implementati dalle recenti distribuzioni Linux. &lt;em&gt;E' per questo che ho deciso di iniziare a scrivere un libro sull'argomento buffer overflow.&lt;/em&gt; Ci sto già lavorando da circa un mese e nei prossimi giorni approfitterò di questo blog per informare sullo "stato di avanzamento lavori", sulle modalità di pubblicazione, sugli argomenti trattati ed ovviamente rimarrò sintonizzato sui commenti ed i pareri degli utenti della rete. Per i tempi di rilascio non so ancora dire nulla di certo. L'auspicio è di riuscire a pubblicarlo prima di natale.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157209360494289077-498392225862591749?l=b0f.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b0f.blogspot.com/feeds/498392225862591749/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157209360494289077&amp;postID=498392225862591749' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/498392225862591749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157209360494289077/posts/default/498392225862591749'/><link rel='alternate' type='text/html' href='http://b0f.blogspot.com/2008/11/perch-un-altro-libro-sui-buffer.html' title='Perchè un altro libro sui buffer overflow'/><author><name>Marco Ortisi</name><uri>http://www.blogger.com/profile/03546727968736247890</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>
