Hosting email

Meneruskan cerita sebelumnya tentang self hosting, kali ini saya ingin membahas lebih jauh lagi mengenai email. Sekarang ini email (dan nomor HP) menjadi “kunci” bagi banyak layanan. Kebanyakan layanan memerlukan email untuk login dan untuk fitur lupa password. Berbagai notifikasi transaksi keuangan juga masuk ke email. Jika kita kehilangan akses email, akibatnya cukup fatal.

Banyak layanan juga meminta verifikasi via email jika kita login di komputer baru atau IP yang baru. Jadi jika account email kita dihack atau diblokir, kita tidak bisa login. Email ini sangat penting, jika sampai kehilangan akses maka urusannya rumit, seperti jika kita kehilangan dompet. Sekarang setelah tahu betapa pentingnya email ini, kita perlu berusaha mengamankannya.

Contoh verifikasi dari Steam

Email gratisan

Sebagian besar orang menggunakan dua jenis email ini: email kantor dan email gratisan dari berbagai provider (Google/Yahoo/Outlook dsb). Sebenarnya kemungkinan account kita tiba-tiba ditutup oleh Google atau berbagai perusahaan ini cukup kecil, tapi tetap ada. Bisa saja kita sudah taat peraturan, tapi ada kesalahan pada sistem yang membuat account diblokir. Selama lebih dari 14 tahun memakai Google, baru sekali saya mengalami masalah.

Selain Google sebenarnya ada banyak layanan email gratis lain, misalnya protonmail yang terenkripsi, outlook.com dari Microsoft, bahkan Yahoo juga masih memberikan email gratis. Tapi semua email gratisan ini agak mengkhawatirkan karena sebagai pengguna gratis, kita ini “bukan siapa-siapa” dan bisa ditendang kapan saja.

Lanjutkan membaca “Hosting email”

Self hosting layanan online

Posting ini meneruskan cerita horor di posting saya sebelumnya di mana saya hampir kehilangan akses account Google tanpa sebab. Di sini saya ingin membahas mengenai self-hosting layanan online, supaya kendali atas layanan online sebisa mungkin ada di tangan kita, tidak mudah semena-mena ditutup pihak lain.

Posting kali ini lebih ditujukan bagi mereka yang memiliki kemampuan teknis mengadministrasi sistem (atau mau belajar melakukan itu). Saya berencana membuat posting lain untuk melindungi account online untuk orang awam.

Meskipun ada banyak layanan online (SAAS atau software as a service) baik gratis maupun berbayar mulai dari penyimpanan file, foto, sampai source code, banyak orang memilih untuk menghosting sendiri berbagai layanan tersebut (istilahnya self-hosting). Ada yang memakai komputer lokal di rumah, ada yang memakai VPS, dan ada juga yang menyewa dedicated server.

Beberapa contoh layanan online yang saya maksud misalnya: email (Gmail, Outlook, Yahoo), hosting blog (Blogspot, WordPress, Medium, dsb), hosting git (github, bitbucket), dan penyimpanan file online (Dropbox, Google Drive, OneDrive)., Tentunya masih banyak lagi jenis layanan online lainnya yang tidak saya sebutkan.

Buat apa hosting sendiri?

Ada banyak alasan kenapa seseorang mulai menghosting layanan sendiri. Ada yang shock karena account onlinenya ditutup sepihak, dan ada juga yang dari dulu merasa curiga dengan layanan gratis (kok bisa gratis?). Beberapa layanan gratis mendapatkan uang dari iklan, beberapa memberikan gratis sampai batas tertentu saja (misalnya untuk Dropbox, jika disk penuh, nanti lama-lama pengguna gratis akan membayar), dan beberapa dikhawatirkan menjual data usernya.

Memakai layanan dari pihak lain memiliki  satu kelebihan utama:  kita tidak perlu memikirkan apa-apa, tinggal pakai. Tapi memakai layanan pihak lain juga memiliki banyak kelemahan:

  • Semua data kita di tangan pihak tersebut, bisa saja dijual, diintip, dihilangkan
  • Pemerintah di negara tertentu bisa meminta pihak online provider memberikan data pada mereka (dan kita tidak tahu)
  • Pihak lain bisa secara sepihak menutup account kita, seperti contoh kejadian yang saya alami di posting sebelumnya
  • Bukan cuma account, tapi keseluruhan layanan online bisa ditutup sewaktu-waktu (ingat Friendster yang sempat memiliki ratusan juta member? Google Reader yang dulu jadi andalan membaca berita? Google Plus yang jadi alternatif Facebook bagi lebih dari 100 juta orang?)
  • Selain ditutup, layanan bisa juga dijual ke pihak lain dan bisa berubah total. Baru-baru ini Yahoo menjual Flickr, tadinya pengguna gratis bisa mengupload data sampai 1 TB, sekarang dibatasi 1000 foto saja

