Shellcode, bir sistemde kontrol elde edildikten sonra ne yapılacağını belirleyen, düşük seviyeli makine kodlarından oluşan küçük ve etkili bir koddur. Genellikle saldırganın hedef sistemde bir komut satırı (shell) başlatmasını sağlar. Ancak sadece shell açmakla kalmaz; dosya yazabilir, bağlantı kurabilir veya başka bir payload tetikleyebilir.
Ben bu konuda çalışırken özellikle şunu fark ettim: Shellcode aslında sistemin çalışma yapısını kavramakla başlıyor. Hangi syscall'lar nasıl çağrılıyor, bellek nasıl işleniyor gibi detayları bilmeden, shellcode yazmak mümkün değil.
Benim Dikkat Ettiğim Bazı Noktalar:
\x00 gibi null karakterlerden uzak durmak çok önemli. Çünkü bu karakter, C gibi dillerde string'in sonu anlamına gelir.
Kod her adreste çalışabilecek şekilde yazılmalı, yani position-independent olmalı.
Sistem çağrılarının doğru sıralandığından ve gerekli register'ların hazırlandığından emin olmak gerekiyor.
Şunu net bir şekilde söyleyebilirim: Eğer sistemi alt seviyede anlamıyorsan, savunmanı da sağlam kuramazsın.
Ben bu konuda çalışırken özellikle şunu fark ettim: Shellcode aslında sistemin çalışma yapısını kavramakla başlıyor. Hangi syscall'lar nasıl çağrılıyor, bellek nasıl işleniyor gibi detayları bilmeden, shellcode yazmak mümkün değil.
Benim Dikkat Ettiğim Bazı Noktalar:
\x00 gibi null karakterlerden uzak durmak çok önemli. Çünkü bu karakter, C gibi dillerde string'in sonu anlamına gelir.
Kod her adreste çalışabilecek şekilde yazılmalı, yani position-independent olmalı.
Sistem çağrılarının doğru sıralandığından ve gerekli register'ların hazırlandığından emin olmak gerekiyor.
Şunu net bir şekilde söyleyebilirim: Eğer sistemi alt seviyede anlamıyorsan, savunmanı da sağlam kuramazsın.

