Arabellek Taşması Saldırıları Nasıl Çalışır? Hacker Olarak Perde Arkasına Geçmek

Arabellek Taşması Saldırıları Nasıl Çalışır? Hacker Olarak Perde Arkasına Geçmek
Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma yaptığınızda, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Bilgisayar korsanları virüsleri ve kötü amaçlı yazılımları kullanarak sistemlere nasıl saldırır? Bazen fidye yazılımı olabilir; bazen sistem gereksinimlerinizi tüketen bir saldırı olabilir. Arabellek taşması, bu saldırı yöntemlerinden biridir, ancak gerçekte nedir? Bu saldırılar nasıl çalışır?





GÜNÜN MAKALE VİDEOSU İÇERİKLE DEVAM ETMEK İÇİN KAYDIRIN

Arabellek Taşması Nedir?

Peki gerçekte bir arabellek ve yığın nedir? Buffer, bilgisayarınıza verdiğiniz bazı giriş bilgilerinin belleğe ulaşmadan önce beklediği bir alandır. Verileri bellekten geri çağırmak, sistemi yoran bir işlemdir. Yani arabellek alanında yeterli alan olduğunda, verileri doğrudan buradan çağırırsınız. Bu, cihazınız için bir performans artışı anlamına gelir. Tabii arabellek için mevcut alan dolduğunda, onu belleğe yazmak gerekli hale gelir.





Yığın, temelde veri itme (ekleme) ve pop (kaldırma) işlemlerinin gerçekleştiği bir veri yapısıdır. Tampon ve yığın kavramları oldukça benzerdir; ancak arabellek, gelen verileri geçici olarak depolayan bir yığın gibi çalışır.





Arabellek taşmaları zorlu bir konu olabilir, ancak adından da anlaşılacağı gibi aşırı veri yüklemesi olduğunda ortaya çıkar. Örneğin bir sisteme giriş yapmak istiyorsunuz. Geliştiriciler, kullanıcı adı için 250 baytlık bir alan ayırabilir. 300 bayt veri girerseniz arabellek taşar. Bu taşma, bellekteki diğer verileri etkileyerek zarar verebilir.

Bu, bilgisayar korsanları için harikadır. Siber suçlular, örneğin sistemi hacklemek ve yönetici olarak oturum açmak için bu karışıklığı farklı saldırı vektörleriyle birleştirebilir.



Arabellek taşmasını anlamak için, tanımanız gereken ana konular şunlar olacaktır: CPU'nun dahili mimarisi , bellek kayıtları ve belleğin verileri nasıl işlediği. İşte CPU hakkında bilmeniz gereken bazı terimler.





chrome'un daha az bellek kullanmasını nasıl sağlayabilirim?

Montaj Kodu





Düşük seviyeli bir programlama dili , yani makine diline yakın.

Tampon

Sabit bir boyut ayrılmış hafıza alanı .

Bayt Kodu

Üst düzey bir dilde yazılmış, derlenebilir bir ara dil kod biçimi.

Derleyici

Programlama dilini makine koduna çeviren program.

Yığın

Dinamik, değişken bellek alanı.

Bellek Teorisinin Temelleri

Bellek teorisini anlamadan, pratikte arabellek taşması sorunlarını ele almak zor olabilir. Duvar yapmayı bilmeden ev yapmaya çalışmak gibi düşünebilirsiniz.

Bilgisayar korsanının bakış açısından bir arabellek taşması çalıştırmak istediğinizi hayal edin. Bunun için belleği değiştirmeniz ve CPU'nun kodunuzu yürütmesini sağlamanız gerekir. Kötü niyetli biri olsaydınız, buradaki amacınız hafızayı aşırı yüklemek ve bitişik hafıza alanlarını da manipüle etmek olurdu.

  Aşağı doğru büyüyen yığını ve büyüyen yığını gösteren diyagram

Ama her şeyden önce yığın, yığın ve metin segmenti kavramlarına odaklanmanız gerekir.

Yığın oluşturulurken bellek, yüksek bellek adresleri kullanır. Yüksek bellek adresleri, genişletilmiş bellek alanı anlamına gelir. Daha sonra adres değerleri düşmeye başlar. Bellek yığını, bellek kullanımı sırasında LIFO (Son Giren İlk Çıkar) adı verilen bir yöntem kullanır. Yığın bellekteki değişkenler, yalnızca tanımlandıkları kapsamda geçerlidir. Bu kapsamın dışındaysa, bir hata oluşur.

Yığın bellek ise dinamik olarak çalışır ve yüksek adreslerden başlamak zorunda değildir. Yığın bellekte belirlenmiş bir sınır yoktur; tüm limitler işletim sistemi tarafından belirlenir. Heap hafızasını dinamik olarak değiştirmek mümkündür ve bu limitler heap kullanımı sırasında kullanıcının ihtiyacına göre değişebilir. Yığın belleğin sınırları, işletim sistemi ve donanım tarafından belirlenen faktörlere bağlıdır. Yani bu sınırlar içinde dinamik bir kullanım sunuyor.

