SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Historia de los
Buffer Overflows
Autor: Juan Sacco ( runlvl )
Comienzos..
Luego de algunas décadas en existencia
podemos ponerle punto final a los buffer
overflows?
La respuesta no es clara, los overflows son
peligrosos, emocionantes y aterradores. Para
responder, tenemos que entender que son.
Si viviste debajo de una roca..
void main(void) {
char buffer[256];
scanf("%s", buffer); /* Lee por E sin size */
}
Ejemplo de buffer overflow de 1996!
No es solo Scanf()
Existen una lista interminable de funciones en
ANSI C y otros lenguajes que llevan a una
sobreescritura silenciosa del buffer.
Ejemplos: Strcpy, Memcpy, Gets, Sprintf, etc.
Contratemos programadores SR.
Seguramente un programador experimentado
podria evitar un desbordamiento (sick).
La verdad es que no, y para ejemplos el
mercado actual. La seguridad informática es
tabu, en el ambiente de desarrollo se premia
la rapidez, la agilidad y la entrega por sprints.
Ejemplo de Mysql 5.5.x
Los desarrolladores de la DB Mysql son
expertos, los usuarios miles de millones. Pero
hace menos de 12 meses apareció un BoF
remoto. Y ya estamos pisando el 2014!
Mas de 40 años de overflows demostraron: Es
increíblemente difícil no escribir overflows!
Otro ejemplo y no jodemos mas!
int main(int argc, char *argv[])
{
char buffer[10];
strcpy(buffer, argv[1]);
return 0;
}
Hey estamos en el 2013..
Claro, seguramente estarás pensando: Deben
existir algunas medidas de seguridad contra 40
años de overflows.
Por supuesto! Pero para entender como
funcionan esas defensas debemos saber como
es la estructura de un buffer.
Desmitificando un overflow
La sobreescritura comienza en
el principio del buffer.
Se sobreescribe hasta llegar al
RA, y controlandolo ejecutamos
codigo. Y así obtenemos Root :-)
For fun and profit
El básico de la “Era Aleph One” es inyectar
código x86 directo al buffer y modificar el
return address para que salte al código
inyectado.
Típicamente una System Call para spawnear
una shell, es por eso que lo conocemos como
shellcode. Ahhhh entonces era por eso? :-)
Ejemplo de shellcode
void main() {
char *name[2];
name[0] = "/bin/sh";
name[1] = NULL;
execve(name[0], name, NULL);
}
Y como obtengo el código x86?
Un atacante debería compilar el código,
extraer el assembler y construirlo formateado
para que se pueda ingresar dentro de una
funcion.
El programa vulnerable ya tiene su funcion!
Estructura del exploit
<basura para llenar el buffer y variables>
<return address: donde estara la shellcode>
<shellcode>
Voila! Obtuviste root de algunas máquinas!
Excepto que ya no estamos en 1996..
Historia de las defensas
Una de las principales es DEP o Data Execution
Prevention. Tambien conocida como W xor X.
Nunca van a haber dos regiones de memoria
desde donde se pueda a la vez ejecutar y
escribir. El proceso va a “crashear” si el CPU
intenta realizar una acción que active DEP.
Deep in DEP..
Esta defensa está basada en la premisa de que
el atacante inyecta código, osea la shellcode!
Por lo tanto nunca, jamás debería ser posible
tomar control de un programa..
Bueno, no exactamente.. ;-)
ROP! Return Oriented Programming
Un atacante en vez de inyectar el código que
quiere ejecutar, puede simplemente
encadenar retornos de jumps y reutilizar el
código ya existente.
El target más común de ROP suele ser: La
librería C ( libc ) y el código del programa.
Estructura de ROP
<basura para llenar el buffer y variables>
<return address: direccion de system()>
<proximo return address (de system()):
usualmente mas basura>
<argumento 1 para system(): puntero al
command string>
<command string>
Deep in ROP
Las cosas se ponen más complicadas cuando
empezamos a trabajar con ARM y x86-64, ya
que los argumentos se pasan en los registros,
pero aun así es posible.
TIP: Estamos en assembler así que podemos
saltar en el medio de una funcion si queremos!
ASLR: Address Space Layout Rand..
Para mitigar ROP apareció ASLR donde se
randomiza el stack, heap y librerías
dinámicas.
Ahora ya no se puede saltar porque todas las
direcciones cambian en cada ejecución.
Suena genial no? La solución definitiva.. ?
Un poco de ASLR
Bueno existen problemas.. Para empezar la
sección .text no es randomizada. En Linux se
puede saltar a cualquier función de la lib C
utilizada por el programa mediante la PLT (
Procedure Link Table )
PLT es una tabla que mapea justamente.
Deep in ASLR
Ya no suena tan genial no? Bueno hay mas.
Brute force: El page size en x86-32 es de 4kb,
los 12 bits de una direccion de memoria. Otros
8 bits son reservados para regiones especiales.
Son solo 4096 posibilidades.. No tan ASLR no?
Pero hay mas y llego Stack Guard
Canarios, en una mina de carbón se usaban
para saber si el nivel de monóxido de carbono
era habitable. Esta defensa usa el mismo
principio dejando un valor random o null antes
del return address.
Si el canario se modificó.. laejecución para.
Estructura de buffer con canario
<256 char de un buffer explotable>
<variables locales>
<valor de canario>
<return address>
<función argumentada 1>
<función argumentada 2>
Creo que he visto a un lindo gatito..
Para evitar al canario tenemos que salvarlo,
no se lo tiremos al gato! Ejemplo:
<char buffer[256]>
<char *src>
<canario>
<return address>
<char *dest>
Deep in Stack Guard
Con esa estructura se podria modificar SRC y
DST durante el overflow. Lo que se debería
hacer es restaurar el valor del canario.
Apuntar &[dest] al address del canario y luego
restaurarlo, por ejemplo: dest[255] = ‘0′
Y que se viene?
Durante 1990s y 2000s se conectaron a
internet por primera vez las PCs y el furor de
los overflows exploto!
Ya nada era seguro, cualquier desarrollador en
manos de un 0day podía ser potencialmente
muy peligroso! Y divertirse mucho.. ;)
Enserio, cual es el futuro?
Los dispositivos embebidos, cameras Go Pro!,
routers, autos, heladeras, dispositivo de
conexión remota (IPMI).
Pero si existen lenguajes como D, Go, Rust,
etc? Cual es el problema entonces..
La cultura.
El desarrollo ágil, la velocidad de entrega y el
desconocimiento son las principales causas.
No existe un paso a paso, se debe capacitar al
personal, tomar medidas y analizar.
Esto se traduce en costos.. Billetera mata.. ?
!!!Gracias!!!

