BEVX Conference

Tanggal 20-21 September saya mengikuti BEVX Conference di Hong Kong. Hari pertama adalah training dan saya mengambil  iOS Sandbox Escape Vulnerability and Exploitation oleh Hao Xu/Pangu.  Team Pangu ini sempat terkenal karena Jailbreaknya yang dirilis umum untuk iOS 7/8/9. Team ini masih aktif, tapi tidak lagi merilis jailbreak umum, di pelatihan yang dibahas adalah exploit iOS 11 dan mereka sudah punya jailbreak untuk iOS 12.

Biaya training plus conferencenya cukup mahal (1000 USD), tapi saya mendapatkannya gratis, plus tiket pesawat dan hotel juga. Ini saya dapatkan dari challenge Reverse Engineering yang saya kerjakan bulan April lalu. Writeup untuk challengenya saya tulis di blog saya yang berbahasa Inggris.

Sebagai informasi, saya ini bukan profesional di bidang Security, hanya part time saja melakukan pentesting secara remote. Saya juga tidak rajin mencari bug di berbagai website atau app, kadang-kadang saja saya menemukan bug ketika sedang iseng. Bidang security dan reverse engineering ini sekedar hobi bagi saya. Saya belum pernah menghadiri conference security (pernah ke HITB sekedar CTF saja). Saya cukup senang hobi ini tahun lalu mengantar saya ke Belanda dan tahun ini sekeluarga ke Hong Kong.

Training

Sekarang ke cerita trainingnya. Biasanya materi training iOS ini diberikan dalam 2 hari, dan baru kali ini pengajarnya berusaha mengkompres materinya menjadi 1 hari. Bagi yang tidak punya background development di macOS dan iOS akan sangat sulit mengikuti semuanya, untungnya walau sudah lama tidak develop macOS dan iOS saya masih mengikuti perkembangannya. Sayangnya di akhir kurang bisa cukup praktiknya, hanya sempat sampai membuat device crash.

Saya menyarankan bagi yang ingin mengikuti training sejenis ini agar mempersiapkan diri dulu dengan berbagai ilmu development iOS dan macOS (Objective C dan berbagai konsepnya). Seluruh dasar teori selama sehari penuh diperlukan untuk menjelaskan satu eksploit saja.

Materi training yang diberikan meskipun sangat banyak, tapi hanya menyentuh hal-hal dasar saja. Untuk menjadi ahli dalam mencari bug iOS, sampai membuat jailbreak masih perlu banyak membaca dan praktik. Sifat iOS yang sourcenya hanya terbuka parsial juga mempersulit eksplorasi. Setiap jailbreak baru dirilis, Apple juga segera membuat perubahan supaya segala bug sejenis tidak muncul lagi, jadi tingkat kesulitan eksploitasi iOS ini memang cukup tinggi.

Penyelenggara conference menyediakan beberapa tiket training dan conference gratis untuk student (dengan slot terbatas tentunya) tapi tidak membayari pesawat/hotel. Saya pikir dengan adanya tawaran ini maka akan ada  banyak mahasiswa lokal, tapi ternyata kebanyakan mahasiswa justru dari jauh (Eropa dan  Amerika) dan mereka ini rajin juga ikutan CTF.

Keynote

Bagian keynote BEVX ini cukup menarik, jadi akan saya tuliskan di sini sedikit, plus komentar dari saya.  Keynote BEVX ini membahas tentang tiga jenis “kompetisi security”, yang meliputi CTF, Bug Bounty, dan Pwn2Own, dan bagaimana membuat CTF yang lebih baik berdasarkan jenis lomba yang lain. Semua jenis “lomba” ini memiliki tempatnya masing-masing. CTF bertujuan untuk menghibur diri, untuk belajar, dan merupakan suatu bentuk dari deliberate practice. Tujuan CTF bukan untuk ketenaran dan uang. Karena waktunya terbatas, biasanya soal CTF harus disederhanakan supaya selesai dalam 1-2 hari.

Program bug bounty ditawarkan oleh berbagai perusahaan, intinya: siapa yang menemukan bug di  website atau produk akan dibayar. Tujuan program semacam ini adalah mengamankan produk/website tertentu. Bug bounty bisa disebut kompetisi karena ada juga “ranking” dari para pencari bug ini (contohnya di bugcrowd ada sistem point). Kalau dilihat, sebagian besar bug yang ditemukan hanya yang itu-itu saja (masih lebih banyak variasi soal CTF).