Tidak peduli seberapa besar layanannya, berapa banyak penggunanya (Tahun 2013 flickr memiliki 87 juta anggota, Google plus memiliki 111 juta pengguna aktif), seberapa besar perusahaannya (Google Reader dan Google plus dimiliki oleh Google, Flickr dimiliki oleh Yahoo). Jika sesuatu dirasa tidak menguntungkan, maka kita bisa dipaksa pindah.

Lanjutkan membaca “Self hosting layanan online”

Ransomware, Reverse Engineering dan Backup

Cukup banyak yang bertanya ke saya mengenai ransomware, selain itu sering juga di group reverse engineering ada yang bertanya: saya kena ransomware (dengan scren capture layar permintaan tebusan), diteruskan dengan: apa yang harus saya lakukan? Tulisan ini akan berusaha menjawab kenapa sulit mengatasi ini, kenapa percuma meminta tolong ke group reverse engineering, dan kenapa sebaiknya Anda perlu membackup file Anda.

Ransomware

Ransomware adalah jenis malware (software jahat) yang memaksa Anda mengirimkan uang ke pembuatnya melalui berbagai cara. Cara yang saat ini paling banyak dipakai adalah mengenkripsi file Anda, lalu jika Anda mengirim uang tebusan, maka Anda akan dikirimi key atau program untuk membuka file Anda. 

Jawaban singkat untuk yang kena ransomware: cobalah ke situs No More Ransom. Jika Anda beruntung, file Anda bisa kembali. Jika tidak, maka harapannya sangat kecil. Coba juga search nama ransomwarenya (jika ada nama yang unik yang muncul di layar ransom) dan coba baca apakah sudah ada yang membuat tool gratis untuk membukanya. Bagian berikut artikel ini hanya ingin menjelaskan kenapa file Anda sulit kembali.

Alternatif lain: Anda bisa membayar tebusan, tapi perlu dicatat: Andaikan Anda membayar uang tebusan, belum tentu file Anda bisa kembali. Tidak ada jaminan dari para penjahat ini bahwa file Anda masih aman. Sebagian ransomware merusak file tanpa bisa dikembalikan dengan cara apapun (membayar atau pun cara lain).

Jika Anda beruntung, kadang sebagian file bisa dikembalikan dengan program untuk melakukan undelete/data recovery. Sebagian malware membuat file baru hasil enkripsi dari file lama, lalu kemudian menghapus file lama. Kadang kala file lama (yang belum dienkrip ini) bisa dikembalikan.

Tips paling utama adalah: backuplah data Anda, sehingga jika ada ransomware maka Anda bisa memformat disk, menginstall ulang OS dan merestore backup.

Reverse Engineering

Saat ini ada ribuan varian ransomware yang mengenkripsi file Anda. Sebagian ini ada yang menginfeksi jutaan komputer, sebagian lagi menginfeksi puluhan atau ratusan komputer saja. Sebagian dari ribuan varian malware ini ada yang berhasil ditemukan kelemahannya dan berhasil dibuat program untuk mengembalikan file tanpa harus membayar ke pembuat malwarenya. 

Bagaimana kelemahan berbagai metode enkripsi di ransomware bisa ditemukan? dengan melakukan Reverse Engineering (bisa dibaca apa itu Reverse Engineering dari tanya jawab di situs ini). Tapi tidak semua enkripsi bisa dibongkar, kadang harus brute force. Dalam kasus tertentu, terkadang key masih ada di memori jika komputer belum dimatikan dan mungkin bisa diekstrak.

Reverse engineering sebuah malware (atau ransomware pada khususnya) butuh waktu lama. Setelah berhasil dibongkar pun, kelemahannya belum tentu ada.  Meminta seseorang melakukan reverse engineering ransomware secara gratis, sama seperti minta tolong ke penyelam untuk secara gratis mengambilkan makanan Anda yang terjatuh ke laut: menyelam itu butuh tenaga, waktu, oksigen, dan kemungkinan makanan Anda sudah dimakan ikan.

Jika Anda ingin belajar membongkar ransomware, maka datang ke group reverse engineering adalah langkah yang tepat. Dari mulai meminta contoh malware, belajar teknik reverse engineering dsb. Tapi jika Anda terkena malware, maka yang harus dilakukan adalah langkah yang sudah saya sebutkan di atas: mencari informasi apakah malwarenya sudah ada yang membongkar dan membuat tool dekripsinya.

