Você está na página 1de 9

Asignatura Datos del alumno Fecha

Apellidos: Linares Espinosa


Análisis de
16/01/2019
Vulnerabilidades
Nombre: Emilio Gamaliel

Actividad: Realizar ataque de desbordamiento de buffer


Pasos a realizar:

1. Emularemos kali Linux desde un programa llamado VMWare Workstation


existen otras, pero en este caso utilizaremos esta.

2. Entraremos en la e instalaremos el programa llamado GCC que nos ayudara a la


compilación del programa a vulnerar, muchas veces ya lo tiene, pero no es el
más actual para esto podremos instalarlo de nuevo o actualizarlo con el

comando:

3. Una vez instalado o actualizado el programa tendremos que escribir el


programa a vulnerar en una Leafpad que viene en aplicaciones->favoritos-

TEMA 2 – Actividades © Universidad Internacional de La Rioja, S. A.


(UNIR)
Asignatura Datos del alumno Fecha
Apellidos: Linares Espinosa
Análisis de
16/01/2019
Vulnerabilidades
Nombre: Emilio Gamaliel

>Leafpad hay escribiremos el código y lo guardaremos, en mi caso lo guarde en


escritorio como “actividad.c” para poder compilar.

4. Pasaremos a la terminal para poder deshabilitar el ASLP (Address Space Layout


Randomization) en español asignación de espacio de direcciones al comando:
echo 0 > /proc/sys/kernel/randomize_va_space y para revisar que se haya
cambiado el valor a 0 podremos hacerlo con el comando: cat
/proc/sys/kernel/randomize_va_space.

5. Una vez deshabilitado el ASLP implementar el siguiente comando en donde este


nuestro código guardado en mi caso escritorior:
gcc -g -fno-stack-protector -z execstack -mpreferred-stack-
boundary=4 -o actividad actividad.c
 gcc =Compilar.
 -g =Rastrear errores usando un depurador (GDB).
 -fno-stack-protector =Desactivar la protección de la pila y poder
sobrescribirla.

TEMA 2 – Actividades © Universidad Internacional de La Rioja, S. A.


(UNIR)
Asignatura Datos del alumno Fecha
Apellidos: Linares Espinosa
Análisis de
16/01/2019
Vulnerabilidades
Nombre: Emilio Gamaliel

 -z execstack =Poder ejecutar el código en la pila.


 -mpreferred-stack-boundary=4 =Intento de mantener la pila
alineada a este power dependiendo de tu sistema (64 = 4 y 32 = 2).
 -o actividad =Escoge el nombre del ejecutable que produce el
compilador.
 actividad.c =Indica el nombre del programa fuente.

6. una vez terminado lo anterior, aun en el escritorio para poder llamar el


debugger y empezar con él a vulnerar ejecutaremos:
gdb ./actividad

7. Se ejecutará el programa variando el argumento de entrada y analizando si el


programa se ejecuta de forma correcta o tiene algún problema, para esto
podremos utilizar dependiendo del interprete (Python, perl, ruby etc):

TEMA 2 – Actividades © Universidad Internacional de La Rioja, S. A.


(UNIR)
Asignatura Datos del alumno Fecha
Apellidos: Linares Espinosa
Análisis de
16/01/2019
Vulnerabilidades
Nombre: Emilio Gamaliel

run $(python -c 'print "A" * 100')

8. Existen dos formas de encontrar el tamaño de la cadena que debemos pasar


para ocasionar el desbordamiento.
a. Herramienta metasploid
b. Jugar con la cantidad de datos, se recomienda de 10 en 10, una vez que
ya hayas causado el desbordamiento juega de 2 en 2 hasta que sepas el
número exacto en mi caso 120.

9. Para saber más a detalle el contenido de los registros podremos ejecutar info
registers , los datos de mayor relevancia dependiendo del sistema operativo
son (RBP, RSP, RIP son para 64 bits y EBP,ESP Y EIP son para 32 bits)

TEMA 2 – Actividades © Universidad Internacional de La Rioja, S. A.


(UNIR)
Asignatura Datos del alumno Fecha
Apellidos: Linares Espinosa
Análisis de
16/01/2019
Vulnerabilidades
Nombre: Emilio Gamaliel

10. En caso de ocupar metasploit nos dirigiremos a : /usr/share/metasploit-


framework/tools/exploit/pattern_create.rb -l 150.
Con esta utilería podremos generar una cadena que podemos sustituir por la
creada con el lenguaje interprete.

