Bug Zohib Messenger (Juni 2015)

Jika Anda belum membaca, sebaiknya baca dulu pengantar seri ini: Mencari dan melaporkan bug security. Perlu dicatat: bug ini sudah dilaporkan (6 bulan yang lalu), sudah diperbaiki. Posting ini hanya untuk pelajaran bersama.

Sejujurnya: Sebelumnya saya belum pernah denger aplikasi Zohib Messenger (ZM) ini. Ternyata setelah dicari-cari, aplikasi ini pernah jadi aplikasi resmi Kominfo untuk para pemudik.

Saya ringkaskan dulu bug-bug yang saya temui sebelum masuk ke bagian cerita detail:

  • Username/password kita disimpan di database dalam bentuk plaintext
  • SSL dengan self signed certificate, dan certificatenya tidak dicek
  • Unauthenticated/sessionless API access

Karena bug terakhir ini cukup umum, saya jelaskan lebih lanjut untuk yang awam: ketika kita login, server biasanya akan mengirimkan token atau session id random, sebagai bukti siapa diri kita, dan bahwa kita diberi akses oleh server. Jadi setiap request berikutnya, kita perlu mengirimkan lagi session id atau token ini. Analoginya begini: kalau saya mau masuk komplek tertentu di sini, saya perlu memberikan ID saya, lalu saya akan diberi kartu pengunjung. Kartu ini dikenali oleh semua satpam, jadi mereka tahu saya ini pengunjung, dan satpam juga bisa membantu atau membatasi (misalnya: “mas, maaf gak boleh parkir di sini, nanti Bu Dewi nggak bisa lewat”).

Lanjutkan membaca “Bug Zohib Messenger (Juni 2015)”

Mencari dan melaporkan bug security

Tulisan ini adalah pengantar untuk tulisan-tulisan saya berikutnya dalam topik security yang akan saya publish dalam beberapa hari (atau minggu) ke depan. Saya akan mendeskripsikan bug-bug yang cukup fatal dalam beberapa aplikasi Indonesia yang saya temukan. Semua bug ini sudah diperbaiki, jadi tidak berbahaya bagi siapapun. Yang sudah saya rencanakan adalah: Gojek, Zohib Messenger, dan Mandiri e-Money.

Bug World

Sebagian akan ada yang mempertanyakan: untuk apa mendeskripsikan bug yang sudah diperbaiki? nanti cuma akan mempermalukan perusahaan itu saja, tidak ada gunanya!. Mendeskripsikan bug sudah merupakan hal yang sangat lazim dilakukan setiap hari di dunia security. Bahkan Google juga memeriksa bug-bug software perusahaan lain melalui Project Zero, di blog project zero, Anda bisa melihat berbagai bug dari mulai Antivirus sampai sistem operasi.

Lanjutkan membaca “Mencari dan melaporkan bug security”

Tips Android: XPosed Framework dan XPrivacy

Kalau dulu saya nulis tips soal Blackberry, gantian sekarang mau menulis soal Android. Sekarang ini saya mau tulis soal aplikasi yang menarik, tapi sepertinya nggak banyak diketahui orang.

XPosed Framework adalah framework yang memungkinkan untuk membuat (dan menjalankan) aplikasi yang bisa mengintercept API Android apapun. Ada banyak modul yang memanfaatkan framework ini, salah satunya adalah XPrivacy. Dengan XPrivacy, kita bisa memblock atau menipu aplikasi Android yang meminta akses tertentu. Aplikasi ini butuh root access, jadi Android Anda perlu bisa diroot. Perhatikan bahwa aplikasi ini hanya untuk Anda yang cukup expert bermain Android.

Saya berikan beberapa contoh kemampuan modul Xprivacy ini. Ketika sebuah aplikasi atau game meminta koneksi Internet, kita bisa bilang: sedang tidak ada koneksi internet. Ketika aplikasi berusaha mengakses SD Card, aplikasi bisa ditipu dengan menyatakan bahwa SD Card tidak dimasukkan. Aplikasi ini gratis, tapi ada fitur ekstra di Versi pro, misalnya bisa merestriksi aplikasi yang membaca contact list agar bisa membaca dari account tertentu saja. Restriksi ini bisa dilakukan permanen, atau setiap 15 detik. Misalnya kita cuma perlu akses internet sekali untuk aktivasi, kita bisa ijinkan sekali saja, lalu sisanya tidak diijinkan.

Hal yang “menyeramkan” dari Android adalah: ada banyak aplikasi yang meminta banyak permission, contohnya ini ada satu aplikasi yang “recommended” karena teman saya ada yang menginstall. Ketika tombol install ditekan:

small

(ini aplikasi game atau apaan sih?)

Dengan XPrivacy, ketika aplikasi berjalan, kita bisa memblok berbagai permintaan aplikasi tersebut. Misalnya layarnya seperti ini:

phoneid

Pertama kali kita menjalankan sebuah aplikasi, pertanyaan semacam ini akan banyak muncul, dan seminggu pertama memakai XPrivacy akan terasa mengesalkan. Tapi lama-lama jadi terbiasa juga, dan jadi tau banyak mengenai permission yang diminta oleh banyak aplikasi.

Selain untuk masalah privacy, XPrivacy ini berguna karena bisa memblok iklan. Untuk game yang jelas-jelas tidak butuh koneksi internet (misalnya game anak-anak), kita bisa blok akses internet untuk game tersebut, dan efek sampingnya adalah iklan jadi hilang (walau ada juga yang jadi menampilkan iklan default).

Banyak game yang berusaha menshare dirinya via facebook, bahkan game anak-anak. Dengan XPrivacy, kita bisa memblok aplikasi ini, sehingga jika anak tak sengaja memencet logo facebook, efeknya tidak ada.

Security CTF

Di posting ini saya hanya ingin memperkenalkan apa itu kompetisi security CTF (capture the flag). Posting ini akan membahas apa itu security CTF, apa manfaatnya ikut security CTF, seperti apa saja soal-soalnya, dan bagaimana caranya mulai ikut.

Sebenarnya selain security CTF ada berbagai CTF yang lain, tapi dalam posting ini selanjutnya saya akan menyebut CTF saja untuk security CTF. Setelah ikutan CTF-nya Noosc saya jadi lebih tertarik dengan CTF lalu gabung dengan team Rentjong (yang sejak sebelum saya bergabung sudah memiliki prestasi luar biasa). Anggota team ini kebanyakan bapak-bapak yang waktunya sedikit sekali setiap kali ada event CTF, dan melalui posting ini saya ingin memperkenalkan CTF ini ke publik, supaya suatu saat team dari Indonesia bisa masuk minimal 10 besar di https://ctftime.org/

Apa itu CTF

CTF adalah satu jenis kompetisi di bidang information security, biasanya formatnya ada tiga: jeopardy, attack-defence, dan mixed. Dalam format jeopardy, kita diminta menyelesaikan berbagai task, dan mendapatkan poin, pemenangnya adalah yang poinnya paling banyak. Dalam format attack-defence, tiap team menyerang dan mempertahankan sistem komputer yang diberikan kepada team tersebut. Format mixed artinya campuran dari kedua itu (tergantung panitianya, mungkin ada aturan khusus).

Setiap kita menyelesaikan soal, kita akan mendapatkan sebuah string yang jadi flagnya (misalnya “Flag{MyFlag}”), dan kemudian kita submit string tersebut ke sistem submisi, sebagai tanda bahwa kita berhasil menyelesaikan soalnya.

Manfaat ikut CTF

Selain menyenangkan (untuk refreshing), mengikuti CTF juga bermanfaat untuk menguji dan menyegarkan ilmu informatika (dari mulai networking, kriptografi sampai programming), ilmu mencari di Google (ilmu Google-fu), serta memaksa kita mengikuti perkembangan terbaru. Untuk Anda yang merasa jago dan sudah mengenal berbagai aspek komputer, inilah ajang untuk menguji kemampuan Anda.

Untuk Anda yang ingin jadi hacker, atau hobinya ngehack, ini adalah ajang legal tingkat dunia di mana Anda bisa menunjukkan kebolehan Anda. Perlu diingat, bahwa di sini Anda diminta untuk menyelesaikan tugas, bukan menyerang server dengan DOS (denial of service attack). Di hampir tiap event CTF selalu ada yang melakukan ini. Ini sama saja seperti Anda diminta bertanding bersama dengan orang-orang, tapi karena Anda nggak mampu bertanding, Anda malah merusak tempat pertandingannya, sehingga tidak ada yang bisa bertanding di situ.

Di Amerika, beberapa team CTF tingkat atas dunia, seperti PPP (Plaid Parliament of Pwning dari Carnegie Mellon University) sangat dikenal di kalangan banyak perusahaan, sehingga alumni PPP ini banyak dicari oleh perusahaan besar (seperti Facebook atau Microsoft).

Team

Sebagian besar event CTF ditujukan untuk team, dan tidak dibatasi jumlah anggota teamnya, sebagian kecil CTF membatasi jumlah anggota team (terutama untuk lomba offline), dan sebagian lagi hanya ditujukan untuk individu.

Hadiah dan Ranking

Banyak event CTF yang memberikan hadiah, mulai dari hadiah kecil seperti lisensi software, sampai hadiah besar seperti uang cash atau tiket pesawat. Biasanya hanya sedikit yang mendapatkan hadiah karena hanya beberapa pemenang saja, tapi banyak yang ikut semua CTF karena ingin belajar, dan mendapatkan ranking tinggi. Situs ctftime.org mentrack tim-tim yang mendaftar di situs mereka, dan memberikan rangking berdasarkan pencapaian dalam tiap event CTF (tiap event bobotnya berbeda). Situs tersebut juga berisi link ke banyak soal dan pembahasan (istilahnya writeup).

Bentuk kompetisi

Kebanyakan CTF online sifatnya jeopardy (walau ada juga yang attack defence, dengan akses VPN), dan hampir semuanya gratis untuk diikuti siapa saja. Sebagian CTF hanya memberikan soal kategori tertentu saja (misalnya SqiLab CTF yang diadakan oleh NotSoSecure hanya berurusan dengan code injection), tapi kebanyakan CTF memberikan soal campuran dalam berbagai kategori.

Jenis soal

Saya akan membahas beberapa kategori yang biasanya ada: web, crypto, forensic, reversing, pwnables, dan misc. Biasanya dalam tiap kategori ada pointnya, yang menyatakan tingkat kesulitan soalnya, misalnya web100 lebih mudah dari web200.

Perlu dicatat bahwa semua soal dalam sebuah CTF jarang sekali bisa diselesaikan dengan tool standar. Contohnya: Anda tidak bisa menjalankan sqlmap langsung untuk mendapatkan akses via SQL Injection (biasanya panitia sudah merancang soalnya seperti itu). Jadi script kiddies yang cuma bisa memakai tool akan segera berguguran.

Soal dalam kategori web biasanya adalah bagaimana masuk ke web site tertentu, atau bagaimana mendapatkan hak akses tertentu (misalnya dari user biasa mendapatkan hak akses admin). Cara masuk webnya bisa berbagai cara, misalnya bisa dari SQL injection, XSS injection, hash extension attack, dsb. Di sini keahlian yang dibutuhkan adalah pemahaman yang baik mengenai teknologi web. Soal dari CTF Noosc hampir semuanya kategori web (silakan lihat writeup yang saya tulis). Contoh lain bisa dilihat dari writeup oleh Rizki Wicaksono (dari ilmuhacking.com, anggota team Rentjong).

Sesuai namanya, soal dalam kategori crypto berhubungan dengan kriptografi. Soalnya bisa sangat sederhana (ini contoh writeup cryptanalysis untuk menyelesaikan substitution cipher), sampai lebih rumit, misalnya mencari kelemahan dari custom encryption yang diberikan. Di sini ilmu kriptografi sangat diperlukan.

Soal dalam kategori forensic meminta kita mengekstrak flag dari data yang diberikan (jadi biasanya kita tidak berurusan dengan memahami/reverse kode program). Contohnya: mengekstrak informasi yang disembunyikan dengan steganography, mengekstrak data dari disk image, memory dump. Pemahaman mengenai berbagai format data dibutuhkan untuk menyelesaikan soal-soal dalam kategori ini. Ini ada dua contoh writeup soal forensic: soal steganografi dan soal memory dump.

