|    |    |    | Today: 18-Sep-2018 |

[Write Up] CSAW CTF Qualification Round 2016

September 19, 2016 | Posted in How to

Fri, 16 Sept. 2016, 23:00 UTC — Sun, 18 Sept. 2016, 23:00 UTC
Format: Jeopardy
Official URL: https://ctf.csaw.io/
CSAW 2016 CTF Quals Score



Kill - Forensics (50)


Is kill can fix? Sign the autopsy file?
kill.pcapng

Ada banyak cara untuk menyelesaikan tantangan ini, cara cepatnya
$ strings kill.pcapng | grep flag
=flag{roses_r_blue_violets_r_r3d_mayb3_harambae_is_not_kill}

Got it ? flag{roses_r_blue_violets_r_r3d_mayb3_harambae_is_not_kill} adalah flagnya. jika ingin melakukan analisa lebih mendalam pada file kill.pcapng, maka harus melakukan perbaikan pcap tersebut.
pcapng error

How to fix that pcapng ?


Dengan menggunakan pcapfix, dapat melakukan perbaikan pcap yang rusak tersebut.
pcapng fixing 1
Setelah proses perbaikan selesai, file pcap tersebut dapat dibuka dengan menggunakan wireshark.
pcapng fix
banyak sekali traffic jebakan pada pcap yang rusak itu, dikarenakan yang dicari adalah flag maka dengan memasukkan filter tcp contains flag
tcp contains flag
tcp contains flag 2
masih belum terbaca? coba di analisa menggunakan follow tcp stream, Analyze > Follow > TCP Stream.
Follow TCP Stream



Clams Don't Dance - Forensics (100)


Find the clam and open it to find the pearl.
out.img

Hasil dari identifikasi file out.img adalah DOS/MBR boot sector
$ file out.img
out.img: DOS/MBR boot sector

analisa diawali menggunakan fls (lists the files and directory names in a file system) dari sleuthkit.
fls sleuthkit
ada salah satu file r/r * 14: clam.pptx yang berhubungan dengan soalnya, dengan menggunakan icat dari sleuthkit untuk mengekstrak file tersebut.
$ icat out.img 14 > clam.pptx

setelah dibuka ppt tersebut tidak ada yang aneh didalamnya, agar dapat dilihat struktur filenya ekstensi file ppt tersebut harus dirubah menjadi zip dan di ekstrak.
$ mv clam.pptx clam.zip
$ unzip clam.zip
Archive: clam.zip
inflating: [Content_Types].xml
creating: docProps/
creating: ppt/
creating: _rels/
inflating: docProps/app.xml
inflating: docProps/core.xml
inflating: ppt/presentation.xml
inflating: ppt/presProps.xml
creating: ppt/theme/
[...]
creating: ppt/media/
inflating: ppt/media/image1.jpg
inflating: ppt/media/image22.png
inflating: ppt/media/image17.jpg
inflating: ppt/media/image28.png
inflating: ppt/media/image36.jpg
inflating: ppt/media/image2.jpg
inflating: ppt/media/image8.jpg
inflating: ppt/media/image40.jpg
inflating: ppt/media/image6.png
inflating: ppt/media/image32.gif
inflating: ppt/media/image0.gif
$ ls
[Content_Types].xml _rels clam.zip docProps out.img ppt

hasil ekstrak ppt tersebut ada direktori ppt/media/ yang berisikan gambar yang ada di dalam clam.pptx.
direktori ppt media
hasil analisa pada direktori tersebut membuahkan hasil, ada sebuah gambar yang mengandung MaxiCode
MaxiCode
analisa sempat terhenti akibat decoder yang tidak bekerja dengan sempurna, berkat bantuan xshadow yang mengingatkan bahwa MaxiCode itu bersifat Two-dimensional (2D) barcodes atau biasa dikenal dengan 2D barcodes (matrix) dan digunakanlah decoder online.
Decoding MaxiCode

Raw text: [)>~01~96123450000~222~111~flag{TH1NK ABOUT 1T B1LL. 1F U D13D, WOULD ANY1 CARE??}

flag clams



Watchword - Forensics (250)


Canned epic hidden snek flavored cookies have shy gorilla.
powpow.mp4

MP4 Analysis


langkah analisa MP4 tersebut dimulai dari mencari filetype dilanjutkan dengan pengecekan metadata.
$ file powpow.mp4
powpow.mp4: ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]
$ exiftool powpow.mp4
ExifTool Version Number : 10.25
File Name : powpow.mp4
Directory : .
[...]
Audio Format : mp4a
Audio Channels : 2
Audio Bits Per Sample : 16
Audio Sample Rate : 44100
Handler Type : Metadata
Handler Vendor ID : Apple
Track Number : 1 of 0
Artist : Stefan Hetzl
Title : aHR0cDovL3N0ZWdoaWRlLnNvdXJjZWZvcmdlLm5ldC8=
Encoder : Lavf56.40.101

pada bagian Title ada sebuah baris kode Base64, dan jika didecode menghasilkan url http://steghide.sourceforge.net/ yang merupakan sebuah tools steganography yang biasa digunakan dengan file JPEG kemudian dilanjutkan menggunakan binwalk untuk analisa MP4 tersebut dan membuahkan hasil.
$ python
>>> import base64
>>> base64.b64decode('aHR0cDovL3N0ZWdoaWRlLnNvdXJjZWZvcmdlLm5ldC8=')
'http://steghide.sourceforge.net/'
>>>