Ilmu reverse engineering itu seperti ilmu researcher yang sedang meneliti penyakit tertentu, bukan berfokus pada orang yang kena penyakit tertentu. Dalam kasus orang terkena penyakit (ransomware) maka dia akan pergi ke dokter (Google, administrator sistem, teknisi), yang akan memberi obat hasil penelitian researcher. Jika ternyata penyakitnya baru (ransomware baru) maka diperlukan riset yang tidak sebentar.

Berhati-hatilah ketika Online

Ransomware bisa berjalan di komputer Anda karena beberapa hal:

  • Ada bug di sistem operasi/browser/aplikasi sehingga ketika Anda mengunjungi situs tertentu atau membuka dokumen tertentu, otomatis ransomwarenya berjalan di komputer Anda
  • Ada malware menyebar dari komputer lain di jaringan (contoh kasus Wannacry). 
  • Anda tertipu sehingga menjalankan program ransomware. Tipuan ini biasanya berupa attachment yang tampak seperti dokumen.

Beberapa hal penting yang perlu diperhatikan adalah:

  • Backup data Anda
  • Updatelah sistem operasi dan software yang Anda pakai
  • Aktifkan antivirus (sekarang sudah built in di Windows)
  • Jangan mengunjungi situs-situs yang mencurigakan
  • Jangan tergiur berbagai macam hadiah yang tidak jelas
  • Jangan menginstall software yang tidak jelas
  • Hati-hati membuka file yang diterima dari siapapun

Backup

Selain masalah ransomware, kadang saya masih menemukan post di Facebook mengenai orang yang kehilangan laptop beserta semua datanya padahal semuanya sangat penting. Misalnya ada yang kerjaan kantor dan ada juga yang berisi data skripsi bertahun-tahun. Ini sangat menggemaskan karena sekarang membackup data sudah mudah sekali dilakukan dengan berbagai layanan online seperti DropBox, Google Drive, OneDrive, dsb. Di sini saya tidak akan membicarakan backup untuk kantor/enterprise, hanya sekedar backup data pribadi.

Semua layanan drive online punya aplikasi desktop dan mobile yang bisa mengotomasi upload file hanya ketika file tersebut berubah. Jika takut dengan masalah privasi (atau takut misalnya password layanan tersebut suatu hari jebol), kita bisa mengenkripsi file itu sebelum disimpan ke direktori yang di sinkronisasi ke cloud. Aplikasi seperti Word dan Excel juga punya fitur password, jadi file bisa diproteksi ekstra sebelum diupload ke cloud.

Meski menyimpan ke cloud sangat nyaman dan mudah, saya perlu memperingatkan bahwa penyedia jasa cloud bisa menghentikan layanannya kapan saja. Saya menuliskan ini setelah membaca kasus di mana seseorang kehilangan semua datanya di blogger. Ini terjadi terutama jika Anda bandel, misalnya sharing file yang dilindungi undang-undang HAKI (buku, film, app bajakan, dsb).

Hati-hati juga jika Anda suka sharing sesuatu yang bisa dianggap hate speech. Jangan sampai karena ingin menghina pemimpin atau tokoh tertentu, membuat account Anda jadi diblokir. Setidaknya jika memang ingin melakukan itu, pisahkan dari account utama Anda.

Dropbox

We also reserve the right to suspend or end the Services at any time at our discretion and without notice.

Google Drive

Google may also stop providing Services to you, or add or create new limits to our Services at any time.

OneDrive

You or Microsoft may terminate this Agreement immediately for any reason or no reason without notice

Meskipun kasus penutupan tiba-tiba ini relatif jarang, tapi ada banyak contoh yang bisa ditemukan di Internet. Bisa saja seseorang tidak suka pada Anda lalu melaporkan account Anda, dan tergantung orang yang menerima laporan tersebut, mungkin account Anda bisa diblok atau ditutup.

Jika mungkin, backuplah di berbagai layanan sekaligus, jadi jika ada masalah di satu layanan kita bisa memakai layanan yang lain. Saya tahu ini kadang ini tidak bisa karena kendala kuota internet, tapi lakukanlah untuk file-file super penting.

Saya sendiri memakai berbagai kombinasi backup offline dan online. Untuk file-file yang ada di desktop saya memakai layanan yang sudah umum (Google Drive, OneDrive dan Dropbox) serta memakai Backblaze. Bedanya dengan yang lain: Backblaze ini unlimited dan bisa membackup semua harddisk yang ada di komputer, tidak hanya folder tertentu. Untuk hal-hal yang berhubungan dengan development, saya punya server git personal dengan backup ke Amazon S3.

Backup online juga bisa menjadi target hacker. Sudah ada kejadian username/password Dropbox yang pernah bocor. Perlu diperhatikan juga bahwa fitur cloud kadang berbahaya di tangan peretas. Contohnya adalah kisah beberapa tahun lalu ketika seorang wartawan Wired diretas dan datanya dihapus secara remote dengan fitur security Apple.