Soal dalam kategori reversing meminta kita mereverse engineer sebuah kode (bisa binary, bisa source code), tujuannya untuk mendapatkan flag dari kode tersebut. Keahlian untuk membaca kode assembly biasanya diperlukan untuk menyelesaikan ini (walaupun kadang soalnya bisa berupa source code, seperti yang saya bahas di sini)

Soal dalam kategori pwnables meminta kita mengexploit service yang berjalan di suatu mesin remote. Source dan atau binary (biasanya sih hanya binary saja) dari service yang berjalan akan diberikan dalam soal. Ini merupakan gabungan dari reverse engineering dan exploit writing. Dalam kategori soal reversing, kode diberikan kepada kita dan dijalankan di mesin kita, sementara dalam pwnables, kode dijalankan di mesin remote, dan flag yang harus kita ambil ada dalam mesin remote tersebut. Ini contoh writeup dari team Rentjong dalam lomba di Malaysia.

Soal dalam kategori misc tidak termasuk dalam semua kategori di atas, dan kadang-kadang gabungan dari kategori-kategori di atas.

Berbagai writeup puntuk semua kategori di atas bisa dilihat di https://ctftime.org/writeups

Mulai ikutan

Jika ingin ikut sebuah CTF, bisa langsung mendaftar untuk event terdekat, yang bisa dilihat di https://ctftime.org/event/list/upcoming, hampir tiap minggu ada event baru. Kadang ada juga event yang tidak terdaftar di situ, misalnya jika sifatnya hanya teaser. Weekend ini, 26/27 April 2014 ada event teaser di https://ctf.dragonsector.pl/ yang hadiahnya adalah diskon untuk event offline (ini untuk individual).

Jika event sifatnya adalah team, Anda tetap bisa mendaftar sebagai individu (atau buat saja team dengan anggota satu orang). Jika punya teman-teman yang tertarik hal yang sama, Anda bisa mendaftar bersama. Ketika event berlangsung, semua bisa bertemu (baik di dunia nyata ataupun maya) untuk membahas dan mengerjakan soalnya.

Silakan mencari-cari event dan silakan mencoba. Event CTF biasanya 48 jam atau lebih dan biasanya weekend, jadi Anda bisa meluangkan waktu sebisanya di weekend (misalnya mungkin ketika bangun pagi di hari Minggu, atau sepulang kencan di sabtu malam), karena gratis, Anda juga nggak akan rugi uang. Sebagian orang memakai nama asli, tapi kebanyakan memakai nickname ketika mendaftar, jadi Anda juga tidak akan merasa malu kalau kalah (atau tidak jadi mengerjakan soalnya jika sibuk saat weekend).

Selain event online, di Indonesia sudah diadakan juga beberapa event CTF offline, tapi sayangnya ini tidak banyak didokumentasikan (jarang yang menulis writeupnya), dan kadang eventnya sangat lokal (misalnya ICT USO EXPO Makassar). Kemhan juga mengadakan Cyber Defence Competition

Sebagai tambahan, jika Anda tertarik sedikit sejarah CTF, Anda bisa membacanya di Edisi 29 Echo ezine, ini adalah tulisan member team Rentjong yang sudah berpengalaman dalam banyak CTF. Di artikel itu juga diceritakan tentang berbagai kendala ikut event CTF dari Indonesia, misalnya koneksi Internet yang lambat. Anda juga bisa membaca banyak artikel security lain di Echo ezine (berguna untuk CTF). Buat yang belum tahu, Echo e-zine ini adalah publikasi security dalam bahasa Indonesia sejak 2003.

Pertanyaan aneh lain

Ini saya mau menyambung tulisan saya tentang Hacking dan Reverse Engineering. Posting tersebut membahas beberapa jawaban untuk pertanyaan-pertanyaan yang sifatnya agak advanced. Tapi saya masih dapet banyak pertanyaan dari pemula. Misalnya: “gimana sih caranya membongkar email yahoo/gmail/dsb?” atau “gimana caranya mendapatkan account/password YM/Gtalk/facebook/dsb punya orang lain?”, atau
gimana caranya dapetin IP orang lain, atau melacak lokasinya?”.

