PicoCTF Reverse Engineering: Transformation Tutorial Bahasa Indonesia

BlackBull 🐂 CTF Kamsib merupakan seri video dari kamsib_id yang menjelaskan mengenai permainan Capture The Flag (CTF). Di sini kita akan belajar cyber security melalui permainan yang sangat menarik.

Apa itu picoCTF?

Terdapat beberapa kompetisi keamanan komputer sekolah menengah lainnya yang sudah mapan, termasuk Cyberpatriot dan US Cyber Challenge. Kompetisi ini berfokus terutama pada dasar-dasar administrasi sistem (sysadmin), yang merupakan keterampilan yang sangat berguna dan berharga. Kompetisi defensif sering kali merupakan urusan yang melelahkan, dan berujung pada menjalankan daftar periksa (checklists) dan menjalankan skrip konfigurasi. Sebaliknya, serangan sangat terfokus pada eksplorasi dan improvisasi, dan sering kali memiliki unsur permainan.

PicoCTF adalah kompetisi keamanan komputer sekolah menengah yang berorientasi ofensif yang berupaya membangkitkan minat terhadap ilmu komputer di kalangan siswa sekolah menengah: mengajari mereka cukup banyak tentang keamanan komputer untuk membangkitkan rasa ingin tahu mereka, memotivasi mereka untuk menjelajah sendiri, dan memungkinkan mereka mempertahankan mesin mereka dengan lebih baik.

Apa itu Reverse Engineering?

Rekayasa balik atau rekayasa mundur (bahasa Inggris: reverse engineering) adalah proses penemuan prinsip-prinsip teknologi dari suatu perangkat, objek, atau sistem melalui analisis strukturnya, fungsinya, dan cara kerjanya. Proses ini biasanya melibatkan pemisahan (perangkat mesin, komponen elektronik, program komputer, atau zat biologi, kimia, atau organik) dan analisis terhadap cara kerjanya secara terperinci, atau penciptaan perangkat atau program baru yang memiliki cara kerja yang sama tanpa memakai atau membuat duplikat (tanpa memahami) benda aslinya. Pada dasarnya, prinsip rekayasa balik sama dengan penelitian ilmiah, namun objek yang ditelaah berbeda. Objek yang ditelaah pada riset ilmiah biasanya adalah fenomena alami, sedangkan pada rekayasa balik, objek yang ditelaah adalah benda buatan manusia.

Rekayasa balik sudah dilakukan pada zaman ketika analisis perangkat keras masih bertujuan memperoleh keuntungan komersial atau militer. Tujuannya adalah mengetahui cara merancang produk akhir dengan sedikit atau tidak adanya informasi tambahan mengenai prosedur pembuatan aslinya. Informasi pembuatan produk asli tersebut tidak tersedia entah karena memang dirahasiakan oleh pembuatnya atau karena hilang atau rusak.

Di dalam ilmu komputer, Reverse Engineering ini erat kaitannya dengan software. Khususnya dalam keamanan siber, RevEng berkaitan dengan malware. Kegiatan ini dilakukan untuk mengetahui jeroan dan cara kerja malware.

Reverse Engineering: Transformation

Pada soal kali ini, kita memiliki deskripsi dan petunjuk sebagai berikut:

Reverse Engineering: Transformation

I wonder what this really is… enc
''.join([chr((ord(flag[i]) << 8) + ord(flag[i + 1])) for i in range(0, len(flag), 2)])

Kita memiliki file dengan nama “enc” beserta deskripsi tambahan yang terlihat sekilas seperti sebuah script kodingan. Kemudian kita coba unduh file tersebut dan melihat isinya.

灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸強㕤㐸㤸扽

Kalau kita lihat informasi mengenai file nya, enc ini adalah file Unicode text dengan UTF-8. Dan isinya adalah sebuah kalimat aksara Mandarin. Berikut jika kita cek di Google Translate.

Yàn dáo gōng 䙻nh xíng tì yào chǔ měng ㌴lǒu lǎo péng qiáng qiú qiàn xì dèn

Tambah bingung kan?

Kalau kita bingung, kita coba klik Hint yang diberikan (jika ada). Hint pada soal ini hanya ada 1, dan berbunyi You may find some decoders online. Kita bisa cek juga kembali script yang telah diberikan di deskripsi. Sepertinya ini berhubungan dengan python.

Apa maksud script tersebut?

Kita coba tanyakan pada rekan kita, ChatGPT. Apa maksud script ”.join([chr((ord(flag[i]) << 8) + ord(flag[i + 1])) for i in range(0, len(flag), 2)])?

Merupakan ekspresi dalam bahasa pemrograman Python yang mengonversi string flag ke dalam format baru

Script tersebut merupakan ekspresi dalam bahasa pemrograman Python yang mengonversi string flag ke dalam format baru dengan menggunakan operasi bitwise dan fungsi ord dan chr. Mari kita uraikan script tersebut langkah demi langkah:

  1. range(0, len(flag), 2): Membuat iterator yang akan menghasilkan nilai i untuk setiap indeks genap dalam string flag.
  2. (ord(flag[i]) << 8) + ord(flag[i + 1]): Bagian ini berfungsi untuk mengambil dua karakter dari string flag pada setiap iterasi (indeks i dan i + 1), mengonversi masing-masing karakter menjadi nilai ASCII menggunakan fungsi ord, dan kemudian menggabungkan nilai-nilai tersebut menggunakan operasi bitwise shift kiri (<<) dan penjumlahan. Dalam hal ini, karakter pertama (flag[i]) mendominasi 8 bit pertama dan karakter kedua (flag[i + 1]) mendominasi 8 bit berikutnya.
  3. chr(...): Mengonversi hasil perhitungan tersebut kembali ke karakter ASCII menggunakan fungsi chr.
  4. ''.join(...): Menggabungkan semua karakter yang dihasilkan dari langkah sebelumnya menjadi satu string.

Dengan kata lain, script tersebut menggabungkan dua karakter berturut-turut dari string flag menjadi satu karakter dalam string baru, dengan mengonversi pasangan karakter tersebut menjadi nilai ASCII yang dihasilkan dari kombinasi 16-bit. Jika Anda memiliki informasi lebih lanjut tentang string flag yang digunakan, Anda dapat menentukan nilai akhir dari hasil konversi ini.

Buat Sobat Kamsib yang paham dengan kodingan, khususnya Python, tentu ini akan mudah. Jika masih merem-merem melek seperti saya, alangkah baiknya kita mampir ke decoders online seperti yang dikatakan oleh Hint.

Tools Mantap Top Markotop: CyberChef

A simple, intuitive web app for analysing and decoding data without having to deal with complex tools or programming languages. CyberChef encourages both technical and non-technical people to explore data formats, encryption and compression.

Tampilan CyberChef menggunakan operasi “Magic”

CyberChef adalah plikasi web sederhana dan intuitif untuk menganalisis dan mendekode data tanpa harus berurusan dengan alat atau bahasa pemrograman yang rumit. CyberChef mendorong orang-orang teknis dan non-teknis untuk mengeksplorasi format data, enkripsi dan kompresi. Data digital hadir dalam berbagai bentuk, ukuran, dan format di dunia modern – CyberChef membantu memahami semua data ini dalam satu platform yang mudah digunakan.

Hasil decode terhadap soal 灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸強㕤㐸㤸扽

Dari hasil Encode_text(‘UTF-16BE (1201)’) menunjukkan bahwa flag nya adalah picoCTF{16_bits_inst34d_of_8_75d4898b}

Leave a Reply