InnoveraBT Acelab Staj Sınavı Çözümleri

Bu sene InnoveraBT Acelab projesi için bir staj programı açtı. Başvuru içinse ne form ne de başka bir şey doldurulmasını istedi. Sadece hazırladığı üç aşamalı problemi bizden çözmemizi bekledi. İşin sonunda karşımıza bir e-posta adresi çıkacak ve çözümlerimizi bu adrese gönderecektik. Hadi macera başlasın! 🙂

Aşama 1

Maceramızın ilk adımı http://staj.innoverabt.com/3uG1pp/soru.txt adresindeki bir text dosyasıyla başladı. Dosyayı açtığımda şifreli bir mesajla karşılaştım. İlk başta ‘k’ harflerinin dizilimi dikkatimi çekti ve yazdığım bir script yardımıyla ayrı ayrı tekrar edilme sayılarını yazdırdım. Buradan bazı sayı tabanlarını deneyerek (Senary vb.) mesaj bulmaya çalıştım fakat hepsi başarısız olacaktı. Sonradan ACE ve LAB kelimelerinin birer manası olduğunu keşfettim. ACE olanlarda ‘k’ sayısı kadar 0, LAB olanlarda 1 yazdırdığımızda karşımıza binary kodlanmış bir text çıkacaktı.

Hazırladığım script şifreli mesajı anlattığım gibi binary formatına çeviriyor[1]:

INPUT —>

ACEk LABkkk ACEkk LABkk ACEk LABkkk ACEk LABk ACEkkk LABkk ACEkkkk LABk ACEk LABkk ACEk LABk ACEk LABk ACEkkk LABk ACEk LABkkk ACEkk LABkk ACEk LABk ACEkk LABk ACEk LABkk ACEk LABkkk ACEkk LABkk ACEk LABkkk ACEkk LABkk ACEk LABkkkk ACEk LABkkk ACEk LABkk ACEkk LABkk ACEkk LABk ACEk LABk ACEk LABkkk ACEkk LABk ACEkk LABkk ACEkkkk LABk ACEk LABkk ACEkkk LABk ACEkk LABkkk ACEk LABk ACEkkkk LABk ACEk LABkkk ACEkk LABkk ACEkkk LABkk ACEk LABkk ACEk LABkkkk ACEk LABkk ACEk LABkk ACEk LABk ACEkk LABk ACEk LABkkkk ACEk LABkkk ACEk LABk ACEkkk LABkkk ACEkk LABk ACEkk LABkkkk ACEkk LABk ACEk LABk ACEk LABkkkkk ACEk LABkkk ACEk LABk ACEkkkk LABkk ACEkkkkk LABk ACEk LABkkkkk ACEk LABkk ACEkk LABkk ACEkkk LABkk ACEkkk LABk ACEk LABkk ACEk LABkkk ACEkk LABkk ACEkk LABk ACEkk

OUTPUT —>

011100110111010001100001011010100010111001101001011011100110111001101111011101100 110010101110010011000010110001001110100001011100110001101101111011011010010111101 110100011100100111100101011111011101000011000001011111011001100011000101101110011 00100

Elde ettiğim bu binary texti online Binary to String aracı ile string’e çevirdim[2].

Ve karşıma çıkan mesaj bana 2. aşamanın anahtarını verdi 🙂

Aşama 2

Bu aşamada bir pcapng dosyası verilmişti. Hemen Wireshark ile açarak analizlerime başladım.

İlk olarak HTTP isteklerini incelemek adına http filtreleme yaptım. Burada ilk başta gözüme çarpan 002.zip adlı dosyanın indirilmiş olmasıydı. HTTP stream’den bu dosyayı elde ettim ve analize başladım. Bozuk bir zip dosyasıydı hexeditor ile onardım ve içerisinden 1.jpeg adında bir resim çıktı. Resim içerisinde herhangi bir şey bulamayınca Wireshark üzerinden analize devam ettim. Bu kez 003.zip dosyasının indirildiğini gördüm. Zip dosyasını açtığımdı gizli.png adında bir resim vardı. Hemen binwalk ile içerisinde gizlenmiş bir şey var mı diye baktım ve içerisinde suprise.txt adlı dosyanın gizlendiğini gördüm. İşte bu kadar dedim içimden 🙂

Binwalk ile verileri extract edip text dosyasını okuduğumda;
yanliş yerdesin 🙁 MS56aXAgZSBnaXRtZWxpc2luIGFyYWTEscSfxLFuIMWfZXkgb3JkYQ==

mesajıyla karşılaştım. Base64 decode edip ne demek istiyor öğreneyim dedim. Vermek istediği mesaj:

1.zip e gitmelisin aradığın şey orda

Bu mesaj doğru zip dosyasının nerede olduğunu söylüyor olsada aslında bana “Oyun daha yeni başlıyor” diyordu 🙂

Hemen Wireshark üzerinden 001.zip dosyasını Follow—>HTTP Stream diyerek elde ettim.

Zip dosyasını açmaya çalıştığımda yine hasar görmüş bir dosyaydı. Binwalk ile analiz ettiğimde içerisinde first.txt adlı bir dosya barındıran şifrelenmiş bir zip dosyası olduğunu anladım. Hemen extract ettim.

