folder Tahribat.com Forumları
linefolder Bilişim Güvenliği
linefolder [Beyaz Tahribat] Tampon Bellek Taşması



[Beyaz Tahribat] Tampon Bellek Taşması

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek
    Beyaz tahribat projesi için zumsuk tarafından yazılmıştır alıntı yaparken belirtiniz.

    Biliyorum biraz uzun oldu ama bir çok dökümanı birleştirip yorum katmak biraz zor oldu yazarken kollarım kptu ama emeğime deyecek umarım.Lütfen okuyunuz gerçekten değerli bilgidir.

    Yazılım firmaları geliştirdikleri ürünü ilan edeilen tarihe yetiştirmek içn uğraşırlar.Bu yüzden çok çalışırlar.Biraz daha özellik ve gösterişli yaparken bazı şeyler gözden kaçar.Bunların başında hata kontrolünün uygulanamaması vardır.Hata kontrolu programın verilen herhangi bir girişe karşılık vediği sonuçları görmek için kullanılır.

    Örneğin string olarak girilmesi gereken girişe string olmayan bir değer girildiğinde sonuca bakılır.Normalde uyarı vermesi gerekir ancak uyarı vermeden çalışmaya devam ederse sorun var demektir.Tampon belleğinin taşması (buffer overflow) olayı bu temele dayanır.Aceleyle yada zayıf bir kodla yazılmış uygulamalarda güvenlik açığı bulunur.

    Mesela programda 5 karakter girilmesi gerekir ancak 10 karakter girilince program bunu yürütemez ve kendi belleği üzeirne yazmaya başlar.Küçük bir koliye büyük miktarda yük koymak gibidir.Öcelikle bir kaç temel konulara bakalım

    YIGIN

    Yığın çalışan bir bilgisayardaki işlemler için öncemli bilgiler tutan bir veri parçasıdır.Sistem kendisi için önemli olan küçük bilgileri yazar ve bunları belleğin özel bir alanı olan yığında saklar.Bir programdaki fonksiyon çağrıları ile ilgili bilgiler yığınlarda bulunur.

    Bu işlemi üst üste konulan jenga oyunu gibi düşünün ama tek sıra tekr teker koyuyoruz.En üstteki parça son koyduğumuzdur.En alttaki ise ilk koyduğumuz.Yığından parça almak için en son koyduğumuzdan başlayarak alta doğru ineriz.

    Bu olay modern işlemcili bilgisayarlarında son giren ilk çıkar diye bilinen lastin first out yani lifo yontemidir.Bilgisayar yığına bişeyler ekleyip çıkarırken lifo yu kullanır.Yığının üst limiti arttıkça yığın alanı büyür.İşlemci psuh komutuyla yığına veri koyar pop komutuyla yığından veri alır.

    TAMPON BELLEK

    tampon belleğin ne demek olduğunu en iyi programcıla rbilecektir.Mesela c programlama dilinden array lar tompan belleklerde saklanır.Tampon bellek genel olarak arka arkaya gelen veri tiplerini(dize yani array) saklamak için kullanılan bellek parçasıdır.Dizinleri dinamik değişkenleri programın çalışması esnasında (run time) yığında oluşturulur ve yine burada yok dilir.Statik değişkenler ise programı yükleme zamanında (load time) data segmenti olarak bilinen kısımlara yerleştirir.Bir program yüklerken ileri ileri dediğiniz zamandan önce bir şeyler kurulur.Bunlar data segmentine yerleştirlir.

    PROSESLER

    Bir proses 3 segmentte çalışmaya başlar

    *kod
    *data
    *yığın

    kod segmenti programın kodlarını yani programın talimatlar dizesini içerir salt okunur durumdadır ve programdaki tüm prosesler tarafından paylaşılır.Sonraki segment olan data segmentinde tanımlanmış veya tanımlanmamaış veriler bulnur.Yığın segmentinde ise dinamik değişkenler, fonksiyon çağrılarının geri dönüş adresleri saklanır.

    PRgoramlar çalışırken kendilerine verilen cpu talimatlarını sırasıyla yerine getirirler.Cpular bu amaçla eip diye bilinen çalıştırılacak kodun adresini gösteren yazmaçlar kullanır.Eip programın çalışmasını kontrol eder ve onda çaışmakta olan programın hangi adreste olduğnu komutun başlangc noktasından itibaren belirtir.Bir fonksiyon çağrıldığında o noktaya sıçrar.Önemli olan diğer ESP be EBP denilen 2 cpu yazmacısı daha vardır.esp o andaki yığın pozisyonunu gösterir ve push pop komutlarını kullanır.EBP ise fonksiyon çalıştığı müddetçe sabit kalır referans gibidir.

    Bir örnek;

    void ornek(void){
    char buffer1[8];
    return;
    }
    main(){
    ornek();
    }

    Bu c programlama dili aslında birşy yapmıyor ancak nasıl çalıştığı önemli.Burda örnek isminde bir fonksiyon oluşturuluyor ve daha sonra bu fonksiyon ana fonksiyon olan main tarafından çağrılıyor.Şimdi programın nasıl çalıştığına bakalım.Programın çalışmaya başladığında ilk olaran main çalışıyor main fonksiyonu ornek fonksiyonunu çağırıyor.Bu aşamada prgoramn tarafından yapılan tüm işlemler main fonksiyonundan ornek fonksiyonuna geçiyor.Ancak ornek fonk. çalışması bittikten sonra programın kaldığı yerde bitmesi gerekir.Çünkü programın akışına devam edilebilmesi içn main fonksiyonuna tekrar donulmelidir.

    İşte bu noktada eğer fonksiyonda argüman kullanuışmışsa ilk olarak bunlar yığına konur.Eip işlemcinin hangi talimatı çalıştıracağını belirtir bir fonksiyon çağrıldığında ilgili değere sıçrama yapar.Ancak fonk. çağrısı yapılınca sistmein main fonksiyonundaki eip değerini unutmamak için bunu kaydetmesi gerekir.İşte bu değer yığına geri dönüş adresi olarak kopyalanır.

    Hacker olarak bu olaya bakarsak geri dönüş adresini bilebilirsek bunu değiştirebilirsek kendi kodları yerine bizim belirttiğimiz kodları çalıştımasını sağlaroz.Bu nedenle geri dönüş noktası tampon bellek taşmasında önemli bir yere sahip.Ayrıca crack mantığıda budur.

    Programın nasıl çalıştığına geri dönelim.Geri dönüş adresi kopyalandıktan sonra fonksiyondan çıkıldığında tekrar yerine konulabilmesi için ebp değeri kaydedilive esp ebpye kopyalanır.Böylece ebpnin yığınının üstünü görmesi sağlanır.Bu işlemin amacı her fonksiyonun kendi yığınını kullanmasını sağlamaktır.Son olarak da fonksiyonun tuttuğu lokal değişkenler yığında bir yer ayırır.

    TAMPON BELLEK TAŞMASI NASIL GERÇEKLEŞİR
    Smashing the stack for fun and profit adlı makale ile bu tekniğin popülerleşmesini sağlayan aleph1 konu;

    void ornek(char*str){
    char buffer[16];
    strcpy(buffer,str);
    }
    void main(){
    char large_string[256];
    int i;
    for( i = 0;i < 255;i++
    large_string = 'A';
    ornek(large_string);
    }

    Burda görüldüğü gibi ana fonksiyon main içinde large_string değişkeni için 256 karakter ayrılmış.Daha sonra large_String değişkenine 255 kere A harfi veriliyor ve daha sonra da ornek isimli fonksiyona atanıyor.Oysa ornek fonksiyonunda sadece 16 karakterlik yer ayrılmış.Buna ramen strvpy ile *str nin içeriği stringde boş bir karakter görene kadar buffer []'a kopyalanıyor.Aslında yapılan küçük bir alana büyük miktarda veri sığdırmaya çalışmaktı.Bu durumda kpylanamak istenen A lar küçük bir alana sığmayacağından geri dönüş adreside bu A lar ile dolacaktır.Program çalışmayı bitirdiğinde sıradaki çalıştırılacak talimat için geri dönüş adresine bakacak.Ancak burda a ların binary karşılığını görecektir.Dolayısıyla işlem yürütemeyecek segmentation faul hatasını verecektir.

    PEKİ AHCKERLAR NASIL KULLANIR?

    Geri dönüş adreesini alar ile doldurarak programın çökmesini sağlamak hacker için yeterli olmayacaktır.Bunun yerine geri dönüş adresini kendi kodlarını çalıştıracak şekilde değiştirse bu durumda daha büyük bir fırsat yakalamış oalcaklardır.Bu amaçla lowlebel olarak bilinen makina dili komutlarından oluşan ve yeni bir geri dçnüş adresini programa enjekte ederler.Bu yeni adres sayesinde programa yerleştirdikleir kodların adreslerini göstererek onların çalıştırılmasını sağlarlar.Mesela unix e yapılacak en iyi iş bir kabuk çalıştırmakdır bu sayede her istediği komutu yazabilir.Widnws ta ise bu iş dll dosyaları üzerinden yapılır.

    Tampon belleğini taşırma olayı adım adım yapılmayacak kadar zor,zahmetli ve uzun iştir.İnternette bu iş için çok sayıda program vardır.Üstelik hackerın yada bunu kullanan kişinin yukarda anlatılan karmaşık olayları bilmesine gerek yoktur.Ancak esas hacker bunları bilir lamer olanlar ise sadece programları kullanır bu yüzden diyorum sistemi bilmeden sızamassınd iye sızarsanda işine pek yaramaz gelişemessin.

    Programları kullanıp bilmeyenler genelde lamerlerdir.PRogramdaki güvenlik açığı uzun ve sabırlı bir çalışmanın ardından ortaya çıkarılmıştır.Lamerlerin yağtığı sadece ilgili güvenlik açığı ile ilgili bir kodu internetten bulup hedefe saldırmak.

    Bir çok lamer günümüzde bu olayı farklı yolla yapıyor exploitler ile binlerce site hackleniyor ama ne bir açık bulabiliyorlar nede kendileri exploit yapabiliyor.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurk
    nurk's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 15/Eylül/2006
    Erkek
    kaynak için saol zumsuk
    forever beyaz tbt kampanyası:P:P

    [22817//kaanabak]
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek
    estafurulla devamı gelecek ne cevher dokumanlar var ama oturupta içlenrinden seçip karıştırıp bişeyler eklemem lazım birazcık ellerim ağrıyor yavaş yavaş olacak forumsörce beyaz tahrbiat yazacaksın abow bi bakacan mayax dökümanlar :) yakında...
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ir2
    ir2's avatar
    Bilgi/Destek Madalyası Developer Madalyası
    Kayıt Tarihi: 10/Mayıs/2003
    Erkek
    süper döküman olmuş hocam advanced seviye hackingin giriş seviyesi bu dökümandır
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek
    saolasın ir2 yavaş yavaş hem sistem hemde hacking türüne yoğunlaştım bu tür dökümanlar eklemeye çalışıcam.Biraz kısa gibi ama inanır mısın tam 1 saatimi aldı.

    Çok yararlı güzel bişey çıktığına inanıyorum ancak oturup okyacak adam sayısı kaçtır merak ediyorum.Umarım bir çok kişi okur ve bir çok olay hakkında bilgisi az biraz olur.Çünkü içinde işlemci, prgoramlama, crack bir dolu şeyin basit temel açıklaması var.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Martech
    Martech's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek
    Helal Olsun Klavye Tuşlarına Saqlık..
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek
    clake dökümanları okuyan olduktan sonra ben var gücümle yazarım.Bilgi güçtür paylaştıkça güçlenirsin :)Yani beyaz tahribat projesi sürdüğü halde dökümanlar daha hızlı birşekilde gelecektir.

    http://beyaztahribat.sitemynet.com/index.htm

    Beyaz tahribatın amacı ne vs.. yazdım kısaca merak edenler en kısa şekli.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ~$
    ComputerWolf
    ComputerWolf's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 26/Mart/2003
    Erkek
    duygulandim BOFE :=) aleph :D:D anlayan anliyor :P

    Hep denedin. Hep yenildin. Olsun yine dene , yine yenil ama daha iyi yenil !
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tagext
    tagext's avatar
    Üstün Hizmet Madalyası Başarı Madalyası
    Kayıt Tarihi: 25/Temmuz/2002
    Erkek
    bir programı çalıştırdığınız da programın nerede biteceğini bilemezsiniz. dolayısıyle bitiş noktası başlangıç adresindan sonrasına yazılır. program bittiğinde bu adrese yönlendirilir ve kapanma süreci başlar. dediğin gibi burda 3 karakterlik yere 5 karakterlik sonuc yazman taşmaya sebep olur. ama memory de hangi adrese gideceği önemli. eğer memory de farklı bir adrese taşma yapabilirsen bu işletim sistemini dağıtabilmek anlamına gelir. çünkü memoryden en son yönlendirilen adres kapanış rutini sanıldığından ordaki kod her halükarda çalıştırılmak zorundadır. işte oraya virüsünüzün yada exploitinizin kodunu döşeyebilirseniz. meydan size kalmıştır.
    minimum taşma maximum koruma için www.openbsd.org

    ftw
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    gencprens
    gencprens's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    güzel paylaşım ellerine sağlıkk :)

    Dünya hayatı kırlmaya mahkum şişeler hükmündedir...
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek
    bir programı çalıştırdığınız da programın nerede biteceğini bilemezsiniz. dolayısıyle bitiş noktası başlangıç adresindan sonrasına yazılır. program bittiğinde bu adrese yönlendirilir ve kapanma süreci başlar.
    ---------------------------------------------
    Hoca programın bitiş noktası derken neyi kasdettin :S Program akışı giriş noktasıyla başlıyor.Bitirilmesi gereken noktalarda -bunların yeri belli- exitprocess e zıplanıyor.

    λ
Toplam Hit: 15424 Toplam Mesaj: 19