Exploit Nedir, Nasıl Kullanılır ? İşletim sistemlerin çok kullanıcılı sistemlerde kullanılmaya başlamasıyla birlikte sistemlerde kullanıcıların yetkisi de sözkonusu olmuştur. Kişisel işletim Sistemlerinde (örneğin DOS) sistemi aynı anda tek kullanıcı kullandığı için bütün dosyalara erişebilir, okuyabilir vs. Ancak aynı anda pek çok kişi tarafından kullanılan İşletim sistemlerinde sistemin bir yöneticisi olmak zorundadır ki bu Novell'de supervisor, Unix ve clone'larında root, NT'de administrator olarak adlandırılır. İşte bu çok kullanıcılı sistemlerde yetkisini artırmak isteyen normal kullanıcılar sistemde daha yetkili hale gelebilmek için "exploit" dediğimiz programlar yazmışlardır. Exploitler işletim sistemi üzerindeki herhangi bir programın eksikliğinden yararlanarak kullanıcıyı daha yetkili hale getirmeye yararlar. Exploitler local ve remote olarak ikiye ayrılır. Local exploitler işletim sisteminin bir kullanıcısıyken uygulanabilir, remote exploitlerde ise sistemin bir kullanıcısı olmanıza gerek yoktur. Sistem açıkları ve bu açıkları kullanmak için yazılmış exploitler günden güne artmakta ve her sistem açığı için patch'ler yazılmakta. Bazı İşletim Sistemleri için örnek exploitler: "overflow" exploiti (FreeBSD'de lprm açığı): Pointer artimetiğini kullanarak (Pointer değişkenler değişkenin içindeki bilgiyle birlikte bellek adresini de tutarlar) tampon belleğe (buffer) bir string kopyalayarak taşma oluşturur. Sistemdeki lprm komutunu kullanır. lprm komutu uzaktaki bir yazıcıya gönderilen bir işi iptal etmeye yarar. "lprm -P bloggs" komutuyla iş iptal edilebilirken kuyruktaki ikinci bir iş aynı anda "lprm -P bloggs bloggs" la iptal edilebilir. Bu da buffer owerflow hatası meydana getirir. Bu sayede "root" erişimi sağlanır. Lokal bir exploittir. Derleyici ve /tmp Hataları (Solaris'de gcc tempfile açığı): Gcc derleyicisinin 2.7.2.x ve önceki sürümlerinde /tmp dizinine (geçici işlemlerin yürütüldüğü dizin. Windows dizini altındaki temp dizini gibi) sembolik link (bir dosyaya ya da dizine ulaşabilmek için konan linkler. Windows'taki .lnk dosyaları gibi) oluşturulur ve bu linkten yararlanarak lokal root hakkı alınır. Program Hataları (Linux'daki X11Amp Programı açığı): X11Amp çalıştırıldığında ~./X11amp isminde bir dosya oluşturur. Bu hatayı linux'ta şöyle kullanabilirsiniz: mkdir ~/.x11amp ln -s /etc/shadow ~/.x11amp/ekl Bu komutları yazdıktan sonra X11Amp'i çalıştırıp "ekl" 'yi seçin bütün girişleri seçip silin. Program çakılacak ve /etc/shadow dosyasını alabileceksiniz. Microsoft'un FrontPage Server Extensions'unda karşılaşılan açıklar: Frontpage extensions'un kullanıldığı web sitelerinde pek çok açık bulmak mümkün, örneğin Frontpage 98'de dizin erişim hakları iyi düzenlenmediği için _vti_pvt dizini "WORLD WRITABLE" :) olarak düzenlenmiş. _vti_pvt dizininde ise "service.pwd" dosyasında şifreler tutulmakta ;) Daha sonraki yazılarımızda genellikle Microsoft altındaki exploitleri anlatmaya devam edeceğiz. Exploit Nedir, Nasıl Kullanılır (Bölüm II) (Düzenleyen Kaiowas) Bug Nedir? Bug ,kısaca bir işletim sistemi üzerinde bazı hatalı programlar yüzünden meydana gelen sistem açıklığıdır. Bu sistem üzerine kopyalanmış bir oyundan,bir mail programından yada sistem üzerinde ki IRC programından bile meydana gelebilir. Bu hatalar bizim sistem de r00t seviyesine çıkmamızı sağlarlar :-) Exploit Nedir? Exploitler , sistemde ki buglar sayesin de r00t seviyesine çıkabilmek için yazılmış programlardır. Exploitler iki şekilde yazılırlar.Local ve Remote.Local exploitleri kullanırken sistemin bir kullanıcısı olmak zorundasınızdır. Fakat remote exploitleri sistem de kaydınız yokken kullanabilirsiniz. Şimdi bu iki başlığı kavradıktan sonra ,olaya başlıyabiliriz. Gelin Exploit lerle gücümüzü gösterelim :-)) mount/umount açığından başlayabiliriz mesela, Sistemde /bin dizinine gidin ve umount yada mount isminde bir dosya arayın.. Eğer bulamadıysanız şu komutu yazabilirsiniz. find / -name umount -print -xdev Dosyanın nerde olduğunu bulduğunuzda, o dizine gidip dosyanın özelliklerini görmek için şu komutu yazın, ls -al um* Eğer dosyanın sahibi r00t sa ,kesinlikle sistemi kapabiliriz.. Bakalım, avanak:/bin# ls -al um* -rwsr-sr-x 1 root 8888 Aug 20 1998 umount avanak:/bin# Tamam , artık işler çok çok kolaylaştı. Şimdi işimiz bir exploit e kaldı. Vereceğim exploit sayesinde sistemden takır takır r00t alabileceksiniz :-) Exploit i Download etmek için buraya tık edin(umount.c). Bu exploit i ,sisteme yollayıp orada compile etmelisiniz. Bunu yapmak için şu komutu yazın. gcc umount.c -o umount (umount yerine istediğiniz ismi yazabilirsiniz) Gcc komutu sayesinde sistemde umount adında çalıştırılabilir bir dosya yaratıcaksınız.. Not : Eger Exploit çalışmazsa,komutun başına ./ takısını koymayı deneyin. Ve ardından 0 8 arası bir sayı ekleyin.Şunun gibi; ./umount 4 yada ./umount 2 Ve sistem elleriniz de ! Artık herşey size kalmış.r00t un neler yapabileceğini anlatmama gerek yok sanırım, +-+-+-+-+-+-+ Eğer bu yol işe yaramazsa(ki bu beni bayağı şaşırtır),şimdi anlatıcağım yolu denemeniz gerekicek. En sevdiğim Exploit bu diyebilirim. Çünkü en kolayı ve de şu ana kadar bana hiç sorun yüzü göstermedi. "usr/bin" dizininde splitvt isminde bir dosya arayın.Eğer dosya SUID ise yani sahibi r00t ise, olayı bitti sayabiliriz. Bu exploiti sadece "Linux 2-0.3*" sistemlerde kullanabilirsiniz.Download etmek için burayı tık edin.(sp.c) Bakalım bu şey nasıl çalışıyor? Dosyayı tabiki ilk olarak sisteme yollayın İlk önce değişikliği farketmeniz için "whoami" komutu ile kim olduğunuzu ögrenin.Kullanıcı isminiz ortaya çıkıcak, 1. Dosyayı "gcc" derleyicisi ile exec(çalıştırılabilir) hale getirin, (gcc sp.c sp) 2. Derlediğiniz dosyayı çalıştırın, 3. "splitvt" adlı dosyayı çalıştırın, İşiniz bittikten sonra yine "whoami" komutunu çalıştırın.O da ne? r00t da kim yahu? :-) +-+-+-+-+-+-+ Eheu, bu da çalışmadı diyelim( ki olamaz mümküniyet yok) Tüm Linux dağıtımlarında bulunan bir bug vardır. SendMail bug ı, eğer bugları takip ediyorsanız ,kesinlikle duymuş olmanız lazım. Ben uzun süredir bu bug la ilgilenmiyordum. Belki patch i bile çıkmıştır :( ..Ama denemek te zarar yok diyorsanız bu kısa exploit i hemen download edin(sm.sh) ..Sisteme yollayın, Şimdi dosyayı , chmod +x leyin. chmod +x sm.sh 1 . Dosyayı çalıştırın, 2 . Sizi /tmp dizinine göndericek, 3 . "ls -l" yazın, 4 . Orda SUID bir sh dosyayı olduğunu göreceksiniz, 5 . "whoami" yazıp r00t olup olmadığınıza bakın, eğer değilseniz, 6 . "./sh" yazın, ve şimdi r00t olduğunuzu görebiliceksiniz.. +-+-+-++-+-+-+ Biraz Linux u birakıp diğer sistemlere göz atalım.Şimdi dalıcağımız sistem bir SunOS.UnixBased bir sistem çok az farklılıkarı var.Mesela SunOS ta "gcc" komutu yerine "cc" komutu kullanılıyor.Fakat bunlara pek ihtiyacımız yok.Çünkü şimdi dalıcağımız sistem de exploit kullanmıyacağız.SunOS taki 3-4 tane bug tan bir tanesi "dtappgather" komutunun bir bug i. Ben daha önceden bunu bilmiyordum.Geçenlerde göz attığımız bir SunOS sistemde SegFault ,sayesinde öğrenmiş oldum.Fakat o sistemde çalışmadı.Neyse fazla söze gerek yok .Başlayalım, Sistemde "dtappgather" adında bir dosya bulunması lazım,bu genelde /var/dt de bulunuyor.Dosyayı buldunuzsa sorun kalmadı.Bu dosya varsa "generic" de vardır.Tamam şimdi /var/dt/appconfig dizinine girin. $ ls -al total 6 drwxr-xr-x 3 root root 512 Feb 3 14:22 . drwxr-xr-x 5 root root 512 Jun 22 11:08 .. drwxr-xr-x 4 root root 512 Jun 22 10:24 appmanager $ "generic" dosyası appmanager adlı dizinin içinde bulunuyor.Şimdi burda yazıcağımız tek bir komut /etc/shadow dizinindeki unshadowed passwd dosyasını ele geçirmemizi sağlayacak.Komut şu ; $ ln -s /etc/shadow /var/dt/appconfig/appmanager/generic-display-0 Bunu yazdıktan sonra elimize passwd dosyası geçiyor,artık onu bir Passwd Cracker la kırdıktan sonra elimize r00t un şifreside geçer.