Hepinize selamlar arkadaşlar. Bugünkü konumuzda TryHackMe'de bulunan H4cked adlı CTF makinesini çözeceğiz. Hedef makinemiz iki tasktan oluşmakta, ilk bölümde makinenin bize vermiş olduğu pcap dosyasını indirip wireshark ile açarak inceleyip soruları cevaplayacağız. Ardından ikinci bölümde root olup bayrağı kapacağız sonra da konumuzu sonlandıracağız. Dilerseniz başlayalım.
Task 1: Oh no! We've been hacked!
Sorularımızı çözmeye başlayalım.
1. The attacker is trying to log into a specific service. What service is this? (Saldırgan, belirli bir hizmette oturum açmaya çalışıyor. Bu hangi hizmet?)
Wireshark, 21 numaralı porta birden fazla bağlantı girişimi olduğunu gösteriyor. 21 numaralı port FTP portudur. Sorumuzun cevabı FTP.
2. There is a very popular tool by Van Hauser which can be used to brute force a series of services. What is the name of this tool? ( Van Hauser tarafından geliştirilen brute force uygulamak için kullanılabilecek çok popüler bir araç var. Bu aracın adı nedir?)
“Van Hauser brute force” üzerine Google araması yaptığımızda cevabı buluyoruz. Cevabımız hydra.
3. The attacker is trying to log on with a specific username. What is the username? (Saldırgan, belirli bir kullanıcı adıyla oturum açmaya çalışıyor. Kullanıcı adı nedir?)
Herhangi bir TCP bağlantısına basıp sağa tıklıyoruz. Follow->TCP Stream’e tıklıyoruz. Bu bize mevcut TCP bağlantısındaki paketleri gösterecektir. Saldırgan jenny kullanıcı adıyla çoğu kez oturum açmayı denemiş. Cevabımız jenny.
4. What is the user’s password? (Kullanıcının şifresi nedir?)
Saldırgan oturum açmada başarılı olduğunda girmiş olduğu şifreyi giden gelen paketlerden elde edebiliriz. Bir komut kabul edilip başarıyla işlenirse, sunucu 200 yanıt kodu verir. Bunun için wireshark’ta paket filtreleyerek başarılı girişi tespit edeceğiz.
ftp.response.code == 200
komutunu yazalım.
Filtreleyerek bulduğumuz paketlerden herhangi birine basıp sağa tıklıyoruz. Follow->TCP Stream’e tıklıyoruz. Sonucu detaylı bir şekilde incelediğimizde şifreyi de bulmuş oluyoruz. Cevabımız password123.
5. What is the current FTP working directory after the attacker logged in? (Saldırgan oturum açtıktan sonra geçerli FTP çalışma dizini nedir?)
Saldırgan “pwd” komutunu çalıştırmış. Pwd komutu işlem yapılırken hangi dizinde olduğumuzu gösterir. Cevabımız /var/www/html
6. The attacker uploaded a backdoor. What is the backdoor’s filename? (Saldırgan bir backdoor yükledi. Backdoor dosya adı nedir?)
Saldırganın FTP bağlantısını kurduktan sonra sisteme “shell.php” isimli bir reverse shell dosyası yüklediğini tespit ediyoruz. Cevabımız shell.php
7. The backdoor can be downloaded from a specific URL, as it is located inside the uploaded file. What is the full URL?( Backdoor, yüklenen dosyanın içinde bulunduğu için belirli bir URL’den indirilebilir. Tam URL nedir?)
Ftp-data filtresini uygulayarak sistem içerisine yüklenmiş verilere ulaşıyoruz. STOR komutu veri bağlantısı başarıyla kurulduktan sonra sisteme dosya yüklerken kullanılır. Saldırganın STOR komutu ile sisteme shell.php dosyası yüklediğini görüyoruz.
Sağa tıklayıp Follow->TCP Stream’e tıklıyoruz. Dosyanın içeriğini ve sorunun cevabını görüyoruz. Cevabımız php-reverse-shell | pentestmonkey
8. Which command did the attacker manually execute after getting a reverse shell?( Saldırgan reverse shell aldıktan sonra hangi komutu manuel olarak yürüttü?)
Shell.php dosyasını incelediğimizde IP ve Port numaralarını görebiliriz.
Shell.php dosyasından elde ettiğimiz IP ve port bilgilerini wireshark üzerinden filtreleyerek aradığımıza daha kolay bir şekilde erişiyoruz.
ip.dst_host == 192.168.0.147 && tcp.dstport == 80
komutunu yazalım.
Ardından sağ tıklayıp Follow->TCP Stream diyelim. Çıkan sonucumuzu incelediğimizde cevabımıza ulaşıyoruz. Cevabımız whoami.
9. What is the computer’s hostname? (Bilgisayarın hostname’i nedir?)
Sonucumuzun en üstünde bilgisayarın hostname'i hakkında bilgi vermektedir. Cevabımız wir3.
10. Which command did the attacker execute to spawn a new TTY shell? (Saldırgan yeni bir TTY shell oluşturmak için hangi komutu çalıştırdı?)
Saldırganın pyhon3 –c ‘import pty; pty.spawn(“/bin/bash”)’ komutunu çalıştırıp yeni bir shell oluşturduğunu görüyoruz. Cevabımız pyhon3 –c ‘import pty; pty.spawn(“/bin/bash”)’
11. Which command was executed to gain a root shell? (Bir root shell elde ermek için hangi komut çalıştırıldı?)
Sonucu incelemeye devam ettiğimizde saldırganın yapmış olduğu komutları görüyoruz. Çalıştırılan komut aynı zamanda cevabımız olan sudo su komutudur.
12. The attacker downloaded something from GitHub. What is the name of the GitHub project? (Saldırgan, GitHub’dan bir şey indirdi. GitHub projesinin adı nedir?)
Reptile adında bir araç indirildiğini görüyoruz. Cevabımız Reptile.
13. The project can be used to install a stealthy backdoor on the system. It can be very hard to detect. What is this type of backdoor called? (Proje, sisteme gizli bir backdoor kurmak için kullanılabilir. Tespit etmek çok zor olabilir. Bu tür arka backdoorlara ne denir?)
Şimdi reptile aracını araştıralım. Google'da "what is reptile hacking tool" başlığı adı altında arama yapıyorum. Çıkan sonuçlarda Rootkit olduğunu görüyorum. Cevabımız Rootkit.
Task 2: Hack your way back into the machine
İkinci adımda bizden flag.txt dosyasını okuyup flag’i bulmamız isteniyor. Saldırganın kullanıcı şifresini değiştirdiğini, flag’in /root/Reptile dizininde olduğunu ve gerekli hallerde pcap dosyasından yararlanabileceğimiz gibi ipuçlar verilmiş.
Şimdi makinemizi çalıştırıp bir nmap taraması yapıyoruz.
Nmap tarama sonucunda 21(FTP) – 80(HTTP) portlarının açık olduğunu tespit ettik. Parolanın değiştiği ipucunu almıştık. FTP hizmeti üzerinde Hydra aracını çalıştırıp değişen parola bilgisine ulaşalım.
Kullanıcı adı bilgisini zaten aldık. Şimdi aracı;
hydra -l jenny -P /usr/share/wordlists/rockyou.txt ftp://10.10.155.228
komutunu kullanarak çalıştıralım.
Kullanıcı adı jenny şifre 987654321 şeklinde bulduk. Elde ettiğimiz bilgilerle FTP servisine bağlanıyoruz. Saldırganın shell.php dosyasını indiriyoruz.
Shell.php dosyamızı get shell.php komutunu yazarak indirdik. Şimdi yapmamız gereken bazı ayarlar var.
Terminalimize gelip ifconfig komutunu yazalım. Bu komut bağlı olduğumuz ip adreslerini karşımıza çıkaracaktır. Shell.php dosyamızı editlerken kullanacağımız ip adresi tun0'a ait olmalıdır. Orada yazan 10.4.40.1 ip adresini kullanacağız.
Shell.php dosyamızı metin editöründe açıyoruz. Biraz aşağı indikten sonra karşımıza böyle bir ekran gelecek. Burada ip ve portu editleyeceğiz. İfconfigden edindiğimiz kendi ip adresimizi ve dinleme portunu değiştiyoruz. Ben 80 yazdım siz istediğinizi yazabilirsiniz.
İçeriğini değiştirdiğimiz shell.php dosyasını put shell.php komutunu yazarak yüklüyoruz. Şimdi siteye gidelim.
Siteye gittiğimiz zaman karşımıza böyle bir ekran çıkacaktır. Burada herhangi bir şey yapmayacağız. Terminalimize gelip sitemizi dinlemeye alacağız. Bu arada sitede /shell.php sayfasını açacağız. Bu sayfa açılmayacak boşta dönecek. Biz de dinleme yaptığımız için bilgiler direkt olarak gelecek. Eğer sayfa hemen açılıyor ve connection refused diyorsa shell.php adlı dosyayı düzgün kaydedememişsinizdir.
Dinlememiz başarılı sonucu verdi. Reverse shellimizi türkçesiyle ters kabuğumuzu almış olduk.
Saldırganın kullanmış olduğu adımları takip ediyoruz. Saldırgan sisteme sızdıktan sonra shell değiştirmişti. Biz de aşağıdaki komutu kullanarak shell değiştiriyoruz.
python3 -c ‘import pty; pty.spawn(“/bin/bash”)’
Shellimizi değiştirdikten sonra su jenny yazıyoruz ardından da edindiğimiz şifreyi yazarak devam ediyoruz.
Artık root olmayı başardık. Şimdi cd /root/Reptile komutumuzu yazalım, ls komutumuz ile içeriyi görüntüleyelim. İşte flagımız burada.
cat flag.txt komutunu yazarak bayrağımızı kapıyoruz.
Konumuzun sonuna geldik, okuduğunuz için teşekkürler. Başka bir ctf çözümünde görüşmek dileğiyle..