BTK CTF CEVAPLARI(Siber Yıldız)

İyi günler arkadaşlar, 20 Ocak 2017'de USOM bir CTF yaptı. Yarışma ne kadar zorluklarla geçmiş olsa da,ne kadar yarışma yapmayı tam becerememiş olsalarda sorular fena değildi ve bende bir write up paylaşmayı düşündüm. Cevapların hepsi bana ait değildir, bir kısmını alıntı yapacağım ve en altta da paylaşacağım linkleri.

1.Soru :İlk soruda bir resim verip "Cevabı bulmak istiyorsan daha yakından bakmalısın" diye bir not düşmüşler. Tabi ilk başta, resmin içerisine gizlenmiş bir hash(şifre) olduğunu düşündüm fakat, resimden birşey  çıkmadı.


Daha sonrasında ise kali üzerinden curl ile taramayı denedim ve sonuç karşımdaydı. 

     2. Soru : "Bakalım ne kadar iyisin?" başlıklı bir soru, linke tıkladığımızda karşımıza direk bir giriş ekranı geliyor. İlk başta giriş yaptıktan sonra direk flag karşımızda olcak sandık fakat öyle olmadı, işin rengi birazcık değişti.


Alt taraftaki  yazı dikkatimi çekti, "Yönetici" yerine "Yonetici" yazılmıştı ve kullanıcı adının bu olabileceğini düşündüm.  Bu saatten sonra sitede açık arama vaktiydi, ilk olarak sql injection denedim
Kullanıcı Adı : Yonetici
Şifre : 1’or’1’=’1
ve giriş yapıldı yazısı karşımıza çıktı. Fakat sadece "giriş yapıldı" yazısı çıktı başka birşey yoktu ne sayfa değişti ne başka birşey oldu. Bende ilk olarak "giriş yapıldı" yı flag olarak yazdım kabul etmedi. Daha sonra "sqlmap" tool u ile database i çekmek aklıma geldi ve sonuca ulaştım.

 

   3.Soru :  "Yetkili bir kullanıcı ile giriş yapman gerek" başlıklı bu soruda ekranı açtığımızda, 2. sorunun nerdeyse aynısıyla karşılaşıyoruz. İlk önce yine sql açığı falan aradım fakat bir sonuç çıkartamadım, ardından cookie'lere bakmak aklıma geldi. Cookie'lere baktığımda "isAdmin" yazısının altında "cfcd208495d565ef66e7dff9f98764da" yazısı yazıyordu. Bu yazıyı md5 ile decode ettiğimde karşıma "0" çıktı. Yani bu admin değil demek istiyor, bende 0'ın md5 halini sildim yerine 1'in md5 halini yazdım. Binary code da 0 olumsuz 1 olumlu anlamına geliyor bildiğiniz gibi, ve giriş yaptım. Giriş yaptıktan sonra bilgiler bölümünde bayrağımız bizi bekliyordu 🙂

4.Soru : "Elimizde bir flash bellek var, içerisindeki resimlerden biri bize lazım" başlıklı soruda, dosyayı indirip "file" komutuna verdiğimizde;

ef2a36ae56f254dd6adf716dffc84264: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 62, heads 247, hidden sectors 2048, dos < 4.0 BootSector (0x80), FAT (1Y bit by descriptor); NTFS, sectors/track 62, sectors 102399, $MFT start cluster 4, $MFTMirror start cluster 6399, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 013e61d99342ea2e1; contains Microsoft Windows XP/VISTA bootloader BOOTMGR

böyle birşey karşımıza çıkıyor ve bir disk imajı olduğunu anlıyoruz. Dosyayı açmadan önce içinde ne olup bittiğini görmek için "binwalk" kullandım.  binwalk ef2a36ae56f254dd6adf716dffc84264 > dump.txt    komutu ile devam ettim. Dosya içerisinde resimlerin ve pdflerin olduğu anlaşılıyordu, bunları dd ile tek tek dışarı çıkarırsak belki bir sonuca ulaşırız diye düşündüm ve denedim. 

dd if=ef2a36ae56f254dd6adf716dffc84264 of=new.jpeg skip=14433399 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new2.jpeg skip=14516838 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new3.jpeg skip=28406368 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new4.jpeg skip=29052314 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new5.jpeg skip=29241403 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new6.jpeg skip=33026056 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new7.jpeg skip=33062920 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new8.jpeg skip=33062950 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new9.tiff skip=33062950 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new0.jpeg skip=45166530 bs=1 
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new11.jpeg skip=49163867 bs=1
dd if=ef2a36ae56f254dd6adf716dffc84264 of=new12.jpeg skip=49279925 bs=1

