1. Geleneksel Stajyer CTF Soru ve Cevapları

İlkini 26 Mayıs - 1 Haziran 2016 tarihleri arasında gerçekleştirmiş olduğumuz ve bundan sonraki stajyer alım süreçlerinde de devamlı gerçekleştirmeyi düşündüğümüz CTF (Capture The Flag) yarışmamızda sorulan sorular ve çözümleri için izlenebilecek adımlar aşağıda verilmiştir.

1.






Verilen soruda "Her görünenin ardında gizli bir şeyler vardır." ile olayın sadece bir resimden ibaret olmadığı ve bir şeylerin gizlendiği/gizlenebileceği anlatılmaya çalışılmıştır. Burada da ilk olarak data gizleme/saklama bilimi olan Steganografi'nin akıllara gelmesi gerekmekteydi. Steganografi ile ilgili ayrıntılı bilgi için bkz.
Resim dosyalarına farklı yöntemler ile data saklanabilmektedir. Popüler olarak kullanılan Steghide aracıyla, graph-theoretic yaklaşımıyla veri saklama işlemi yapılabilir.

Soruda verilen resim aşağıdaki gibidir.
Steghide ile resim içerisindeki datayı çıkartmayı denediğimiz zaman parola soracaktır.
Brute force ile doğru parolayı bulmanız gerekmekte, burada yazacağınız küçük bir script ile vermiş olduğunuz wordlist'i deneyerek doğru parolayı bulabilirdiniz. Veya şu Github adresindeki python ile yazılmış script'i kullanarak hızlıca doğru parolayı bulabilirdiniz.
Wordlist olarak, en çok kullanılan 500 parolayı içerisinde barındıran, aşağıdaki projeden indirebileceğiniz, 500-worst-passwords.txt dosyasını kullanabilirdiniz. Görebildiğiniz üzere gizli dosyayı saklamak için kullanılan parola iloveyou çıktı. Resim dosyasından çıkan veri flag.txt isminde bir text dosyasıdır. Dosya içeriği ise yukarıdaki resimden de görüleceği üzere jpek_{WXIKS_qy_cetxmr_wir} dir.
Anlamsız gözüken bu yazı dizisi, ilk şifreleme yöntemlerinden biri olan Sezar şifreleme ile şifrelenmiştir. Basit manada Sezar, şifrelenecek metinde kullanılan karakterlerin belli bir aralıkla kaydırılması işlemidir.
Şu adreste online olarak girdiğiniz bir yazı dizisinin Sezar şifreleme ile tüm kombinasyonlarını görebilirsiniz. Metnimiz ROT22 ile shift edilmiştir ve bulmanız gereken cevap flag_{STEGO_mu_yaptin_sen} idi.

2.
Kaynak başlığıyla ve ? içeriğiyle verilmiş olan bu soruda hacker hislerinize güvenip sayfanın kaynağına baktığınız vakit sorunun olduğu alanda  aHR0cDovLzE4OC4yMjYuMjUzLjExOC8= gibisinden bir text ile karşılaşacaktınız. Base64 ile encode edilmiş gibi görünen içeriği online olarak veya komut satırından base64 -d komutuyla decode ettiğiniz zaman http://188.226.253.118/ adresine ulaşabilirdiniz.
Bulunan adresi ziyaret edildiği zaman şöyle bir görüntü ile karşılaşacaktınız.
Küçük bir gülümsemeden sonra tekrar sayfanın kaynağına bakmak gerekmekteydi.
 <!-- Ne baktin?-->  
 <!-- dir'leri mi buster etsen?-->  
 <!-- .PeHaPe-->  

Verilmiş ipucundan anlayacağınız üzere directory brute force yapmanız gerekmekteydi ve ulaşacağınız sayfanın uzantısı .PHP idi. İpucu içerisinde ayrıca kullanılabilecek araçlardan biri olan DirBuster'da verilmişti.
Alternatif araçlar kullanılabilir. Yazıda Go diliyle yazılmış Gobuster aracı kullanılmıştır.
Buradaki önemli nokta directory brute force sırasında kullanacağımız wordlist ve uzantının PHP olmasıdır. Bu iki noktayı dikkate alarak parametrelerimizi ayarladıktan sonra aşağıdaki gibi bir sonuç alacaktınız.
Loginadmin.php sayfası ulaşabileceğimiz bir sayfaydı. Sayfayı ziyaret ettiğimiz zaman login ekranı çıkmaktaydı. Görmüş olduğunuz user-pass alanına el alışkanlığından ötürü admin-admin yazıp ulaşmanız gereken flag değerini elde edebilirdiniz. Alternatif olarak Burp suite veya ZAP gibi fuzzing yapabileceğiniz proxy araçları ile kullanıcı adı-parola ikililerini deneyip cevaba ulaşabilirdiniz.
Ulaşmanız gereken flag değeri: Flag_{kaba_kuvvetin_dibine_vurduk}