binwalk powpow
didalam MP4 tersebut disisipi PNG image didalamnya dan jika diekstrak menggunakan dd command
dd if=powpow.mp4 bs=1 skip=547541 of=powpow.png

file PNG tersebut adalah
PNG image powpow

PNG Analysis


dengan menggunakan stepic, file PNG tersebut akhirnya dapat diekstrak
$ stepic -d -i powpow.png -o hasil
$ file hasil
hasil: JPEG image data, JFIF standard 1.02, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 480x455, frames 3

hasil ekstrak file tadi ketika diperiksa filetypenya merupakan JPEG image, teringat hasil pengecekan metadata MP4 mendapatkan clue steghide.
$ steghide info hasil

steghide info
WHOAAAAA .... tebakan passwordnya benar password = password dan didalamnya terdapat file base64.txt.
$ steghide extract -sf hasil

steghide ekstrak
isi didalam file base64.txt
$ cat base64.txt
W^7?+dsk&3VRB_4W^-?2X=QYIEFgDfAYpQ4AZBT9VQg%9AZBu9Wh@|fWgua4Wgup0ZeeU}c_3kTVQXa}eE

jika dilihat ini tidak seperti encoding dari Base64 yang ternyata itu adalah clue dan teringat ada salah satu fungsi bernama base85 pada modul base64 didalam python.
$ cat dec.py
import base64

encoded_data = 'W^7?+dsk&3VRB_4W^-?2X=QYIEFgDfAYpQ4AZBT9VQg%9AZBu9Wh@|fWgua4Wgup0ZeeU}c_3kTVQXa}eE'
decoded_data = base64.b85decode(encoded_data)
print('Data :', encoded_data)
print('Decode :', decoded_data)

jika kode tersebut dijalankan
$ python3 dec.py
Data : W^7?+dsk&3VRB_4W^-?2X=QYIEFgDfAYpQ4AZBT9VQg%9AZBu9Wh@|fWgua4Wgup0ZeeU}c_3kTVQXa}eE
Decode : b'flag{We are fsociety, we are finally free, we are finally awake!}'


BINGO ! flag{We are fsociety, we are finally free, we are finally awake!}




~ UNSOLVED ~




Yaar Haar Fiddle Dee Dee - Forensics (150)


DO WHAT YE WANT 'CAUSE A PIRATE IS FREE. YOU ARE A PIRATE!
for200.pcapng

Another pcap file ... pfffttt ~

PCAP Analysis


file tersebut dapat dibuka menggunakan wireshark
isi pcap for200.pcapng
dengan cepat langsung menuju pada sasaran, yaitu memfilternya dengan tcp contains flag
tcp contains flag
kemudian kita baca dengan Analyze > Follow > TCP Stream
follow tcp stream
agar lebih mudah dibaca untuk analisa selanjutnya, maka dapat disimpan dalam bentuk .txt
Save Stream Content
setelah berhasil disimpan dalam bentuk .txt analisa selanjutnya dapat dilakukan
dump tcp stream
ada 115707 line pada file .txt itu, saatnya mencari clue yang ada pada file .txt tersebut.
Clue 1
barisan kode tersebut harus dirapihkan sedikit agar mudah dianalisa.
rapih 1
pada line terakhir 115707 ada sebuah clue ditemukan, yaitu map.
Clue 2
boom !
Clue 3
keanehan ditemukan akibat susunan barisan kode tersebut berantakan, terlebih lagi pada bagian ~~~~, tanda tersebut bukanlah bagian dari barisan kode.
Clear
analisa keseluruhan dari beberapa clue yang didapatkan, barisan kode tersebut merupakan base64 dan terdapat 3 buah jenis file disana. let's copy and paste menjadi 3 buah file ... kode 1 = files.txt, kode 2 = booty.txt dan kode 3 = map.txt
simple decoder
skrip python diatas digunakan untuk mendecode barisan kode base64 yang sudah dijadikan beberapa file.

$ python dec.py map.txt map
$ python dec.py files.txt files
$ python dec.py booty.txt booty
$ ls
booty booty.txt dec.py files files.txt for200.pcapng map map.txt

ada 3 buah file baru yang terbuat dan analisa jenis terhadap 3 buah file tersebut ...
$ file map files booty
map: XML 1.0 document, ASCII text
files: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 100x100, frames 1
booty: Zip archive data, at least v1.0 to extract

menambahkan ekstensi pada masing-masing file tersebut pasti lebih mudah dilihat.

$ mv files files.jpg
$ mv map map.xml
$ mv booty booty.zip

tambah ekstensi
isi dari map.xml
isi map xml
hasil files.jpg
files
analisa pada files.jpg terdapat banyak sekali file berekstensi .jpg didalamnya.
binwalk dapat mengekstraknya dan terbuatlah direktori _files.jpg.extracted
binwalk files
pada booty.zip terdapat flag.txt didalamnya, namun ternyata dilindungi password.
booty
$ unzip booty.zip
Archive: booty.zip
[booty.zip] flag.txt password:
password incorrect--reenter:
password incorrect--reenter:

terlalu memakan waktu mencari clue untuk membuka password booty.zip dan akhirnya stuck..

---

TuX

Taged in: csaw, ctf, qualification, round, write