Çıkarttığımız resimler içerisinde benim dikkatimi en fazla çeken usomun logosunun bulunduğu ve resim headeri bozuk olandı
Herhangi bir hex aracı ile resmi açıyorsunuz ve header bilgisini düzeltiyorsunuz uzun uzun anlatmayacağım mantığını şu site aracılığı ile öğrenebilirsiniz. Header Bilgisi Düzeltme
Resmi düzelttikten sonra exiftool aracı ile bilgilere bakıyoruz.


Cevabımız "D0sy4kurt4rmA_B1ziM-1$iM1Z" olarak orda duruyor. Md5 ını alıp yazdığımızda puanımızı alıyoruz.

5. Soru : "Parolayı bul ve bize gönder!" başlıklı sorumuza geldik, bu soruda javascript kodu obfuscate  edilmişti biz bunu deobfuscate ettiğimizde anlamlı bir kod bütünü oluyor karşımızda. 


 Kodda sadece belli koşulları sağlayan kullanıcı adı parola değerinin sonucu true döndürebildiği görünüyor. Bunu çözümleyerek kullanıcı adı ve şifreye ulaştım, en baştaki if loopunda kullanıcı adının md5'inin "2dfa843b02427819d8bdf8271bb84a3c" a denk olması gerektiği görülüyor. Bu md5'i decrypt ettiğinizde 'alparslan' olduğu buluyoruz, yani kullanıcı adımız alparslan. geriye javascript fonksiyonunu tersten yazarak bir matematik işlemindeki bilinmeyeni bulmak gibi şifreyi bulmak kalıyor. fonksiyonu tersten yazıp konsolda çalıştırmak gerekiyor, bunu yaptığınızda sonuç "TCVatanTC" şeklinde çıkıyor.

6.Soru : "Holowy Conz'dan beklediğimiz mesaj geldi" başlıklı bu soru stenog sorusu olduğunu farkettim.
Arkasında gizli ne olduğunu öğrenmek için bir sürü site var ben şu siteyi kullandım Steganopraphy.

 Bir barkod okuyucu ile yukarıdaki barkodda "siberstar" yazdığını gördük. Md5'ını aldığımızda "0b6f6a0a8520da0839e5e3075df924fa" çıktı veee tabiki sonuç bu değildi bu kadar kolay olamazdı 🙂 Daha sonra herşeyi denedim başka birşey var mı diye fakat bulamadım arkadaşlarımdan birisi google da aramayı düşünmüş ve "siber starımı arıyorsun ?" yazısı ve altında bol a dan oluşan bir twit vardı.


Daha sonra google araması yapmaya devam ettik bu neyin şifrelemesiydi yada neyi işaret ediyordu diye soru steg sorusu olduğu için googlede Twitter Steganographyolarak arama yaptık karşımıza java ile yazılmış bir adet tool ve online bu işlemin yapılabileceği bir web sitesi çıktı direk olarak kopyala yapıştır yaptıktan sonra IRC kanalını işaret ediyordu haliyle bayrağı buradan elde ettik.

7. Soru : 7. soru çok basitti neden sormuşlar anlamadım, Algoritmada ne kadar hizlisin ? isimli bir soruydu. Ve soru şöyleydi

Bir silsileden(sequence) sifir yada daha fazla eleman atilarak elde edilen silsileye alt silsile denir. Alt silsileler arasinda silsile elemanlari sirali olanlara sirali alt silsile denir. Ornegin (1,5,6,3,4,2,9,10,11) silsilesinden elden edilen (1,5) ve (2,9,10) birer sirali alt silsiledir. Ayni zamanda (2,9,10,11) silsilesi en fazla uyeye sahip sirali alt silsiledir. Buna gore asagida elemanlari onaltilik (hexadecimal) sayi sisteminde verilen silsilenin en fazla elemana sahip sirali alt silsilesi nedir. Not: Cevap (1,25,216) formatinda (bosluksuz,virgullu ve parantezli) olmalidir. Elemanlar onluk (decimal) sayi sisteminde olmalidir.

