Exploit Nedir, Nasıl Kullanılır ?

advertisement
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.
Download