Memakai Raspberry Pi Pico sebagai USB Rubber Ducky

Gambar ini dibuat dengan Dall-E

USB Rubber Ducky adalah nama produk dari Hack5, bentuknya seperti USB biasa, tapi sebenarnya mengemulasikan keyboard. Ketika dicolok ke USB, benda ini akan bisa mengetikkan berbagai perintah dan menekan shortcut secara otomatis. Benda ini sudah dijual sejak belasan tahun yang lalu, di kalangan security sudah sangat dikenal, dan bisa dipakai untuk bagian dari pentesting ataupun red teaming.

Saya baru menyadari bahwa banyak orang di luar security yang belum kenal benda ini, padahal USB Rubber Ducky ini bisa berguna sekali untuk otomasi setup komputer. Di posting ini saya akan bercerita tentang otomasi yang belum lama saya lakukan di IOI 2022 untuk mensetup laptop untuk perlombaan.

Lanjutkan membaca “Memakai Raspberry Pi Pico sebagai USB Rubber Ducky”

Mengenal Hacking UEFI

Dalam tulisan ini saya akan membahas UEFI (Unified Extensible Firmware Interface) dari mulai dasarnya, securitynya, dan sekilas cara reverse engineeringnya, dan hal-hal apa yang perlu diperhatikan ketika berurusan dengan UEFI (misalnya ketika melakuan cloning komputer).

Meskipun tulisan ini cukup panjang, tapi ini hanya perkenalan saja. Ada banyak topik yang tidak saya bahas. Ada beberapa topik yang penjelasannya saya sederhanakan sehingga mungkin kurang akurat. Silakan baca berbagai website yang saya link dari artikel ini jika ingin mendapatkan penjelasan lebih dalam. Jika ingin belajar langsung dari sumbernya, spesifikasi UEFI dan source code dari Intel bisa dibaca.

Setting UEFI

Secara awam UEFI adalah pengganti BIOS (Basic Input Output System). BIOS sendiri adalah software yang sudah tertanam di komputer yang menyediakan akses dasar ke hardware. Sebagai informasi: BIOS hanya ada di arsitektur x86, sedangkan di arsitektur lain, fungsi BIOS ini digantikan oleh software lain. Software low level yang menempel ke hardware ini disebut juga sebagai firmware.

Ketika sebuah komputer dinyalakan, perlu ada firmware yang bisa meload sistem operasi dari suatu media, entah itu dari disk (macam-macam, bisa flash disk, micro sd, harddisk, SSD, NVME, dsb) dari network, atau mungkin dari sumber lain. Di dunia PC, firmware ini dulunya adalah BIOS, tapi sudah belasan tahun ini digantikan oleh UEFI.

Sedikit Sejarah

BIOS untuk x86 usianya sudah sangat tua (dari jaman PC XT), dan memiliki banyak keterbatasan (misalnya hanya bisa berjalan di mode 16 bit). Jadi untuk sistem operasi 32 atau 64 bit, boot loader atau sistem operasi perlu beralih mode dari 16 ke 32/64 bit setelah diload oleh BIOS.

Proses Boot BIOS (Sumber: Wikipedia)

Saya dulu pernah membuat sendiri OS sederhana dari nol, dan proses bootnya cukup panjang: mengimplementasikan kode MBR (yang otomatis diload oleh BIOS, ukurannya maksimal 512 byte), yang akan meload boot loader (memanggil fungsi/interrupt BIOS untuk mengakses disk), lalu boot loadernya meload kernel, switch ke mode 32 bit, lalu baru melakukan jump ke mode 32 bit. Detail proses booting klasik bisa dibaca di sini.

Lanjutkan membaca “Mengenal Hacking UEFI”

Hooking Aplikasi Android di 2022: Magisk, Zygisk, LSPosed dan JShook

Artikel ini ditujukan untuk para reverse engineer dan pentester yang ingin mengetahui situasi terbaru hooking Android pada awal tahun 2022. Hooking Android artinya kita menulis kode untuk mengintercept fungsi yang ada dan menggantinya dengan milik kita. Tujuan hooking ada banyak, misalnya: bypass SSL Pinning, security testing, cheating game, dsb.

Di tahun 2019 saya pernah menuliskan tentang Magisk, Frida, dan XPosed Framework. Artikel ini merupakan update situasi terkini. Untuk Frida, saya pernah menulis lebih detail di sini (2019), dan XPosed pernah saya tulis di sini (2016).

Zygisk

Setelah capek kucing-kucingan dengan Google dalam hal Safety Net, akhirnya Magisk Hide dihapus. Selain Magisk Hide, Magisk memiliki banyak modul. Modul Magisk sifatnya low level, seperti menyembunyikan, memindahkan, menggantikan atau menambahkan file tertentu di Android.

Modul Magisk yang saya pakai

Sekarang ini ada modul magisk baru bernama Zygisk. Ini sekedar untuk meload sebuah .so di setiap proses (dan otomatis dipanggil ketika proses dimulai). Dengan ini, developer Magisk hanya ingin bilang: ini saya sediakan akses untuk hook low level, silakan dimanfaatkan untuk apapun.

Lanjutkan membaca “Hooking Aplikasi Android di 2022: Magisk, Zygisk, LSPosed dan JShook”

Memakai Postman untuk Testing Web API

Postman merupakan aplikasi komersial (tapi ada versi gratisnya) untuk merancang API (Application Programming Interface), mendokumentasikan API, memonitor API, dan testing API berbasis web. Tool ini bisa dipakai oleh developer dan tester.

Di tulisan ini saya hanya akan membahas penggunan Postman untuk testing API. Artinya saya hanya akan membahas bagian Collections dan Environment. Testing API bisa dilakukan untuk development, QA, ataupun pentesting. Postman memudahkan banyak hal untuk testing, misalnya kita bisa melakukan otorisasi, bisa menyimpan token, dan bisa kita program menggunakan JavaScript.

Postman memiliki banyak fitur, hanya dua ini saja yang akan dibahas di tulisan ini
Lanjutkan membaca “Memakai Postman untuk Testing Web API”

Reverse Engineering Cython

Setelah berbagai obfuscator Python berhasil dibongkar, banyak orang sekarang mulai menggunakan Cython agar modulnya sulit dibongkar. Menurut saya ini cara yang sangat baik, karena selain lebih sulit dibongkar, kode yang dihasilkan juga sering kali lebih cepat dari modul Python yang ditulis langsung dalam Python.

Karena kebanyakan yang mencari tahu soal RE Cython ini adalah newbie yang berusaha mencuri kode Python orang lain, maka ini saya tuliskan di awal. Karena biasanya orang-orang ini tidak sabar membaca sampai akhir:

  • Jika punya file.so hasil kompilasi Cython, maka tidak bisa dikembalikan lagi menjadi .py secara otomatis.
  • Proses reversing bisa dilakukan manual, tapi butuh waktu lama dan butuh kesabaran tinggi

Mengenal Modul Python dalam C/C++

Kita bisa menulis modul Python dalam C/C++ dan juga bahasa lain. Bahasa yang resmi didukung hanya C/C++, tapi bahasa lain seperti Rust juga bisa dipakai. Bahkan sebenarnya banyak modul Python yang dipakai sehari-hari yang ditulis dalam C/C++, misalnya numpy, tensorflow, dan bebagai modul AI lain.

Ada berbagai cara untuk menulis modul Python, pertama adalah cara 100% manual. Manual artinya kita menulis sendiri kodenya dalam C/C++ tanpa library tambahan atau tool tambahan. Dokumentasi lengkap cara manual ini bisa dilihat situs resmi Python.

Membuat modul secara manual ini butuh waktu lama, maka ada berbagai cara lain untuk memudahkan pembuatan modul ptyhon. Tapi perlu dicatat bahwa semua cara lain ini pada akhirnya akan memanggil API Python yang sama seperti jika kita menggunakan cara manual. Jadi pertama kita perlu memahami dulu modul yang dibuat secara manual.

Lanjutkan membaca “Reverse Engineering Cython”

Cheating Game Android yang dibuat dengan Unity

Setelah tulisan saya mengenai Cheat dan AntiCheat pada game, banyak yang bertanya ke saya tentang cheating game. Kebanyakan adalah pemula yang tidak tahu programming, dan hanya sekedar memakai tool yang sudah jadi. Biasanya mereka mentok jika gamenya crash, atau jika modifikasinya tidak berhasil.

https://twitter.com/bambenek/status/1365800872786157571

Tulisan ini bertujuan untuk menginspirasi: ada begitu banyak hal yang bisa dipelajari dari sekedar keisengan untuk mencurangi game. Tapi tentunya jangan sekedar cuma bisa mengikuti tutorial dan mentok di situ. Dari cheating game ini ada banyak hal tingkat lanjut dalam bidang programming dan security yang bisa dipelajari.

Di tulisan lalu, saya sudah memberi tahu bahwa ada begitu banyak game engine, dan ada banyak tool, banyak proteksi pada sebuah game. Di tulisan sebelumnya saya membahas game secara umum, jadi sekarang saya ingin mengambil contoh yang lebih konkrit: game yang dibuat dengan game engine Unity dan hanya pada Android.

Lanjutkan membaca “Cheating Game Android yang dibuat dengan Unity”

CORS (Cross-Origin Resource Sharing)

Untuk pembaca yang lahir setelah generasi milenial, silakan baca tentang The Corrs di Wikipedia

Topik CORS ini adalah topik security web yang sulit dimengerti bagi sebagian orang. Dalam pentest, kadang temuan CORS diperdebatkan mengenai severity-nya. Di tulisan ini saya akan berusaha menjelaskan apa itu CORS dan dampaknya untuk security.

Dasar Teori

Saya ingin sekali bisa menjelaskan CORS ini secara singkat, supaya nggak perlu ngetik panjang, tapi kenyataannya dibutuhkan pemahaman dulu mengenai request di browser. Jadi sebelum masuk masalah securitynya, saya jelaskan dulu mengenai CORS.

Sebelum ada XHR (XMLHTTPRequest)

Sebelum JavaScript mulai dipakai, yang bisa dibuat dengan HTML hanyalah menyisipkan konten dengan menggunakan tag yang ada, misalnya memakai <img src=""> atau <frame src="">. Konten ini (misalnya gambar) boleh berasal dari domain mana saja. Browser akan meminta konten dari domain lain. Hidup masih sangat sederhana.

Ketika JavaScript mulai dipakai, kemampuannya masih terbatas untuk memodifikasi DOM (Document Object Model). Ini pun masih belum jadi masalah. Javascript hanya sekedar membuat elemen HTML dan browser yang akan melakukan request ke server tujuan. JavaScript tidak memproses data secara langsung.

Lanjutkan membaca “CORS (Cross-Origin Resource Sharing)”