Protección de ejecutables: RELRO

Publicado en Hardening y Seguridad

Como vimos en entradas anteriores NX marcaba algunas zonas de memoria como no ejecutables, entre ellas el Stack, para evitar la inyección de shellcode. Por su parte la combinación de ASLR y PIE mitigan las técnicas que utilizan direcciones conocidas de segmentos de memoria como la técnica denominada ROP ‘return-oriented programming’ que reutiliza instrucciones existentes en el programa, que son ejecutables, en lugar de inyectar instrucciones arbitrarias en la memoria y ejecutarlas.

Leer más ...

Protección de ejecutables: PIE

Publicado en Hardening y Seguridad

PIE o 'Position Independent Executables' son programas ejecutables binarios hechos enteramente de código independiente de posición. Esta protección de los ejecutables viene a complementar la que vimos en un post anterior sobre ASLR (Address Space Layout Randomization) que como vimos es una característica del kernel que una vez activada aleatorizaba las zonas de memoria correspondientes a las bibliotecas compartidas, stack, VDSO y head.

Leer más ...

Protección de ejecutables: ASLR

Publicado en Hardening y Seguridad

ASLR o Address Space Layout Randomization es una técnica utilizada para mitigar los ataques contra los desbordamientos de buffer, haciendo que los segmentos de memoria no tengan una posición fija en memoria sino que esta varíe de forma aleatoria en cada ejecución. Esta técnica fue incluida en el kernel de linux en su versión 2.6.12 (de junio de 2005) aunque se podía instalar anteriormente en forma de parche. 

Leer más ...

Protección de ejecutables: NX

Publicado en Hardening y Seguridad

Una de las funcionalidades que se han ido añadiendo para la creación de ejecutables más seguros, con el fin de mitigar la explotación de vulnerabilidades inyectando shellcodes en los mismos, es NX. NX es la abreviación de no ejecutar, o segmento no ejecutable. Lo que hace es que cuando se carga la aplicación en la memoria no permite que en determinados segmentos se pueda ejecutar código, es decir, marca estos segmentos como no ejecutables y si se intenta ejecutar código desde ahí se produce una excepción.

Leer más ...

Manejo de strings en C

Publicado en Creando Código

Una cadena o string en C no es más que una secuencia de cero o más caracteres (tipo char para los byte string o tipo wchar_t para los wide string) acabada en un carácter nulo '\0'. La longitud del string se considera el número de caracteres sin incluir el carácter nulo.

Leer más ...

El arte de la programación

Publicado en Creando Código

Considero que la programación tiene tanto de ciencia como de arte, desarrollar código, como cualquier actividad que implique la realización personal de algo, además de gratificante requiere del uso de la creatividad. Parto de la premisa de que un programa no solo tienen que ser funcional, tiene que ser legible, elegante, eficiente y lo más simple posible (pero no más).

Leer más ...
Suscribirse a este canal RSS