Metin bölümü program kodunu içerir ve veri bölümleri genel verileri içerir. Yüksek adres paylaşımı yığın ve yığın bellek kendi aralarında Sistem çalışma zamanında her iki belleği de ayırır.

Arabellek taşmasını daha iyi anlamak için, bilgisayar mimarinizin veri depolamak için kullandığı genel amaçlı veri kayıtlarını incelemelisiniz. Her bir kaydı ayrı ayrı analiz etmek yerine, esaslara odaklanın.

  • ESP (Genişletilmiş Yığın İşaretçisi): Bu kayıt, adresi yığının en üstünde tutar.
  • EBP (Genişletilmiş Temel İşaretçi): Bu, temel işaretçiyi tutar.
  • EIP (Genişletilmiş Yönerge İşaretçisi): Ve bu kayıt, yürütülecek bir sonraki talimatın adresini tutar.

Bu teknik terimler biraz kafa karıştırıcı gelebilir, ancak hepsini bellekteki küçük bölümler olarak düşünün.

Arabellek Taşması Saldırıları Nasıl Çalışır?

Herhangi bir yığına yeni veri eklediğinizde, bu veri en üstte yer alacaktır. Tüm yeni veriler daha sonra aşağı taşınır. ESP, yığının en üstündedir. Yani bu durumda ESP daha düşük bir hafıza adresine gider. Yukarıda eklenen verilerin ESP'yi aşağı ittiğini hayal edin.

  ESP ve EBP arasında bir yerde olan arabellek alanını gösteren diyagram

Bir program çalışmaya başladığında, sistem yerel değişkenlerle bir yığın çerçeve oluşturur. Bir arabellek taşması saldırısının temel amacı, EIP'ye veya dönüş adresine erişim sağlamaktır. Bu adrese erişimi olan bir bilgisayar korsanı, ona istediği herhangi bir kötü amaçlı kodu işaret etmesi için komut verebilir ve bu da daha sonra daha geniş sistemi etkiler.

  İade Adresini hedefleyen ESP'deki verileri gösteren bir diyagram

Her yeni veri bitiyle, yığın EBP'ye doğru büyür. Buradaki asıl soru, çok fazla veri girersek EBP'yi EIP'ye doğru itebilir miyiz? Böylece istediğiniz veri veya kod EIP'de bulunur ve istediğiniz sonuçları görebilirsiniz. Geriye sadece onu çalıştırmak kalıyor. Programı çalıştırdığınızda, EIP kodunuza işaret eder ve yürütmeye başlar. Sonuç olarak, bir bilgisayar korsanıysanız, ilk arabellek taşması saldırınızı gerçekleştirmiş olacaksınız.

Örneği farklı bir açıdan ele almak gerekirse, bir kapta ESP, EBP ve EIP adı verilen farklı yoğunluktaki sıvıları düşünebilirsiniz. Yoğunluğu daha düşük olduğu için ESP'nin kabın üst kısmında bulunduğunu hayal edin. Tıpkı zeytinyağı ve su gibi birbirine karışmamalı. O halde kötü amaçlı kod başka bir sıvıdır; kaba eklediğinizde bu dengeyi bozar, bir miktar sıvının yerini alır ve EIP ile karışır. Bu, arabellek taşmasını gösterecektir.

Arabellek Taşması Saldırılarına Karşı Nasıl Korunulur?

Peki bunun olmasını nasıl engellersiniz?

İlk olarak, güvenlik açıklarını en aza indirmek için yazılım geliştirme süreci boyunca iyi kodlama uygulamalarını benimsemek önemlidir. Dikkatle yazılmış kod, arabellek taşma olasılığını azaltabilir.

Diğer bir adım, bellek bölgelerinin izlenmesine, arabellek sınırlarının kontrol edilmesine ve saldırıların tespit edilmesine izin veren savunma mekanizmalarını kullanmaktır. Son olarak, sistemleri düzenli olarak güncellemeniz ve yamaları uygulamanız gerekir. Güvenlik açıklarını gideren güncellemeler, saldırganların bilinen güvenlik açıklarından yararlanmasını zorlaştırır. Ayrıca yazılım ve güvenlik duvarı gibi savunma araçlarını kullanmak ek bir güvenlik katmanı sağlar.

Arabellek Taşmalarına Karşı Önlem Alın

Arabellek taşması saldırıları, siber güvenliğiniz için önemli bir tehdit oluşturur ve bunlara karşı önlem almak doğal olarak önemlidir. Neyse ki bu saldırıları engellemek ve savunma mekanizmalarını güçlendirmek mümkün. Yamaları düzeltmek için yazılımı güncel tutmak gibi birçok iyi güvenlik uygulaması, diğer güvenlik açıklarının yanı sıra bu tür saldırılara karşı korunmaya yardımcı olur.