Kompetisi pwn2own dan sejenisnya mencari bug 0day di sebuah software, artinya bug yang belum pernah ditemukan siapapun sebelumnya. Bug ini biasanya dihargai sangat mahal (puluhan hingga ratusan ribu USD), dan level kesulitan menemukan bug jenis ini sangat tinggi. Targetnya adalah software yang dipakai banyak orang (browser, sistem operasi, office, dsb).

Jadi tiap lomba ini memiliki tujuan masing-masing, dan bisa saling melengkapi. Hampir mustahil seorang pemula tiba-tiba bisa mencari bug dan mendapatkan hadiah dari pwn2own, tapi CTF merupakan titik awal yang baik untuk belajar. Dari berbagai soal CTF kadang kita juga bisa belajar tentang bug tertentu yang bisa dicoba cari di program bug bounty.

Pembicara keynote menemui bahwa saat ini beberapa CTF sudah mulai memakai bug dunia nyata, dan menyarankan agar lebih banyak CTF mulai memakai banyak software di dunia nyata (dengan bug 0day).  Software yang dipilih bisa yang kurang populer. Tujuannya adalah: membantu menambah keamanan pada proyek yang kurang populer, dan peserta CTF bisa benar-benar memakai software di dunia nyata.

Ada satu bagian menarik di keynote mengenai CTF. Di CTF kita memiliki mindset “ini pasti ada bugnya”, karena jika tidak maka soalnya tidak bisa diselesaikan. Mindset itu harus dibawa ke dunia di luar CTF: setiap software pasti ada bugnya. Jika dipikir, ini memang fakta, tiap software ada bugnya, dan mungkin tidak ketahuan sekarang. Lihat saja berapa banyak bug Windows, Linux, dsb yang baru ditemukan bertahun-tahun (kadang sampai belasan tahun) kemudian.

CTF

Acara BEVX ini tidak disertai dengan acara CTF (saat ini banyak conference yang memiliki acara CTF juga). Dari ngobrol-ngobrol dengan beberapa orang di conference tersebut, hal yang menarik bagi saya adalah: masih banyak ahli security level dunia yang masih rajin ikutan CTF (walaupun tidak semua, karena sebagian katanya sudah tidak punya waktu lagi). Saya jarang bertemu security expert Indonesia yang masih ikutan CTF. Saya sendiri masih ikut CTF tapi biasanya yang waktunya lama (seperti Flare-On) dan sesekali yang waktunya sebentar.

Saat ini banyak sekali CTF yang mudah, dan juga CTF yang sangat sulit (misalnya DEFCON), tapi sayangnya masih kurang CTF yang level menengah. Untuk pemula yang sudah berhasil ikutan CTF mudah biasanya akan kesulitan untuk melompat ke level berikutnya karena tiba-tiba menjadi terlalu sulit. Kalau dilihat dari berbagai writeup CTF Indonesia, saat ini kebanyakan soal levelnya masih sederhana dan mulai mendekati menengah.

Jadi saran saya: untuk yang belum ikutan CTF, cobalah ikutan CTF. Kalau merasa suatu CTF terlalu mudah, cobalah ke CTF lain yang lebih sulit, jadi jangan sombong menganggap semua CTF itu mudah. Saya pengen banget melihat team Indonesia di CTF tingkat dunia seperti DEFCON.

Bagi yang sudah ikutan CTF tapi merasa masih mentok, cobalah pelajari topik yang masih belum dikuasai. Kalau masih belum bisa exploitation ya pelajarilah itu dimulai dari yang paling sederhana. Luangkan waktu untuk berlatih.

Conference

Conference BEVX berfokus pada offensive security, tentang bagaimana mengeksploitasi sesuatu. Ini bukan jenis conference yang berisi konsep, tapi berisi kode program dan cara eksploitasinya. Tidak ada presentasi BEVX yang tidak menyertakan kode program, jadi ini bukan sesuatu yang mengawang-awang.

 Badge yang bisa jadi captive portal

Jadwal lengkap bisa dilihat di sini. Meskipun ada 2 track, saya hanya mengikuti Track 1 karena menurut saya lebih menarik. Talk pertama tentang bug yang ada di kernel Linux selama 17 tahun. Ini menarik karena selama 17 tahun tidak ada yang memperhatikan kode itu ternyata memiliki bug, dan cara eksploitasinya merupakan cara baru (heap spray dengan userfaultd).

Talk kedua mengenai smart card juga cukup menarik, tapi tidak terlalu advanced. Tapi ini mengingatkan saya bahwa smart card yang ditamper bisa jadi vektor masuk untuk software atau sistem tertentu.

Talk sebelum makan siang: (De)coding an iOS vulnerability membahas bug iOS. Ini menarik, tapi presentasinya terlalu detail dan panjang sehingga lebih dari waktu yang ditentukan.

Setelah makan siang di hotel (bagian dari harga tiket), diteruskan dengan “Dual booting modern iOS devices” yang memakai bug iOS untuk dual boot 2 versi iOS.  Masalah dengan eksplorasi iOS adalah: jika kita sudah maju ke versi yang tidak ada bugnya, maka kita tidak bisa mundur lagi ke versi sebelumnya dengan mudah. Ini sebenarnya akan sangat menarik jika kodenya dirilis, tapi sayangnya karena masih development maka ini terbatas untuk keperluan riset saja.

Thinking Outside the Virtual Box yang menjelaskan eksploitasi bug Virtual Box untuk “escape to host”. Artinya di Virtual Box yang memiliki bug ini, virtual machine yang berjalan bisa mengakses komputer host. Bug yang ditemukan sangat menarik dan eksploitasinya juga sangat keren.

Topik “Bypass Android Security Mechanisms using Custom Android” sebenarnya tidak terlalu advanced, tapi sangat praktis untuk pentesting aplikasi Android. Intinya adalah: dengan custom kernel kita bisa membuka semua proteksi berbagai aplikasi Android.

Semua presentasi sangat low level

Crashing to root: How to escape the iOS sandbox using abort() menurut saya adalah yang paling menarik. Idenya sangat menarik, implementasinya menakjubkan, dan pembicaranya menyampaikan topiknya dengan sangat terstruktur dan dengan suara yang sangat jelas. Silakan dibaca file presentasinya dan deskripsi di githubnya.

Pembicara terakhir adalah Halvar Flake (Thomas Dullien) dari Google. Topiknya agak teoretis tapi bagi saya sangat menarik. Dia ingin membuat tool untuk bisa mengidentifikasi berbagai library yang direuse oleh banyak pihak. Singkatnya semacam FLIRT dari IDA tapi lebih advanced.

Penutup

Berbagai eksploitasi yang ditayangkan di conference ini sangat menarik dan dalam banyak kasus saya berkata dalam hati: wow kok mereka kepikiran ya memakai cara ini . Untuk mengeksploitasi sebuah sistem kadang diperlukan banyak bug yang sepertinya tidak terlalu penting dan bisa digabung jadi satu.

Dari situ yang terpikirkan oleh saya adalah: dengan bug-bug kecil yang “tidak sengaja”, mereka bisa merangkainya untuk mengambil alih sebuah sistem. Andaikan para penemu bug di conference BEVX diminta membuat backdoor yang tidak terdeteksi, kemungkinan besar mereka akan bisa melakukannya. 

Mereka bisa  sengaja membuat berbagai bug kecil yang tampaknya tidak penting. Jadi backdoornya bukan sejenis hardcoded password atau sekedar kondisi dengan sebuah if saja, tapi memakai sifat dari berbagai library dan syscall yang tidak mudah dimengerti kaitannya.

Ini menunjukkan betapa mengerikannya memakai berbagai produk yang tidak kita ketahui. Bahkan dengan code review sekalipun, bug-bug yang mereka temukan ini akan bisa lolos. Sepertinya langkah terbaik untuk sebuah negara adalah mengembangkan sendiri berbagai software penting untuk keperluan critical.

Saya cukup menikmati keseluruhan acara ini. Semoga lain kali saya juga tidak hanya jadi pendengar saja, tapi jadi pembicara juga di acara sejenis ini.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.