16 Mart 2014 Pazar

Metasploit Unleashed: Introduction

Metasploit Unleashed: Introduction


Saldırı amaçlı bir çok araç kullanılmaktadır. Bu araçlardaki bazısı bilgisayarlardaki zafiyetleri kullanarak ele geçirmeye, bazısı uygulamalardaki açıklıkları tespit etmeye, bazısı bir kurum veya sistem hakkında bilgi toplamaya, … yarar. Kullanılan araçlar farklı ortamlarda / platformlarda çalışmakta, farklı programlama dillerinde yazılmaktadır. Metaploit ile saldırı araçları tek bir platforma taşınmıştır.

Metasploit ana çatısının başlıca getirileri aşağıdaki gibidir:
  • Birbirinden farklı alanlardaki saldırı tekniklerini bir araya toplar.
  • Farklı platformalarda hazırlanmış kodlar yerine, modüller ruby dili hazırlanmıştır.
  • Kodların derlenmesi ile uğraşmaya gerek kalmamıştır.
  • Kullanılabilecek exploit’ler veya payload’lar için uygun olan tavsiye edilerek zaman kaybının önüne geçilir.
  • Birbirinden farklı exploit’ler için kullanılabilecek payload’lar otomatik olarak sunulmuştur.
  • Exploitler açık kaynaklı olup topluluk tarafından veya lişisel olarak güncellemeye imkan sunmaktadır.
  • Mevcut modüller kullanılarak amaca uygun şekilde farklı uygulamalar geliştirmeye açıktır.

Metasploit, 2003 yılında HD Moore tarafından önce Perl tabanlı olarak geliştirilmiş olup, sonrasında Ruby tabanlı olarak baştan geliştirilmiştir. 2009 yılında ise Metasploit projesi açık kaynaklı bir proje olarak Rapid7 bünyesine katılmıştır. Rapid 7 firması ayrıca ücretli olarak Metasploit Pro başta olmak üzere bir çok ürünün de ticaretini gerçekleştirmektedir. Ayrıca Rapid 7’nin açık kaynaklı zafiyet tarama aracı olan Nexpose ile de entegre çalışabilmektedir.

Metasploit ana çatısının bazı kullanım amaçları şu şekildedir:
  • Hedef ağ, sistem ve uygulamalarının güvenliğinin değerlendirilmesine yardımcı olmak
  • Sistemler hakkında bilgi toplanmasına yardımcı olmak
  • Güvenlik açıklıklarını bulmak
  • Sistemlerin açıklıklarının kullanılarak istismar edilmesini sağlamak
  • Anti-forensic tekniklerini kullanmak
  • Sistemlerdeki koruyucu mekanizmaları atlatmak
  • İhtiyaca göre yeni modüller geliştirmek veya mevcut modülleri kullanmak

Ana çatının hitap ettiği kullanıcılardan bazıları şu şekildedir:
  • Güvenlik denetleyicileri ve uzmanları
  • Saldırganlar
  • Modül geliştiriciler

1) Gereksinimler

Metasploit anaçatısını sorunsuz (en az sorunlu) olarak kullanabilmek için yazılımsal ve donanımsal bir takım gereksinimleri karşılamak gereklidir.

1.1) Donanımsal Gereksinimler

1.1.1) Disk Alanı
En az 10 GB olmak üzere 30 GB alan tavsiye edilmektedir. Snapshot alınma ihtiyacına göre, daha fazla disk alanının alınması tavsiye edilektedir. Büyük boyutta dosyalar kullanıldığı için, disk formatı olarak FAT32 yerine NTFS veya ext3 kullanılmalıdır.

1.1.2) Bellek
Fiziksel ve sanal makinelerdeki bellek gereksinimleri şu şekildedir:
  • Linux Host için en az 1 GB olmak üzere 2 GB veya daha üstü
  • Her bir Windows Guest için en az 256 MB olmak üzere 1 GB veya daha üstü
  • Kali Guest (Saldırı makinesi) için en az 512 MB olmak üzere 1 GB veya daha üstü 
  • Metasploitable Guest (Kurban makinesi) için en az 256 MB olmak üzere 512 MB veya daha üstü 
Daha az kullanılması durumunda sistem yavaşlayacak hatta çalışmaz duruma gelecektir.

1.1.3) İşlemci
VMware Player kullanımı için işlemci frekansı en az 400 Mhz olmak üzere 500 Mhz veya daha üstü olması tavsiye edilmektedir.

1.1.4) Internet Erişimi
Ağ cihazına bağlantı için cat5 kablo veya kablosuz bağlantı (yayın ile bağlantı uzaklığı ve bağlantı kuvveti göz önünde bulundurulmalı) kullanılabilir. DHCP sunucusu yoksa, Guest sanal makinelere statik IP verilmelidir.

1.2) Yazılım Gereksinimleri

Gerekli başlıca yazılımlar aşağıdaki gibidir:
  • Gerekli ilk yazılım sanallaştırma sistemidir. VmWare Converter, VmWare Player, VirtualBox gibi araçlar ücretsizdir ancak kayıt olunmalıdır. Bunun yanında Vmware Workstation, Vsphere, Vmware Fusion gibi sanallaştırma altyapıları ücret karşılığı temin edilebilir.
  • Bir diğer yazılım ise Metasploit anaçatısındaki kodlardır. Bu yazılımların son sürümü için “msfupdate” komutu kullanılmalıdır. Kali’nin son versiyonu için bakınız: http://www.kali.org/downloads/
  • Metasploitable, Metasploit anaçatsının öğrenilmesi, güvenlik eğitimlerinde kullanılması, güvenlik araçlarının test edilmesi için kullanılan, tarama ve saldırıların gerçekleştirilebileceği, içerisinde zafiyetler bulunduran Linux bir sanal makinedir. Makine http://sourceforge.net/projects/metasploitable/files/Metasploitable2/ bağlantısından indirilebilir. Makinenin varsayılan kullanıcı adı ve parolası “msfadmin” olarak belirlenmiştir. Bu makineler yerel ağa direk bağlanmamalı, NAT veya Host-Only olarak bağlanmalıdır. Ayrıntılı bilgi için bakınız: https://community.rapid7.com/docs/DOC-1875

2) Metasploit Mimarisi

Metaploit ana çatısının mimarisi için aşağıdaki resim kullanılabilir.


Mesaploit anaçatısında kullanılan Ruby dilinin bazı özellikleri şu şekildedir:
  • Her sınıf bir başka sınıftan türer.
  • Bir sınıf bir veya birden fazla modül içerebilir.
  • Modüller metodlar içerir. Modüllere yeni metodlar eklenebilir, eski modüller aşırı yüklenebilir. Böylece bir modülde farklı parametrelerle program akışında değişiklikler gerçekleştirilebilir.
  • Modüller Msf::Module ana modülünden türer.
  • Modüller arasında ortak bir API bulunur ve bu API ile modüller arasında etkileşim (değişken gönderimi, fonksiyon kullanımı, …) gerçekleştirilir.

2.1) Dosya Sistemi

MSF dosya sistemi 8 dizinde incelenebilir:
  • Veriler (Data): Metasploit tarafından kullanılan ve değiştirilerek kullanılabilen verilerdir.
  • Bilgilendirme Belgeleri (Documentation): Sistem anaçatısını (framework) açıklamak için kullanılan dokümanlardır.
  • Harici Kaynaklar(External): Kaynak kodlar ve 3. taraf kütüphanelerdir.
  • Kütüphaneler (Lib): Geliştirme için kullanılan ve sistem anaçatısının (framework) omurgasını oluşturan kütüphane kodlarıdır.
  • Modüller (Modules): Kullanılan modüllerdir.
  • Eklentiler (Plugins): Çalışma annda (runtime) yüklenen ve çalışan kod parçacıklarıdır. Anaçatının tüm işlevlerini kullanarak, direk olarak API’ler ile birlikte çalışırlar. Bazı işlemleri el ile gerçekleştirmek yerine otomatik gerçekleştirirler.
  • Betikler (Scripts): Meterpreter ve diğer betiklerdir.
  • Araçlar (Tools): Komut satırında çalışan ve çeşitli görevleri yerine getiren araçlardır.

2.2) Kütüphaneler

  • Rex: Çeşitli görevleri gerçekleştirmek için kullanılan en temel kütüphanedir. Bu görevler soket açmak veya dinlemek, hedef sistemle bir protokol için anlaşmak, veri transferi gerçekleştirmek olabilir. 
  • Msf::Core: Temel API’leri sağlar. Metasploit anaçatısını tanmlar, geliştiriciler için temel programlama arayüzünü sağlar.
  • Msf::Base: Metasploit anaçatısı için geliştiricilerin daha rahat kullanabileceği API’leri sağlar.

2.3) Modüller

Modüller iki ana dizinde tutulurlar:
  • MSF tarafından hizmete sunulan modüller “/usr/share/metasploit-framework/modules/” dizini altında tutulmaktadır.
  • Kullanıcıya özel modüller “~/.msf4/modules/” altında bulunur.
MSF tarafından 6 ana modül sunulmaktadır.


2.3.1) Exploitler
Sistem, uygulama, yazılım, donanım veya bir servisteki çatlağın (hata veya açıklığın) kötüye kullanılarak hedeflenen sonuca ulaşmak için kullanılan güvenlik açıklıklarına ait kod parçası veya komut dizinidir. Payload kullanan modüller olarak da tanımlanabilir (Payload kullanılmayan exploit’lere auxiliary modül adı verilir.). Bu kodlar ile hedef sistem olağan dışı olarak (beklenmeyen ve istenmeyen sonuçlar doğuracak şekilde) saldırganın belirlediği işlemi gerçekleştirirler. Buffer taşması, web uygulaması zafiyetleri, konfigürasyon hataları bazı exploit çeşitleridir. Hedef makineye dosya atmak veya hedef makineden dosya almak, hedef ağı dinlemek, hedef sistemin sürekliliğini devre dışı bırakmak, hedef sistemin ayarlarını değiştirmek, hedef sisteme program yüklemek için kullanılabilir.


Exploit modülleri genelde payload kullanırlar. Payload kullanmayan expolit Auxiliary modül olarak adlandırılır.

Exploitler, önce işletim sistemine göre (aix, linux, unix, windows gibi) sonra da servisine (ftp, smb, smtp gibi) göre çeşitli alt dizinlere ayrılmıştır. 


Bütün exploit listesini görmek için, MSF üzerinde show komutu kullanılır: “show exploits”


2.3.2) Auxiliaryler
Exploit modüllerinin aksine saldırıdan ziyade, bilgi toplama amacıyla kullanılan yardımcı modüllerdir.  Port taraması, zafiyet taraması gibi işlevleri yerine getirerek saldırı öncesinde sistem dökümünü elde etmeye yararlar. Payload kullanmayan exploit’lerdir.
Auxiliary modüller, önce işlevine göre (admin, dos, fuzzers, gather, scanner gibi) sonra da servisine (portscan, smb gibi) göre çeşitli alt dizinlere ayrılmıştır. 


2.3.3) Payload’lar
Exploit sonrasında (zafiyet sömürüldükten sonra), ana çatı (framework) tarafından hedef sisteme gönderilen (uzak makinede çalışan), hedef sisteme sızmayı sağlayan ve istenilen işlemleri gerçekleştirmek için çalıştırılması istenen kod parçasıdır. Örneğin, bir servisin açığından faydalanarak sistemde kullanıcı oluşturulması, SYSTEM veya root hakları ile kabuk erişimi elde edilmesi, arka kapı açılması gibi işlemler payloadların kullanılması ile gerçekleştirilir. Veya hedef makine ile bağlantının gerçekleşmesi payloadlar ile gerçekleşir. Reverse shell (hedef makinenin, saldırganın makinesine bağlantı kurmasını sağlar), bind shell (saldırganın daha sonra bağlanması için, hedef sistemin dinlediği porta komut satırı bağlantısı (bind) kurulur) bağlantıyı kuran bazı payload çeşitleridir.


Başlıca özellikleri aşağıdaki gibidir:
  • Payloadlar diğer modüllerden farklı olarak çalışma anında çeşitli bileşenlerin beraber çalışmasıyla oluşurlar.
  • Payload genellikle assembly dili kullanılarak geliştirilir. 
  • Payload platform ve işletim sistemi bağımlıdır; Windows işletim sistemi için geliştirilen bir payload Linux işletim sistemleri için çalışmayabilir. Bunun yanında Windows 7 için hazırlanan bir payload Windows 8’de, 64 bit için hazırlanan bir payload 32 bit mimaride, SP1 için hazırlanan ise SP2’de çalışmayabilir.
Zafiyet, exploit ve payload ilişkisi için aşağıdaki resim kullanılabilir.


Zafiyet, exploit ve payload kavramlarını anlatmak için şu örnek kullanılabilir:
  • Zafiyet (İnsan): İnsanın karşısındakine inanması, daha çok getiri elde etme düşüncesi (hırsı) birer zafiyettir.
  • Exploit (Sosyal Mühendislik): İnsandaki bu zafiyeti kullanarak sosyal mühendislik teknikleri ile istismar etmektir.
  • Payload (Hesabı Kullanma): İnsani zafiyetlerin sömürülmesi sonucunda gerçekleştirilen eylemlerin (EFT yapma, parayı çekme, hesabı bloke etme, …) her biridir.
Daha teknik olarak da “Vulnerability in Server Service Could Allow Remote Code Execution (958644)” bir zafiyet, Metasploit ana çatısındaki “exploit/windows/smb/ms08_067_netapi” bir exploit, meterpreter kabuğunun elde edilmesi ise bir payload olarak tanmlanabilir.

2.3.4) Encoder’lar
Eploit ve payloadların hedef sistemde çalışan mekanizmalar (Antivirüs, IPS/IDS, FW vs) tarafından yakalanmaması için farklı bir forma çeviren modüllerdir. İmza tabanlı sistemlerin atlatılaran hedef sistemin ele geçirilmesine yardımcı olurlar.


2.3.5) NOP’lar
Payload’un kalıcı olmasını sağlayarak hedef sistemi ele geçirme ihtimalini arttırmak için NOP komutları oluşturan modüllerdir. Bu komutlar her hangi bir işlem gerçekleştirmezler, sadece çalıştırılması istenen kodun bellekteki yerine kadar belleği dolduran boş (\00) bitlerdir.

2.3.6) Post Modüller
Sisteme sızıldıktan ve erişim elde edildikten (örneğin, meterpreter oturumu elde edildikten) sonra gerçekleştirilen işlemleri yerine getirmekle görevli program ve betiklerdir. Pivoting işlemleri, parola özetlerinin alınması, sistem bilgilerinin alınması bir sisteme sızıldıktan sonra gerçekleştirilen işlemlerden bazılarıdır.



Kaynak:
http://www.offensive-security.com/metasploit-unleashed/Introduction

Hiç yorum yok:

Yorum Gönder