Ini membawa saya ke topik berikutnya: buatlah backup offline untuk data super penting Anda. Backup offline ini maksud saya adalah yang non-cloud jadi bisa berupa NAS di rumah, atau bahkan sekedar USB disk.

20160221_145813

Harga USB disk 8 GB (sepertinya ini paling kecil saat ini) sudah sangat murah, di sini sekitar 100 baht (40 ribu rupiah). Jika Anda tidak menyimpan file super besar (seperti film), dan sekedar menyimpan dokumen skripsi/thesis, 8 gb sudah cukup. Kalau menurut Microsoft 5 GB saja sudah banyak:

OneDrive free with 5 GB: enough space for approximately 6,600 Office documents or 1,600 photos

Bahkan handphone yang Anda pegang juga bisa menjadi sarana backup. Jika tidak punya media backup lain, setidaknya copy lah file terpenting ke handphone. Jika filenya sangat penting (misalnya berisi password) maka file itu sebaiknya dienkrip (bahkan ponsel Android dan iOS sekarang sudah memiliki fitur enkripsi built in, jadi datanya cukup aman).

Tentunya jangan tempelkan terus USB-nya ke laptop Anda. Bagaimana jika laptopnya dicuri? hilang juga data backupnya. Backup sebaiknya berada di tempat terpisah (off site). Contoh kejadian yang mungkin terjadi adalah: kebakaran atau bencana lain. Seperti pernah diberitakan: seorang penulis nekat menerjang api untuk menyelamatkan laptopnya yang berisi novel yang ditulisnya.

Jangan lupa sesekali mengetes backup Anda, periksalah bahwa filenya bisa dibuka dan isinya benar, lengkap dan merupakan yang terbaru. Kalau tidak ingat untuk membackup setiap hari, dan bingung menggunakan software backup otomatis, minimal buatlah reminder di kalendar Anda tiap bulan. Andaikan ada masalah, setidaknya Anda nggak perlu mengulangi kerjaan skripsi dua tahun, tapi maksimum hanya sebulan terakhir.

Sebagai pembanding: jaman dulu backup data tidak mudah. Backup bisa dilakukan dengan floppy disk, tapi reliabilitasnya cukup rendah (atau yang cukup punya uang bisa memakai ZIP Drive). Layanan backup online juga belum seperti sekarang ini (teringat kisah pernah ada yang nekat nitip data di FTP kampus, tapi kemudian servernya diformat ulang jadi datanya hilang).

IMG_1190_d57bcd54aaab4b36e7fc2d722996a24a

Jika semua kemudahan sudah ada, tapi Anda tidak menggunakannya karena malas, maka jangan salahkan siapa-siapa selain Anda sendiri.

Cloudflare

Cloudflare adalah perusahaan yang memberikan layanan untuk memproteksi website dari DDOS dan serangan lainnya. Perusahaan ini didirikan 2009, dan mulai terkenal sejak 2011. Saya sendiri sudah memakai ini sejak 2013, tapi sepertinya masih banyak pihak yang belum tahu layanan ini, atau tahu tapi belum bisa memakai secara optimal.

Secara sederhana cara kerjanya Cloudflare adalah: semua request dari client (browser/mobile) akan ditangani oleh Cloudflare dan diteruskan ke server kita. Karena berada di tengah-tengah, maka Cloudflare bisa memblok serangan, meng-cache content, dsb.

Cara kerja Cloudflare

Layanan Cloudflare ini ada versi gratisnya dan ada versi berbayarnya. Saya sendiri hanya memakai versi gratis untuk berbagai website/blog yang saya miliki, dan ini sudah cukup untuk menambah keamanan website saya (dari serangan DOS), sekaligus mengurangi bandwidth website. Untuk versi berbayar, ada banyak fitur lain yang menarik, misalnya: WAF (Web application firewall yang memblok request berbahaya), Load Balancing dsb.

Ketika website kita mendapatkan serangan DDOS, kita bisa mengaktifkan “I’m Under Attack Mode”, dan hasilnya pengguna akan melihat layar “Checking your browser before accessing namasitus”. Kadang ini diaktifkan di beberapa situs kecil walau tidak diserang untuk menghindari otomasi akses situs dengan bot.


I’m Under Attack Mode

Server  DNS

Fitur Cloudflare lain yang menarik adalah server DNS (Domain Name System) yang bisa dikontrol menggunakan API. Untuk pengguna rumahan seperti saya, ini bisa dipakai untuk membuat dynamic DNS, tanpa harus membayar (dan bisa membuat banyak subdomain). Untuk di perusahaan, fitur API ini bisa digunakan untuk mengotomasi banyak hal yang berhubungan dengan DNS.