Soru Silsilesi: (0x9a,0x85,0x9e,0xac,0xaa,0xc4,0xa4,0xbb,0xbe,0x9a,0x64,0x9e, 0x8e,0x9b,0x70,0xb4,0x81,0xa3,0x81,0x9b,0x9c,0x68,0x68,0x8b,0x6b,0x83,0x70,0x81,0xb2, 0xb9,0x75,0xa7,0xb2,0x98,0x7a,0x90,0x92,0xc0,0xbf,0x64,0x75,0x68,0x7a,0xc5,0xa2,0xaa, 0xab,0xc4,0x78,0x6c,0xab,0xbb,0xb5,0x7c,0x95,0xa4,0xb2,0x73,0x84,0xa0,0x88,0x96,0x72, 0x8d,0xac,0x85,0xa7,0xad,0x82,0x9d,0xab,0x99,0x7c,0x72,0x6d,0x6b,0x8c,0x8a,0xa7,0x7d, 0x68,0x86,0xaf,0xbb,0x79,0x83,0x8c,0x7b,0x72,0xb2,0x6f,0x77,0xb6,0xb8,0xf4,0xF6,0x8c,0x67,0xb6,0xb5) Bu soruda bu hexcode ları bir decoder ile decimal a çevirip. Yukarıdaki talimata uygun silsileyi bulmanız gerek.

(111,119,182,184,244,246) silsilemiz buydu, md5 ile kodlayıp yazdıgınızda puanı kapmış oluyorsunuz.

8. Soru : "Splinter’ın bilgisayarından önemli veriler aldık, bunların ne olduğu bul ve bize bildir" başlıklı soruda bize bir dosya

veriyor. Dosyayı indirip linuxta "file" komutu ile baktığımızda pcap dosyası olduğunu anlıyoruz.

içerisinde ise host tarafına bağlanan bir USB belleğin paketleri bulunuyordu. “URB_INTERRUPT” ve
cihaz bilgisi vs şimdi burada yapmamız gereken bir kaç işlem var öncelikli olarak bunlara karar verelim.

tshark -r splinter -T fields -e usb.capdata > dump.txt

İşlemi yaptık bu işlemden sonra bize bir takım MAC adreslerine benzeyen ama
cihaz hakkında bilgi sağladığını biliyorduk hemen googlede ufak bir arama yaptık ve bu konuda google CTF de
bir makele bulduk daha sonra bunun usb bellek olmadığını bir fare olduğunu anladık

awk -F: 'function comp(v){if(v>127)v-=256;return v}{x+=comp(strtonum("0x"$2));y+=comp(strtonum("0x"$3))}$1=="01"{print x,y}' dump.txt > sirali.txt

 

-1084 -79
-1084 -79
-1083 -80
-1083 -86
-1083 -89
-1083 -97

gibi devam eden satırlar gördük, daha sonra bulduğumuz makalede de belirttiği gibi "gnuplot" kullanarak bir çizim elde
ettik bu çizimde ise

"fareyi_buldum " yazıyordu. Bu değeri MD5 olarak çevirdiğimizde ise cevabı elde etmiş olduk.

Kullandığımız makale ise MAKALE

9. Soru : Şimdi de uygulamanın kullandığı veritabanı parolası lazım sorusu ilginç bir soruydu çünkü çoğu kişi sayfanın verdiği 404
hatasını gereçk bir hata olarak algılamış.CTRL + U bastığımızda sayfanın en altında gizlenmiş bir div içerisinde bulunan
form ile gerçekleşiyordu F12 aracılığı ile tarayıcı tarafında style dosyasında bulunan değerleri kaldırdığınızda karşınıza
2 adet input ekranı geliyor haliyle buralar basittir diyip direk olarak admin yazdık ve içerdeydik veya jsfiddle gibi
araçlar ile admin değeri ile post isteği attığınızda içeriye girebiliyorsunuz.

Her neyse karşımıza şu şekilde bir ekran geliyor ve aşağıda da ufak bir hata bulunuyordu ayrıca link yapısına baktığımızda bunun bir LFI olduğunu anlamak hiçte zor olmadı

Şimdi bu hata ışında biraz kurcalayalım. Bir kaç alt dizine inmemiz gerekiyor aslında çok değil hataya bakıldığında maximum 3 dizin aşağıya gitsek bu iş tamam bunun için ise biz şöyle bir payload seçtik

../db.php

linkimiz ise şu şekilde olacaktı

dd96a95ce40af42633d10802bd419bc5/sanayihirsizligi/index.php?file=..%2Fdb.php

