Kategoriler
Linux Metasploit Siber Güvenlik

Metasploit’e Giriş ve Temel Kavramlar

Metasploit, içinde binden fazla exploit bulunan popüler bir pentest aracıdır. Onu bu kadar popüler yapan şey, içindeki exploitlerin, yalnızca belirli parametreler girilerek kullanıma hazır hale gelmesi.  Exploit, metasploit için kodlanmışsa bu exploit metasploit ile kullanılabilir ve geliştirilebilir. Ancak esas mesele saldırı değil. Bilgi toplama ve farklı alanlarda da metasploit işimize çok yarayabiliyor. Bunu da detaylıca yazacağız. İyisi mi, biz exploit nedir, metasploitin işimize yaradığı diğer alanlar neler ve nasıl kullanacağız sırası ile gidelim. 

Exploit Nedir?

Exploit kelime anlamı olarak sömürmek anlamına gelir. Siber güvenlik dünyasında da karşılığı bu zaten. Mevcut bir zafiyeti kullanmak, sistemi bu zafiyet sayesinde ele geçirmek için yazılan kod parçacıklarına exploit diyoruz. C, python, perl, ruby gibi dillerle yazılmış olabilir. Exploit-DB üzerinden birçok exploite ulaşmak mümkün. Elbette farklı kaynaklar da var. Bazı kaynaklarda ücretli exploitler de bulunmakta(Bknz. 0-Day Today). Peki biz hangisini kullanacağımızı nereden bileceğiz? Girmek istediğimiz sistemde çalışan servisleri ve onların versiyonlarını tespit ettikten sonra ona uygun exploit araştıracağız. Bunu Detaylı NMAP Kullanımı yazımda anlatmıştım isterseniz onu da şöyle bir okuyun. Exploitlerin de kendi içinde gruplandığını söylemek mümkün.

Remote Exploits: Remote, kelime anlamı olarak uzak demektir. Haliyle ne işe yaradığı aslında ortada. Uzak sistemlere yapılacak olan saldırılarda kullandığımız exploitlerin toplandığı başlıktır.

Local Exploits: Local kelimesi ise yerel anlamına gelir. Yani direk sistemin kendisinde çalışacak olan exploitlerdir. Bunu genelde, sisteme girdikten sonra hak yükseltmek, root olmak amacıyla kullanırız.

Zero Day Exploits: En eğlenceli exploitler. Eğer exploit kavramını duydunuzsa muhtemelen arkasından bu kavramı da duymuşsunuzdur. Bunlar henüz keşfedilmemiş, sistemde zafiyet bulunduğu anda o zafiyeti sömürmek maksadıyla yazılmış exploitlerdir. Haliyle ne sistem sahibi ne de söz konusu bir servis durumun farkındadır. Açık ortamda paylaşılması halinde hızlı biçimde yayılacaktır.

Exploit meselesi tamam. Teorik taraf yeni başladığınızı varsayarsak sizin işinize yarayacaktır. Ancak birkaç kavramdan daha bahsetmek gerek. Onları da aşağıda listeleyeyim.

Payload: Payloadlar, metasploit içinde bulunur. Kullanmak istediğiniz exploiti seçtikten sonra exploite uygun bir payload seçmeniz gerekmekte. Exploit çalıştıktan sonra devreye payload girecek. Tamam da ben exploitimi belirledikten sonra ona uygun payloadları nereden bilebilirim ki? Şu şekilde:

msf exploit(ms08_067_netapi) > show payloads
Compatible Payloads
===================
...

Listelenecek olan payloadlar, elinizdeki exploitlere uygun olacaktır. Amacınıza göre tercihiniz değişecektir. Peki seçimi nasıl yapacağım?

msf exploit(ms08_067_netapi) > set PAYLOAD windows/shell_reverse_tcp
PAYLOAD => windows/shell_reverse_tcp

Payload meselesi de şimdilik tamam. Ancak pratik bir meseleden bahsetmediğimizin farkındayım. Tüm bunların uygulamalarını da anlatacağız daha sonra. Önce bu kavramları bir anlatalım.

Auxiliary Nedir?

Auxiliary bilgi toplama aşamasında işimize yarar. Metasploitte bir servis arattığınızda muhtemelen auxiliary seçeneklerine denk gelirsiniz. Bilgi toplama derken neden bahsediyoruz? Bunu da birçok başlıkta incelemek gerekiyor. Auxiliary çeşitleri aşağıda mevcut. Biz birkaçını inceleyeceğiz. 

admin dos server
analyze fuzzers sniffer
bnat gather spoof
client parser sqli
crawler pdf voip
docx scanner vsploit

Scanner: Port tarama, zafiyeti sömürmeden önce bulunup bulunmadığını test etme, keşif gibi noktalarda tercih edilir.

Admin: Genellikle admin bilgilerini bilmediğiniz sistemlere, admin yetkisi ile giriş yapmanızı sağlarlar. Ancak versiyon bilgilerini öğrenmek gibi farklı amaçları da olabilir.

Fuzzers: Sisteme rastgele sorgular göndererek farklı cevaplar alınır. Sistemin çökmesi halinde de tepkilerini izler. Çok sık kullanılmayan auxiliary çeşitlerindendir. 

Dos: Adından da anlaşılacağı üzere Denial of Services saldırıları için kullanılır.

Gather: Metasploit üzerinde bulunan dedektif auxiliarylerimiz… Kendileri e-mail, kullanıcı adı ve dbs gibi bilgileri toplar.

Brute force: Yine anlaşılacağı üzere kaba kuvvet saldırılarında kullanılır. Yetkili girişini deneme yanılma yolu ile tespit etmeyi amaçlar.

Genel Exploit Kullanımı

Peki tüm bunlar tamam. Örnek bir kullanım da gösterelim yazımız öyle bitsin. Öncelikle uygun exploiti seçmek için servis adı ile (veya neye ihtiyacınız varsa) arama yapıyorum. Bunun için search komutunu kullanacağız.

Openssh’a yönelik exploitler listelendi. İsimleri, eklendiği tarih ve açıklamaları gibi bilgiler listeleniyor. Burada seçerken açıklamaya bakıp bizim karşımızdaki sisteme uygun olup olmadığını, tarihe bakıp güncel olup olmadığını veya rank kısmına bakıp ne kadar başarılı olduğunu tahmin etmek mümkün. Tercihleri de hiç bilmiyorsanız buna göre yapabilirsiniz. Ancak ilerledikçe sistemlerde hangi exploitin çalışacağını az çok tahmin eder duruma geleceksiniz bunlara gerek duymadan.

Daha sonra hangi exploiti kullanacağımızı use komutu ile seçiyoruz.

Exploiti seçtiğimiz anda soldaki kırmızı alan değişecek veya yoktan oluşacak. O kısım, içinde bulunduğunuz exploiti gösteriyor. Exploiti de seçtik. Şimdi ayarlarına göz atalım. Çalıştırmak için hangi bilgilere ihtiyacı varmış bir bakalım. Bu bilgileri biz girdikçe arka planda exploit koduna ekleyerek çalıştıracak. Bunun için de options komutunu kullanıyoruz. Seçtiğiniz exploit hangi sistemlerde çalışıyor, hedeflerinde neler var görmek isterseniz show targets komutunu kullanabilirsiniz.

Seçtiğimiz exploitin ayarlamalarını yapmak istediğimizde bu tablo bizi karşılayacak. Değerlerin isimleri, gerekli olup olmadıkları ve açıklamaları mevcut. Required kısmında yes yazan tüm değerleri doldurmak zorundasınız. Ancak no yazanlar boş kalabilir. Peki öyleyse neden gereksiz bilgi giriyoruz? Asında gereksiz denemez. Sistemde çalışma şansını arttıran değerler bunlar. Onun için ne kadar değer girerseniz şansınız o kadar artar. Ben RHOSTS kısmını değiştireceğim ancak öncesinde bir detay daha vereyim. Auxiliarylerde genelde RHOSTS yazar. Yani birden fazla hedef girebilirsiniz. Ancak exploit seçimi yaptığınızda,genelde direkt hedef odaklı tercih yapmanız gerekir. Birden fazla seçemezsiniz. Ben set RHOSTS komutu ile hedef adresi de giriyorum.

Bundan sonrasında tüm değerler doğru ise exploit veya run komutu ile auxiliarymi çalıştırabilirim. Başka bir alternatif olarak ise check komutu ile exploit sisteme zarar vermeden çalışıp çalışmadığını test edebilirim. Sonrasında söz konusu auxiliary, işlevini yerine getirecektir. Örnek, komutları göstermeye yönelik olduğu için sonucunu göstermedim. Esas amaç temel kullanımı göstermekti. İleride bolca örnek yapacağız.