Sebelum menanyakan pertanyaan-pertanyaan semacam itu, cobalah berpikir logis: kalau Yahoo/Google/Microsoft atau perusahaan lain membiarkan ada lubang keamanan yang sangat besar sehingga siapapun bisa membajak account semua orang, apakah mereka tidak akan dituntut dan apakah orang-orang tetap mau menggunakan layanan mereka?.

Untuk pertanyaan berikutnya: jika Anda tidak tahu konsep IP address, dsb, untuk apa ingin tahu IP orang lain? apakah Anda baru menemukan program yang katanya bisa menghack PC orang lain dengan memasukkan IP-nya? (kemungkinan Anda baru saja menginstall virus/trojan di komputer Anda sendiri). Lalu bagi Anda yang ingin bisa “melacak” orang dari IP-nya: tahukah Anda kalau IP yang diberikan ke pengguna umumnya dinamis dan hanya ISP yang mencatat client dan IP-nya?.

Sekarang jawaban yang lebih teknis. Secara teknis untuk mendapatkan password seseorang, Anda bisa menggunakan opsi “lupa password”, dan mengisi info mengenai orang tersebut. Tapi ini hanya akan berhasil jika orang tersebut membuat pertanyaan rahasia yang gampang ditebak. Cara lainnya adalah dengan “menipu” orang tersebut. Misalnya berpura-pura jadi admin yang meminta perubahan password. Bahkan kadang-kadang ada yang ditipu dengan program sederhana: jika ingin tahu password orang X, masukkan email si X, lalu masukkan email dan password Anda. Nah, Anda tidak akan pernah diberitahu password si X, yang terjadi adalah account Anda akan dibajak orang karena Anda telah memberi tahu emai dan password Anda.

Mengenai melacak orang: saat ini ada banyak layanan yang bisa dipakai untuk tracking orang yang *dikenal*. Contohnya adalah layanan dari operator seluler (menggunakan triangulasi BTS), atau layanan dari pihak ketiga (misalnya Google Latitude yang menggunakan kombinasi IP, BTS, dan GPS). Persamaan dari keduanya adalah: orang yang ingin Anda lacak keberadaannya harus menyetujui dulu supaya Anda boleh memonitor mereka (kecuali Anda punya akses ke HP mereka untuk “menyetujui” bahwa Anda boleh melacak mereka). Cara lain adalah Anda memakai alat khusus yang dipasang di mobil atau benda yang mereka bawa.

Jadi kesimpulannya: tidak ada cara mudah “menghack” atau “melacak” seseorang. Jika Anda punya masalah, selesaikanlah di dunia nyata. Secara khusus, kadang-kadang hal tersebut bisa dilakukan, tapi saya tidak akan mendikusikan hal tersebut. Bagaimana saya bisa tahu bahwa Anda adalah orang jujur yang punya masalah dengan suami/istri, dan bukan stalker/penguntit yang mengejar orang yang tidak bersalah?

Jika masalah Anda berhubungan dengan hukum, selesaikanlah melalui pengacara. Sebagai catatan, polisi Indonesia memiliki divisi cyber yang bisa membantu jika ada masalah yang berhubungan dengan kejahatan cyber. Jika masalah Anda cukup besar/serius, saya yakin akses ke data ISP/operator seluler bisa didapatkan.

Catatan tambahan: jika orang yang ingin Anda lacak adalah orang yang “pintar” (mengenal Internet dengan cukup baik, atau rajin mengikuti podcast/film teknologi), kemungkinan besar orang itu tahu bagaimana caranya agar tidak terlacak. Mereka dapat dengan mudah menggunakan proxy anonim, dan teknologi sejenis (misalnya Tor atau yang sejenis).

Data Pemilih LN Pemilu 2009 Dipajang di Internet