Artık elimde şifrelenmiş bir zip dosyası mevcuttu ve tek işim bunu açmaktı. Parolayı bulmak için 002.zip dosyasındaki resim üzerinde Steganography aradım fakat yok yok yok.. Fcrackzip ile brute force denemeleri sonuçsuz. Burada imdadıma @InnoveraBT twitter hesabından atılan bir tweet yetişti 🙂

Ping ipucunu görünce hemen Wireshark’ta ICMP filtreleme yaptım ve başladım analize. Burada 172.20.10.3, 192.168.1.35, 172.23.5.177 IP’leri ilk başta dikkatimi çekti ve bunları parola olarak denedim haliyle sonuç vermedi. Burada o kadar çok kafayı yemek üzereydimki staj@innoverabt.com’a mail bile attım. Cevap gelmedi ama çok kısa bir süre sonra “ICMP request” lerinde bir şey farkettim 🙂 Geriye benim saçma e-postalarım kaldı 🙂

Mail’de parçaları birleştirmek gerekmiş diyerek kastettiğim ICMP requestleri ile parça parça bir Base64 kodu gönderildiğiydi. Bu arada ben buradaki verileri ayrı ayrı zip parolası olarak daha önce denedim 🙂 Birleştirdiğimde aşağıdaki gibi oluyordu:

ZmF6bGFBVEFSeWFwbWE=
Base64 decode[3]: fazlaATARyapma
Bu parola ile zip dosyasını açıp first.txt içerisine baktığımızda yine bir mesaj veriliyordu.
flag = ON2GC2RONFXG433WMVZGCYTUFZRW63JPO4ZWYYZQNVSV65DPL5EDG3DM

Bunu ilk başta hash-identifier’de tarattım ama Sha-224 ve Haval-224 gibi alakasız sonuçlar verdi. Ardından tüm harflerin Upper olmasından yola çıkarak bir araştırma yaptım ve Base32 diye bir şeyin varlığından haberdar oldum.

Online bir araç ile Base32 Decode[4] ettiğimde 3. Aşamanın kapısı bana görünüyordu 🙂

Aşama 3

Belkide belirsizliklerin yoğun olduğu en zorlu aşama işte buydu ve sonuncusuydu. Gerçekten bir cehennemi andırıyordu.

predat0r.png dosyasında bir mesaj bulmamız isteniyordu. İlk başta sol altta yer alan “Render by Jonathan Rey” dikkatimi çekti ve hemen resmin orijinalini aramaya karar verdim. Orijinal resmi buldum ve arka planında siyah bir kaplama yoktu.[5] Resme yapılan yorumları inceledim fakat buradan da bir sonuç çıkmadı. Orijinalinden farklı olması sebebiyle önce klasik adımlarımı takip ettim: strings ile gizlenmiş bir şey var mı bak, exiftool ile EXIF dataları incele, binwalk ile içerisinde gizlenmiş bir şey var mı.. Hiçbirinde bir sonuç elde edemedim. GIMP ile renk paletlerinin isimleri vb. incelemelerimden sonuç çıkmadı. Stegsolve ile çeşitli filtre uygulamarıyla gözümden şüphe edercesine bir şeyler aradım ama yok yok yok.. İmdadıma InnoveraBT twitter hesabından paylaşılan bir tweet yetişti 🙂

Tabii her şey “armut piş ağzıma düş” şeklinde olmadı. LSB, Zsteg gibi çeşitli modüller ve yöntemler deneyerek mesaja ulaşmaya çalıştım. Araştırmamı derinleştirdiğimde bir makaleye rastladım ve “Stepic” adında bir Python Steganography modülünden bahsediyordu.[6] Stepic modülünü Linux makineme kurdum ve decode işlemini başlattım. İşlem sonucu içerisinden bir zip dosyası çıktı.

Zip dosyasını extract ettiğimde here.pdf adında bir belge çıkıyordu. Pdf açtığımda bir tutorial mevcuttu. İlk başta üstün körü inceledim bir şey göremedim. Daha sonra bize ilk aşamada burada anlattığım çözümleri gönderebilmemiz için bir mail adresi bulacağımız söyleniyordu. Belgede ‘@‘ şeklinde arama yaptım ve o anki mutluluk!

Belgenin içinde Caner Köroğlu’na ait mail adresi mevcuttu. Ama kısa süre sonra acaba bu da bir çeşit troll mü diye düşündüm ve kendisine Twitter’dan yazdım 🙂 Neyseki çözüme ulaşmışım ve son aşamayı çözmüşüm..

Son olarak böylesine keyifli ve aynı zamanda saç baş yolduran bir macerayı bana yaşattığınız için teşekkür ederim. Soruları hazırlayan arkadaşlarıda ayrıca tebrik ederim.

Kaynaklar

[1]: seperator.py
[2]: Binary to String aracı: http://string-functions.com/binary-string.aspx
[3]: Base64 Decode aracı: https://www.base64decode.org/
[4]: Base32 Decode aracı: https://emn178.github.io/online-tools/base32_decode.html
[5]: http://jonathanrey.deviantart.com/art/Star-Wars-Darth-Vader-Render-PNG-428099237
[6]: http://domnit.org/blog/2007/02/stepic.html

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir