PWN-Instalación y uso del último checksec

Instalar

Instalar con git

$ git clone https://github.com/slimm609/checksec.sh.git

Ingrese el archivo

cd checksec.sh

Inserte la descripción de la imagen aquí
Ejecute el siguiente comando, establezca un enlace simbólico en la línea de comando y úselo directamente en el terminal

sudo ln -s checksec /usr/local/bin/checksec
#或者sudo ln -sf checksec /usr/local/bin/checksec

Asegúrese de que puede encontrar y abrir checksec en / usr / local / bin /, de lo contrario puede usar el comando copiar para forzar la copia en el pasado.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Para utilizar

checksec filename

Rech

Programe información de arquitectura, juzgue si es de 64 bits o 32 bits, y p64 o p32 cuando se escribe exp

RELRO

Read-Onl de reubicación (RELRO) Esta tecnología está dirigida principalmente a los métodos de ataque GOT reescritos. Se divide en dos tipos, RELRO parcial y RELRO COMPLETO. RELRO
parcial (parcial) es vulnerable a los ataques. Por ejemplo, un atacante puede ingresar atoi.got como system.plt y entrar / bin / sh \ x00 para obtener el shell, completar RELRO hace que todo el GOT sea de solo lectura, que no se puede sobrescribir, pero esto aumentará en gran medida el tiempo de inicio del programa, ya que el programa debe resolver todos los símbolos antes de comenzar.

gcc -o hello test.c //默认情况下,是Partial RELRO
gcc -z norelro -o hello test.c // 关闭,即No RELRO
gcc -z lazy -o hello test.c // 部分开启,即Partial RELRO
gcc -z now -o hello test.c // 全部开启,即Full RELRO

Canario

La protección de desbordamiento de pila es un método de mitigación de ataque de desbordamiento de búfer. Cuando la función tiene una vulnerabilidad de ataque de desbordamiento de búfer, el atacante puede sobrescribir la dirección de retorno en la pila para permitir que se ejecute el código shell. Cuando la protección de pila está habilitada, la función comienza a ejecutarse Primero, se insertará información similar de cookies en la pila. Cuando la función regrese, verificará si la información de cookies es legal. Si no es válida, el programa dejará de ejecutarse. Cuando un atacante sobrescribe la dirección de retorno, la información de cookies a menudo se sobrescribirá, causando la pila Para proteger la falla de inspección del automóvil y evitar la ejecución de shellcode, en Linux llamamos al canario de información de cookies.

gcc -fno-stack-protector -o hello test.c   //禁用栈保护
gcc -fstack-protector -o hello test.c    //启用堆栈保护,不过只为局部变量中含有 char 数组的函数插入保护代码
gcc -fstack-protector-all -o hello test.c  //启用堆栈保护,为所有函数插入保护代码

NX

NX habilitado Si esta protección está activada, significa que los datos en la pila no tienen permisos de ejecución. De esta manera, cuando un atacante despliega su código de shell en la pila y lo activa, la sabiduría hace que el programa se bloquee directamente, pero se puede omitir usando rop.

gcc -o  hello test.c // 默认情况下,开启NX保护
gcc -z execstack -o  hello test.c // 禁用NX保护
gcc -z noexecstack -o  hello test.c // 开启NX保护

TARTA

La tecnología PTE (ejecutable independiente de la posición) es similar a la tecnología ASLR. ASLR aleatoriza la pila de tiempo de ejecución del programa y la dirección de carga de la biblioteca compartida, y PIE compila rápidamente el programa para que sea independiente de la posición en el momento de la compilación, es decir Cuando el programa se está ejecutando, la dirección virtual de cada segmento (como código pero etc.) también se determina cuando se carga, lo que significa. Cuando PIE y ASLR están habilitados al mismo tiempo, el atacante no tendrá conocimiento del diseño de memoria del programa, y ​​la reescritura tradicional de las entradas GOT es difícil de realizar porque el atacante no puede obtener la dirección virtual de la sección .got del programa. Si comienza, generalmente necesita tener suficiente información de dirección durante el ataque

gcc -o hello test.c  // 默认情况下,不开启PIE
gcc -fpie -pie -o hello test.c  // 开启PIE,此时强度为1
gcc -fPIE -pie -o hello test.c  // 开启PIE,此时为最高强度2
(还与运行时系统ALSR设置有关)

La nueva versión es diferente de la verificación anterior, hay algunas opciones más, se recomienda consultar la documentación oficial
Inserte la descripción de la imagen aquí

RUTA / RUTA

Las variables de entorno en las que se ejecuta el programa. Los archivos de la biblioteca compartida necesarios durante la ejecución se buscan preferentemente desde este directorio. La biblioteca falsa puede causar ataques. Ejemplos: casos de ataque

FORTALECER

Este es un mecanismo de protección a nivel de fuente implementado por GCC. Su función es verificar el código fuente durante la compilación para evitar posibles errores de desbordamiento del búfer.
Simplemente, después de agregar esta protección, algunas funciones sensibles como lectura, fgets, Las funciones como memcpy, printf, etc. que pueden causar vulnerabilidades serán reemplazadas por __read_chk, __fgets_chk, etc.
Estas funciones con chk verificarán si la longitud de los bytes leídos / copiados excede la longitud del búfer. Al verificar si la cadena TV como% n está ubicada en una dirección de escritura que puede ser modificada por el usuario, se evita la cadena formateada Omita algunas funciones como directo (% 7 $ x) y otros métodos para evitar la aparición de vulnerabilidades. Checksec verificará los programas con la protección FORTIFT activada. Además, cuando la descompilación se ve directamente en la tabla obtenida, también se encontrará la existencia de la función chk. Esta verificación no está habilitada de manera predeterminada y se puede pasar.

gcc -D_FORTIFY_SOURCE=2 -O1
开启fortity检查,开启后会替换strcpy等危险函数。

Resumen

Los parámetros de compilación para varias opciones de seguridad son los siguientes:

  • NX: -z execstack / -z noexecstack (cerrar / abrir)
  • Canario: -fno-stack-protector / -fstack-protector / -fstack-protector-all (cerrar / abrir / abrir completamente)
  • PIE: -no-pie / -pie (off / on)
  • RELRO: -z norelro / -z vago / -z ahora (cerrar / parcialmente abierto / completamente abierto)
Publicado 35 artículos originales · ganó 3 · vistas 3300

Supongo que te gusta

Origin blog.csdn.net/qq_43430261/article/details/105516051
Recomendado
Clasificación