# ASLR
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)! Njia nyingine za kusaidia HackTricks: * Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)! * Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com) * Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee * **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
## Taarifa Msingi **Urambazaji wa Mfumo wa Nafasi ya Anwani (ASLR)** ni mbinu ya usalama inayotumika kwenye mifumo ya uendeshaji kwa kuchanganya **anwani za kumbukumbu** zinazotumiwa na michakato ya mfumo na maombi. Kwa kufanya hivyo, inafanya iwe ngumu sana kwa mkaidi kutabiri mahali pa michakato na data maalum, kama vile steki, rundo, na maktaba, hivyo kupunguza aina fulani za uvamizi, hasa mlipuko wa ujazo. ### **Kuangalia Hali ya ASLR** Ku **kucheki** hali ya ASLR kwenye mfumo wa Linux, unaweza kusoma thamani kutoka faili ya `/proc/sys/kernel/randomize_va_space`. Thamani iliyohifadhiwa kwenye faili hii inaamua aina ya ASLR inayotumiwa: * **0**: Hakuna kuchanganya. Kila kitu ni tuli. * **1**: Kuchanganya kwa uangalifu. Maktaba zilizoshirikiwa, steki, mmap(), ukurasa wa VDSO zinachanganywa. * **2**: Kuchanganya kikamilifu. Mbali na vitu vilivyochanganywa na kuchanganya kwa uangalifu, kumbukumbu inayosimamiwa kupitia `brk()` inachanganywa. Unaweza kuangalia hali ya ASLR kwa amri ifuatayo: ```bash bashCopy codecat /proc/sys/kernel/randomize_va_space ``` ### **Kulemaza ASLR** Ili **kulemaza** ASLR, weka thamani ya `/proc/sys/kernel/randomize_va_space` kuwa **0**. Kulemaza ASLR kwa ujumla siyo jambo linalopendekezwa isipokuwa kwenye mazingira ya majaribio au kutatua hitilafu. Hapa ndivyo unavyoweza kulimaza: ```bash echo 0 | sudo tee /proc/sys/kernel/randomize_va_space ``` Unaweza pia kulemaza ASLR kwa utekelezaji na: ```bash setarch `arch` -R ./bin args setarch `uname -m` -R ./bin args ``` ### **Kuwezesha ASLR** Ili **kuwezesha** ASLR, unaweza kuandika thamani ya **2** kwenye faili ya `/proc/sys/kernel/randomize_va_space`. Kawaida hii inahitaji mamlaka ya msingi. Kuwezesha ubadilishaji kamili wa random unaweza kufanywa kwa amri ifuatayo: ```bash echo 2 | sudo tee /proc/sys/kernel/randomize_va_space ``` ### **Uthabiti Kupitia Kuzimwa Upya** Mabadiliko yaliyofanywa kwa kutumia amri za `echo` ni ya muda na yatarejeshwa wakati wa kuzimwa upya. Ili kufanya mabadiliko yawe ya kudumu, unahitaji kuhariri faili ya `/etc/sysctl.conf` na kuongeza au kuhariri mstari ufuatao: ```tsconfig kernel.randomize_va_space=2 # Enable ASLR # or kernel.randomize_va_space=0 # Disable ASLR ``` Baada ya kuhariri `/etc/sysctl.conf`, tumia mabadiliko kwa: ```bash sudo sysctl -p ``` Hii itahakikisha mipangilio yako ya ASLR inabaki hata baada ya kuzimwa na kuzimwa upya. ## **Kupitisha 32bits ASLR** ### Kufanya nguvu kwa 32bit PaX inagawa nafasi ya anwani ya mchakato katika **makundi 3**: * **Msimbo na data** (iliyoanzishwa na isiyoanzishwa): `.text`, `.data`, na `.bss` —> **16 bits** ya entropy katika kifaa cha `delta_exec`. Kifaa hiki kinaanzishwa kwa nasibu kila mchakato na kuongezwa kwa anwani za awali. * **Kumbukumbu** iliyotengwa na `mmap()` na **maktaba zilizoshirikiwa** —> **16 bits**, inayoitwa `delta_mmap`. * **Mtungo** —> **24 bits**, inayoitwa `delta_stack`. Walakini, inatumia **bits 11** (kutoka kwa byte ya 10 hadi ya 20 pamoja), imepangwa kwa **16 bytes** —> Hii inasababisha **anwani halisi 524,288 za mtungo**. Data iliyotangulia ni kwa mifumo ya 32-bit na entropy iliyopunguzwa mwisho inawezesha kuvuka ASLR kwa kujaribu tena na tena hadi shambulio litakapokamilika kwa mafanikio. #### Mawazo ya nguvu: * Ikiwa shambulio ni la ndani, unaweza kujaribu kufanya nguvu kwa anwani ya msingi ya libc (yenye manufaa kwa mifumo ya 32bit): ```python for off in range(0xb7000000, 0xb8000000, 0x1000): ``` * Ikiwa unashambulia seva ya mbali, unaweza kujaribu **kuburuta anwani ya kazi ya `libc` ya `usleep`**, ukitoa kama hoja 10 (kwa mfano). Ikiwa kwa wakati fulani **seva inachukua sekunde 10 zaidi kujibu**, umepata anwani ya kazi hii. {% hint style="success" %} Katika mifumo ya 64bit entropy ni kubwa zaidi na hili halikubaliki. {% endhint %} ### Ret2ret Jaribu kukiuka ASLR kwa kutumia anwani ndani ya steki: {% content-ref url="../stack-overflow/ret2ret.md" %} [ret2ret.md](../stack-overflow/ret2ret.md) {% endcontent-ref %}