From d11f11f0d46ea6bce4ad5e1366d9c722723a2ab9 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 12 Aug 2024 13:17:18 +0000 Subject: [PATCH] Translated ['binary-exploitation/common-binary-protections-and-bypasses/ --- .../relro.md | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/binary-exploitation/common-binary-protections-and-bypasses/relro.md b/binary-exploitation/common-binary-protections-and-bypasses/relro.md index 882226f39..355cce8f2 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/relro.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/relro.md @@ -1,42 +1,59 @@ # Relro {% hint style="success" %} -Aprende y practica Hacking en AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoya a HackTricks +Support HackTricks -* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Relro -**RELRO** significa **Relocation Read-Only**, y es una característica de seguridad utilizada en binarios para mitigar los riesgos asociados con las sobrescrituras de la **GOT (Global Offset Table)**. Vamos a desglosar el concepto en sus dos tipos distintos para mayor claridad: **Partial RELRO** y **Full RELRO**. +**RELRO** significa **Relocation Read-Only**, y es una característica de seguridad utilizada en binarios para mitigar los riesgos asociados con los sobrescrituras de **GOT (Global Offset Table)**. Hay dos tipos de protecciones **RELRO**: (1) **Partial RELRO** y (2) **Full RELRO**. Ambos reordenan la **GOT** y **BSS** de los archivos ELF, pero con diferentes resultados e implicaciones. Específicamente, colocan la sección **GOT** *antes* de la **BSS**. Es decir, **GOT** está en direcciones más bajas que **BSS**, lo que hace imposible sobrescribir las entradas de **GOT** al desbordar variables en la **BSS** (recuerda que escribir en memoria ocurre de direcciones más bajas a más altas). + +Desglosemos el concepto en sus dos tipos distintos para mayor claridad. ### **Partial RELRO** -**Partial RELRO** toma un enfoque más simple para mejorar la seguridad sin afectar significativamente el rendimiento del binario. Al **posicionar la GOT por encima de las variables del programa en la memoria, Partial RELRO tiene como objetivo evitar que los desbordamientos de búfer alcancen y corrompan la GOT**. +**Partial RELRO** adopta un enfoque más simple para mejorar la seguridad sin afectar significativamente el rendimiento del binario. Partial RELRO hace **que la .got sea de solo lectura (la parte no-PLT de la sección GOT)**. Ten en cuenta que el resto de la sección (como la .got.plt) sigue siendo escribible y, por lo tanto, es susceptible a ataques. Esto **no impide que la GOT** sea abusada **por vulnerabilidades de escritura arbitraria**. -Esto **no evita que la GOT** sea abusada **por vulnerabilidades de escritura arbitraria**. +Nota: Por defecto, GCC compila binarios con Partial RELRO. ### **Full RELRO** -**Full RELRO** intensifica la protección al **hacer que la GOT y la sección .fini\_array** sean completamente **de solo lectura**. Una vez que el binario comienza, todas las direcciones de las funciones se resuelven y se cargan en la GOT, luego, la GOT se marca como de solo lectura, evitando efectivamente cualquier modificación durante la ejecución. +**Full RELRO** aumenta la protección al **hacer que toda la GOT (tanto .got como .got.plt) y la sección .fini\_array** sean completamente **de solo lectura.** Una vez que el binario se inicia, todas las direcciones de función se resuelven y se cargan en la GOT, luego, la GOT se marca como de solo lectura, lo que efectivamente previene cualquier modificación durante el tiempo de ejecución. -Sin embargo, el inconveniente de Full RELRO radica en términos de rendimiento y tiempo de inicio. Debido a que necesita resolver todos los símbolos dinámicos al inicio antes de marcar la GOT como de solo lectura, **los binarios con Full RELRO habilitado pueden experimentar tiempos de carga más largos**. Esta sobrecarga adicional en el inicio es la razón por la cual Full RELRO no está habilitado de forma predeterminada en todos los binarios. +Sin embargo, la desventaja de Full RELRO está en términos de rendimiento y tiempo de inicio. Debido a que necesita resolver todos los símbolos dinámicos al inicio antes de marcar la GOT como de solo lectura, **los binarios con Full RELRO habilitado pueden experimentar tiempos de carga más largos**. Este costo adicional de inicio es la razón por la cual Full RELRO no está habilitado por defecto en todos los binarios. -Es posible verificar si Full RELRO está **habilitado** en un binario con: +Es posible ver si Full RELRO está **habilitado** en un binario con: ```bash readelf -l /proc/ID_PROC/exe | grep BIND_NOW ``` ## Bypass -Si se habilita Full RELRO, la única forma de evitarlo es encontrar otra manera que no necesite escribir en la tabla GOT para lograr una ejecución arbitraria. +Si Full RELRO está habilitado, la única forma de eludirlo es encontrar otra manera que no necesite escribir en la tabla GOT para obtener ejecución arbitraria. -Ten en cuenta que **la GOT de LIBC suele tener Partial RELRO**, por lo que se puede modificar con una escritura arbitraria. Más información en [Apuntando a las entradas de la GOT de libc](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**.** +Ten en cuenta que **la GOT de LIBC es generalmente Partial RELRO**, por lo que puede ser modificada con una escritura arbitraria. Más información en [Targetting libc GOT entries](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**.** + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %}