MR.ROBOT ZAFİYETLİ MAKİNEYİ ELE GEÇİRME VE HAK YÜKSELTME - SİBER GÜVENLİK EĞİTİMİ

NELER VAR

14 Aralık 2019 Cumartesi

MR.ROBOT ZAFİYETLİ MAKİNEYİ ELE GEÇİRME VE HAK YÜKSELTME

Merhaba arkadaşlar. Bu yazımda sizlerle birlikte Mr.Robot zafiyetli makineyi ele geçireceğiz. Bu makineyi ele geçirirken neleri öğreneceğiz? 

  • Sitelerdeki, makinelerdeki gizli dosyaları bulma,
  • Hydra toolu ile Brute-Force yapma, 
  • Burp Suite aracını kullanma,
  • Reverse Shell,
  • Normal user olduğumuz bir sistemde root hakkına yükselme
gibi birçok önemli noktalara değineceğiz. 
Mr.Robot zafiyetli makinesini "https://www.vulnhub.com/entry/mr-robot-1%2C151/#" linki üzerinden indirip kurabilirsiniz. Mr. Robot makinesinde amaç, sistemde bulunan 3 tane gizli anahtarı bulup ortaya çıkarmaktır. Bu makinedeki mantık aslında CTF yarışmalarındaki flag mantığıdır. Bu ve bunun gibi zafiyetli makine indirip uğraşmak istiyorsak vulnhub.com üzerinden bulup, indirebilirsiniz. 
İndirdiğimiz .ova uzantılı dosyayı virtualbox ya da vmware sanal makinesi üzerine kurabiliriz. Ben virtualbox üzerinden kurulumu gerçekleştirdim. Burada 'Dosya > Cihazı İçe Aktar' diyerek .ova uzantılı dosyayı seçip çok basit bir şekilde kurabilirsiniz. Dikkat etmemiz gereken noktalardan biri, Kali Linux makinemizle, zafiyetli makinemizin aynı ağda olması gerekmektedir. Ayarları şu şekilde gerçekleştirelim. 
Ben Kali Linux sistemimi köprüde kullandığım için Mr.Robot makinesini de köprüye alıyorum. Böylelikle iki makineyi aynı ağda buluşturuyorum. Mr. Robot makinesi kurulduğunda karşımıza bu şekilde bir ekran geliyor. 
Bir login ekranı karşımıza geliyor. Ben de bu tür makinelerde default olarak admin-admin, root-toor gibi şifreleri denedim fakat 'hatalı giriş' hatasıyla karşılaştım. Makineye birde dışarıdan erişmeyi deneyelim. Bunun için makinenin ip bilgisini öğrenmemiz gerekiyor. 
'netdiscover' komutunu kullanarak Mr.Robotun ip bilgisini öğrendim. Şimdi bu bulduğum ip'nin portlarını nmap tool'u ile bir inceleyelim. Açık olan portlarına ve servislerine bakalım. 
Açık olan portları ve çalışan servisleri görmekteyiz. Servislere baktığımız zaman Apache servisinin  çalıştığını görüyoruz. Tarayıcı üzerinden makineye ulaşmayı deneyelim o halde.  
Tarayıcıdan ip'yi aradığımızda bizi bu şekilde bir video ekranı karşılıyor. Gerçekten güzel hazırlanmış bir site. Videoyu izlediğimiz zaman 'prepare,join,inform,wakeup' gibi sayfalar olduğunu söylüyor. Bu sitelere teker teker baktığım zaman buralarda sadece görsel olduğunu gördüm. Biz başka sayfalar var mı diye bir bakalım. Eğer bir site ya da makinedeki gizli dosyaları öğrenmek için 'dirb' komutunu kullanmamız gerekir. 
Tarama sonucunda önemli bilgilere ulaştık. Robot.txt ve wp-login dosyaları bizlere gerekli yolu gösterecektir. Bu arada wp-login klasöründen de bu sitenin bir wordpress sitesi olduğu bilgisini elde etmiş oluyoruz. 
Evet bu arada bir ize ulaştık. Muhtemelen 'key-1-of-3.txt' yolu bize ilk anahtarımızı verecektir. O yolu da bir inceleyelim.
Evet ilk anahtara ulaştık. Bize robot.txt yolunda bir .dic uzantılı bir yol vermişti. O dosyaya bir gidelim bakalım. 
Dosyayı indirmemizi belirtiyor. Dosyayı indirip açtığımızda bir wordlistle karşılaşıyoruz. Wordlistin boyutu yüksek olduğundan açılması biraz uzun sürebilir. En iyisi açmamanız :) 
Dirb ile gizli dosyaları incelediğimizde bir de wp-admin sayfası bulmuştuk. Oraya bir bakalım. 
Tahmin ettiğimiz gibi bir login ekranına yönlendirdi bizi. Buraya yine default değer olarak admin-admin denedim fakat hatalı giriş uyarısı aldım. Burada dikkat çeken bir nokta daha var. O da 'Invalid Username' hatası. Demekki önce kullanıcı adını denetliyor. İndirdiğimiz .dic uzantılı wordlist ile bir brute-force atağı deneyeceğiz. Wordlistin boyutu yüksek olduğu için sıkıştırma işlemlerini yapalım. 
Öncelikle bu wordlistte kaç tane kelime var bunu bulalım. 
'wc -l fsocity.dic' kodu ile satır sayımızı öğrendik. Bu sayı çok fazla olduğu için aynı kelimeler varsa wordlistte bunları öğrenip bu kelimeleri çıkartırsak, bu dosya ile yapacağımız işlemlerden daha hızlı sonuç alabiliriz. 
Burada tekrarlanan kelimeleri bulduk. Şimdi bunları 'sort' komutu ile çıkartıp yeni oluşturduğumuz dosyaya aktaralım. 
Burada sort ile tekrarlayan kelimeleri alıp yeni.txt dosyasına yazdırdık. Şimdi bu dosyada kaç satır kaldığına tekrar bakalım. 
Görüldüğü üzere 858160 satırdan 11451 satıra indirebildik. Bu bizim işimizi görmek için yeterli bir sayı. Sıra geldi bu wordlisti kullanarak wp-admin sayfasındaki giriş bilgilerini elde etmeye. Bunun için öğrenmemiz gereken bilgiler var. Burpsuite ile araya girip bu bilgileri öğreneceğiz. Burpsuite aracı, ağdaki trafiği durdurup araya girmemizi sağlıyor. İstemci-sunucu arasındaki istekleri bu program vasıtasıyla görüntüleyecek, isteklerin üzerinde gerekli değişiklikleri yine bu program vasıtasıyla yapabileceğiz. Program çalışmaya başladığında lokalimizde(127.0.0.1) vekil sunucu ayağa kalkar. Tarayıcıdan da bu vekil sunucuyu dinleriz. Artık tarayıcıdan sunucuya giden istekler bu vekil sunucu üzerinden gidecektir. Burp vasıtasıyla, istekler sunucuya gitmeden görüntülenebilecektir.Burp Kali Linux'te varsayılan olarak yüklü bulunmaktadır. Şimdi programı çalıştıralım. 
Programı çalıştırdıktan sonra tarayıcıdan 'Preferences > Network Settings > Advanced' menüsünden manuel proxy'i '127.0.0.1' portu da 8080 yapıp ayarlarımızı tamamlıyoruz. 
Ayarlarımızın bu şekilde olduğundan emin olduktan sonra burpsuite'ten intercept'i on yapıyoruz. 
Şimdi wp-login ekranından rastgele bir kullanıcı adı ve şifre girip burp üzerinden brute-force için gerekli olan verimizi alalım. 
Yukarıda görüldüğü gibi login ekranını 'POST' ettiğimiz anda bütün trafik burp'e geldi. Burada brute force'ta kullanacağımız 'log=admin&pwd=admin&wp-submit=Log+In&redirect_to' kısmını kopyalıyoruz. Artık brute force işlemine geçip önce kullanıcı adını daha sonra şifreyi bulalım. 
Parola kırmak için birçok yöntem bulunmaktadır. John the ripper gibi ya da third party uygulamalar mevcuttur. Biz hydrayı kullanacağız. Hydra'da oldukça etkili bir ataktır. Burada öncelikle kullanıcı adını bulmak için bir atak düzenleyeceğiz. Kullanıcı adını bulurken fsocity.dic wordlistini kullanacağım. -L fsocity.dic deyip -p(password) 12345 gibi ya da istediğiniz bir şifre verebilirsiniz. Bu komutla öncelikle wordlistteki kelimeleri teker teker deneyecek ve şifrenin doğru olup olmadığını kontrol etmeyecektir. Komutun sonundaki 'Invalid username' ifadesini de daha önce rastgele girdiğimiz admin-admin şifresinin dönütü olarak vermişti. Onu eklememizin sebebi hydraya, 'invalid username dönütünü almayıncaya kadar devam et' demektir. Brute force'u başlatalım.
Bir süre bekledikten sonra kullanıcı adı karşımıza geliyor. Kullanıcı adımız Elliot. Şimdi login ekranından kullanıcı adını doğru girip şifreyi yanlış girelim.
Gördüğünüz gibi bu defa şifre hatalı dönütünü verdi. Kullanıcı adımızın doğru olduğunu anlıyoruz. Şimdi şifre için bir brute force deneyelim. Bu defa yeni.txt wordlist'i kullanacağım. Her ikisinde de yeni.txt wordlistini kullanabilirsiniz. 
Kullanıcı adını bildiğimiz için artık -l Elliot diyebiliriz. -P yani şifreyi büyük yazarak hydra'ya 'sadece şifreyi dene' diyoruz. Sonunda ise 'Is incorrect' diyerek bu hatayı almayıncaya kadar devam etmesini söylüyoruz. 
Kullanıcı adından sonra şifreyi de hydra başarıyla buldu. Kullanıcı adı: Elliot Şifre: ER28-0652. 
Şimdi wp-loginden bir giriş yapalım bakalım 2. anahtarımızı bulabilecek miyiz?
Ve başarıyla içerdeyiz. Fakat umduğumuz gibi 2. anahtar direkt karşımıza çıkmadı. Girmiş olduğumuz Elliot kullanıcısının burada bir yetkisine bakalım. 
Elliot kullanıcısının yetkisi admin olarak görülüyor. İkinci anahtarı burada bulamadığımız için bir de kabuk tarafını bir incelememiz gerekiyor. Shell alabilmek için öncelikle bu siteye bir reverse shell yani bağlantı kurup dinleyebileceğimiz reverse shell scripti yüklememiz gerekiyor. Hemen tarayıcıdan reverse shell yazıp indirelim. Bu işlemi aslında shell'i meterpreter'e yükseltmek gibi düşünebilirsiniz. Biz bu sitenin kabuğunu alıp işlemlerimize oradan devam etmek için bu yöntemi kullanacağız. 
Dosyayı bu siteden indirebilirsiniz. İndirme işlemi tamamlandıktan sonra dosyayı masaüstüne atalım. Burada phpreverseshell dosyasında bazı işlemler gerçekleştireceğiz. 
Bu dosyayı metin dosyası ile birlikte açıyoruz. 
Burada düzenlememiz gereken yerler bulunmakta. 'Change this' yazan bölümleri değiştirmemiz gerekiyor. 'ip' kısmına dinleyeceğimiz yerin yani kali linux'un ipsini vermemiz gerekiyor. Portun değiştirilme zorunluluğu yok. Port aynı kalabilir. Bu işlemi gerçekleştirdikten sonra bu dosyanın içini kopyalayıp wp-login sayfasında 404.php sayfasına yapıştıralım. 
Bu bölüme nasıl ulaştım diye sorabilirsiniz şuanda. Sol sekmelerde bulunan 'Plugins > Editor' sekmesine tıkladıktan sonra bu ekranı görebilirsiniz. Sağ taraftan istediğiniz bir template'i seçerek phpreverseshell dosyasında kopyaladığımız verileri buraya yapıştırıyoruz. En aşağıda bulunan 'update file' butonuna basarak dosyayı güncelliyoruz. Daha sonra dinleme işlemini gerçekleştirmek için yeni bir terminal açmamız gerekiyor. 
Bağlantımızın geleceği portu dinlemeye başlıyoruz. 
 Curl ile shell dosyasını çalıştırmak için istekte bulunuyoruz. 
