TryHackMe Write-Up | Blue Zafiyetli Makine Çözümü

Durum
Mesaj gönderimine kapalı.
Merhaba,

Bu yazımda boş vaktimde makinelerini çözdüğüm ve oldukça sevdiğim TryHackMe üzerinde yer alan Blue makinesini beraber çözeceğiz.

NOT: Bu yazı tamamen eğitim amaçlı yazılmıştır. İçerisindeki bilgilerin kötüye kullanımından şahsım ve Technopat.NET hiçbir şartta sorumlu değildir, bütün sorumluluk tamamen size aittir. Bu yazıyı okumaya devam ettiğiniz takdirde bu şartları kabul etmiş sayılırsınız.

Yazıya ve anlatıma başlamadan hemen öncesinde bilmeyenler için TryHackMe’nin ne olduğundan öncelikle bahsedelim. TryHackMe, kendisini temel bilişim veya siber güvenlik konularında geliştirmek isteyen kimseler için çeşitli zafiyetli makineleri bünyesinde bulunduran bir platform.

Burada her bir makine için özel olarak hazırlanmış sorular mevcut. Amacınız kendinize göre seçip aktifleştirdiğiniz bu makinelere ilgili güvenlik açıklarını istismar ederek erişip sizin için makinenin çeşitli yerlerine yerleştirilmiş olan bayrakları (ki biz buna flag diyoruz) bulmak. Her çözdüğünüz makine için seviye puanları alıyor, seriler ve rozetler kazanabiliyorsunuz. Bir nevi mini oyun diyebiliriz. Aynı zamanda bilişim konularıyla ilgilenen gençlerin de öğrendiklerini tamamen yasal şekilde pekiştirebileceği bir ortam.

Bizler ise bu yazıda TryHackMe üzerinde yer alan Blue makinesini çözeceğiz. Hazırsanız başlamadan hemen önce makinemizin kısa açıklamasına bir göz atalım. Aşağıda da gördüğünüz gibi bizden istenen şey makineyi ele geçirmek. ( Ne kadar ilginç, bak sen şu işe :D ) Makinemizin bağlantısına aşağıdan ulaşabilirsiniz.


1.png


TryHackMe’de başlatıp çözebileceğiniz makineler çeşitli güvenlik sebeplerinden ötürü dışarıya açık değil. Bu nedenle TryHackMe’nin bize uygun şekilde üretmiş olduğu OpenVPN config dosyasını indirip uygun şekilde çalıştırarak makineye erişebileceğimiz TryHackMe ağına dahil olmalıyız.

Bunun için aşağıdaki görselde de işaretli olan “Access Machines” kısmına gelip ilgili VPN config dosyamızı indirelim.

2.png


İlgili config dosyasını indirdikten sonra terminalden cd komutu vasıtasıyla indirme dizinine gidip openvpn DOSYAADI.ovpn şeklinde çalıştıralım. Herhangi bir aksilik olmazsa bağlanacaktır. İlgili komutu sudo ile çalıştırmayı unutmayın. Artık makineyi çözmeye hazırsınız. Kılıçları kuşanın.

3.png


Artık makineyi ayağa kaldırıp çözmeye başlayabiliriz.

“Hopp! Neyi çözüyorsun kardeş. Makineyi çözebilmek için gerekenleri hazırladın mı?” diye işte böyle sorarlar adama. Ben üşengeç olduğum için hazırlamadım, bunun yerine sağa sola bakmıyorsanız ekran görüntülerinden de anlayacağınız üzere Kali indirdim. Sizler de hemen temin edip kullanabilirsiniz efenim.


Daha fazla boş yapmadan makinemizi ayağa kaldırsak iyi olacak.

4.png


Makinemizin IP adresini görebilmek için ayağa kaldırdıktan hemen sonra 1 dakika kadar bekliyoruz. Bazen aksilik tutuyor, IP adresi gözükse bile makinenin kendine gelmesi 3-4 dakikayı bulabiliyor. Bu durumda ne yapıyoruz, bekliyoruz elbette. IP’yi henüz görmeden önceki gece rüyana aksakallı dede gelip “IP adresi bu olacak hıyar” diye söylemezse makineye sızamazsın.

IP adresimiz de bizleri karşıladığına göre atımıza binip savaş meydanına pardon terminalimize gidebiliriz.

5.png


Şimdi burada düşünce gücü devreye giriyor. Lisede hocanızın anlattığı fakat hiçbirinizin dinlemediği, kiminizin uyuduğu, kiminizin lastikle birbirine top kağıt fırlattığı “Tarih” dersine hoş geldiniz gençler. Türk tarihinde ne vardı, elbette Türk Akınları. Türkler bir yere saldırmadan hemen öncesinde ufak bir keşifçi birlik gönderip arazi ve hedefi keşfederlerdi. Bizler de bu makineye saldırmadan önce bir keşfetmeliyiz. Arazi nasılmış, nereden saldırabiliriz görelim.

Bunun için bir sisteme saldırmadan öncesinde hangi işletim sistemini kullanıyor, kullanılan servisler varsa neler ve versiyonları nedir, güvenlik açığı var mıdır kontrol etmeliyiz. Yoksa bodoslama exploit denemesi yapılırsan üzerler seni, samimi söylüyorum bak.

Bilişim camiasında bu iş için kullanılan eli öpülesi mükemmel bir araç var. Tabii ki bu araç Nmap. Nmap aracı genellikle port tarama aracı olarak tanıtılsa da üzerine düşülse üstüne kitap bile çıkarılabilecek bir araç. Biz bunu kullanabilmek için ezber mi yapacağız, hayır. Bu kadar Nmap terimini ve komutunu oturup ezberlersen enayisin zaten. Zamanla man (manual) sayfasını okuya okuya öğrenirsiniz. GitHub sayfasını da şöyle bırakmış olalım.


Biz bu sistemi keşfetmek için nmap -sV 10.10.198.204 --script=vuln -vv -Pn şeklinde bir komut kullanacağız. Bunun meali nedir hocam diye soracak olursanız, -sV ile versiyon taraması yaparsın. IP adresinin ne olduğunu anlatmama gerek var mı bilmiyorum, --script=vuln ise Nmap’i güzelleştiren NSE scriptlerinden biri olan “vuln” scriptini kullanabilmek için eklediğimiz şey. -vv ise bizlerin daha detaylı çıktı alabilmesini sağlıyor. -Pn ise host’u keşfetmeyi bırakmasını sağlıyor. Böylece taramamız daha hızlı bir şekilde bitiyor. Ek olarak şunu da belirtmekte yarar var. Herhangi bir port aralığı bilerek belirlemedik, Nmap bizim için en sık kullanılan 1000 portu zaten varsayılan olarak tarıyor.

Taramamızı yaptık. Sonuçlar gelmeye başladı. Portlar keşfedildi, Nmap çalışadursun bizler de bu tespit edilen açık portları bir köşeye not edelim. Ben bunlardan üçünü işaretledim. Neden diye sormayın, bir bildiğimiz var. Az sonra anlayacaksınız zaten.

6.png


NSE scriptimiz de çalıştı ve Nmap görevini başarıyla yerine getirerek bize detaylı güzel bir çıktı sundu. Çıktılara bakarak Windows 7 olduğunu görebiliriz. Ayrıca MS17-010 nam-ı diğer EternalBlue güvenlik açığının da hedef sistemimizde bulunduğunu söylüyor. Makinemizin adı neydi hatırlayalım, Blue. MS17-010 güvenlik açığının adı neydi peki? EternalBlue. Çak buradan mevzuyu. Bizi oyalama hadi, dükkanın önünü kapatma müşteri gelmiyor.

Ek genel kültür bilgisi: WannaCry’ın da yayılmak için faydalandığı güvenlik açığı EternalBlue idi.

7.png


Hemen sorularımızı cevaplayalım ve devam edelim.
  • Makineyi taradın mı? Cevaba gerek yok bak diyor, evet taradık.
  • “1000’in altındaki numaraya sahip açık kaç tane port var?” diyor. 3 taneydi.
  • “Makinedeki güvenlik açığı neydi?” diyor. Halen anlamayanlar için “ms” ile başladığını da söylüyor.
8.png


Şimdi sıra geldi MS17-010’u değerlendirmeye. Bunun için Metasploit Framework’ü kullanacağız. Zamanında birkaç abimiz bunun exploitini yazmış, buraya da kolaylık olsun diye eklemişler. Niye kullanmayalım?

msfconsole yazarak Metasploit Framework’ü başlatıyoruz ve search MS17-010 yazarak MS17-010 zafiyeti ile alakalı kullanabileceğimiz exploitleri bulmaya çalışıyoruz. 2 numarada yer alan bizim aradığımız şey. Bu sizde Metasploit sürümünüzün güncelliğine göre farklı numarada olabilir, lütfen dikkat edin. Ben güncellemekle uğraşmadığım için 2 numarada gözüküyor. Exploit yolunu da bir köşeye not alalım, TryHackMe’de yer alan soruları cevaplarken kullanacağız.

9.png


use 2 komutunu girerek ikinci exploiti seçtiğimizi belirtiyoruz. Daha sonra bir sakatlık çıkmasın, dalgınlığımıza gelmesin diye show options diyerek exploiti kullanabilmemiz için gereken bazı ayarlara bakıyoruz.

Eğer herhangi bir değişiklik yapmadan aşağıdaki gibi kullanırsanız exploit çalışmaz. Aşağıdaki ekran görüntüsünden de anlayabileceğiniz üzere exploit uzaktaki hedefini, haberi getireceği evini bilmiyor daha. Gelin ona tekrar döneceği evinin yolunu ve hedefini gösterelim.

10.png


set RHOSTS makineIP şeklinde bir komut girerek exploitimizin uzak hedefini belirliyoruz. Ayrıca bildiğiniz gibi exploit başarılı olduktan sonra karşı sistemde bir oturum açılması suretiyle erişim sağlayacağımızdan bize de bağlanabilmesi için bizim de IP adresimize ihtiyacı var.

Fakat biz bildiğiniz gibi TryHackMe’nin makineyi çözebilmemiz için sağladığı VPN’i kullanarak ağa katılmıştık. Bu nedenle o ağda geçerli olan IP adresimizi vermemiz gerekiyor. Bunun için başka bir terminal penceresinde ifconfig komutunu girip çıkan tun0 IP adresini de girebilirsiniz fakat bu kadar zahmete gerek yok. Kolayı var. set LHOST tun0 dediğinizde ilgili tun0 IP adresi sistemde ne ise exploit için de o olacaktır.

Bu ayarlamaların hemen ardından exploit diyerek hedefi exploit edelim. Başarılı olduğunda aşağıda görüldüğü gibi hedefte bir “Meterpreter” oturumu açılacaktır. Tebrikler, sisteme başarıyla girdik. Eğer her şeyi doğru yapmanıza rağmen halen exploit başarısız oluyorsa Blue makinesini kapatıp açtıktan sonra makinenin yeni IP adresine göre aynı işlemleri uygulamayı deneyin.

12.png


Şimdi TryHackMe üzerinde yer alan konuyla alakalı soruları hemen cevaplayalım.
  • “Metasploit’i başlat” diyor. Başlattık.
  • Makineyi exploitation etmek için kullandığımız exploitin tam yolunu soruyor. Kenara not etmenizi söylemiştim hatırlarsanız. Hemen girip cevaplıyoruz.
  • show options sonrası hedefi exploitin bilmediğini, set RHOSTS komutu yardımıyla hedefi göstermemiz gerektiğini görmüştük. Hemen RHOSTS değerinin eksik olduğu aklımıza geliyor ve cevabı yapıştırıyoruz.
  • Bu kısma oldukça güldüm, zira bizden exploitation esnasında payload (exploitation sonrası sistemde çalıştırılacak kod parçası/yük, genelde bu shell olur) olarak reverse_tcp seçmemizi istemiş. Biz işin kolayına kaçıp doğrudan “Meterpreter” oturumu başlattık. Zira bir sonraki görev “Task 3” de zaten bize normal shell’den daha gelişmiş olan Meterpreter’e yükselmemiz gerektiğini söyleyecek. Buna gerek yok, biz zaten yaptık.
  • Son soruda ise exploit başarılı olmazsa makineyi yeniden başlatıp denememiz gerektiğini ve halihazırda aldığımız bir shell varsa arkaya CTRL+Z kullanarak atabileceğimizi söylüyor. Yeterince okuyup anladıysak devam edelim.
13.png


Evet, dediğim gibi bu görevde Meterpreter’e yükselmemizi söylüyor fakat biz zaten hiç buna gerek duymadık. Ama bilmekte fazlasıyla yarar var, CTF’lerde böyle doğrudan Meterpreter başlatabilirsiniz ama hedefinizde gerçekten pentest yapacağınız bir bilgisayar varsa normal shell alabilirken doğrudan Meterpreter başlatmayı denediğinizde çakılabilirsiniz. Bu nedenle Meterpreter’e nasıl yükseltilebileceğini bilin.
  • Eğer makineye TryHackMe’nin dediği gibi reverse_tcp shell kullanarak sızdıysanız CTRL+Z ile ilgili shell oturumunu arka plana atıp use post/multi/manage/shell_to_meterpreter komutu ile Meterpreter’e yükselebilirsiniz.
  • İlgili değişiklikler oturumlara uygulanır. Yani yukarıdakini yaptıktan hemen sonra arkaya attığınız oturum için bunun geçerli olduğunu söylemelisiniz. Bunun için set session oturumNumarası şeklinde bir komut girmelisiniz. Etkilediğimiz şey oturum olduğu için bu soruyu da SESSION şeklinde cevaplıyoruz.
14.png


Hemen tekrardan savaş meydanına, oturumumuzun açık olduğu terminalimize dönelim. sysinfo komutu yardımıyla öncelikle makinemizi daha detaylı bir şekilde tanıyalım. Bir sisteme girdikten sonra ilk iş daha detaylı keşif olmalıdır her zaman. Burada bizim abartılı bir keşfe ihtiyacımız yok, ama adet yerini bulsun diye bir tane komutu girdik. Çok da şaapmayın.

15.png


Normalde bir sisteme girdikten hemen sonra yetkilerimizi kontrol etmemiz, gerekirse ona göre hak yükseltme tekniklerine başvurmalıyız. Bunun için shell komutunu girerek hedef sistemde normal bir “Command Shell” yani “cmd” oturumu açıyorum ve hangi kullanıcı yetkisinde olduğumu öğrenmek için whoami komutunu giriyorum. Bize NT Authority\System yetkilerinde olduğumuzu söylüyor ama biz işimizi sağlam kazığa bağlayalım.

Ama unutmadan hemen sorularımızı da cevaplayalım.
  • Hedefteki oturumu background’a attıktan sonra hangi komutla listeleyebileceğimizi ve bu komutu kullanıp kullanmadığımızı soruyor. Biz kullanmadık, gerek duymadık. Siz duyarsanız sessions -l komutunu kullanabilirsiniz. Cevap gerekmiyor.
  • Exploit çalışmazsa tekrar deneyin diyor. Cevap gerekmiyor.
  • Normal aldığınız shell varsa onu Meterpreter’e dönüştürdükten sonra geri nasıl kullanmaya devam edeceğinizi soruyor. Bunun için sessions -i OTURUMNUMARASI komutunu kullanabilirsiniz. Cevap gerekmiyor.
18.png


CTRL+Z ile shell oturumumu arka plana atıp tekrardan Meterpreter’e dönüyorum ve sistemde çalışan processleri/görevleri görüntülemek için ps komutunu giriyoruz. Boy boy processler önümüzde duruyor gördüğünüz gibi.

16.png


Şimdi burada ne yapacağız diye merak ediyorsanız, yetkilerimizi genişletmek için üst düzey yetkiye sahip bir işleme atlayacağız. Ben winlogon.exe'yi çok seviyorum. Aramızda uzun zamandır özel bir bağ var, o yüzden “seni seçtim pikaçu” diyip PID numarası 656 olan winlogon.exe işlemine migrate 656 komutuyla atlıyorum ve başarılı da oluyorum.

17.png


Sorularımızı cevaplayalım şimdi tekrardan.
  • Bize ilk kısımda getsystem kullanarak hak yükselmeyi denedikten daha sonra shell alıp kontrol etmemizi söylüyor. Biz böyle yapmadık, zaten yukarıda işimizi sağlam kazığa bağlayıp atlama yaptık. O yüzden gerek kalmadı. Cevap gerekmiyor.
  • ps komutu ile görevleri listeleyip atlama yapmak için ilgili sürecin PID’ini nasıl bulabileceğimizi anlatıyor. Bunu da yaptık. Cevap gerekmiyor.
  • Atlamayı yapabilmemiz için gereken bilgiyi veriyor. Zaten migrate 656 ile bunu yapmıştık. Cevap gerekmiyor.
18.1.png


Şimdi ise sistemimize girdik girmesine, bunu gerçek bir sistem gibi hayal ettiğimizde daha rahat hareket edebilmemiz için bazı bilgileri toplamamız lazım. Bu CTF olduğu için sorunun cevabını vermek dışında bir işimize yaramayabilir fakat gerçek sistemlerde de mutlaka kullanıcı hesaplarının “kullanıcı adı, şifre” gibi oturum bilgilerini ele geçirmek önemlidir.

Bunun için Meterpreter’de kullanabileceğimiz güzel bir komut var, hashdump. hashdump komutu kullanıldığında sistemde çalışan “lsass.exe” içerisinde bir DLL inject ederek kullanıcı adı ve şifre bilgilerinin NTLM hashli halini elde eder ve bize sunar. Burada neden “lsass.exe” olduğunu merak eden arkadaşlar olabilir. Windows sistemlerde kullanıcı oturumuyla alakalı şeylerle ilgilenen servis LSASS yani Local Security Authority Subsystem Service’tir.

Eğer Meterpreter ile değil de, daha farklı şekilde bu NTLM hashlerini elde etmek isterseniz hedef sisteme eriştikten sonra Mimikatz aracını da kullanabilirsiniz. Bu tamamen çalışma şeklinize bağlı bir şey. Biz burada o tarz atraksiyonlara gerek duymadık “hashdump” kullanabiliyorken.

Gördüğünüz gibi “Jon” diye bir kullanıcımız var. Hashini kıracakken dikkat etmeniz gereken bir kısım daha var. Gördüğünüz gibi hash’in ikinci kısmını kopyaladım. Zira diğer 3 default kullanıcıda da ilk kısım aynı, ikinci kısımlar farklı. Biz ikinciyi kıracağız bu nedenle. Birinciler aynıysa kırmakla uğraşacağımız kısım o değildir diye ufak bir mantık yürütebiliriz. Ben kırma işlemi için pek zahmete girmek istemediğimden CrackStation’dan yararlandım. Hash değerini varsayılan veritabanında kontrol ediyor, eğer karşılık gelen bir sonuç varsa size hızlıca gösteriyor.

JohnTheRipper veya HashCat ile wordlist kullanarak da kırabilirdik fakat bu işimizi uzatacağından ve bunun bir CTF olduğunu bildiğimizden CrackStation kullandık. Gerçek sistemlerde bu şekilde CrackStation yardımıyla kıramayabilirsiniz. Mecburen bazı programları kullanacaksınız.

19.png


Hemen sorularımızı da cevaplayalım.
  • Kullanıcı adı “Jon” idi.
  • Parolayı da hash’i CrackStation veritabanında olup olmadığını kontrol ederek karşılığını bulmuştuk. “alqfna22” parolamız.
