Trik Reverse Engineering Kode Python

Entah kenapa akhir-akhir ini saya banyak melihat pertanyaan mengenai reverse engineering kode Python yang sudah di-obfuscate, baik di Facebook maupun Telegram. Sudah ada beberapa artikel dalam Bahasa Indonesia yang membahas ini misalnya Bermain dengan Python Bytecode dan  Reverse Engineering Python Bytecode. Kedua artikel itu sudah bagus, jadi saya sarankan untuk membaca kedua artikel itu untuk dasar reversing bytecode Python.

Artikel ini hanya ingin membahas trik untuk mempermudah revers engineering proteksi tertentu yang memakai marshal dan gagal didekompilasi. Lanjutkan membaca “Trik Reverse Engineering Kode Python”

Membedah e-KTP

Posting ini sekedar membahas tentang kartu tanda penduduk elektronik (e-KTP). Sampai saat ini saya belum pulang ke Indonesia untuk mengurus e-KTP karena KTP lama masih berlaku. Waktu orang tua saya datang ke sini tahun lalu saya sudah sempat ngoprek e-KTP mereka sedikit, dan sekarang selagi mereka berkunjung saya teruskan dan tuliskan hasil eksplorasi saya.

Sebagian isi tulisan ini didapat dari reverse engineering, dan sebagian lagi dari berbagai informasi yang tersebar di Internet. Ada juga bagian yang merupakan spekulasi saya dari informasi yang ada.

Security sebuah smart card

Sebuah smart card adalah sebuah komputer kecil, di dalamnya ada CPU, RAM, dan juga storage. Smart card diakses menggunakan reader, secara umum ada dua jenis: contact (menggunakan konektor fisik seperti SIM card) dan contactless (tanpa konektor fisik seperti kartu e-Money berbagai bank saat ini). Dari sisi programming keduanya sama saja. Kartu smart card yang baru umumnya juga sudah tahan (immune) terhadap side channel attack (DPA/SPA/FI dsb). Lanjutkan membaca “Membedah e-KTP”

Reverse Engineering APK

