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.
İş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.