Buen día amigos

Podríamos definir el ataque de Buffer Overflow, como la acción de desbordar un espacio limitado de memoria, insertando una cantidad mayor de información, de la que puede almacenar.  Y acerca de lo anterior, el siguiente post es un laboratorio para ejemplificar un ataque de Buffer Overflow, ejecutando código arbitrario y obteniendo acceso remoto.

Utilizamos para esto, como Sistema Operativo Kali Linux.

Con ayuda de la Terminal, y del editor de texto nano, desarrollamos el siguiente programa, muy simple en lenguaje C y de nombre buffer.c:

En realidad el programa solo pide tu nombre, lo guarda en una variable tipo char, y después lo imprime. ¿Muy simple no? El detalle a analizar, está en el tipo de la variable “name” y la cantidad de datos que puede almacenar (1 byte), además del uso de la función “system(command)”. ¿Qué es lo que pasa si no se valida la cantidad de información a guardar, y en lugar de 1 byte se trata de almacenar 2 bytes?

Muy interesante. En primer lugar, confirmemos que el programa funciona correctamente. Compilemos el programa y ejecutemos:

 

En este caso, si ingresamos la palabra “Juan”, tiene una dimensión que no causa problemas en el programa y despliega el saludo. ¿Qué pasaría si en lugar de “Juan”, ingresamos la cadena “1234567891234567 /bin/sh”? (/bin/sh es utilizado para cambiar al Bourne Shell)

¡Tenemos control de la máquina! Al momento de ingresar la cadena 1234567891234567, satura el buffer causando una falla y permitiendo ejecutar código, en este caso /bin/sh pero pudo haber sido cualquier comando que pueda ser interpretado.

Vive seguro, agrega excepciones a tus programas, instala parches de seguridad a tus equipos de red, ejecuta pruebas de penetración de manera calendarizada. Esperamos sea de tu agrado el laboratorio presentado.

Si ustedes gustan agregar algún comentario, dudas o aclaración serán bienvenidas. Hasta la próxima.