DNS-nya cloudflare juga mendukung multiple TXT records, fitur ini diperlukan untuk sertifikat SSL gratis dengan wildcard domain (*.example.com) dengan Lets Encrypt. Saat ini beberapa registrar seperti gandi tidak mendukung fitur multiple TXT records ini.

Cloudflare juga mengoperasikan server DNS 1.1.1.1 yang berguna untuk bypass blokir website berdasarkan DNS, dan juga untuk meningkatkan privasi DNS. Ini mirip dengan DNS 8.8.8.8 dari Google, 9.9.9.9 dari Quad9 dsb. DNS yang dioperasikan Cloudflare ini juga mendukung DNS over HTTPS.

SSL otomatis

Jika tidak mau repot dengan Lets Encrypt dan hanya butuh agar sekedar URL menjadi “https”, Cloudflare juga menyediakan fitur itu. Contohnya adalah blog ini yang memakai HTTP dengan cloudflare. Akan terlihat di sertifikatnya bahwa yang dipakai adalah dari Cloudflare.

Contoh website tanpa https, kata “Not secure” muncul di address bar

Kenapa memakai URL https? sekarang ini Chrome akan menandai semua website yang tidak memakai HTTPS sebagai “not secure”.  Jadi untuk meningkatkan kepercayaan pembaca, sebaiknya sekarang website memakai SSL.

Cloudflare sebagai WAF

Bagian ini merupakan catatan khusus ketika memakai Cloudflare sebagai WAF atau Anti DDOS. Intinya di sini adalah semua request akan ditangani dan diblok oleh Cloudflare jika dianggap berbahaya. Tapi jika IP asli server kita masih ketahuan, maka percuma saja proteksi dari cloudflare, karena searangan langsung bisa dilakukan terhadap IP asli server tersebut.

Jadi jika ingin mendapatkan proteksi maksimum, koneksi harus diblok kecuali dari IP Cloudflare. Bagaimana seseorang bisa mendapatkan alamat IP asli sebuah website? ada banyak cara, beberapa di antaranya:

  • Dari subdomain yang dipetakan langsung ke IP asli (seperti direct.example.com)
  • Dari pesan error yang ditampilkan server
  • Dari header email yang dikirimkan oleh webiste
  • Dari request oleh server ke server lain (server side request, baik request normal ataupun yang dipaksakan dari bug dalam kategori SSRF )
  • Dari SSL scanning dengan Shodan
  • Dari sejarah DNS, ada beberapa situs yang mencatat DNS, jadi jika pernah terdaftar di masa lalu dengan IP tertentu, maka mungkin sudah tercatat

Registrar

Saat ini kita masih harus membeli sendiri domain di sebuah registrar dan mengeset nameserver agar menunjuk ke server cloudflare, tapi sebentar lagi cloudflare akan meluncurkan layanannya sebagai registrar domain. Artinya kita bisa membeli domain langsung dari cloudflare. Mereka berencana membuat registrar dengan harga sangat murah, tanpa markup katanya.

Sedikit cerita mengenai beberapa registrar terakhir yang saya pakai. Namecheap harganya dulu murah (10.98 USD), minta add on ini dan itu (sebelum GPDR bahkan domain privacy harus bayar), tidak diberi email. Gandi harganya mahal (15.50 usd untuk .com), tapi harga sudah all in, termasuk beberapa mailbox gratis.

Jika butuh mailbox, harga total per tahun namecheap jadi lebih mahal dari Gandi. Terakhir saya coba Google domains. Sejauh ini sih yang spesial hanya integrasi dengan layanan Google yang lebih mudah (harganya antara namecheap dan Gandi, 12 USD untuk .com).

Apakah Selalu Reliable?

Saya jarang menemui masalah dengan Cloudflare, tapi saya pernah mengalami beberapa kali kasus, server Cloudflare gagal menghubungi sebuah server sehingga website tidak bisa diakses padahal server masih baik-baik saja. Saya pernah mengalami sendiri masalah ini (sejauh ini baru sekali): server tidak bisa diakses padahal tidak ada masalah jika diakses langsung dengan IP dari berbagai negara.

Di sini seolah-olah server down, padahal sedang ada anomali pada Cloudflare

Biasanya masalah seperti temporer dan segera kembali normal dalam beberapa menit (walau kadang beberapa jam). Karena level saya hanya gratisan, saya tidak mengejar support untuk  menyelesaikan masalah ini dan cuma menunggu saja.

Penutup

Cloudflare merupakan layanan gratis yang menurut saya sangat berguna. Jika server baru terlalu mahal untuk menangani serangan DOS (atau pengguna yang terlalu banyak), maka Cloudflare ini bisa membantu mengurangi beban server sekaligus mengamankan dari serangan. Versi komersialnya 20 USD/bulan, lebih murah daripada beli server baru, dan bahkan versi gratisnya kadang sudah cukup untuk menangani serangan DDOS.

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.

Mengenal Two Factor Authentication (2FA)

Saat ini untuk mengakses sebuah situs biasanya kita menggunakan password. Tapi password bisa bocor dan kadang gampang ditebak. Jika seseorang punya password kita, maka orang tersebut bisa login dan mengambil alih account kita. Untuk meningkatkan keamanan, maka selain password kita perlu memberikan bukti lain bahwa sesungguhnya yang ingin melakukan autentikasi benar-benar diri kita.

Sistem yang menggunakan lebih dari satu bukti/faktor untuk autentikasi dinamai “Multi Factor Authentication” (MFA). Two Factor Authentication merupakan subset dari MFA dengan hanya dua faktor saja. Biasanya password dan sesuatu yang lain. Website besar seperti GMail, Facebook dan Twitter semuanya mendukung 2FA. Di tulisan ini saya akan membahas kelebihan dan kelemahan berbagai faktor dalam 2FA.

MITM

Serangan generik untuk hampir semua jenis transaksi adalah MITM (man in the middle attack). Seseorang yang bisa mencegat paket jaringan dan menyimpan memodifikasi paket tersebut akan bisa  mendapatkan password seseorang. Contoh “pencegatan” adalah dengan menggunakan WIFI gratis yang disetup oleh penyerang, atau penyerang mengganti setting router (DNS).

Dalam kasus hanya password saja, jika attacker sudah berhasil menyadap password, maka attacker akan bisa login lagi walaupun user sudah logout. Dalam kasus multi factor authentication, serangan MITM ini juga bisa dilakukan tapi lebih terbatas.

Sebenarnya dengan penggunaan SSL, MITM ini semakin sulit dilakukan. Sebuah website sulit berpura-pura menjadi website lain yang memiliki sertifikat SSL. Tapi ada faktor manusia yang sering kurang jeli dalam mengunjungi website. Contohnya jika ingin mengunjungi klikbca.com menjadi kilkbca.com maka seseorang bisa dengan mudah mendapatkan sertifikat SSL untuk website tersebut.

Varian lain MITM adalah seseorang mendaftarkan domain yang memakai karakter bahasa lain yang sulit dibedakan dari karakter latin (IDN Homograph Attack). Ketika mengunjungi situs tersebut, semua permintaan akan diteruskan ke situs asli, tapi sambil disadap dan atau dimodifikasi.

Saat ini beberapa browser sudah menangani agar tidak terjadi penipuan nama domain yang terlihat sama tapi berbeda, tapi sayangnya Firefox masih belum menangani ini dengan baik

Contoh kombinasi huruf latin dan non latin pada nama domain. Huruf Latin “e” dan “a” diganti dengan huruf Cyrillic “е” dan “а”.

Yang kamu tahu

Ini merupakan faktor autentikasi yang paling sederhana, intinya selain ditanya password, kita akan ditanya hal lain secara random. Ketika registrasi kita diminta mengisi beberapa pertanyaan dan jawaban (misalnya: apa group musik favorit Anda? Anda lebih suka Marvel atau DC?). Perhatikan bahwa ini berbeda dengan pertanyaan “password recovery” ketika kehilangan password. Pertanyaan ini selalu ditanyakan ketika login.

Cara ini hanya sedikit lebih aman dari password saja.  Jika seseorang memonitor jaringan hanya sekali saja, maka dia tidak bisa login jika kebetulan mendapatkan pertanyaan yang berbeda, tapi jika dimonitor beberapa kali maka semua jawaban bisa ditemukan. Seperti halnya password, jawaban untuk berbagai pertanyaan ini bisa dicari dan ditebak. Jika sudah mendapatkan jawabannya maka akan mudah login di mana saja.

Dirimu

Biometrik merupakan autentikasi berdasarkan “apa adanya kita”, bisa berupa sidik jari, wajah, retina, DNA, bau badan, atau apapun. Metode autentikasi ini sudah umum dipakai secara lokal (misalnya ponsel, di gedung). Di ponsel, sidik jari atau wajah hanya akan mengunlock data di ponsel dan data tersebut yang akan dikirim ke server (jadi bukan biometrik kita yang langsung dikirim ke server).

Kelemahan sistem ini adalah: biometrik bisa disalin. Sidik jari bisa mudah dicuri dari segala permukaan yang kita sentuh, retina bisa difoto, bahkan pengenalan wajah juga bisa diakali. Biometrik juga tidak bisa diganti, jika data bocor — misalnya seseorang merekam dengan sidik jari atau retina Anda dan diposting ke Internet — maka Anda tidak bisa mengubah mata Anda. Ada kekhawatiran juga bahwa seseorang bisa diculik demi menjadi kunci akses untuk sesuatu yang berharga.

