AWS Hacking'ı öğrenin ve uygulayın: <imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
GCP Hacking'i öğrenin ve uygulayın: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* [**Abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarını paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
Linux'ta bir programı çalıştırmak için bir dosya olarak var olmalı, dosya sistemi hiyerarşisi üzerinden bir şekilde erişilebilir olmalıdır (bu sadece `execve()`'nin nasıl çalıştığını gösterir). Bu dosya diskte veya bellekte (tmpfs, memfd) bulunabilir ancak bir dosya yolu gereklidir. Bu, Linux sistemlerinde çalıştırılan şeyi kontrol etmeyi çok kolay hale getirmiştir, tehditleri ve saldırganın araçlarını tespit etmeyi veya onların hiçbir şeyini çalıştırmalarını engellemeyi kolaylaştırır (_ör._ ayrıcalıklı olmayan kullanıcıların herhangi bir yürütülebilir dosyayı herhangi bir yere yerleştirmelerine izin vermemek).
Son betik, çalışması için aşağıdaki araçlara bağlıdır, saldırdığınız sistemde erişilebilir olmaları gerekir (varsayılan olarak hepsini her yerde bulabilirsiniz):
Eğer bir işlemin belleğini keyfi olarak değiştirebiliyorsanız, onu ele geçirebilirsiniz. Bu, zaten var olan bir işlemi ele geçirip başka bir programla değiştirmek için kullanılabilir. Bunu ya `ptrace()` sistem çağrısını kullanarak (ki bunun için sistem çağrılarını yürütme yeteneğine veya sistemde gdb'nin bulunmasına ihtiyacınız vardır) ya da daha ilginç bir şekilde `/proc/$pid/mem` dosyasına yazarak başarabiliriz.
`/proc/$pid/mem` dosyası, bir işlemin tüm adres alanının (_ör._ x86-64'te `0x0000000000000000` ile `0x7ffffffffffff000` arasından) birbirine eşlenmiş bir görüntüsüdür. Bu, bu dosyadan bir ofset `x`'ten okuma veya yazma işlemi yapmanın, sanal adres `x`'teki içeriği okuma veya değiştirme işlemi yapmakla aynı olduğu anlamına gelir.
* Çoğu kabuk yorumlayıcısı, çocuk işlemler tarafından devralınacak dosya tanımlayıcılarının oluşturulmasına izin verir. Yazma izinlerine sahip olan kabuk dosyasına işaret eden bir fd oluşturabiliriz... böylece bu fd'yi kullanan çocuk işlemleri kabuğun belleğini değiştirebilecektir.
* ASLR bile bir sorun değil, programın adres alanı hakkında bilgi edinmek için kabuğun `maps` dosyasını veya procfs'ten başka herhangi bir dosyayı kontrol edebiliriz.
* Bu nedenle dosya üzerinde `lseek()` yapmamız gerekiyor. Kabuktan bu yapılamaz, ancak ünlü `dd` kullanılarak yapılabilir.
* Çalıştırmak istediğimiz ikili dosyayı ve yükleyiciyi ayrıştırarak ihtiyaç duydukları eşlemeleri bulun. Daha sonra, her `execve()` çağrısında çekirdeğin yaptığı genel olarak aynı adımları gerçekleştirecek bir "kabuk" kodu oluşturun:
`dd`'ye alternatif olarak birkaç seçenek bulunmaktadır, bunlardan biri olan `tail`, şu anda `mem` dosyası üzerinde `lseek()` yapmak için varsayılan olarak kullanılan programdır (`dd` kullanmanın tek amacı buydu). Söz konusu alternatifler şunlardır:
AWS Hacking'ı öğrenin ve uygulayın:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
GCP Hacking'ı öğrenin ve uygulayın: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* [**Abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarını paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.