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

6.3 KiB

ASLR

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

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:

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:

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

Jy kan ook ASLR uitskakel vir 'n uitvoering met:

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:

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:

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:

sudo sysctl -p

Dit sal verseker dat jou ASLR-instellings behoue bly oor herlaai.

Bypassing 32bits ASLR

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):
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 {% endcontent-ref %}

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: