Translated ['binary-exploitation/common-binary-protections-and-bypasses/

This commit is contained in:
Translator 2024-08-12 13:17:22 +00:00
parent b9870d56ab
commit 4c6233020e

View file

@ -1,42 +1,59 @@
# Relro
{% hint style="success" %}
Leer en oefen AWS Hacken: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP Hacken: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
<summary>Support HackTricks</summary>
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
* 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.
</details>
{% endhint %}
## Relro
**RELRO** staan vir **Relocation Read-Only**, en dit is 'n sekuriteitskenmerk wat in bineêre lêers gebruik word om die risiko's wat verband hou met **GOT (Global Offset Table)** oorskrywings te verminder. Laat ons die konsep opbreek in sy twee onderskeie tipes vir duidelikheid: **Gedeeltelike RELRO** en **Volledige RELRO**.
**RELRO** staan vir **Relocation Read-Only**, en dit is 'n sekuriteitskenmerk wat in binêre lêers gebruik word om die risiko's wat verband hou met **GOT (Global Offset Table)** oorskrywings te verminder. Daar is twee tipes **RELRO** beskermings: (1) **Deeltelike RELRO** en (2) **Volle RELRO**. Albei herskik die **GOT** en **BSS** van ELF-lêers, maar met verskillende resultate en implikasies. Spesifiek plaas hulle die **GOT** afdeling *voor* die **BSS**. Dit wil sê, **GOT** is op laer adresse as **BSS**, wat dit onmoontlik maak om **GOT** inskrywings te oorskryf deur variabeles in die **BSS** oor te loop (onthou dat skryf in geheue van laer na hoër adresse gebeur).
### **Gedeeltelike RELRO**
Kom ons breek die konsep af in sy twee duidelike tipes vir duidelikheid.
**Gedeeltelike RELRO** neem 'n eenvoudiger benadering om die sekuriteit te verbeter sonder om die bineêre lêer se prestasie aansienlik te beïnvloed. Deur **die GOT bo die program se veranderlikes in die geheue te posisioneer, mik Gedeeltelike RELRO daarop om te voorkom dat buffer-oorvloeiings die GOT bereik en dit beskadig**.&#x20;
### **Deeltelike RELRO**
Dit **voorkom nie dat die GOT** misbruik **kan word nie** vanaf arbitrêre skryf kwesbaarhede.
**Deeltelike RELRO** neem 'n eenvoudiger benadering om sekuriteit te verbeter sonder om die binêre se prestasie aansienlik te beïnvloed. Deeltelike RELRO maak **die .got slegs leesbaar (die nie-PLT deel van die GOT afdeling)**. Hou in gedagte dat die res van die afdeling (soos die .got.plt) steeds skryfbaar is en, gevolglik, onderhewig is aan aanvalle. Dit **verhoed nie dat die GOT** misbruik word **van arbitrêre skryf** kwesbaarhede nie.
### **Volledige RELRO**
Nota: Standaard kompileer GCC binêre lêers met Deeltelike RELRO.
**Volledige RELRO** verhoog die beskerming deur **die GOT en .fini\_array** afdeling heeltemal **alleen-lees te maak.** Sodra die bineêre lêer begin, word al die funksie-adresse opgelos en in die GOT gelaai, daarna word die GOT as alleen-lees gemerk, wat enige wysigings daaraan tydens uitvoering voorkom.
### **Volle RELRO**
Die afweging met Volledige RELRO is egter in terme van prestasie en aanvangstyd. Omdat dit alle dinamiese simbole by aanvang moet oplos voordat die GOT as alleen-lees gemerk word, **kan bineêre lêers met Volledige RELRO wat geaktiveer is, langer laaitye ervaar**. Hierdie addisionele aanvangsoorskot is waarom Volledige RELRO nie standaard in alle bineêre lêers geaktiveer word nie.
**Volle RELRO** verhoog die beskerming deur **die hele GOT (both .got en .got.plt) en .fini\_array** afdeling heeltemal **slegs leesbaar** te maak. Sodra die binêre begin, word al die funksie adresse opgelos en in die GOT gelaai, dan word GOT as slegs leesbaar gemerk, wat effektief enige wysigings aan dit tydens uitvoering verhoed.
Dit is moontlik om te sien of Volledige RELRO **geaktiveer** is in 'n bineêre lêer met:
Die handelsoffensief met Volle RELRO is egter in terme van prestasie en opstarttyd. Omdat dit al die dinamiese simbole by opstart moet oplos voordat dit die GOT as slegs leesbaar merk, **kan binêre lêers met Volle RELRO geaktiveer langer laai tye ervaar**. Hierdie ekstra opstartlas is waarom Volle RELRO nie standaard in alle binêre lêers geaktiveer is nie.
Dit is moontlik om te sien of Volle RELRO **geaktiveer** is in 'n binêre met:
```bash
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
```
## Omgang
## Bypass
Indien Volledige RELRO geaktiveer is, is die enigste manier om dit te omseil om 'n ander manier te vind wat nie vereis dat daar geskryf word in die GOT-tabel om willekeurige uitvoering te kry nie.
As Volle RELRO geaktiveer is, is die enigste manier om dit te omseil om 'n ander manier te vind wat nie skryf in die GOT tabel benodig om arbitrêre uitvoering te verkry nie.
Let daarop dat **LIBC se GOT is gewoonlik Gedeeltelike RELRO**, dus dit kan verander word met 'n willekeurige skryf. Meer inligting in [Mikpunt libc GOT inskrywings](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**.**
Let daarop dat **LIBC se GOT gewoonlik Gedeeltelike RELRO is**, so dit kan met 'n arbitrêre skryf verander word. Meer inligting in [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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}