Más contenido relacionado

La actualidad más candente

Material taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4edMaterial taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4edIgnacio Sorribas
 
Instrucciones lenguaje assembler
Instrucciones lenguaje assemblerInstrucciones lenguaje assembler
Instrucciones lenguaje assemblerANDREA
 
Slides taller de exploiting Navaja Negra 4ed
Slides taller de exploiting Navaja Negra 4edSlides taller de exploiting Navaja Negra 4ed
Slides taller de exploiting Navaja Negra 4edIgnacio Sorribas
 
Manipulacion de la pila!!
Manipulacion de la pila!!Manipulacion de la pila!!
Manipulacion de la pila!!romo91
 
Interesante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningInteresante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningxavazquez
 
Tareas programadas
Tareas programadasTareas programadas
Tareas programadasLauC2457
 
Curso MPLAB pic 3 empezando con el programa 9p
Curso MPLAB pic 3 empezando con el programa  9pCurso MPLAB pic 3 empezando con el programa  9p
Curso MPLAB pic 3 empezando con el programa 9pRuderocker Billy
 
6. RS232 interfaces ARDUINO - 2020
6. RS232 interfaces   ARDUINO - 20206. RS232 interfaces   ARDUINO - 2020
6. RS232 interfaces ARDUINO - 2020David Narváez
 
Evadiendo antivirus - uso de crypters
Evadiendo antivirus - uso de cryptersEvadiendo antivirus - uso de crypters
Evadiendo antivirus - uso de cryptersINCIDE
 
Introducción a Google Go
Introducción a Google GoIntroducción a Google Go
Introducción a Google GoScalia
 