Setelah ramai kasus Diknas yang menampilkan data 36 juta siswa di Internet, sekarang giliran panitia pemilu luar negeri di beberapa negara berbuat hal yang sama. Kali pertama saya menyadari hal ini adalah ketika di milis IndoBangkok ramai membicarakan data pemilih yang dipajang di Internet di situs http://www.pplnbangkok.net/http://www.kbri-bangkok.com/, dan saya menemukan bahwa situs resmi Pemilu 2009 bangkok adalah http://www.pplnbangkok.net/ (Panitia Pemilihan Luar Negeri Bangkok 2009/PPLN Bangkok 2009). Data-data ini cukup penting, meliputi: Nomor Paspor, Nama, Tempat Tanggal Lahir, Jenis Kelamin, Alamat di Indonesia, dan Alamat di Thailand. Akhirnya setelah diprotes, data ini diturunkan dari Internet (meskipun selama beberapa hari masih dapat dicache via Google), dan pejabat yang berkait sudah meminta maaf di milis.

Saya segera berpikir bahwa nama domain yang aneh (pplnbangkok.net) menunjukkan bahwa tidak ada koordinasi antar PPLN, karena jika ada seharusnya nama domainnya hanya satu, dengan sub domain masing-masing negara/tempat PPLN. Jika memang tidak ada koordinasi, maka pasti kesalahan yang sama akan dilakukan oleh PPLN di negara lain. dengan mencari ‘data pemilih 2009 filetype:pdf‘ dan ‘daftar pemilih 2009 filetype:pdf‘ saya menemukan banyak data lain. Misalnya dari Iran (Nama, Jenis Kelamin, Paspor, Nama Kota, Pekerjaan), Seoul (Nama, Tempat Tanggal Lahir, Paspor), Toronto (Nama, No Paspor, Kota, Kode Pos) , Moskow (Paspor, Nama, Tempat Tanggal Lahir, Alamat di Rusia), Singapore (Nama dan Paspor), dan Brunei (Nama, Paspor, Tempat Tanggal Lahir, Pekerjaan, Alamat di Brunei, Alamat di Indonesia). Mungkin masih ada data lain dari PPLN luar negeri, silakan dicari sendiri. Dari semua itu, mungkin hanya Singapore yang paling aman (hanya menampilkan Nama dan Paspor) dan Brunei yang paling parah (meskipun sepertinya data dari Brunei tidak dirilis oleh PPLN, tapi oleh Perhimpunan Masyarakat Indonesia di Brunei Darussalam).

Saya sudah mengetahui fakta ini selama beberapa hari, tapi karena saya punya kemampuan mengendalikan ruang dan waktu, saya berpindah ke Bangkok sebelum data diupload, dan saya sudah menghapus data saya sehingga tidak muncul di file PDF yang dirilis oleh PPLN data saya tidak muncul di daftar pemilih di Bangkok, saya kurang peduli (dan masih sangat sibuk dengan pekerjaan). Saya belum menghubungi pihak-pihak yang berkait. Mungkin hari ini, saat makan siang akan saya lakukan, akhir pekan ini saya harus bekerje mengejar deadline, dan saya harus buru-buru berangkat.

Bagi Anda yang di luar negeri: Tolong cek data di PPLN negara Anda.

Hacking dan Reverse Engineering

Sejak dulu banyak yang bertanya kepada saya mengenai Hacking, dan mengenai  reverse engineering. Pertanyaan ini semakin sering muncul setelah saya menulis mengenai Hacking, Cracking dan IT Pemilu serta artikel Analisis Lengkap Virus Brontok. Pertanyaan yang sering muncul adalah yang sejenis ini “bagaimana caranya ngehack situs x”, “bagaimana caranya ngehack program x”, “di mana saya bisa mendapatkan program x”, “bagaimana caranya menganalisis virus x”.

Seringkali saya tidak membalas email-email tersebut, karena berbagai macam alasan. Pada tulisan ini saya akan menjelaskan apa alasan-alasan tersebut, dan sekaligus berusaha menjawab pertanyaan yang sering diajukan.

Warning posting ini sangat panjang. Pastikan Anda punya waktu luang sebelum mulai membaca. Kalau Anda membaca di kantor, pastikan bos sedang tidak melihat. Mungkin saya akan terdengar seperti orang yang sombong dan mengesalkan, jadi bertabahlah dalam membacanya.

Lanjutkan membaca “Hacking dan Reverse Engineering”