urldecode ettiğinizde yukarıda vermiş olduğum payload olduğunu anlayabilirsiniz. Bu bilgiler ışığında oluşturduğumuz link ile girdiğimizde flag bir anda önümüze çıktı FLAG: Om3rHal1sD3MIR Bu değeride md5 formatına çevirdiğimizdede cevabımız tamamen hazırdı zaten

 

 

 10. Soru : "Bu görev için önünde 2 seçenek var : başarılı olursun yada olamazsın" başlıklı soruda linke tıkladığımızda ilk olarak yine bir login ekranı geldi, burda admin olarak giriş yapmamız isteniyordu 

Kullanıcı adı : admin

Şifre : admin

İçeri girdiğimizde "ls" komutunu çalıştırmamız gerek fakat bu komutu çalıştırabilmek için bir şifre istiyor bizden. Benim elimde sağlam bir wordlist olduğu için şifreyi bulurken zorlanmadım "adminlele"

"ls" ile dosyaları sıraladıktan sonra ise içeride 3 adet dosya gözüküyor 

 index.php

 readme.txt

 try.html

Try.html en çok gözüme batandı bunlar arasında, içerisine baktığımda şöyle bir satırla karşılaştık 

read file /tmp/isThatFlag.txt
İlk önce dosyayı bulup okumayı denedim fakat ordan birşey çıkmadı. Daha sonra yukarıdaki değeri md5 alıp
sonuca yazdım ve puanımızı aldık.

11. Soru : Zararlı bir hacker ın bilgisayarından veri elde ettik, içerisindeki hackerın şifresini bulabilir misin? isimli bu soruda bize "usom-forensics" isimli bir dosya verildi.

Bu gibi sorularda ilk olarak yapmamız gereken şey dosya hakkında bilgi almak için “file” komutunu kullanmaktır. Bizde bu soruda bu komu ile dosyayı incelediğimizde aşağıdaki gibi bir sonuç ile karşılaştık.

Bu bilgiden sonra “mv” komutu ile dosyanın uzantısını değiştiriyoruz. "mv usom-forensics usom-forensics.7z"

Daha sonra “7za” aracı ile dosya içerisindeki veriyi çıkartıyoruz

 

İçerisindeki veri tekrar file komutu ile incelendiğinde bir data olduğu bilgisini alıyoruz. Bu işlemden sonra volatility aracı ile incelemeye alıyoruz.

Bunun için ilk olarak image hakkında bilgi almak için aşağıdaki komutu kullanıyoruz.

volatility -f usom-forensics imageinfo  (“-f”: incelenecek dosya tanımlanır.)

RAM imajı analizi sorularında genelde ilk yapılması gereken şey, “pslist” komutu ile çalışan işlemleri listelemek ve sistemde o anda ki işleyiş hakkında bilgi sahibi olmaktır.

volatility -f usom-forensics –profile=Win7SP0x86 pslist

 

Bu çıktı sonucunda dikkat çeken işlemler:

  • mspaint.exe

  • notepad.exe

  • lsass.exe

mspaint.exe dumpı alınıp gimp ile incelenip üzerine çalışılan resim üzerinden bilgi elde edilebilir. CTF lerde bu tarz sorular görüyoruz. Ancak böyle bir inceleme sonucunda aşağıdaki gibi bir sonuç ile karşılaştık.

 

Zaten bize sorulan şey bir parolaydı.

  • Soru: Zararlı bir hacker’ın bilgisayarından veri elde ettik, içerisindeki hackerin şifresini bulabilir misin ?

Bu nedenle volatility içerisinde kullanılabilen hashdump parametresi de denenebilirdi. Ancak burda da tatmin edici bir sonuç yoktu.

“pslist” dışında en çok işinize yarayacak bir diğer parametre “filescan” parametresidir.

Dosya üzerinde “filescan” çalıştırıldığında flag adı ile bazı dosyalar olduğu gözlemlenmiştir.

  • Komut: volatility -f usom-forensics –profile=Win7SP0x86 filescan

 

Bu veriler “dumpfiles” parametresi ile elde edilebiliyordu.

 

Elde edilen bu verilerden flag.txt incelendiğinde lsass dump dosyasına ait bir link elde ediliyordu.

Bu dump mimikatz ile incelendiğinde parola elde edilebiliyordu.

 

Adımlar:

  • privilege::debug

  • sekurlsa::minidump lsass

  • sekurlsa::logonPasswords

 

 

ASIL KAYNAK : mertcangokgoz.com

Sevebilirsin...

Bir Cevap Yazın

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

eight − 7 =