3.
  Her şeyin başı 1 ve 0 iken ilk yapmamız gereken işlem verilen içeriği okunabilecek bir hale getirmekti. Binary to ascii yada binary to text anahtar kelimeleriyle arama yaparak, online olarak çevirme işlemini yapabilecek web sayfalarından birini kullanarak 188.166.33.105/32 IP adresini elde edebilirdiniz. Verilmiş olan 32 subnet'i tek bir IP adresini işaret ediyordu.



  Elde etmiş olduğumuz IP adresi üzerinden yürüyebilmek için ilk olarak hangi portların açık olduğunu öğrenmemiz gerekir. Nmap ile basit bir şekilde port taraması yapabilirdiniz.
Terminolojide Elite manasına gelen 31337. portumuz açık olarak görünüyor. Bundan sonra port'un yanlış servis gösterme ihtimaline karşı -sV parametresiyle servis scan yapılabilirdi. Veya porttan basit bir şekilde bilgi alabilmek için telnet veya netcat gibi araçlar ile manuel bağlanmayı deneyebilirdiniz.
Elde etmiş olduğumuz IP ve port adresine netcat ile bağlanma isteği yolladığımızda herhangi bir banner ile karşılaşmadık. Bir içgüdü olarak help veya ? ile çalışan uygulamanın yardım içeriğine ulaşma ihtimalini düşünerek deneme yapıyoruz. Görünen ve kullanılabilir olan komutları deneyerek sonuç almaya çalışıyoruz.
cat flag.txt veya oku flag.txt ile ulaşmamız gereken flag değeri olan Flag_{telnet_akiyoo_yeaa} ulaşabilirdiniz.

4.
Verilmiş olan dosyayı indirip incelediğimiz zaman bir process'in memory dump'ı olduğu görülebilirdi. Soruda da Windoz için roketatar kullanıcı parolası sorulduğu için düşünülmesi gereken LSASS.exe process'inden alınmış dökümü mimikatz gibi bir araç kullanılarak parolanın açık halini elde etmek olmalıydı. Ayrıntılar ve kullanım için şu blog adresine bakabilirsiniz.
Resimden de görüleceği üzere bulunması istenen kullanıcının açık parolası Cokz0rBirPar0la olarak elde edilmeliydi.

5.
Ipucu olarak verilmiş olan resim mesajlaşma uygulaması olan Telegram'a ait.
Soru başlığı olarak verilen crypttechbot ise Telegram üzerinde kullanılabilir olan ve programlanabilme özelliği olan bot ismini gösteriyordu.
Yapılması gereken Telegram Mobil/Desktop veya Web üzerinden @crypttechbot yazarak botu ekleyip, yazışacak duruma gelmek olmalıydı.
Belli bir konuşma düzenine göre hazırlanmış diyaloğu bot ile yürüttüğünüz vakit cevabın basit bir istek/kelime olan Flag/flag ile size verileceğini görebilirdiniz.
Elde edilmesi gereken flag değeri: Flag_{pek_bi_guzelmis_telegram}

6.
Magic başlığıyla ve byte'lardan bahseden soru içeriğiyle verilmiş soruda, dosya olarak soru_6.tar.gz verilmiş idi. Soruda dikkati çeken ve sorulan asıl şey Magic byte'lardı. Ek olarak dosya uzantılarının bizi aldatmaması gerektiğiydi. Magic byte hakkında bilgi için bkz. Özet olarak magic bytes, bir dosyanın belirli byte değerleri dosya formatı hakkında bilgi vermektedir ve dosya uzantıları kolayca değiştirilebilmektedir.
Linux üzerinde file komutuyla dosyanın ne dosyası olduğu, formatı hakkında bilgi elde edebiliriz.


Dosya file komutuyla incelendiği vakit aslında sıkıştırılmış dosya değil de jpeg bir resim dosyası olduğu anlaşılabilirdi. Bundan sonra dosyanın uzantısını jpeg/jpg olarak değiştirip açılabilir hale getirebilirdik.
Resim dosyası olarak açtığımız vakit kandırıldığımızı görecektik. Dosya analizleri için kullanılan binwalk ile resim dosyası içeriğinde başka dosyaların gömülü olup olmadığını görebilirdiniz.

Üstteki resimde görüleceği üzere JPEG resim dosyasının sonrasında ki byte'lar içerisinde gizli.txt isminde bir dosyayı içerisinde barındıran şifreli bir zip dosyasının varlığı dikkat çekiyor. Bu içeriği çıkarmak için binwalk yada benzer araçlar kullanılabilirdi.
Örnek olarak foremost kullanıp içeriği çıkarmasını sağlayabiliriz. Foremost dosya kurtarma işlemlerinde de kullanılabilen open-source bir araçtır.
Dosya çıkarma işleminden sonra göreceğiniz üzere bir zip dosyası çıkarıldı. Fakat bu zip dosyası da şifreli olduğu için brute force ile veya bir sözlük dosyası ile kırmayı denemeniz gerekmekteydi. Basit olarak fcrackzip ile veya şu adresteki  JtR'ı kullanan script ile parola denemeleri yapılabilirdi.
Denemeler sonunda zip'li dosyanın parolası 123456 olarak elde edilecekti.
Zip dosyası unzip edildiği zaman içerisinde yer alan gizli.txt dosyasınının içeriğini okuyarak flag değerine ulaşabilirdik.
Bulunması gereken flag değeri: Flag{magic_bytes_akanzi}

7.

Soruya cevap olarak aşkım şarjım az kaya beni bırakacak sabah ararım ve OSINT tanımını yollayan arkadaşlara teşekkür edip, şunları kendilerine armağan ediyoruz.
Soruda ipucu olarak verilmiş olan Top_secret_bir_gorusme kullanarak ilerlemeniz gerekiyordu. El alışkanlığından ötürü direkt olarak Google üzerinden aratabilir veya soru içerisinde verilen Sağa sola yabıştırıyorlar dan yola çıkarak paste sitelerinde arayabilirdik. Ki burada akla ilk olarak gelen/gelmesi gereken pastebin idi.


Aramalar sonucunda http://pastebin.com/EEsYtVR8 adresine ulaşılıyordu. Burada MrX ve Moruk kod adlı iki kişinin karşılıklı konuşmaları vardı.
Diyalog içerisindeki aşağıdaki konuşma nasıl ilerleneceğine ve cevap olarak neyin bulunması gerektiğine cevap niteliğindeydi.
 MrX - @tkafasi  
 Moruk - neyini istiyon sen simdi bunun, napak dövek mi?  
 MrX - morukcuğum, sen bana numarasını bul, cevap olarak yolla tamamdır.  


@tkafasi kod adlı birinin ait bilgilere, özellikle telefon numarasına ulaşılması gerekmekteydi. @tkafasi olarak geçen kelime bir twitter hesabını andırıyor. Bunu kullanıcı adı olarak kullanıp erişmeyi denediğimiz vakit, gerçekten öyle bir hesabın var olduğunu görebilirdik.

Kişisel herhangi bir bilgiye buradan erişemediğimiz için atılan twitler üzerinden yürümemiz gerekiyordu. Atılan bir twit şöyle idi: "İş adamı gibiyimdir, her mekanda takılırım."
Buradan iş adamlarının, çalışanların takıldığı ortam olan Linkedin elde edilip, AtKafasi adlı kişiyi arayarak kişisel bilgilerine ulaşmak denenebilirdi. Arama sonucunda https://www.linkedin.com/in/atkafasi adresinde yer alan aşağıdaki profil elde edilebilirdi.

Profil içerisinde ilgiyi çeken ve ulaşabildiğimiz bir blog adresi var idi. Blog adresindeki sayfaları incelediğimiz zaman hakkında sayfası olan, https://atkafasiweb.wordpress.com/about/ adresinden telefon numarasına ulaşabilirdik.



Bulmamız gereken telefon numarası: +902122177017

8.
  Soru olarak airodump ile WPA handshake yakalanmış bir dosya ve AP'ye ait parolanın olduğu formatı gösteren bir  ipucu verilmişti.
Parola formatını oluşturmak için Crunch aracı kullanılarak özel bir wordlist oluşturup aircrack ile verilen cap dosyasında yer alan AP'e ait parola kırılabilirdi.
Ayrıntılı bilgi için şuradaki blog adresine bakabilirsiniz.

AP'e ait parola, oluşturulan wordlist ile aircrack kullanılarak 20-30 sn arasında bir sürede kolayca kırılabilirdi.
Cevabı istenen AP'ye ait ESSID ve parola şöyledir:
ESSID: Crypttech Hayrati (100Mbit)
Parola: 3z0rP4r0la1

Bonus.

Internet unutmaz başlığıyla verilen soruda Internet Archive olarak geçen, nam-ı diğer The Wayback Machine olarak bilinen https://archive.org adresini kullanarak Crypttech'in eski iş adresini bulmanız gerekmekteydi.
Örnek olarak aşağıdaki resimde, Nisan 2009 tarihinde Crypttech'in web sayfasındaki İletişim menüsü altında açık bir şekilde iş adresi yer almaktaydı.

Sonraki staj alım CTF'lerinde görüşmek üzere...

Yorumlar

Bu blogdaki popüler yayınlar

2. Geleneksel Stajyer CTF Soru ve Cevapları - 2017

ARP Poisoning ile Browser Exploitation - MITMf + BeEF + Metasploit