0% encontró este documento útil (0 votos)
5 vistas5 páginas

Creación de un Exploit de Buffer Overflow

El documento describe el proceso de creación de un exploit de desbordamiento de buffer en un programa vulnerable de 32 bits en Ubuntu 20.04. Incluye pasos para desactivar ASLR, crear un programa vulnerable, realizar un desbordamiento de pila y construir un exploit. También se abordan pruebas y posibles soluciones a la vulnerabilidad.

Cargado por

Marsupilami
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas5 páginas

Creación de un Exploit de Buffer Overflow

El documento describe el proceso de creación de un exploit de desbordamiento de buffer en un programa vulnerable de 32 bits en Ubuntu 20.04. Incluye pasos para desactivar ASLR, crear un programa vulnerable, realizar un desbordamiento de pila y construir un exploit. También se abordan pruebas y posibles soluciones a la vulnerabilidad.

Cargado por

Marsupilami
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Shellcode

Uray Calvo Rodríguez


Índice
1. Propósito ........................................................................................................................... 3
2. Desactivar ASLR ................................................................................................................. 3
3. Creación de un programa vulnerable .................................................................................. 3
4. Desbordamiento de pila ..................................................................................................... 4
5. Fichero de desbordamiento ................................................................................................ 5
6. Depuración del programa................................................................................................... 7
7. Ejecución normal ................................................................................................................ 8
8. Ejecución desbordando la pila .......................................................................................... 10
9. Instalación HexCurse ........................................................................................................ 12
10. Modificar la dirección de retorno ..................................................................................... 12
11. Prueba nueva dirección de retorno ................................................................................... 13
12. Obtener shellcode ............................................................................................................ 14
13. Construir el exploit ........................................................................................................... 16
14. Prueba del exploit ............................................................................................................ 18
15. Elegir dirección de retorno para el exploit ........................................................................ 19
16. Prueba del exploit 2 ......................................................................................................... 21
17. Actualización del programa.............................................................................................. 22
18. Prueba exploit 3 de la actualización ................................................................................. 23
19. Posible solución vulnerabilidad ........................................................................................ 26
Uray Calvo Rodríguez 2
1. Propósito
El propósito de esta practica es la creación de un exploit de desbordamiento de buffer en un
programa vulnerable sencillo de 32 bits en el sistema operativo Ubuntu 20.04 x64.
2. Desactivar ASLR
ASLR es una técnica utilizada para mitigar los ataques contra los desbordamientos de buffer,
haciendo que los segmentos de memoria no sean fijos, sino que esta varié de forma aleatoria
en cada ejecución por lo que para poder realizar sin problemas la practica, lo deshabilitamos.
• En una terminal ejecutamos los comandos
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
sudo sysctl kernel.randomize_va_space=0
3. Creación de un programa vulnerable
Este programa es una muestra simple de un desbordamiento de buffer en la función “copiar”.
Toma un argumento de entrada de una sola cadena, lo copia a un buffer de tamaño limitado
sin ninguna protección con la función strcpy(), y luego imprime “Listo!”.
• En la terminal ejecutamos el comando:
nano name.c
• Escribimos el código del programa y guardamos el archivo
Uray Calvo Rodríguez 3
• Compilamos el código del programa en 32 bits sin protecciones, comprobamos que esta
en 32 bits y lo ejecutamos con el argumento “uray”.
gcc name.c -o name -fno-stack-protector -m32 -g -z execstack -no-pie
file name
./name uray
4. Desbordamiento de pila
En una ventana del terminal, ejecutamos el comando de ejecución del programa con un
argumento inusual de 100 caracteres “A”, para ver la ejecución y si se produce un
desbordamiento de la pila.
./name
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA
Uray Calvo Rodríguez 4
• Como vemos la función strpcy() corrompe la pila (stack smashing detected), por lo que el
programa no puede regresar de la función copiar() a la función principal main(). Esto es,
un ejemplo simple de un exploit DoS (bloqueo de programa).
• El siguiente paso es crear un exploit de ejecución de código y para ello, se analizará y
controlará el fallo producido en el desbordamiento de pila.
5. Fichero de desbordamiento
• Creamos un fichero llamado “des” (de desbordar) para ejecutar el desbordamiento de
pila anterior de manera mas sencilla y que se utilizara después de base para la ejecución
de un exploit de código.
• En una terminal ejecutamos el comando
nano des
• Escribimos el código en Python para que imprima por ejemplo 66 carácteres “A”.
• Damos permisos al archivo con el comando
Uray Calvo Rodríguez 5

También podría gustarte