Bağlantımızı başarıyla gerçekleştirdik. Fakat şuanda hiçbir yetkimiz bulunmamaktadır. Şuanda etkileşimsiz kabuktayız aslında. Buradan bir kullanıcıya ulaşabilmemiz için şu komutu kullanmamız gerekiyor. 
python -c 'import pty;pty.spawn ("bin/bash")'
Kodumuzu yazdıktan sonra 'daemon' adlı kullanıcıya eriştik. Artık daemon kullanısının yetkilerini kullanıyoruz.'ls' ile listelediğimizde birçok klasörü görebiliyoruz. Home dizinine bir göz atalım. 
Home dizininde bir robot dosyası gördük. Bu dosyayı incelediğimizde bize 2. anahtarı ve bir de password.raw uzantılı bir şifre verdi. 'cat' komutu ile anahtarın içini okuyabilecek miyiz diye bir bakalım. 
Anahtarı okumaya çalıştığımda erişim engeli hatası aldım. Daha sonra şifre ile açabilecek miyim diye şifreyi okumaya çalıştığımda bana robotun şifresini verdi. Fakat bu şifreyi alıp yapıştırdığımızda muhtemelen şifre yanlış hatası alacağız. Çünkü şifre hash'li yani şifreli gibi görünüyor. Sonda bulunan md5 ipucunu dikkate alarak bu hash'in bir md5 şifreleme yöntemi olduğunu değerlendirmeliyiz. Bir md5 decoder sitesinden bu hashi kıralım. 
Tahmin ettiğimiz gibi bu hash bir md5miş. Robot kullanıcısının şifresini ele geçirmiş olduk. Robot kullanıcısına geçiş yaparak 2. anahtarımızı bulalım. 
'su robot' diyerek robot kullanıcısına geçiş sağlamak istedik. Bizden robot kullanıcısının parolasını istedi. Bizde bulduğumuz decoder'lı şifreyi girerek robot kullanıcısına erişim sağladık. Daha sonra ls diyerek dosyaları listelediğimizde 2.anahtarı da elde etmiş olduk. Robot kullanıcısına eriştik fakat henüz root değiliz. 
Root dizinine gitmek istediğimizde erişim iznimiz olmadığını bize söylüyor. Bir şekilde root olarak 3. anahtarı elde etmemiz gerekiyor. Bunun için root yetkisiyle çalışan uygulamalara bir göz atalım. 
Root yetkisiyle çalışan uygulamaları bulmak için 'find / -perm -4000 2>/dev/null' komutunu kullanmamız gerekiyor. Tarama sonucunda bize en çok tanıdık gelen nmap'i bulduk. Nmap'in interactive özelliği ile root olmayı deneyeceğiz. 
Root olmadan nmap'in interactive modunu kullanarak root olmayı başardık. Fakat hala 3.anahtarı bulabilmiş değiliz ama sona çok yaklaştık buna eminiz. Az önce gidemediğimiz root dizinine bir bakalım. 
Evet sonunda mutlu son. Üçüncü ve son  anahtarımızı da root dizininde bulduk. Aynı zamanda artık sistemde root yetkisine sahibiz. Mr. Robot makinesinin zafiyetlerinden yararlanarak 3 anahtarı da bulmayı başardık. Sanırım bu makineyi şu görselle bitirebiliriz :) 

Hiç yorum yok:

Yorum Gönder