NOTA IMPORTANTE: El delito informático está severamente castigado por la ley. Esta página no promueve el delito informático, es divulgativa y muestra los mecanismos que utilizan los cibercriminales para poder identificar el ataque si has sido victima de uno de ellos. En el caso de que hayas sido victima de un ataque te recomendamos que busques recursos legales en la sección Cibercrime Law o en la página del Instituto Nacional de Ciberseguridad: https://www.incibe.es/

Blog

Conceptos básicos y habilidades de explotación binaria. Parte 2

La protección en la pila

Seguiremos con el sistema Linux x64. En la parte 1, solíamos volver a la dirección de la función del sistema con Buffer Overflow, o volver a la variable global y sobrescribirla con el Shellcode. Por lo tanto, alguna protección de la pila parece luchar contra el ataque. Por ejemplo, aleatorizan la dirección de la función para que no podamos estar seguros de a dónde regresar, o hacen que el Shellcode que insertamos en la pila no se pueda ejecutar, estos son todo el camino para detener el ataque BOF.

Los tipos comunes de protección se mostrarán a continuación:

  1. ASLR
  2. DEP
  3. TARTA
  4. Guardia de pila

Primero. ASLR

Mira la parte superior de la imagen de arriba. ASLR se puede separar en 4 niveles, 0 ~ 4 respectivamente, y el nivel 0 significa que ASLR está cerrado. Cuando se trata del uso de ASLR, hará que la dirección de pila, montón, biblioteca sea aleatoria (con el mismo desplazamiento. Por lo tanto, podemos ver la desventaja de la imagen de arriba: la posición de la pila, biblioteca, montón ha cambiado desde el primer tiempo de ejecución al segundo. Mostraré el resultado en el terminal en la siguiente imagen.

Primero, podemos usar el comando “cat / proc / sys / kernel / randomizeVirginiaespacio” para mostrar los niveles de ASLR. En la imagen se muestra con 2, por lo que significa que el ASLR es abierto. Entonces usamos el “ldd” para ver la dirección de carga de la biblioteca. Tomando el libc.so.6 por ejemplo, en la imagen de arriba, podemos ver la primera dirección de la que es 0x7fc890536000, pero cuando lo ejecutamos de nuevo, ha cambiado a 0x7f1c41e98000. ¡Bien, esto es ASLR!

Segundo. DEP

En la imagen de arriba, he usado el comando “vmmap” para mostrar la dirección de memoria del programa. Podemos ver que en cada sección de la memoria, no se puede ejecutar si se puede escribir, o no se puede escribir si se puede ejecutar. Esta es la característica del DEP, también llamado como NX.

Tercero. TARTA

TARTA parece ASLR, pero hay una pequeña diferencia entre. PIE dejará la dirección de .codigo de DATOS también ser aleatorizado con el ASLR. Por lo tanto, si usamos el comando de “objdump -d elf” para echar un vistazo al elfo, que viene con PIE abierto, vamos a no veo la dirección real, pero el compensar en eso. Y se agregará a la dirección base para convertirse en la dirección real después de que se ejecute el programa.

El último. StackGuard

StackGuard, que también se llama Canario, es el más interesante de la protección. Mire la imagen de arriba, y nos daremos cuenta de cómo funciona el Canary. Primero, necesitamos saber que Canary están todos almacenados en una sección de memoria llamada tls, y hay registro fs / gs apuntar a ellos en x64 / x86 respectivamente. En segundo lugar, Canarias actuará después función prólogo. Después de que se construya el nuevo marco de pila, la pila insertará un puntero a canary y verificará su valor antes de salir de la función. Tome la estructura anterior como ejemplo, si queremos sobrescribir la dirección de retorno, también debería sobrescribir el canario. Pero miramos las palabras verdes en el lado izquierdo, el parte verde es el proceso de comprobación de valor de Canarias. Copiará el valor de canary en la pila a la raxy compárelo con el valor original que está almacenado en fs / gs. Si dos valores no son iguales, el programa abortar! Así que este es el mecanismo de “StackGuard“!

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Mira también
Cerrar
Botón volver arriba
Cerrar