Saya sudah menulis beberapa artikel terpisah mengenai reverse engineering APK Android (misalnya di http://yohan.es/security/android/) . Di posting ini saya ingin menggabungkan berbagai tulisan yang pernah saya buat dalam satu posting, supaya lebih gampang dibaca. Topik yang lebih umum mengenai Pengantar Reverse Engineering sudah pernah saya bahas di blog ini (tidak spesifik Android).

 

Tujuan Reversing

Pertama, tentukan tujuannya apa ingin bisa reversing APK. Ini bisa digolongkan jadi dua bagian: apakah ingin mengetahui cara kerjanya? (sekedar membaca kode) atau ingin mengubah aplikasinya? (memodifikasi kode) Yang termasuk dalam kategori pertama: apakah ingin ekstrak API-nya, ingin membaca file yang dibuat oleh aplikasi, ingin tahu protokol aplikasi. Lanjutkan membaca “Reverse Engineering APK”

Perang Cyber dan Hacker Indonesia

Beberapa hari yang lalu China melarang security researchernya untuk mengikuti kompetisi pwn2own dan sejenisnya di luar negaranya.  Ini bisa jadi suatu awal yang gawat untuk dunia keamanan cyber baik secara umum, dan juga untuk Indonesia.

Saya mau mundur sedikit: apa sih pwn2own itu? Ini adalah kompetisi hacking di mana hacker diminta menjebol device dengan software terbaru dengan bug yang belum pernah diketahui orang lain sebelumnya (zero-day). Pemenangnya mendapatkan devicenya dan hadiah puluhan sampai ratusan ribu USD (ratusan juta hingga milyaran rupiah).

Bug

Secara singkat: beberapa bug ini memungkinkan orang mengambil alih ponsel, tablet, dan bahkan mobil (mobil pintar) dari jauh tanpa interaksi dari user.  Ini bukan bug kacangan seperti XSS atau SQL injection di website.

Lanjutkan membaca “Perang Cyber dan Hacker Indonesia”

Hacking aplikasi web dengan Zaproxy

Saat ini kebanyakan tulisan di blog ini sifatnya cerita yang tidak sampai ke teknis detail. Tulisan kali ini sangat praktis, mengenai memakai Zaproxy untuk hacking (mencari bug atau mengeksplotasi bug) aplikasi web. Atau lebih tepatnya lagi aplikasi yang memakai komunikasi HTTP, baik itu aplikasi berbasis mobile, desktop, maupun browser. Sekaligus ini untuk menjawab berbagai pertanyaan mengenai hacking web yang sering diajukan ke saya.

Zaproxy pada dasarnya adalah sebuah intercepting proxy dengan berbagai fitur tambahan (scanner, spider, dsb). Sebuah intercepting proxy bisa mencegat komunikasi dari client ke server (request) dan balasan dari server (response). Defaultnya, komunikasi yang dicegat akan diteruskan saja dan dicatat (di-log), tapi kita juga bisa mengubah baik request maupun response.

Sebagai catatan, Zaproxy bukan satu-satunya tools yang ada, tapi tools ini gratis,  open source, cross platform (Windows, OS X, Linux) dan fiturnya lengkap. Alternatif populer adalah Burp suite, ini ada versi gratisnya, tapi fitur pentingnya berbayar (salah satu fitur paling penting yang berbayar adalah menyimpan sesi). Tools lainnya yang gratis dan bagus untuk Windows adalah Fiddler (saat ini Fiddler versi OS X dan Linux masih beta), sayangnya Fiddler tidak open source. Jika sudah menguasai salah satu tools ini, berpindah yang lain tidak terlalu sulit. Lanjutkan membaca “Hacking aplikasi web dengan Zaproxy”

Hacking dan Reverse engineering hardware

Saat ini di jaman IOT, makin banyak orang yang tertarik untuk hacking dan reverse engineering (RE) hardware. Karena sudah cukup banyak orang menanyakan topik ini, maka di artikel ini akan saya bahas dasar-dasarnya, plus tools apa saja yang dibutuhkan jika ingin memulai.

Dalam artikel ini RE hanya bertujuan memahami software dan hardware dalam sebuah sistem. Hacking hardware bermakna lebih luas misalnya menambah atau mengubah sesuatu di hardware, misalnya menjalankan Doom di printer, membuat hardware baru, atau oprekan apapun yang berhubungan dengan hardware.

Supaya bisa mengubah sebuah hardware yang tidak terdokumentasi, kita perlu melakukan dulu reverse engineering untuk memahami cara kerjanya, baru setelah itu kita bisa melakukan perubahan. Untuk hardware open source atau yang dokumentasinya sangat baik, proses RE ini tidak perlu.

Tujuan melakukan Hacking Hardware

Ada banyak tujuan RE dan hacking hardware, misalnya:

  • Mencari key enkripsi untuk mengakses konten gratis atau untuk membuat konten baru (misalnya game homebrew), atau bahkan membajak, contohnya dalam kasus Game Console
  • Memperbaiki, menambah atau menghilangkan fungsionalitas , misalnya menambah SD Card di router
  • Mengekstraksi firmware dengan berbagai tujuan: mencari bug di firmwarenya, mengclone firmwarenya (membuat produk tiruan), mencari key dalam firmwarenya

Perlu dicatat bahwa dalam 99% kasus, ujung dari reversing hardware adalah melakukan reversing software yang berjalan di hardware tersebut. Lanjutkan membaca “Hacking dan Reverse engineering hardware”

Jadi peserta CTF yang bener dong, jangan malu-maluin

Tahun lalu saya mengkritik panitia Cyber Jawara karena soal CTF-nya ngawur. Sekarang gantian saya mengkritik peserta yang ngawur di penyisihan online. Banyak peserta yang sharing jawaban, seperti mencontek soal ujian.

Tahun ini, panitia Cyber Jawara dan pembuat soal sudah bekerja sangat baik. Soal yang dibuat berkualitas, dan mereka juga mengecek jawaban peserta dengan teliti sehingga kelakuan curang seperti itu bisa diketahui dan didiskualifikasi.

Kutipan komentar dari panitia (Fariskhi Vidyan):

jadi gini ceritanya ya. Ada beberapa tim yang melaporkan ada tim-tim yang minta flag dan juga menawarkan flag dengan bukti screenshot. Jadi ada tim yang kerjaannya minta-minta flag dan mendistribusikan itu ke tim lain dengan syarat minta pap/foto tim. Ada juga yang pakai cara-cara lain. Gara-gara komunikasi pakai telegram jadinya mudah untuk ngelakuin ini.

Selain itu writeupnya juga pada gak bener. Ada yang persis copy paste. Bahkan user terminalnya pun sama persis -,- dan kata-katanya pure copy tanpa ada perubahan satu karakter pun. Banyak juga yang isinya asal-asalan dan bahkan penjelasan yang salah pun diikutin.

Dan katanya ini emang udah terjadi dari tahun2 lalu. Tapi kalau tahun2 lalu nilai akhir itu nilai di web scoring + nilai write up. Makanya yang curang-curang pada datang rombongan. Mana bisa begitu. Untuk tahun ini, ditegasin dengan kasih penalti besar-besaran ke write up yang gak valid, untuk nilai soal yang write upnya gak bener/ngasal dijadikan 0. Ada yang tadinya full score sampai jadi di bawah 500. Yang write up soalnya sama persis juga dikasih penalti dua-duanya.

Saya kesal dengan mentalitas pencontek seperti ini. Dulu waktu saya masih sering ikutan CTF di akhir pekan, banyak juga yang menanyakan apa flag (jawaban) sebuah soal. Sebenarnya kalo ada yang tanya petunjuk (hint) untuk mengerjakan soalnya, biasanya akan saya jawab. Misalnya akan saya jawab dengan: coba SQL injection, atau: coba baca artikel ini.

Untungnya masih ada beberapa yang bertanya seperti itu, dan sampai sekarang pun masih ada yang rajin menanyakan hint dan meminta petunjuk buku atau artikel mana yang perlu dibaca untuk menyelesaikan soal tertentu atau memahami konsep tertentu. Orang-orang seperti ini yang akan sangat dirugikan oleh cheater.

CTF perlu anti contek juga?

Banyak orang mengkritik kalau pejabat pemerintah bobrok, banyak koruptor, dsb. Padahal kelakuan seperti itu dimulai dari kelakuan kecil seperti mencontek ini.  Jangan pikir bahwa mencontek ini tidak merugikan siapa-siapa: di lomba semacam ini, kelakuan curang akan sangat merugikan orang yang jujur dan memiliki keahlian.

Sebenarnya apa sih tujuan main CTF kalau mainnya curang? CTF itu untuk belajar, dan nanti bisa terpakai di dunia nyata di dunia security. CTF juga buat bersenang-senang seperti menyelesaikan puzzle. Kelakuan cheater seperti ini cuma merusak kesenangan orang yang beneran menikmati main CTF.

Andaikan team curang ini lolos ke final, mereka akan bengong melihat soal-soal yang ada. Andaikan panitia tidak teliti, dan semua team cheater yang masuk final, maka ketika ke tahap berikutnya di level ASEAN, mereka akan bengong dan memalukan Indonesia.

Mencegah kecurangan

Sebenarnya ada cara untuk mempersulit kecurangan semacam ini, tapi panitia harus bekerja ekstra. Tiap flag bisa dibuat unik per peserta, jadi flag tidak bisa dishare begitu saja. Tentunya tidak mudah membuat variasi ini untuk semua jenis soal, tapi mungkin bisa dilakukan untuk sebagian soal saja. Ini tidak mencegah peserta untuk sharing cara mereka menyelesaikan soal.

Untuk membuat orang segan berbagi metode, di beberapa CTF, skor untuk satu soal dikaitkan dengan dua faktor: siapa yang menyelesaikan duluan dan berapa banyak yang menyelesaikan soal tersebut.

Peserta yang duluan menyelesaikan soal mendapat skor lebih tinggi dari peserta berikutnya (misalnya 100%, 99%, dst). Jika sebuah soal banyak diselesaikan oleh orang, maka bobot soal dikurangi, artinya soal yang hanya bisa dipecahkan oleh 10 orang bobotnya lebih tinggi dari yang bisa diselesaikan 100 orang.

Dalam metode scoring ini skornya jadi dinamis. Misalnya soal 1 nilai bobot awalnya 1000. Team A menyelesaikan soal 1, dan mendapat skor 1000. Tiba-tiba ada 9 peserta lain yang berhasil menyelesaikan, bobot skor dikurangi jadi 900, sekarang tiba-tiba team A memiliki skor 900 meskipun tidak melakukan apa-apa.

Team yang jagoan, yang bisa menemukan beberapa flag akan malas sharing dengan team lain: buat apa sharing, nanti skor saya akan menurun kalo banyak yang menyelesaikan soalnya.

Penutup

Bagi saya sendiri, CTF untuk bersenang-senang, kenalan dengan banyak orang, dan kadang-kadang juga mendatangkan rejeki dari tawaran pekerjaan. Beberapa CTF (Seperti Flare On) juga menawari peserta untuk mengirimkan resume (jika berhasil menyelesaikan semua challengenya).

CTF yang baik dan fun butuh panitia yang baik, dan juga butuh peserta yang baik. Jadilah peserta CTF yang jujur dan mau belajar. Panitia jadi akan punya lebih banyak waktu untuk membuat soal yang baik daripada susah payah mencegah cheater.