Google Developers MultiCamp CTF Write-Up

Google Developers MultiCamp CTF Write-Up

Bu CTF Google Developers MultiCamp ve CyberThink tarafından hazırlanmıştır. Temel Network, Web Uygulama Güvenliği, Machine Hacking ve Siber İstihbarat eğitimlerini tamamlayan katılımcılar Capture The Flag yarışması ile bilgilerini pekiştirmiştir. Google Developers MultiCamp CTF’i ilk defa CTF’e katılan katılımcılara göre baz alınıp hazırlanmıştır.

GİRİŞ

Soru Adı: Elimde böyle bir şey var, bulmama yardımcı olur musun?
Soru: RmxhZ3tHdXozbF9CMXJfQjRzbDRuZzFjXzBsZHVfaDRjazNyfQ==

Arkadaşlar bize bu soruda bir şifreleme yöntemi verilmiş. Bu “base64” adında bir şifreleme methodu ile şifrelenmiş bir veri. Eğer bir şifreleme methodu görüyorsanız ve bunun hangisi olduğunu bilmiyorsanız, elinizdeki hash değerini https://www.tunnelsup.com/hash-analyzer/ bu adreste aratarak türünü tespit edebilirsiniz. Biz bunun base64 olduğunu biliyoruz ve internette base64 decoder diye bir arama yapıyoruz.

Ardından en üstteki “https://www.base64decode.org/” adresine giriş yapıyoruz.

Buraya elimizdeki hash değerini yapıştırıyoruz ve hash’in decode edilmiş halini görüyoruz.

NETWORK

Soru: Version Disclosure

İlk olarak soruda bize verilen pcap dosyamızı indiriyoruz ve wireshark adlı araç yardımıyla paketi açıyoruz.

İndirdiğimiz paketin adına bakalım: “gezinti-log-download-office”

Burada download’ı gördüğüm için ilk önce “http” filtrelemesi kullanıyorum.

Görüldüğü gibi direkt olarak openoffice’nin versiyonu karşımıza çıkıyor.

Soru: Admin şifresi?

İlk olarak soruda bize verilen pcap dosyamızı indiriyoruz ve wireshark adlı araç yardımıyla paketi açıyoruz.

Soruyu göz önünde bulundurarak paketi biraz inceliyorum ve “FTP” servisine çok sayıda istek yapıldığını görüyorum. Bunun için “FTP” filtrelemesi kullanıyorum.

Filtreleme işleminden sonra gelen ekranda “Administrator logged in” diye bir info içerek paket görüyorum.

Sağ tık > Follow > TCP Stream diyerek paketin içeriğini açıyorum.

Görüldüğü üzere admin şifresi “napier”dir.

Soru: Filtreler çooook önemli!

İlk olarak soruda bize verilen pcap dosyamızı indiriyoruz ve wireshark adlı araç yardımıyla paketi açıyoruz.

Daha sonra “http” filtrelemesi yapıyoruz ve bunun sonucunda bir çok http isteği olduğunu görüyoruz.

Şimdi ise “http contains flag” filtresiyle, paketin içinde herbagi bir flag kelimesi var mı ona bakalım.

Evet önümüze bazı sonuçlar çıktı. API olan pakete, “Sağ tık > Follow > HTTP stream” yapıyoruz.

Ve daha sonrasında ise açılan kısımda flag’imizi görebilirsiniz.

WEB

Soru: Isınma Turu Başlasın

Çözüm:

Bu soru da yarışmacı arkadaşlarımızın dikkatlerini ölçmek için hazırlanmıştır.
Soruya gidince karşılaştığınız apache’nin çalıştığını gösteren index sayfamızdayız. Sayfa da sistem bilgisi hariç hiç bilgi yok.

Burada sizlerden istediğimiz sayfa da bir şey bulamayınca kaynak kodunu incelemenizdi. Kaynak kodun en altında flag ’imiz bulunmaktadır.


Soru: WEB 400

Çözüm:

Eğitimimiz de anlatılan idor zafiyetini barındıran bir sorudur. Yarışmacıların kullanıcı bilgilerini görüntülediği bir erkanda sadece 3 kullanıcı bilgisi görmektedir.

Seçilen kullanıcının Ad, Şifre ve Kayıt Tarihi içeren bilgilerin olduğu ekran gelmektedir.

Burp Suite programı ile isteğin arasına girip kullanıcı id’lerini değiştirerek flag aramaları gerekmektedir.

Aynı işlem kaynak kodları görüntüleyip orada yazan kullanıcı id değerini değiştirerek yapılabilir. Sistemde 17 tane kullanıcı vardır yarışmacının tek tek id yükselterek aramaları gerekmektedir. Flag 11 id’li kullanıcının şifre başlığı altındadır.

Soru: Aramayan Bulamaz, Bulanlar Arayanlardır

Çözüm:

İlk olarak sorunun adını incelediğimizde aramak kelimesine vurgu yapıldığını görüyoruz. Bu yüzden sayfaya girer girmez bir arama kısmı var mı yok mu buna bakıyoruz.

Biraz aşağıya kaydırınca sayfada bir arama butonu olduğunu görüyoruz.

Bu arama kısmına herhangi bir şey yazıp ara diyoruz.

Girdiğimiz anahtar kelimeyi içeren herhangi bir sonuç bulunmadı hatası alıyoruz. Daha sonra girilenkeyword’ or 1=1# payloadını kullanarak sql injection’u test ediyoruz.

Biz yukarıda kullandığımız payload’da sunucuya şöyle bir mesaj gönderdik. Girilen keyword varsa bana bir sonuç getir yada bir bire eşitse bir sonuç getir. Girilen keyword’e ait herhangi bir sonuç yoktu fakat bir bire eşit dediğimizde bize farklı sonuçlar getirdi. Biz buradan sql sorgusuna müdahale ettiğimizi anlayabiliriz. Bunu fark ettikten sonra URL kısmındaki GET isteğini alıp sqlmap’e geçiyoruz.

sqlmap.py -u”http://35.223.197.109/search.php?search=*&search_submit=Search” –dbs

Komutuyla veritabanı çekme işlemi yapıyoruz. Dikkat ettiyseniz search= kısmına yıldız işareti koyarak sqlmap’de komutu çalıştırdık. Bunu yaparak sqlmap’e, ben sql zafiyetinin bu parametrede olduğunu biliyorum. Sen de başka bir yere bakma direkt buradan zafiyeti sömür ve test et diyoruz.

Gördüğünüz gibi sunucuda bulunan veritabanları listelendi. Şimdi
sqlmap.py -u”http://35.223.197.109/search.php?search=*&search_submit=Search” -D elearning –tables
komutunu kullanarak “elearning” veritabanında bulunan tabloları getiriyoruz.

Ardından sqlmap.py -u”http://35.223.197.109/search.php?search=*&search_submit=Search” -D elearning -T instructor –columns
komutuyla “instructor” tablosunda bulunan kolonları listele diyoruz.

Gördüğünüz gibi kolonlar listelendi. Şimdi ise sqlmap.py -u”http://35.223.197.109/search.php?search=*&search_submit=Search” -D elearning -T instructor -C user_email –dump
komutuyla “user_email” kolonundaki verileri çekiyoruz.

OSINT

Soru Adı: TTP
Soru: T1313, T1313 ve T1341 tekniklerini kullandığı anlaşılan tehdit grubunun girmiş oldukları ağlarda bilgi toplayabilmek için C# ile bir network crawler aracı geliştirdiğini öğrendik. Araç çalıştırıldığında leetspeak ile ekrana bir ASCII art yazdırmaktadır. Bu aracın version 1.0’da ekrana yazdırdığı isme ihtiyacımız var.

Çözüm:

Bir TTP ile ilgili soru sormak ve grup ilişkilendirmesi yapmak için https://attack.mitre.org adresine gidilir ve soruda bahsi geçen herhangi bir teknik aratılır.

Tekniklerin her birine bakıldığında tüm sonuçlar Cleaver adlı grubu işaret eder.

Grubun tehdit vektörlerine bakabilmek adına bilgilerine bakılır.

Soruda verilen tekniklerin hepsini kullanmaktadırlar ve bu sayede aralarında ilişki yüksek oranda doğrudur.

Kullandıkları yazılımlara bakıldığında bir New Crawler aracı görülmektedir ancak aracın ismi hakkında fazla bilgi bulunmamaktadır.

MITRE’nin bu bilgileri almış olduğu raporlara bakıldığında https://www.cylance.com/content/dam/cylance/pages/operation-cleaver/Cylance_Operation_Cleaver_Report.pdf adresinde Cleaver’in yapmış olduğu operasyonlarla ilgili detaylı bir doküman görülmektedir.

Grubun kullanmış olduğu araçlara bakıldığında pdf’in 21. sayfasında Net Crawler ile ilgili bilgiler görülmektedir. Net Crawler’ın ilk versiyonu ““Zh0up!n” adını kullanmaktadır.

Cevap = Flag{Zh0up!n}

Soru Adı: C2
Soru: Elimizde bir zararlı yazılıma ait SHA256 hashi var ve bu zararlı çalıştıktan sonra Rusya’da bulunan bir domain adresiyle iletişim kurararak HTTP Response’u 200 dönen bir bağlantı sağlayarak farklı bir zararlı dosyası daha çekiyor. Bu zararlı dosyasının MD5 hash’ine ihtiyacımız var.
“00f7ee4515a212dae20042c41342de0508499f2e203228174b769c4a16bf9ee5”

Çözüm:

Zararlı dosyasının hash’i https://app.any.run/submissions adresinde aratılarak dosyanın daha önceden zararlı yazılım analizine tabi tutulup tutulmadığına bakılır.

Dosyanın 17 Ağustos 2018 tarihinde başka bir kullanıcı tarafından yüklendiği ve sandbox üzerinde çalıştırıldığı öğrenilir.

Zararlı dosyanın Rusya’da bir domain adresiyle iletişime geçerek oradan farklı bir zararlı dosya daha çektiği söylendiğinen bu kontroller yapılır.

Rusya’dan dönen tek istek vardır ve o da quas.exe adında bir dosyayı indirmektedir.

Dosyanın isteğinin bulunduğu kaynağa bakıldığında ise quas.exe zararlısının hash’leri görülmektedir. Buradaki MD5 hash ise sorunun cevabıdır. “b6f0c1cba12a05f0c955d7e290f321db”

Cevap = Flag{b6f0c1cba12a05f0c955d7e290f321db}

Soru Adı: Threat Actor
Soru: Vidar, Arkei Stealer ve BALDR Stealer gibi zararlı yazılımları geliştiren ve underground platformlarda bunları satan bir tehdit aktörü olduğunu biliyoruz. Bu tehdit aktörünün Jabber adresini bulabilir misin?

Çözüm:

Tehdit aktörü hakkında Google üzerinde “Vidar” | “Arkei Stealer” | “BALDR Stealer” ile ilgili bir tarama yapılarak bilgi toplanmaya başlanır.

Çıkan arama sonuçlarında bu zararlı yazılımlar ile ilgili daha önceden yayımlanmış bir rapor olup olmadığına bakılır.

https://blog.malwarebytes.com/threat-analysis/2019/04/say-hello-baldr-new-stealer-market/ adresinde Baldr zararlı yazılımı ile ilgili bir rapor bulunur.

Bu rapora bakıldığında ya da farklı bir rapor olan https://fumik0.com/2018/12/24/lets-dig-into-vidar-an-arkei-copycat-forked-stealer-in-depth-analysis/ adresine bakıldığında, Baldr zararlı yazılımını underground marketlere yükleyen bir kullanıcı adı görülür.

Kulllanıcı adının “overdot” olduğu ve Jabber adresinin “[email protected]” olduğu görülmektedir.

Cevap = Flag{[email protected]}

Gördüğünüz gibi Flag’imiz geldi.

MACHINE HACKING

Linux

Linux makineyi çözmeye başlarken öncelikle nmap taraması yaparak başlayalım:

Image for post

Tarama sonucundan görebileceğimiz gibi, 21 numaralı portta FTP servisi, 22 numaralı portta SSH servisi ve son olarak 3288 numaralı portta da HTTP servisi çalışmakta. Öncelikle FTP servisine anonim bir şekilde erişim sağlayıp sağlayamadığımızı test edelim:

Image for post

Görebildiğimiz gibi FTP servisine anonymous kullanıcı ile bir erişim sağlayabiliyoruz ancak bu kullanıcı ile bu serviste görüntüleme yetkisine sahip olduğumuz herhangi bir dosya bulunmamakta. Bir sonraki aşama olarak HTTP servisi üzerinde enumeration işlemine başlayalım:

Image for post

HTTP servisine ait 3288 numaralı portu ziyaret ettiğimizde, Apache2’ye ait varsayılan sayfa ile karşılaşmaktayız. Burada sayfa kaynağını inceleyerek bir ipucu olup olmadığını kontrol edebiliriz ancak herhangi bir ipucu bulunmamakta. Bir sonraki adım olarak bu web servisi üzerindeki gizli dizinleri taramak için bir gobuster taraması gerçekleştirebiliriz:

Image for post

Gobuster taraması sonucunda normalde de karşımıza çıkabilecek dizinler haricinde “/pictures” isimli bir dizine rastlıyoruz. Bu dizini ziyaret edelim.

Image for post

Dizini ziyaret ettiğimizde “nootnoot.png” isminde bir dosya görüyoruz, dosyayı görüntülemeye çalışalım:

Image for post

Görüldüğü gibi resimde herhangi bir ipucu görünmüyor, dosyayı indirip üzerinde incelemeler yapmaya başlayalım:

Image for post

Dosyayı wget aracı ile indirdikten sonra, öncelikle dosyanın metadata bilgilerini inceleyebiliriz, bunun için exiftool isimli aracı kullanabiliriz:

Image for post

Dosyanın metadata bilgilerini incelediğimizde, “Image Description” alanında “username:ctf” şeklinde bir veriye rastlıyoruz, bu veri FTP servisine veya SSH servisine bağlantı sağlamamız için bir kullanıcı adı olabilir. Öncelikle FTP servisine bağlanmayı deneyebiliriz; bunu yapabilmek için elde etiğimiz “ctf” kullanıcı adının yanında bir de bu kullanıcıya ait parola bilgisini elde etmemiz gerekiyor. Dosyayı daha fazla incelediğimizde parolaya ait herhangi bir bilgi elde edemediğimiz için, FTP servisine yönelik Hydra isimli aracı kullanarak bir brute-force saldırısı gerçekleştirebiliriz:

Image for post

Hydra aracını kullanırken “-l” parametresi ile kullanıcı adı alanına tek bir kullanıcı adını, “-P” parametresi ile de parola alanına bir parola listesi verdik. “-t” parametresi ile de thread sayısını ayarladıktan sonra saldırımızı gerçekleştirdiğimizde, “ctf” kullanıcısına ait FTP parolasının “rainbows” olduğunu bulduk. Şimdi FTP servisine bu kullanıcı ile giriş yapmayı deneyelim:

Image for post

FTP servisine bağlanıp dosyaları listelediğimizde, elde etmemiz gereken “flag.txt” dosyasının burda olduğunu görüyoruz, şimdi bu dosyanın içeriğini görüntüleyelim:

Image for post
Image for post

Oldukça kolay bir soruydu. Şimdi Windows makineye geçelim.

Windows

Yine nmap taraması ile başlayalım:

Image for post

Tarama sonucunda 135 numaralı portta RPC servisinin çalıştığını, 139 ve 445 numaralı SMB servisine ait portların açık olduğunu ve son olarak 3389 RDP servisine ait portun açık olduğunu görüyoruz. Öncelikle SMB servisine anonim bir şekilde erişip erişemediğimizi test edelim:

Image for post

Smbclient aracı ile “-L” parametresini kullanarak host bilgisini belirttiğimiz basit bir deneme yaptığımızda servis üzerindeki dizinleri anonim bir şekilde görüntüleyebildiğimizi görüyoruz. Şimdi tekrar smbclient aracını kullanarak bu sefer “Users” isimli dizine erişmeye çalışalım:

Image for post

Gördüğümüz gibi “Users” dizinine başarılı bir şekild eriştik. Şimdi içerideki dizinlerde tarama yapıp ne tür bilgilere erişebileceğimizi görelim:

Image for post

“/Public/user” dizinine eriştiğimizde, elde etmek istediğimiz “user.txt” dosyasının burada olduğunu görüyoruz. Dosyanın içeriğini görüntüleyelim:

Image for post

Gördüğümüz gibi flag’i elde ettik. Bu soru da çok temel smb enumeration bilgisi gerektiren fazlasıyla basit bir soruydu.

Related Posts

Facebook Comments