Yang kamu punya

Cara ini yang paling umum digunakan karena praktis: menggunakan benda yang kita pegang (ponsel/sms/app/token). Ketika login kita diminta memasukkan kode tertentu yang hanya bisa dipakai sekali (OTP, One Time Password). Secara umum serangan MITM bisa dilakukan seperti password, bedanya adalah: attacker hanya bisa login sekali ini saja karena berikutnya OTP-nya akan berbeda.

Setelah attacker bisa login, koneksi dari pengguna yang sebenarnya bisa diset agar selalu error atau diputus.

Untuk meningkatkan keamanan, OTP biasanya akan diminta per transaksi. Inipun masih bisa MITM, tapi lebih sulit. Misalnya ketika user ingin transfer uang ke pihak A, attacker akan mengganti agar di browser user tampil transfer akan dilakukan ke pihak A, tapi data yang dikirim ke server adalah: transfer dilakukan ke pihak B. Beberapa bank mengatasi ini dengan mengirimkan SMS notifikasi jika kita mendaftarkan account tujuan yang baru.

Serangan berikutnya adalah: menyalin apa yang kamu punya jika bisa disalin. Atau dalam kasus tertentu: cukup bisa membaca apa yang kamu punya (contohnya dalam kasus SMS).

Ponsel/SMS

Sistem ini dipakai di banyak bank: setiap kali login atau melakukan transaksi, maka sistem akan mengirimkan SMS kode. Teorinya ini cukup aman karena (seharusnya) cuma pemilik ponsel yang bisa menerima kode ini. Tapi jika seseorang ditargetkan maka metode ini sudah tidak aman lagi. Baru-baru ini Reddit dihack karena menggunakan SMS sebagai faktor kedua.

Cara pertama untuk membaca SMS adalah: SIM Swapping. Intinya berpura-pura jadi orang lain untuk mendapatkan SIM card baru dari operator. Cara ini tidak bisa dipakai untuk hacking banyak orang sekaligus karena perlu proses untuk mendapatkan SIM card baru dan pengajuan massal akan sangat mencurigakan.

Cara lain adalah hacking ke jaringan SS7. Secara singkat: semua jaringan operator di dunia ini berhubungan, dan hubungan ini perlu telpon antar operator dan untuk roaming. Jika memiliki akses ke jaringan SS7, ada banyak vulnerability yang bisa digunakan untuk membaca SMS. Selain dengan bug, cara termudah adalah mengakses jaringan operator adalah melalui orang dalam (SMS tidak dienkrip). Cara ini tidak bisa dengan mudah digunakan secara massal karena akan cepat ketahuan siapa yang mengakses SMS banyak orang.

Cara ketiga adalah menginstall aplikasi di HP target. Jika aplikasi ini memiliki hak untuk mengakses SMS maka SMS OTP yang sampai akan bisa dibaca oleh attacker. Cara ini juga tidak mudah digunakan massal, harus menggunakan trik agar seseorang mau menginstall aplikasi tertentu (atau menggunakan bug spesifik untuk ponsel tertentu).

Cara terakhir yang sebenarnya sangat sederhana tapi sering berhasil adalah social engineering (intinya: menipu, tapi orang yang sering melakukan social engineering kurang suka kalau saya pakai istilah menipu). Caranya begini: penyerang melakukan transaksi, lalu butuh OTP, lalu dia menghubungi korban dengan mengatakan “mas, maaf saya tadi mau masukin nomor telepon untuk aplikasi gojek, eh salah masukin nomor mas, nanti kalo ada SMS masuk dari gojek bisa minta tolong bacain kodenya mas?”

Software Token

Software seperti Google Authenticator tergolong pada Software Token. Setiap kali kita ingin login ke website, kita perlu memasukkan angka yang muncul pada token. Ada banyak algoritma yang bisa dipakai namun saat ini ada TOTP standar yang dipakai di banyak layanan (Google, FB, Twitter, dsb). Standar TOTP ini sangat sederhana (saya pernah mengimplementasikan di jam tangan saya sejak 2011). Intinya adalah: ada satu string yang menjadi kunci untuk algoritma yang inputnya adalah waktu saat ini.

TOTP ini relatif aman untuk kebanyakan kasus. Serangan yang mungkin adalah jika seseorang menyalin key dari device kita. TOTP ini juga bisa diserang dengan teknik MITM.

Variasi lain token semacam ini adalah berdasarkan challenge dari website, website meminta kita memasukkan nomor tertentu ke aplikasi dan kita diminta memberikan angka ke website. Secara konsep tidak ada perbedaan dengan waktu (waktu diganti dengan bilangan random yang dihasilkan website).