20.png


Şimdi ise bizden en son görev olarak sistemde çeşitli yerlerde bulunan “flag” yani bayrakları bulmamızı istiyor. Bu bayraklar geleneksel makinelerdeki gibi değil, Windows sistemlerin bakılması gereken çeşitli köşelerine 3 adet flag saklanmış.
21.1.png


Birçoğunuz tek tek dizinleri gezip bulmaya çalışmaya kalkabilir. Fakat biz enayi olmadığımız için böyle şeyler yapmayacağız. Gerçek sisteme de girdiğinde işini en kısa sürede halledip çıkmak her zaman en iyisidir. Zaman kaybetmeye gerek yok, bunun için az birkaç Windows komutlarını bilmeniz yeterli. TryHackMe bizi uğraştırmak için böyle bir şey yapmış fakat yemezler diyoruz.

Öncelikle tekrardan sistemde shell komutu ile normal shell alalım. Daha sonra Windows sistemlerde bir dosyayı aramak için kullanılan where komutu yardımıyla C:\ dizini altında bulunan, adında “flag” geçen bütün dosyaları arayabiliriz. Bunun için where /R C:\ flag*.txt komutunu giriyoruz. * bu işaret, bir joker karakter. Yerine herhangi bir harf veya rakam gelebileceğini belirtiyor.

Komutu girelim, girdikten hemen sonra bize patır patır flag lokasyonlarını verecek. Komutun sonlanmasını bekleyelim, oldukça kısa sürüyor zaten. Hemen sonrasında ise type FlagLokasyonu şeklinde komutlar girerek metin belgelerine saklanmış olan bayrakları yakalayabiliriz. TryHackMe kurallarına riayet edip bayrakları gizledim. Kendiniz bulursunuz artık, her şeyin hazırına kaçmak yok.

21.png


Sorularımızı cevaplayıp bayraklarımızı girelim :)

22.png


Hepsi bu kadardı. TryHackMe’deki güzel bulmacalardan birisi olan Blue makinesini de böylece çözmüş olduk.

Peki bu nereden esti derseniz, piyasada birçok kişinin yalnızca düz bakış açısıyla anlatımlar yaptığını görünce hiç değilse biraz daha farklı şekillerde basitçe bir makine nasıl çözülür anlatmak istedim. Bu tarz şeylerde özellikle de bilişim alanında tek tip düşünce sizi her zaman yanıltır. Fark ettiyseniz işi zorlaştırmak için birçok tuzak karşımıza çıktı fakat biz her zaman tuzağın ortasına atlamak yerine çevresinden dolanarak da başarıya ulaştık.

Umarım faydalı ve işinize yarayacak bir anlatım olmuştur. :)
 
Son düzenleme:
Emeğine sağlık hocam. Güzel bir çalışma olmuş.
 
Tamamını okumaya fırsatım olunca okuyacağım. Ancak belli ki çok uğraşmışsınız, tebrikler ve teşekkürler hocam. :)
Elinize sağlık hocam. Terminatör gibisiniz maşallah. :D
Tamamını okumadım ancak göz gezdirince çok uğraştığınız belli oluyor.
Kesinlikle deneyeceğim.
Emeğine sağlık hocam. Güzel bir çalışma olmuş.
Çok teşekkürler hocalarım :) Allah razı olsun.
Sanalın Enver Paşası gibisiniz... Maşallah.
Estağfurullah :)
Bu işler sakat işler hiç bulaşmamak lazım.
Hocam ne deseniz doğru fakat bunu yasal bir şekilde yasal bir platformda yapıyoruz :) Yani illegal bir durum söz konusu değil. Yazımın başında da bunu belirtmiştim.
----------------------------------------------------------------------------------------------------------
Son birkaç görselde hata olmuştu, onları düzelttim. Sayfayı yenileyip kontrol edebilirsiniz tekrardan.
 
Durum
Mesaj gönderimine kapalı.

Geri
Yukarı