hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/aslr.md

109 lines
6.3 KiB
Markdown
Raw Normal View History

# ASLR
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
## Basiese Inligting
**Address Space Layout Randomization (ASLR)** is 'n sekuriteitstegniek wat in bedryfstelsels gebruik word om die **geheue-adresse** wat deur stelsel- en toepassingsprosesse gebruik word, te **verrandomiseer**. Hierdeur word dit aansienlik moeiliker vir 'n aanvaller om die ligging van spesifieke prosesse en data, soos die stapel, heap, en biblioteke, te voorspel, wat sekere tipes aanvalle, veral buffer-oorvloei, verminder.
### **ASLR-status Kontroleer**
Om die ASLR-status op 'n Linux-stelsel te **kontroleer**, kan jy die waarde uit die `/proc/sys/kernel/randomize_va_space`-lêer lees. Die waarde wat in hierdie lêer gestoor word, bepaal die tipe ASLR wat toegepas word:
* **0**: Geen verrandomisering. Alles is staties.
* **1**: Konservatiewe verrandomisering. Gedeelde biblioteke, stapel, mmap(), VDSO-bladsy word verrandomiseer.
* **2**: Volledige verrandomisering. Bo en behalwe elemente wat deur konservatiewe verrandomisering verrandomiseer word, word geheue wat deur `brk()` bestuur word, verrandomiseer.
Jy kan die ASLR-status kontroleer met die volgende bevel:
```bash
bashCopy codecat /proc/sys/kernel/randomize_va_space
```
### **ASLR uitskakel**
Om ASLR te **deaktiveer**, stel jy die waarde van `/proc/sys/kernel/randomize_va_space` in op **0**. Dit word gewoonlik nie aanbeveel om ASLR buite toets- of foutopsporingsituasies te deaktiveer nie. Hier is hoe jy dit kan deaktiveer:
```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
Jy kan ook ASLR uitskakel vir 'n uitvoering met:
```bash
setarch `arch` -R ./bin args
setarch `uname -m` -R ./bin args
```
### **Aktivering van ASLR**
Om ASLR te **aktiveer**, kan jy 'n waarde van **2** skryf na die `/proc/sys/kernel/randomize_va_space` lêer. Dit vereis gewoonlik root-voorregte. Volledige randomisering kan gedoen word met die volgende bevel:
```bash
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
```
### **Volharding oor Herlaai**
Veranderinge wat met die `echo` bevele gemaak word, is tydelik en sal herstel word met herlaai. Om die verandering volhardend te maak, moet jy die `/etc/sysctl.conf` lêer wysig en die volgende lyn byvoeg of wysig:
```tsconfig
kernel.randomize_va_space=2 # Enable ASLR
# or
kernel.randomize_va_space=0 # Disable ASLR
```
Na die wysiging van `/etc/sysctl.conf`, pas die veranderinge toe met:
```bash
sudo sysctl -p
```
Dit sal verseker dat jou ASLR-instellings behoue bly oor herlaai.
## **Bypassing 32bits ASLR**&#x20;
### 32bit brute-forcing
PaX verdeel die proses-adresruimte in **3 groepe**:
* **Kode en data** (geïnisialiseer en ongeïnisialiseer): `.text`, `.data`, en `.bss` —> **16 bits** van entropie in die `delta_exec` veranderlike. Hierdie veranderlike word lukraak geïnisialiseer met elke proses en by die aanvanklike adresse gevoeg.
* **Geheue** toegewys deur `mmap()` en **gedeelde biblioteke** —> **16 bits**, genoem `delta_mmap`.
* **Die stok** —> **24 bits**, verwys na as `delta_stack`. Dit gebruik egter effektief **11 bits** (vanaf die 10de tot die 20ste byte insluitend), uitgelyn op **16 byte** —> Dit lei tot **524,288 moontlike werklike stokadresse**.
Die vorige data is vir 32-bietestelsels en die verminderde finale entropie maak dit moontlik om ASLR te omseil deur die uitvoering herhaaldelik te probeer totdat die aanval suksesvol voltooi is.
#### Brute-force-idees:
* As die aanval plaaslik is, kan jy die basisadres van libc deur brute force probeer (nuttig vir 32-bietestelsels):
```python
for off in range(0xb7000000, 0xb8000000, 0x1000):
```
* Indien jy 'n afgeleë bediener aanval, kan jy probeer om die adres van die `libc`-funksie `usleep` met 'n argument van 10 (byvoorbeeld) deur **brute-force** te vind. As die bediener op 'n punt 10 sekondes langer neem om te reageer, het jy die adres van hierdie funksie gevind.
{% hint style="success" %}
Op 64-biet-stelsels is die entropie baie hoër en is dit nie moontlik nie.
{% endhint %}
### Ret2ret
Probeer ASLR omseil deur adresse binne die stok te misbruik:
{% content-ref url="../stack-overflow/ret2ret.md" %}
[ret2ret.md](../stack-overflow/ret2ret.md)
{% endcontent-ref %}
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>