Hardware Token

Ini seperti token software, tapi memiliki kelebihan karena tidak mudah menyalin nilai key-nya. Untuk token software, kita diminta memasukkan kode tertentu dalam proses setup, pada token hardware kode ini dimasukkan oleh pihak terkait (bank atau perusahaan). Di dalam device ini ada RTC (real time clock) atau istilah awamnya: ada jam-nya, supaya waktunya sinkron dengan server.

Jika ingin menyalin keynya maka token hardware perlu dibongkar sampai level chipnya (jadi lebih aman dibandingkan software). Sama dengan software token, hardware token juga tidak kebal MITM.

Chip berada dalam bulatan hitam resin epoksi menggunakan teknik Chip-on-board (COB)

Kelemahan token hardware adalah: repot karena tiap layanan perlu hardware yang berbeda. Untuk masalah ini, sebenarnya ada juga varian token ini yang memakai smart card, jadi sebelum memakai tokennya kita masukkan dulu kartu kita. Pemrosesan dilakukan di smart card. Walaupun lebih ringkas, cara ini tetap repot karena butuh banyak kartu untuk tiap website.

U2F (Universal 2nd Factor)

Ini juga merupakan hardware token, tapi terhubung ke komputer atau ponsel. Koneksi yang bisa dipakai adala: USB, BLE (bluetooth low energy) dan NFC. Kata kuncinya di sini adalah terhubung dengan komputer/ponsel sehingga langkah verifikasi bisa dilakukan otomatis. Ini berbeda dengan token lain di mana harus ada manusia yang memasukkan sesuatu ke komputer.

Dari sisi user, penggunaan tokennya begini: di sebuah website kita perlu mendaftarkan token kita, caranya dengan mencolokkan device ke PC (atau mentap ke ponsel jika memakai NFC) dan menekan tombol di devicenya. Ketika akan login, kita juga diminta melakukan hal yang sama (colok lalu tekan tombol di device).

Di balik layar ada proses challenge response memakai ECC (Elliptic Curve Cryptography). Spesifikasi U2F ini terbuka, bisa didownload di website FIDO Alliance. Saya sendiri sudah pernah mengimplementasikan ini bertahun-tahun yang lalu. Implementasinya sudah dipakai di hardware yang sudah diproduksi.

MITM sangat sulit dilakukan karena browser akan memeriksa certificate SSL dari server, dan browser (bukan user) akan memastikan hal tersebut benar, jadi tidak mungkin website kilkbca.com meminta autentikasi untuk website asli klikbca.com.

Saat ini U2F ini cukup aman, dan bahkan Google baru-baru ini akan mulai menjual security key U2F. Seperti semua benda lain, kelemahan U2F ini adalah jika  hardware dicuri. Kemungkinan kelemahan lain adalah JIKA ada kelemahan pada browser sehingga bisa dipaksa untuk membypass autentikasi.

Penutup

Demikian perkenalan singkat two factor authentication. Two (atau multi) factor authentication ini sebaiknya ditambahkan pada website untuk menambah keamanan (tidak sulit menambahkan ini). Secara umum 2FA juga bisa digunakan untuk hal lain, misalnya untuk mengamankan akses SSH ke server kita.

 

Berhentilah Jadi Script Kiddie

Saya sering mau ketawa tapi juga merasa sedih, kasihan dan juga marah kalau liat ada posting tentang ajakan DDOS sebuah situs. Ketawa karena mereka berusaha men-DDOS situs yang dilindungi Cloudflare (atau cloud firewall lain) dan ketawa karena mereka memakai tools-tools tua yang parah. Kalau memilih target jangan malu-maluin lah, ibaratnya mau menyerang klub malam maksiat tapi yang diserang malah papan iklan klub malam tersebut di pinggir jalan.

Copy paste ajakan semacam ini sangat banyak yang beredar di Facebook/WA/Telegram

Di posting ajakan mereka biasanya juga diberikan daftar tool yang bisa dipakai. Saya lihat ada batch file yang sekedar melakukan ping, dan ada salah satu tool DDOS Android bahkan mengirimkan IMEI dan Device ID ke server yang diserang, jadi memudahkan untuk dilacak balik. Mereka ini benar-benar script kiddies yang memakai skrip yang bahkan tidak mereka mengerti.  Sebagai catatan “kiddie” di sini bukan menunjukkan umur, tapi skill yang seperti anak-anak.

Sebagai catatan ada banyak teknik DDOS yang menarik dan ada yang spesifik satu OS/server/aplikasi tertentu. Di tulisan ini DDOS yang saya maksud di sini hanya DDOS generik dengan ping (ICMP), UDP, dan request flooding. Lanjutkan membaca “Berhentilah Jadi Script Kiddie”