Escalada de privilegios mediante infección ELF. Fist Conference
Escalada de privilegios mediante infección ELF. Fist ConferenceEscalada de privilegios mediante infección ELF. Fist Conference
Escalada de privilegios mediante infección ELF. Fist ConferenceInternet Security Auditors
 
Añadir papelera de reciclaje al terminal
Añadir papelera de reciclaje al terminalAñadir papelera de reciclaje al terminal
Añadir papelera de reciclaje al terminalNo Lo Se
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: DesarrolloStratebi
 

La actualidad más candente (19)

Material taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4edMaterial taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4ed
 
Instrucciones lenguaje assembler
Instrucciones lenguaje assemblerInstrucciones lenguaje assembler
Instrucciones lenguaje assembler
 
Slides taller de exploiting Navaja Negra 4ed
Slides taller de exploiting Navaja Negra 4edSlides taller de exploiting Navaja Negra 4ed
Slides taller de exploiting Navaja Negra 4ed
 
Manipulacion de la pila!!
Manipulacion de la pila!!Manipulacion de la pila!!
Manipulacion de la pila!!
 
Interesante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningInteresante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanning
 
Apunt2a
Apunt2aApunt2a
Apunt2a
 
Clase1_Python-CTIC
Clase1_Python-CTICClase1_Python-CTIC
Clase1_Python-CTIC
 
Paralela10
Paralela10Paralela10
Paralela10
 
Tareas programadas
Tareas programadasTareas programadas
Tareas programadas
 
Comandos basicos
Comandos basicosComandos basicos
Comandos basicos
 
Curso MPLAB pic 3 empezando con el programa 9p
Curso MPLAB pic 3 empezando con el programa  9pCurso MPLAB pic 3 empezando con el programa  9p
Curso MPLAB pic 3 empezando con el programa 9p
 
6. RS232 interfaces ARDUINO - 2020
6. RS232 interfaces   ARDUINO - 20206. RS232 interfaces   ARDUINO - 2020
6. RS232 interfaces ARDUINO - 2020
 
Evadiendo antivirus - uso de crypters
Evadiendo antivirus - uso de cryptersEvadiendo antivirus - uso de crypters
Evadiendo antivirus - uso de crypters
 
Clase no5 acceso
Clase no5 accesoClase no5 acceso
Clase no5 acceso
 
Introducción a Google Go
Introducción a Google GoIntroducción a Google Go
Introducción a Google Go
 
Escalada de privilegios mediante infección ELF. Fist Conference
Escalada de privilegios mediante infección ELF. Fist ConferenceEscalada de privilegios mediante infección ELF. Fist Conference
Escalada de privilegios mediante infección ELF. Fist Conference
 
Añadir papelera de reciclaje al terminal
Añadir papelera de reciclaje al terminalAñadir papelera de reciclaje al terminal
Añadir papelera de reciclaje al terminal
 
Paralela9
Paralela9Paralela9
Paralela9
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: Desarrollo
 

Destacado

Funciones de Strings en PHP
Funciones de Strings en PHPFunciones de Strings en PHP
Funciones de Strings en PHPAngie Mejia
 
Norma ISO 27000
Norma ISO 27000Norma ISO 27000
Norma ISO 27000UPTAEB
 

Destacado (7)

Javascript strings
Javascript stringsJavascript strings
Javascript strings
 
Funciones de Strings en PHP
Funciones de Strings en PHPFunciones de Strings en PHP
Funciones de Strings en PHP
 
Iso 27000
Iso 27000Iso 27000
Iso 27000
 
Iso 27000 estandar
Iso 27000 estandarIso 27000 estandar
Iso 27000 estandar
 
Norma ISO 27000
Norma ISO 27000Norma ISO 27000
Norma ISO 27000
 
Iso 27000
Iso 27000Iso 27000
Iso 27000
 
Iso 20000
Iso 20000Iso 20000
Iso 20000
 

Similar a Historia de los buffer overflows por Juan Sacco

Similar a Historia de los buffer overflows por Juan Sacco (20)

Creacion de shellcodes para Exploits en Linux/x86
Creacion de shellcodes para Exploits en Linux/x86 Creacion de shellcodes para Exploits en Linux/x86
Creacion de shellcodes para Exploits en Linux/x86
 
