Metasploit – Payload Nedir Ve Ne İşe Yarar? [5.1]

Selamlar dostlar bugün Metasploit serisinin yeni yazısı ile karşınızdayım. Bugün üzerine konuşacağımız konu payloadlar ve payload türleri. Ama öncelikle son işlediğimiz konu hakkında biraz konuşalım. En son Auxiliary üzerine değinmiştik ve içlerinden birkaç örnek vermiştim. Verdiğim örnekler yetersiz gibi gelmiş olabilir çünkü tüm türleri incelemedik. Bundan sonrasını sizin kurcalayıp öğrenmeniz gerekecek :D. Şimdi esas konumuza dönelim.

Payload Nedir? Ne İçin Kullanılır?

Öncelikle şunun hakkında konuşabiliriz. Payload bizim sızma işlemimizin neresinde kalıyor? Hatırlarsanız kurduğumuz senaryolarda öncelikle auxiliaryleri kullanarak bilgi toplayıp ardından bu bilgilere göre uygun exploiti kullanmaktan bahsetmiştim. İşte exploiti kullandıktan sonra payload aşaması geliyor. Çünkü bir exploit sadece karşı sisteme sızmayı sağlar yani görevi budur. Tabii bu değişkenlik gösterebilir belki ama genel olarak konuşuyoruz. Exploit ile sızdıktan sonra bizim karşı sistemde işlemler yapmamızı sağlayan yapı payloadlardır. Bir örnek verirsem bunu anlayabilirsiniz.

Önceki yazılarımda msfvenom ile payload oluşturmaktan bahsetmiştim. Orada payloadı kurban makineye Flash, mail vb. yöntemlerle kendi elimizle bulaştırıyorduk. İşte bizim bu yaptığımız bulaştırma işlemi aslında işin exploitleme kısmı oluyor. Exploitleme kısmını bulaştırarak yapıyoruz ardından karşı taraf çalıştırdığı anda artık exploitleme kısmı bitiyor ve payload devreye giriyor.

Yani payloadı özetleyecek olursak karşı sistemde işlemler (Kameradan görüntü almak, karşı sistemde komut çalıştırmak gibi şeyler) yapmamızı sağlayan küçük program parçacıklarıdır. Gelin şimdi ana türleri inceleyelim.

Öncelikle metasploitin içerisindeki payload dizinine gidiyorum ve dizini listeliyorum.

payload

Karşımıza 3 adet klasör çıktı peki bunlar ne anlam ifade etmeli. Hadi bakalım.

STAGER

Stagers dediğimiz klasörün altında stage payloadlarıyla beraber çalışan payloadlar vardır. Hemen bunu size bir örnekle açıklayayım. Hatırlarsanız biz msfvenomda payloadın ismini şu şekilde yazıyorduk “windows/meterpreter/reverse_tcp”. İşte bu ifadedeki son “/” işaretinden sonra gelen “reverse_tcp” ifadesi bir stager payloadıdır. Bağlantı süresi boyunca stage payloadından gelen verileri hedef makinede çalıştırır. Şimdi gelin stagers klasörünü listeleyelim.

payload

İlk başta “ls” komutu ile listelediğimde karşıma hedef sistemler ve belirli programlama dillerinin ismini barındıran klasörler çıktı. Ardından Windows klasörüne girdim ve burada ise Windows işletim sistemi için kullanabileceğim payloadlar çıktı. Burada gördüğünüz payloadlardan en çok kullanılanları “reverse_tcp” ve “bind_tcp” payloadlarıdır. Resme baktığımızda çok fazla aynı şey varmış gibi görünüyor ancak hepsinin farkları var. En çok kullanılan ikisi arasındaki farka bakalım.

Reverse_tcp

Diyelim ki biz bir sisteme sızdık ve reverse_tcp payloadını kullandık. Bu durumda bağlantı aşağıdaki resimdeki gibi çalışır.

payload

Bu resme göre saldırgan kendi makinesi üzerinde bir sunucu oluşturarak karşı makinenin kendisine bağlanmasına izin verir. Burada reverse_tcp payloadı saldırganın makinesindeki sunucuya bağlanır ve gelen komutları kurban makinede yürütür. Bu sayede eğer kurban makinede bir firewall çalışıyorsa bu durumu engellemeyecektir. Çünkü firewall genel olarak dışarıdan içeriye gelen bağlantı isteklerini yönetir ve bunların içeriklerini inceler ancak burada dışarıya bir bağlantı gittiğinden firewall bu duruma muhtemelen şüphelenmeyecektir.

Bind_tcp

Peki, bind_tcp kullansaydık ne olurdu? Gelin bu sefer o duruma bakalım. Aşağıdaki resme göre konuşabiliriz.

payload

Bu resme göre bind_tcp payloadı karşı makineyi bir sunucu haline getirir. Bu durumda saldırgan karşı makineye bağlanmaya çalışır. Ancak az önce firewall ile ilgili konuştuklarımız burada devreye girebilir. Firewall gelen bu bağlantı isteğini inceleyip, şüphelenilebilecek bir durum tespit edip reddedebilir. Bu sebeple genel olarak “reverse_tcp” tercih edilir.

Yukarıdaki listede görülen diğer stager payloadlarının çoğu bu ikisinin belirli kısımlarının değiştirilmiş halidir. Bu değiştirilen kısım port tipi olabilir, ip versiyonu olabilir veya başka bir şey olabilir. Eğer bunların birbirlerine göre farklarını öğrenmek istiyorsanız dosyaların içini açıp okumaya çalışabilirsiniz.

Konuyu özetlersek stagers dediğimiz payloadlar, stage payloadından gelen komutları kurban makinede yürütür.

STAGE

Gelelim stage dediğimiz payloadlara. Bunlar az önce bahsettiğimiz stager payloadlarına ihtiyaç duyarlar. Ne demek istiyorum açıklayacağım ancak öncelikle klasörümüzü listeleyerek bir bakalım neler varmış.

payload

Tekrardan önce hedef sistemler ve programlama dilleriyle ilgili klasörler geldi ardından Windows klasörüne girip baktığımızda karşımıza Windows işletim sistemi üzerinde çalışan stage payloadları listelendi. Peki, stage payloadları ne işe yarar?

Bunu şöyle açıklayalım. Mesfvenomdaki payload seçiminde kullandığımız komut “windows/meterpreter/reverse_tcp” olsun. İlk “/” işaretinden sonraki kısım stage payloadını ifade eder. Zaten son “/” işaretinden sonrakinin de stager payloadını ifade ettiğini söylemiştik. Burada aslında iki payload seçmiş olduk diyebiliriz. Çünkü stage payloadı bize karşı makinede çalıştırabilmemiz için belirli fonksiyonlar verir. Buna ses kaydetmek, karşı makinede sistem komutu çalıştırmak vb. örnekler verebiliriz. Yani işlevsel fonksiyonları bize sunuyor. Stager payloadı ise bu işlevsel fonksiyonları alıyor ve kurban makinede çalıştırıyor. Bu sayede payload aşamasında iki adet payload kullanmış oluyoruz.

Stage payloadlarını özetlemek gerekirse karşı makinede işlemler yapabilmemizi sağlayan fonksiyonları barındıran payloadlardır. Ancak unutmayınız ki bir stager payloadına ihtiyaç duyar.

SINGLES

Gelelim son ana payload türümüze. Single payloadları adından da anlaşılacağı üzere tek başına çalışabilen payloadlardır. Aslında stage payloadlarından iki farkı vardır. Birisi stager payloadlarına ihtiyaç duymamalarıdır. Diğerini ise singles klasörünü listeleyerek anlatayım.

payload

Yukarıdaki resme baktığınızda Windows için bir sürü single payload görüyorsunuz. Ancak stage payloadına göre şöyle bir fark var. Normalde stage payloadları, stager payloadlarına ihtiyaç duyar ancak buradaki single payloadları stagerını da kendi içerisinde barındırıyor. Yani stage ve stagerın birleşmiş hali.

Ayrıca meterpreter ve shell gibi payloadlar dışında adduser, download_exec gibi payloadlar da mevcut, peki bunlar nedir? Şimdi şöyle bir durum var meterpreter gibi payloadlar birçok fonksiyonu içerisinde barındırır. Yani örnek olarak kullanıcı ekleme işlevini de barındırır, kurban makineden dosya çekme işlevini de içerisinde barındırır. Ancak diyelim ki biz böyle büyük bir payload kullanmak istemiyoruz sadece hedef sisteme bir kullanıcı ekleyeceğiz. İşte bu durumda adduser payloadı kullanılabilir. Çünkü bunun kullanıcı eklemekten başka bir işlevi yoktur. Ve bu stager payloadına ihtiyaç duymaz. Gider kullanıcıyı ekler ve işini bitirir.

Single payloadlarını özetlemek gerekirse, bu payload türü yalnız başına çalışabilen payloadlardan ibarettir. Stage payloadına göre farkı da herhangi bir stager payloadına ihtiyaç duymamasıdır.

Sonuç olarak bu yazımda 3 ana payload türünü inceledik. Ancak bunlar dediğim gibi ana türlerdi. Sonraki yazımda alt türleri de inceleyeceğim. Bu uzun soluklu yazının da bu şekilde sonuna gelmiş olduk arkadaşlar. Bir sonraki yazıda görüşmek üzere.

Herkese iyi çalışmalar…

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir