6.6 KiB
ASLR
AWS hacklemeyi sıfırdan ileri seviyeye öğrenin htARTE (HackTricks AWS Red Team Expert) ile!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna katılın veya telegram grubuna katılın veya bizi Twitter'da 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
Temel Bilgiler
Adres Alanı Düzeni Rastgeleleştirme (ASLR), işletim sistemlerinde kullanılan bir güvenlik tekniğidir ve sistem ve uygulama süreçleri tarafından kullanılan bellek adreslerini rastgeleleştirir. Böyle yaparak, belirli süreçlerin ve verilerin konumunu, özellikle yığın, bellek havuzu ve kütüphaneleri tahmin etmeyi önemli ölçüde zorlaştırarak, belirli türde saldırıları, özellikle tampon taşmalarını hafifletir.
ASLR Durumunu Kontrol Etme
Linux sistemlerinde ASLR durumunu kontrol etmek için /proc/sys/kernel/randomize_va_space
dosyasından değeri okuyabilirsiniz. Bu dosyada saklanan değer, uygulanan ASLR türünü belirler:
- 0: Rastgeleleştirme yok. Her şey statiktir.
- 1: Muhafazakar rastgeleleştirme. Paylaşılan kütüphaneler, yığın, mmap(), VDSO sayfası rastgeleleştirilir.
- 2: Tam rastgeleleştirme. Muhafazakar rastgeleleştirme tarafından rastgeleleştirilen öğelerin yanı sıra
brk()
ile yönetilen bellek de rastgeleleştirilir.
ASLR durumunu aşağıdaki komutla kontrol edebilirsiniz:
bashCopy codecat /proc/sys/kernel/randomize_va_space
ASLR'nin Devre Dışı Bırakılması
ASLR'yi devre dışı bırakmak için /proc/sys/kernel/randomize_va_space
değerini 0 olarak ayarlarsınız. ASLR'nin devre dışı bırakılması genellikle test veya hata ayıklama senaryoları dışında önerilmez. İşte nasıl devre dışı bırakılacağı:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Ayrıca, bir yürütme için ASLR'yi devre dışı bırakabilirsiniz:
setarch `arch` -R ./bin args
setarch `uname -m` -R ./bin args
ASLR'ı Etkinleştirme
ASLR'ı etkinleştirmek için, /proc/sys/kernel/randomize_va_space
dosyasına 2 değeri yazabilirsiniz. Genellikle kök izinleri gerektirir. Tam rastgeleleştirme etkinleştirme aşağıdaki komutla yapılabilir:
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
Yeniden Başlatmalara Karşı Kalıcılık
echo
komutları ile yapılan değişiklikler geçicidir ve yeniden başlatıldığında sıfırlanacaktır. Değişikliği kalıcı hale getirmek için /etc/sysctl.conf
dosyasını düzenlemeniz ve aşağıdaki satırı eklemeniz veya değiştirmeniz gerekmektedir:
kernel.randomize_va_space=2 # Enable ASLR
# or
kernel.randomize_va_space=0 # Disable ASLR
/etc/sysctl.conf
dosyasını düzenledikten sonra değişiklikleri uygulamak için:
sudo sysctl -p
Bu, ASLR ayarlarınızın yeniden başlatmalar arasında kalmasını sağlayacaktır.
32 bit ASLR'yi Atlatma
32 bit kaba kuvvet saldırısı
PaX işlem adres alanını 3 gruba böler:
- Kod ve veri (başlatılmış ve başlatılmamış):
.text
,.data
ve.bss
—>delta_exec
değişkeninde 16 bit rastgele entropi. Bu değişken her işlemle rastgele başlatılır ve başlangıç adreslerine eklenir. mmap()
tarafından tahsis edilen bellek ve paylaşılan kütüphaneler —>delta_mmap
adında 16 bit.- Yığın —>
delta_stack
olarak 24 bit. Ancak, etkili olarak 11 bit kullanır (10. ile 20. bayt arasında dahil), 16 bayt'a hizalanmıştır —> Bu, 524,288 olası gerçek yığın adresine yol açar.
Önceki veriler 32 bit sistemler içindir ve azaltılmış son entropi, saldırı tamamlanana kadar işlemi tekrar tekrar deneyerek ASLR'yi atlamayı mümkün kılar.
Kaba kuvvet fikirleri:
- Saldırı yerel ise, libc'nin taban adresini kaba kuvvetle deneyebilirsiniz (32 bit sistemler için faydalıdır):
for off in range(0xb7000000, 0xb8000000, 0x1000):
- Uzak bir sunucuyu hedef alıyorsanız,
usleep
libc
fonksiyonunun adresini 10 (örneğin) olarak argüman geçerek burte-force yöntemiyle deneyebilirsiniz. Eğer sunucu cevap vermek için 10 saniye daha fazla zaman alıyorsa, bu fonksiyonun adresini buldunuz demektir.
{% hint style="success" %} 64 bit sistemlerde entropi çok daha yüksektir ve bu mümkün değildir. {% endhint %}
Ret2ret
Yığın içindeki adresleri istismar ederek ASLR'yi atlamayı deneyin:
{% content-ref url="../stack-overflow/ret2ret.md" %} ret2ret.md {% endcontent-ref %}
AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert)!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuzu
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @hacktricks_live'ı takip edin.
- Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.