Exploits y stack overflows en windows 2017
Exploits y stack overflows en windows 2017Exploits y stack overflows en windows 2017
Exploits y stack overflows en windows 2017
 
Quasi - scripts-linux
Quasi - scripts-linuxQuasi - scripts-linux
Quasi - scripts-linux
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0
 
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
 
C++
C++ C++
C++
 
Librerias ansi c
Librerias ansi cLibrerias ansi c
Librerias ansi c
 
Anonimo el libro hacker
Anonimo   el libro hackerAnonimo   el libro hacker
Anonimo el libro hacker
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Script presentacion
Script presentacionScript presentacion
Script presentacion
 
Perl1 escalares
Perl1 escalaresPerl1 escalares
Perl1 escalares
 
Evasión de Técnicas Forenses
Evasión de Técnicas ForensesEvasión de Técnicas Forenses
Evasión de Técnicas Forenses
 
Introduccion al assembler[1]
Introduccion al assembler[1]Introduccion al assembler[1]
Introduccion al assembler[1]
 
Introduccion al assembler
Introduccion al assemblerIntroduccion al assembler
Introduccion al assembler
 
Clase 2 GuiaPractica.pdf
Clase 2 GuiaPractica.pdfClase 2 GuiaPractica.pdf
Clase 2 GuiaPractica.pdf
 
Script Linux
Script LinuxScript Linux
Script Linux
 
Funciones C++
Funciones C++Funciones C++
Funciones C++
 
Programacinenshell linux
Programacinenshell linuxProgramacinenshell linux
Programacinenshell linux
 
Taller de Shell Scripting
Taller de Shell ScriptingTaller de Shell Scripting
Taller de Shell Scripting
 

Último

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (19)

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Historia de los buffer overflows por Juan Sacco

  • 1. Historia de los Buffer Overflows Autor: Juan Sacco ( runlvl )
  • 2. Comienzos.. Luego de algunas décadas en existencia podemos ponerle punto final a los buffer overflows? La respuesta no es clara, los overflows son peligrosos, emocionantes y aterradores. Para responder, tenemos que entender que son.
  • 3. Si viviste debajo de una roca.. void main(void) { char buffer[256]; scanf("%s", buffer); /* Lee por E sin size */ } Ejemplo de buffer overflow de 1996!
  • 4. No es solo Scanf() Existen una lista interminable de funciones en ANSI C y otros lenguajes que llevan a una sobreescritura silenciosa del buffer. Ejemplos: Strcpy, Memcpy, Gets, Sprintf, etc.
  • 5. Contratemos programadores SR. Seguramente un programador experimentado podria evitar un desbordamiento (sick). La verdad es que no, y para ejemplos el mercado actual. La seguridad informática es tabu, en el ambiente de desarrollo se premia la rapidez, la agilidad y la entrega por sprints.
  • 6. Ejemplo de Mysql 5.5.x Los desarrolladores de la DB Mysql son expertos, los usuarios miles de millones. Pero hace menos de 12 meses apareció un BoF remoto. Y ya estamos pisando el 2014! Mas de 40 años de overflows demostraron: Es increíblemente difícil no escribir overflows!
  • 7. Otro ejemplo y no jodemos mas! int main(int argc, char *argv[]) { char buffer[10]; strcpy(buffer, argv[1]); return 0; }
  • 8. Hey estamos en el 2013.. Claro, seguramente estarás pensando: Deben existir algunas medidas de seguridad contra 40 años de overflows. Por supuesto! Pero para entender como funcionan esas defensas debemos saber como es la estructura de un buffer.
  • 9. Desmitificando un overflow La sobreescritura comienza en el principio del buffer. Se sobreescribe hasta llegar al RA, y controlandolo ejecutamos codigo. Y así obtenemos Root :-)
  • 10. For fun and profit El básico de la “Era Aleph One” es inyectar código x86 directo al buffer y modificar el return address para que salte al código inyectado. Típicamente una System Call para spawnear una shell, es por eso que lo conocemos como shellcode. Ahhhh entonces era por eso? :-)
  • 11. Ejemplo de shellcode void main() { char *name[2]; name[0] = "/bin/sh"; name[1] = NULL; execve(name[0], name, NULL); }
  • 12. Y como obtengo el código x86? Un atacante debería compilar el código, extraer el assembler y construirlo formateado para que se pueda ingresar dentro de una funcion. El programa vulnerable ya tiene su funcion!
  • 13. Estructura del exploit <basura para llenar el buffer y variables> <return address: donde estara la shellcode> <shellcode> Voila! Obtuviste root de algunas máquinas! Excepto que ya no estamos en 1996..
  • 14. Historia de las defensas Una de las principales es DEP o Data Execution Prevention. Tambien conocida como W xor X. Nunca van a haber dos regiones de memoria desde donde se pueda a la vez ejecutar y escribir. El proceso va a “crashear” si el CPU intenta realizar una acción que active DEP.
  • 15. Deep in DEP.. Esta defensa está basada en la premisa de que el atacante inyecta código, osea la shellcode! Por lo tanto nunca, jamás debería ser posible tomar control de un programa.. Bueno, no exactamente.. ;-)
  • 16. ROP! Return Oriented Programming Un atacante en vez de inyectar el código que quiere ejecutar, puede simplemente encadenar retornos de jumps y reutilizar el código ya existente. El target más común de ROP suele ser: La librería C ( libc ) y el código del programa.
  • 17. Estructura de ROP <basura para llenar el buffer y variables> <return address: direccion de system()> <proximo return address (de system()): usualmente mas basura> <argumento 1 para system(): puntero al command string> <command string>
  • 18. Deep in ROP Las cosas se ponen más complicadas cuando empezamos a trabajar con ARM y x86-64, ya que los argumentos se pasan en los registros, pero aun así es posible. TIP: Estamos en assembler así que podemos saltar en el medio de una funcion si queremos!
  • 19. ASLR: Address Space Layout Rand.. Para mitigar ROP apareció ASLR donde se randomiza el stack, heap y librerías dinámicas. Ahora ya no se puede saltar porque todas las direcciones cambian en cada ejecución. Suena genial no? La solución definitiva.. ?
  • 20. Un poco de ASLR Bueno existen problemas.. Para empezar la sección .text no es randomizada. En Linux se puede saltar a cualquier función de la lib C utilizada por el programa mediante la PLT ( Procedure Link Table ) PLT es una tabla que mapea justamente.
  • 21. Deep in ASLR Ya no suena tan genial no? Bueno hay mas. Brute force: El page size en x86-32 es de 4kb, los 12 bits de una direccion de memoria. Otros 8 bits son reservados para regiones especiales. Son solo 4096 posibilidades.. No tan ASLR no?
  • 22. Pero hay mas y llego Stack Guard Canarios, en una mina de carbón se usaban para saber si el nivel de monóxido de carbono era habitable. Esta defensa usa el mismo principio dejando un valor random o null antes del return address. Si el canario se modificó.. laejecución para.
  • 23. Estructura de buffer con canario <256 char de un buffer explotable> <variables locales> <valor de canario> <return address> <función argumentada 1> <función argumentada 2>
  • 24. Creo que he visto a un lindo gatito.. Para evitar al canario tenemos que salvarlo, no se lo tiremos al gato! Ejemplo: <char buffer[256]> <char *src> <canario> <return address> <char *dest>
  • 25. Deep in Stack Guard Con esa estructura se podria modificar SRC y DST durante el overflow. Lo que se debería hacer es restaurar el valor del canario. Apuntar &[dest] al address del canario y luego restaurarlo, por ejemplo: dest[255] = ‘0′
  • 26. Y que se viene? Durante 1990s y 2000s se conectaron a internet por primera vez las PCs y el furor de los overflows exploto! Ya nada era seguro, cualquier desarrollador en manos de un 0day podía ser potencialmente muy peligroso! Y divertirse mucho.. ;)
  • 27. Enserio, cual es el futuro? Los dispositivos embebidos, cameras Go Pro!, routers, autos, heladeras, dispositivo de conexión remota (IPMI). Pero si existen lenguajes como D, Go, Rust, etc? Cual es el problema entonces..
  • 28. La cultura. El desarrollo ágil, la velocidad de entrega y el desconocimiento son las principales causas. No existe un paso a paso, se debe capacitar al personal, tomar medidas y analizar. Esto se traduce en costos.. Billetera mata.. ?