11. Esta cadena creada por metasploit la correremos en gdb para que nos genere el
error y poder recopilar un parámetro del listado de registro llamado $rsp, para
ello y no obtener todo el listado especificamos con: x /xw $rsp

12. Obtenido el dato en nuestro caso es 0x41306541 , nos dirigiremos de nuevo a


metasploit y proseguiremos a obtener el número exacto de caracteres a
necesitar para el desbordamiento:

13. Ya teniendo el tamaño por los dos medios, debemos de obtener la rutina de
premio, mediante el comando (disas premio), disas nos ayuda a desensamblar
el código y nos muestra la dirección física relacionada con el mismo. se debe de
indicar la función que en nuestro caso fue premio.

TEMA 2 – Actividades © Universidad Internacional de La Rioja, S. A.


(UNIR)
Asignatura Datos del alumno Fecha
Apellidos: Linares Espinosa
Análisis de
16/01/2019
Vulnerabilidades
Nombre: Emilio Gamaliel

14. Teniendo los dos datos en nuestro caso \x55\x51\x55\x55\x55\x55 y 120


podremos obtener la alteración del programa:

15. Una vez alterado el programa obtendremos la línea de comandos, tendremos


que crear un documento con las sig características:
 NOPSs (este código nos sirve por si no conocemos la dirección exacta de
donde inicia el código que ejecutamos el cual se encuentra en
hexadecimal).
 Código Shell (Es un código ensamblador el cual representa instrucciones
para los computadores, microprocesadores, microcontroladores es una
forma para las localizaciones de memoria y otras entidades).
 Relleno es la cantidad que encontramos en la parte de arriba para
encontrar el desbordamiento.
 Dirección que desea brincar o de ejecución.

16. Una vez hecho el programa daremos permiso al archivo para su ejecución
mediante el comando chmod permisos nombre-de-archivo ejemplo:
 Chmod (propietario)(grupo)(resto) shell.py
 Chmod 777 shell.py

TEMA 2 – Actividades © Universidad Internacional de La Rioja, S. A.


(UNIR)
Asignatura Datos del alumno Fecha
Apellidos: Linares Espinosa
Análisis de
16/01/2019
Vulnerabilidades
Nombre: Emilio Gamaliel

El permiso de cualquier archivo tiene tres partes


- de propietario
- de grupo
- del resto

Los permisos son


- r lectura 4
- w excritura 6
- x ejecucion 7

17. Lo único restante es saber, es la dirección a la cual tenemos que brincar para la
ejecución del código Shell , esto lo aremos ejecutando el programa ya guardado
Shell.py en nuestro terminal donde realizamos el desbordamiento, lo único que
cambiaremos para ejecutar el código seria atra vez de run $(./shell):

18. Ya echo esto con el error presente colocaremos un breakpoint un punto de


interrupción para
que el programa nos diga
dónde está la memoria
almacenada, esto

TEMA 2 – Actividades © Universidad Internacional de La Rioja, S. A.


(UNIR)
Asignatura Datos del alumno Fecha
Apellidos: Linares Espinosa
Análisis de
16/01/2019
Vulnerabilidades
Nombre: Emilio Gamaliel

lo aremos utilizando list y podremos colocar el punto posterior a la instrucción


strcpy:

19. Correremos de nuevo el programa y tendrá que salir el punto de interrupción,


este nos servirá para saber en dónde se corre la memoria y las posiciones
posteriores de la pila, ubicación que tenemos que saltar, una vez el programa se
detenga a causa el punto le pediremos nos muestre el contenido del stack la
posición posterior donde apunta el registro SP:

20. Una vez obtenido la dirección definida de regreso (eip) podremos utilizar
de este conjunto cualquier ya que utilizaremos un segmento de NOP´s antes del
código ejecutable, podremos asignar cualquier dirección para obtener el control,
antes de eso tenemos que borrar el el punto de interrupción:

TEMA 2 – Actividades © Universidad Internacional de La Rioja, S. A.


(UNIR)
Asignatura Datos del alumno Fecha
Apellidos: Linares Espinosa
Análisis de
16/01/2019
Vulnerabilidades
Nombre: Emilio Gamaliel

21. Se pudo conseguir entrar a la maquina con modo root y poder ver todo el
archivo, se cumplió el objetivo de las practicas

TEMA 2 – Actividades © Universidad Internacional de La Rioja, S. A.


(UNIR)

Você também pode gostar