Ponsel Anda disadap? (bagian 2)

Setelah Anda membaca bagian pertama posting ini, pertanyaan yang kemungkinan muncul adalah: jadi bagaimana saya tahu kalau ponsel saya sudah terinstall program untuk menyadap? Jawaban sederhananya: jika yang menyadap level biasa, maka penyadapan akan sangat mudah dideteksi. Jika yang menyadap level negara, akan sangat sulit dideteksi.

Sebelum mengecek Ponsel

Sebelum mencurigai ponsel Anda, cek dulu semua account online Anda. Cek sejarah login Anda untuk melihat ada yang mencurigakan atau tidak.  Seperti telah dibahas sebelumnya: cara seseorang bisa masuk ke HP Anda ada banyak, jadi meskipun Anda bisa membersihkan HP, kalau cara masuknya masih terbuka ya masih bisa kena lagi.

Cek juga desktop/laptop Anda. Tidak ada satu resep khusus untuk melakukan ini, jika ragu: backup data, lalu reinstall semuanya, dan update semua software yang Anda pakai ke versi terbaru. Hati-hati dengan software bajakan, meski pembajak awal mungkin jujur dan tidak memberikan backdoor, orang lain mungkin menambahkan backdoor.

Cek juga apakah kecurigaan Anda bisa dijelaskan dari sudut pandang lain. Misalnya apakah informasi yang bocor hanya yang diterima orang tertentu saja. Mungkin orang tersebut dihack, mungkin pula dia yang membocorkan informasinya.

Pemeriksaan Ponsel

Ada beberapa titik di HP yang bisa diperiksa. Pertama coba perhatikan semua notifikasi yang muncul. Lihatlah jika ada yang tidak wajar atau mencurigakan. Dalam kasus di bawah ini saya memang sengaja menginstall certificate supaya bisa melakukan monitoring koneksi jaringan. Informasi mengenai WhatsApp juga wajar karena saya sedang mengakses WhatsApp via web.

Salah satu metode yang dipakai untuk memata-matai adalah dengan tidak menginstall aplikasi baru, tapi mengganti aplikasi Anda dengan versi lain yang sudah dimodifikasi. Versi yang sudah dimodifikasi ini bisa mengirimkan pesan ke orang lain. Ini yang dilakukan dengan software dari Hacking Team yang dijual ke berbagai pemerintah.

Sebagai catatan: beberapa orang memang dengan sengaja memodifikasi WhatsAppnya untuk mengaktifkan fitur tertentu, misalnya agar meskipun kita sudah membaca pesan seseorang, tapi tidak diketahui oleh orang lain sampai kita tekan sebuah tombol (tujuannya supaya tidak dikira malas, bisa beralasan belum baca message).

Aplikasi yang sudah dimodifikasi ini tentunya tidak bisa diupdate dari Google Play, jadi cara pertama adalah: coba install lagi aplikasi Whats App dari Google Play. Jika ada WhatsApp “palsu”, maka akan muncul opsi “Install” (dianggap belum terinstall).

Berikutnya lagi kemungkinan HP Anda sudah diroot. HP yang sudah diroot bisa dimodifikasi sehingga aplikasi tertentu bisa membaca aplikasi lain.  Tergantung versi Android yang Anda pakai (dan dari vendor mana), proses ini bisa memakan waktu beberapa menit saja. Jika Anda adalah orang awam yang merasa tidak pernah me-root HP Anda, maka Anda perlu mengecek apakah HP Anda sudah diroot oleh orang lain. Sebagai catatan tambahan: HP China yang tidak bermerk kadang sudah diroot “dari pabriknya”.

Sebagai catatan tambahan: “membaca aplikasi lain” ini bisa sekedar screen capture saja. Saya pernah membuat aplikasi Blackberry dan aplikasi Dekstop sehingga kita bisa mengendalikan Blackberry dari PC. Prinsip program tersebut hanyalah melakukan screen capture secara kontinyu dan mengirimkan ke PC (via USB/Bluetooth/WIFI), dan tentu saja ini bisa dimodifikasi untuk mengirim ke komputer lain jika dideteksi aplikasi yang aktif adalah aplikasi tertentu. Program serupa bisa dibuat untuk sistem operasi lain, tapi di OS lain  butuh akses root.

Anda bisa memakai aplikasi Root Checker untuk mengecek apakah HP Anda sudah diroot. Alternatif lain adalah menginstall aplikasi bangking seperti Sakuku, tidak perlu sampai mendaftar, ketika dijalankan aplikasi ini langsung mengecek apakah HP Anda diroot atau tidak dan tidak mau jalan jika diroot.

Jika Anda merasa tidak pernah me-root tapi sudah ter-root, maka cara terbaik adalah mereset HP Anda ke factory setting. Lebih bagus lagi kalau diinstall ulang dengan stock firmware dari web produsennya.

Keberadaan root juga bisa disembunyikan dengan aplikasi tertentu atau dengan modul XPosed. Dengan ini hampir semua aplikasi tidak bisa mendeteksi keberadaan root dan keberadaan program penyadap. Saat ini Google memiliki fitur Safety Net untuk bisa mengetahui apakah HP dimodifikasi atau tidak. Salah satu caranya adalah memakai SafetyNet Playground. Sayangnya ini hanya berlaku untuk ponsel bermerk, bukan ponsel murah dari China (akan gagal Safety Net karena dianggap sudah dimodifikasi).

Apakah setelah dicek dengan Safety Net sudah pasti aman? belum tentu juga, dalam bahasa orang awam: di Android versi tertentu ada cara supaya aplikasi bisa mengakses aplikasi lain. Dalam bahasa teknis: mungkin saja sebuah aplikasi melakukan kernel exploit temporer, dan menghapus lagi jejaknya setelah itu. Ada juga software bernama Magisk yang biasanya bisa membypass SafetyNet (tapi biasanya tiap beberapa bulan diupdate oleh Google).

Jika Anda adalah orang security, maka tentunya pernah mendengar mengenai rootkit level kernel di berbagai sistem operasi. Android pada dasarnya memakai kernel Linux, jadi tidak sulit membuat rootkit yang sulit dideteksi.

Selain ponselnya sendiri, pengecekan berikutnya yang bisa dilakukan adalah pengecekan paket jaringan. Cara ini lebih sulit karena mewajibkan kita tahu mengenai koneksi jaringan yang umum dan tidak umum oleh aplikasi. Inipun tidak selalu berhasil, bisa saja program penyadapnya mengirimkan hasil sadapan jam 3 pagi ketika semua orang tertidur.

Penutup

Secara umum cukup sulit bagi orang awam untuk mendeteksi penyadapan di ponselnya. Kemungkinan yang dirasakan adalah efeknya (misalnya akses jaringan jadi lambat, atau secara umum HP menjadi lambat). Pengecekan yang proper hanya bisa dilakukan ahlinya.

JIka Anda cukup mahir, cara termudah yang bisa dilakukan jika mencurigai ada penyadapan adalah: backup semua data, reset/reinstall firmware ponsel, reinstall PC Anda. Ganti semua password Anda.

Dan yang paling penting adalah: Jika Anda tidak ingin ada informasi yang penting tersebar, jangan gunakan ponsel untuk mengkomunikasikan hal tersebut. Jangan simpan foto atau video yang tidak boleh tersebar.

Ponsel Anda disadap? (bagian 1)

Beberapa waktu yang lalu ada yang mengirim pesan di Facebook: “Mas, saya merasa ada yang mengintip pesan WhatsApp saya”. Pertanyaan dilanjutkan dengan bagaimana caranya mengetahui apakah memang benar disadap, bagimana cara membersihkannya, dan juga bagaimana orang tersebut bisa masuk?

Ada banyak alasan kenapa seseorang mungkin mau menyadap Anda. Mungkin Anda orang penting dan pemerintah mau menyadap Anda. Mungkin ada rekan atau lawan bisnis yang ingin tahu soal bisnis Anda. Mungkin Anda berteman dengan orang penting yang terlalu sulit didekati untuk disadap. Mungkin Anda punya mantan pacar yang masih belum bisa melupakan Anda.

Secara umum, seseorang bisa saja tidak bertujuan menyadap. Bisa saja seseorang masuk ke HP Anda untuk  sekedar merampok: mengakses rekening bank Anda atau informasi kartu kredit Anda, atau bahkan sekedar mengambil pulsa Anda. Bahkan kadang sekedar agar uang dari iklan yang tampil di berbagai aplikasi masuk ke rekening penyerang.

Serangan Massal vs Serangan Spesifik

Tidak selamanya kita menjadi korban karena kita ditargetkan spesifik. Sering kali ada serangan massal (menebar jala), dengan harapan dapat korban empuk. Ketika ada sebuah serangan massal dan penyerang menyadari Anda punya akses penting, mungkin mereka akan memfokuskan diri pada Anda.

Ada contoh yang baru saja terjadi. Ada software open source OS X bernama Handbrake yang servernya dihack dan softwarenya disisipi malware selama 3 hari. Siapapun yang mendownload dan menginstall dalam rentang 3 hari tersebut kena malware. Sebenarnya sekarang ini software ini sudah cukup jarang dipakai karena selain untuk konversi video fungsi utamanya dulu adalah me-rip (menyalin film dari) DVD.

Ada satu developer OS X dari perusahaan Panic.com kebetulan saja sedang mengupdate software Handbrake di dalam rentang waktu 3 hari tersebut. Karena orang itu merupakan developer maka dia memiliki akses source code perusahaan, dan hasilnya: source code produk perusahaan mereka dicuri.

OS X merupakan sistem operasi yang relatif aman, jumlah penggunanya tidak sebanyak Windows, dan jumlah malware yang ada juga tidak sebanyak Windows, tapi karena sedang apes ya tetap saja bisa kena. Pembuat malwarenya tentunya tidak bisa memprediksi siapa yang akan mendownload softwarenya, tapi kebetulan saja ada korban menarik yang ketemu.

Tiap hari ribuan malware didistribusikan dengan berbagai cara, dengan email, dengan link web, dsb. Para pembuat malware ini tidak berfokus pada orang tertentu. Jika kebetulan pembuat malwarenya mengamati bahwa Anda adalah target penting (atau mungkin berhubungan dengan orang penting), maka dia bisa meneruskan manual proses penyerangan.

Serangan spesifik juga bisa dilakukan, tingkat kesulitannya tergantung banyak hal. Tapi biasanya yang pertama dilakukan adalah mengenal target dulu. Kemudian titik lemahnya bisa dicari. Yang dimaksud titik lemah adalah titik manapun untuk bisa menguping: bisa HP-nya langsung, bisa account onlinenya, bisa Laptopnya, bisa routernya, dsb.

Keamanan Sistem Operasi Ponsel

Pertama perlu dicatat bahwa keamanan ponsel berbeda-beda tergantung sistem operasi dan versinya, saat ini yang paling aman adalah iPhone (sistem operasinya iOS), dan bisa dibilang yang paling tidak aman adalah Android (kebanyakan model selain yang terbaru).

Ada trade-0ff antara kenyamanan dan keamanan. Di Android hampir semua aplikasi bisa mengakses apapun, bahkan aplikasi apapun bisa diganti dengan aplikasi lain. Contoh sederhana: SMS bisa ditangani oleh program tertentu, di iOS tidak bisa. Dengan adanya akses SMS, di Android bisa ada program auto forward SMS ke email atau ke SMS lain, sementara hal ini tidak bisa di iOS.

iOS bisa dibuat jadi lebih nyaman dengan jailbreak, tapi ini mengurangi keamanannya. Dengan jailbreak, berbagai software yang tidak diijinkan Apple bisa diinstall.

Kenyamanan Android ditukar dengan keamanannya: program yang semestinya memforward SMS ke email Anda bisa saja ternyata jahat dan sekaligus memforward SMS bank Anda ke email penjahat. Di sini pengguna Android perlu belajar percaya pada pembuat aplikasi. Jika Aplikasi didapat dari Play Store resmi Google, maka kemungkinan besar aplikasi itu aman.

Akses SMS hanyalah salah satu contoh saja, masih banyak contoh lain yang dibolehkan di Android tapi tidak di iOS. Lebih mudah membuat dan menginstall aplikasi ke sebuah handset Android, dalam hitungan menit saya bisa menginstall aplikasi buatan saya ke HP orang lain, cukup dengan mengganti sedikit setting. Untuk iOS, agar bisa menginstall aplikasi kita perlu mendaftar jadi developer di situs Apple, dan jika kita tidak membayar 99 USD/tahun, aplikasi yang diinstall di device akan expired dalam seminggu.

Keamanan Aplikasi Messaging

Berbagai macam aplikasi messaging (misalnya WhatsApp, BBM, Line, Telegram) sudah sangat aman, sehingga data yang ada di perjalanan tidak bisa disadap, tapi data yang ada di ponsel bisa disadap. Jika Anda tidak percaya bahwa ada bentuk enkripsi yang tidak bisa dibuka, Anda bisa membaca artikel saya tentang ubreakable encryption.

Sekali lagi: meskipun ISP atau orang lain tidak bisa menyadap data di perjalanan, tapi data yang ada di salah satu ujung bisa disadap. Ibaratnya jika ada orang mengintip di belakang Anda waktu Anda mengetik pesan, maka orang itu akan bisa membaca pesan Anda, tidak peduli dikirim dengan metode apapun.

Yang di belakang Anda bisa ngintip

Aplikasi messaging juga perlu menyimpan data di ponsel Anda, menyimpan semua pesan masuk dan keluar. Ini ibaratnya seperti surat datang ke rumah Anda, jika surat ini ingin bisa dibaca berulang, maka perlu disimpan.

Beberapa aplikasi messaging, seperti Line menyimpan pesan di database dalam bentuk plaintext. Ini lebih mudah dibaca. Ini seperti menaruh surat di atas meja, sedangkah yang lain seperti WhatsApp dan BBM, pesan yang tersimpan di ponsel/sd card ini juga dienkripsi. Perlu dicatat bahwa ini hanya mempersulit saja, isi pesan tetap bisa dibuka, karena jika tidak bisa dibuka maka tidak mungkin bisa ditampilkan di ponsel kita. Ibaratnya kita hanya memasukkan pesan ke dalam lemari besi. Bisa dibuka, tapi kuncinya masih ada di dalam rumah.

Aplikasi lain di ponsel Anda, dalam situasi tertentu bisa mengintip seperti seseorang di belakang Anda. Aplikasi-aplikasi di ponsel itu seperti orang yang berada di “rumah” yang sama. Jika aplikasi “nakal”, maka ada kemungkinan bisa mengintip data aplikasi lain. Sekarang ini di sistem operasi yang baru sudah lebih sulit untuk bisa mengakses data aplikasi lain, tapi tetap saja terkadang masih ada celah.

Beberapa aplikasi messaging, seperti WhatsApp, Telegram dan BBM memungkinkan kita mengakses pesan di Desktop/Web. Untuk memonitor orang awam, hal ini bisa dipakai. Pinjam HP orang tersebut sebentar saja, aktifkan chat via web, dan semua pesan bisa dilihat online. Metode ini tidak akan bekerja untuk orang yang aware dengan security. WhatsApp akan menampilkan bahwa koneksi web aktif dan notifikasi ini tidak bisa dihilangkan dengan swipe.

 

Notifikasi Web WhatsApp

Line hanya menampilkan pesan sekali dan bisa diswipe, jadi kalau seseorang baru saja meminjam HP dan login ke Line di PC, tidak akan terlihat dengan mudah.

Saat ini untuk Line kita harus pergi ke Settings, Account, Devices. Parahnya lagi jika seseorang sudah logout, tapi sempat sebelumnya login, kita tidak bisa mengeceknya (tidak ada historynya).

 

Informasi device yang login di Linux

Sebagai catatan tambahan: ada banyak aplikasi baik mobile app maupun web online untuk membuat chat palsu, baik WhatsApp ataupun yang lain. Bagaimana membuktikan keasliannya? hanya dengan akses ponsel orang tersebut, dan melakukan proses forensik yang benar. Benar di sini artinya terdokumentasi dengan jelas semua proses akuisisi datanya, supaya yakin tidak ada tampering (modifikasi) terhadap data yang diselidiki.

Screenshot posting Facebook/instagram atau apapun juga gampang dipalsukan.  Saya kadang tertawa melihat banyak kubu yang yang share bahwa chat WA gampang dipalsukan, tapi di posting berikutnya memposting fitnah kepada seseorang berdasarkan screenshot Facebook yang mungkin juga palsu.

Keamanan Account Online

Rasanya tidak ada orang yang memakai smartphone tanpa account online, baik itu email, Facebook, Instagram, maupun layanan lainnya. Sangat penting untuk mengamankan account-acount tersebut.

Contoh: Jika seseorang memiliki akses ke account facebook Anda, maka orang itu bisa melihat semua foto dan pesan yang pernah Anda kirim di Facebook messenger tanpa perlu akses ke HP Anda. Jika seseorang memiliki akses email, maka orang tersebut bisa mereset banyak password (misalnya password Facebook).

Contoh lain kejadian besar yang pernah terjadi adalah bocornya foto-foto artis dari iCloud dari berbagai artis terkenal. Jika mungkin aktifkan Two Factor Authentication, agar ketika login dibutuhkan token tambahan.

Sebagai catatan, berbagai macam hack yang dilakukan berikutnya biasanya tujuan utamanya adalah: menginstall aplikasi di ponsel Anda yang menjadi “mata-mata”. Sebuah ponsel adalah komputer mini.

If someone can persuade you to run his program on your computer, it’s not your computer anymore.

David Salomon (Elements of Computer Security)

Keamanan Komputer Desktop/Laptop

Bagian ini ditujukan bagi mereka yang menghubungkan komputernya ke ponsel, untuk backup/sinkronisasi, atau untuk pembuatan aplikasi (khusus untuk developer). Bayangkan saja kejadian seperti kasus Panic.com yang saya sebutkan di atas.

Jika seseorang mengambil alih komputer Anda dengan malware/RAT (Remote Access Trojan), dan Anda menghubungkan ponsel ke komputer, maka data dari ponsel biasanya bisa diambil. Apalagi jika ternyata datanya memang sudah dibackup di komputer Anda, maka tinggal diambil tanpa repot masuk ke ponsel Anda.

Pada kebanyakan komputer orang awam yang saya cek, biasanya saya menemukan malware jinak. Biasanya malware tersebut hanya mengganti search engine yang default, menampilkan popup, dsb, malware yang menghasilkan uang recehan dari iklan. Kalau software jinak bisa dengan mudah masuk, tentunya yang ganas pun kemungkinan masuknya cukup besar.

Jika punya akses fisik ke komputer yang tidak dipassword, maka serangannya cukup mudah, cukup install sebuah aplikasi dari USB atau dari Internet.

Keamanan Koneksi Data

Meskipun secara umum program messaging saat ini sudah aman terhadap penyadapan online, tapi keamanan koneksi data tetap perlu diperhatikan, karena bisa menjadi batu loncatan untuk serangan lain. Perlu dicatat bahwa di ponsel ada puluhan aplikasi, tidak semuanya memakai HTTPS untuk melakukan koneksi data. Jika salah satu aplikasi ini bisa dibajak, maka bisa menjadi batu loncatan masuk ke ponsel secara umum.

Jika Anda melakukan koneksi via WIFI, seseorang bisa membuat access point dengan nama dan password yang sama, dan kebanyakan ponsel akan otomatis melakukan koneksi ke access point tersebut.

Banyak modem ADSL atau fiber di Indonesia yang tidak aman, seseorang bisa gampang masuk. Bahkan baru-baru ini modem-modem di Indonesia pernah dijadikan bagian dari botnet. Di rumah biasanya modem ini terhubung ke komputer, atau ke ponsel melalui WIFI. Biasanya ada beberapa device (komputer/laptop/game console) yang terhubung.

Kadang kalau saya sedang iseng chat dengan seseorang, saya memberikan URL ke server saya yang akan diklik orang tersebut. Dari server saya bisa melihat alamat IP orang tersebut. Dari alamat IP kadang saya bisa masuk ke dalam modemnya.

Dari modem saya bisa melakukan banyak hal, tergantung kecanggihan modemnya. Beberapa modem berbasis Linux sudah sangat canggih, saya bisa langsung melakukan serangan ke rumah orang tersebut dengan sangat mudah.

Beberapa modem fiturnya sangat sederhana, tapi inipun sudah cukup untuk masuk. Contohnya yang bisa dilakukan di modem jenis murahan adalah mengganti alamat server DNS (Domain Name System) di modem.

Server DNS adalah server yang menerjemahkan nama menjadi alamat. Jika saya ganti DNS menjadi milik saya, maka  saya bisa melihat domain situs mana yang dikunjungi orang tersebut (dan biasanya jadi tahu aplikasi mana yang dipakai orang tersebut).

Jika saya tahu bahwa salah satu domain yang dikunjungi ternyata tidak memakai HTTPS, saya bisa mengarahkan domain tersebut ke server saya, yang memforward requestnya ke server asli. Hasilnya: saya bisa melihat koneksi yang dilakukan, saya bisa tahu sistem operasi apa yang dipakai di ponsel atau komputer di rumah tersebut (baik dari User-Agent saja, atau dari javascript yang disisipkan di web). Jika saya sudah yakin akan sebuah target (misalnya ada PC Windows), saya bisa mengeset firewall di modem untuk mengijinkan koneksi dari luar masuk ke PC yang spesifik.

Semua yang saya bicarakan di atas adalah sesuatu yang sifatnya real dan bisa dilakukan relatif mudah (bahkan kedua adik saya mengganti modem mereka setelah saya berhasil masuk).

Sebagai catatan tambahan: modem 4G juga banyak yang memakai Linux. Jika seseorang cukup punya niat, maka modem 4G juga bisa ditukar (atau diflash ulang) dengan firmware yang berisi backdoor. Beberapa investigasi awal sudah dilakukan teman saya y3dips terhadap modem Bolt.

Keamanan benda lain

Saya tidak bisa mengcover semua hal yang mungkin bisa menjadi jalan masuk untuk penyerang. Ada banyak teknologi baru terus bermunculan, dan ada risiko baru. Contoh: banyak smartwatch yang bisa dijadikan unlock method, artinya ponsel tidak akan meminta passcode atau PIN jika smartwatch itu di dekat ponsel.

Meskipun itu sangat praktis, tapi juga jadi jalan masuk baru. Jika Anda sedang mandi dan meninggalkan ponsel dan smartwatch Anda di luar, maka seseorang mudah sekali mengakses ponsel tanpa perlu tahu PIN/Password.

Di masa lalu, charger USB juga dengan mudah bisa mencuri data kita karena tidak diperlukan otorisasi dari pengguna. Sekarang HP sudah akan menanyakan: Allow access to device data? atau semacam itu jika HP dihubungkan ke komputer  atau device lain yang berusaha mengakses data. Tentunya walaupun ada pengamanan ekstra ini, pengguna awam yang masih saja menekan: Yes, akan tetap kena.

Penutup

Posting bagian ini sekedar menunjukkan dua hal. Pertama Anda tidak harus jadi orang penting atau terkenal untuk disadap, dan kedua: ada banyak cara untuk masuk ke ponsel seseorang. Cara-cara ini ada yang sangat mudah, dan ada juga yang cukup rumit dan butuh waktu.

Jika seseorang memiliki niat dan dana untuk menyadap Anda, kemungkinan besar mereka akan bisa melakukannya.

Update Singkat Pinebook

Setelah awal yang agak mengecewakan,  para hacker/volunteer telah membuat beberapa perbaikan yang membuat Pinebook cukup usable. Saya sempat mencoba mencari dan memperbaiki sendiri beberapa masalah yang ada, tapi sekarang sudah ada yang mempersiapkan image yang siap didownload untuk mengupgrade OS standarnya. Posting ini merupakan update dari posting saya sebelumnya.

Salah satu perbedaan Pinebook dibandingkan dengan laptop lain adalah keterbukaannya. Port serial disediakan melalui headphone jack, bisa digunakan untuk debugging. Dengan serial port ini kita bisa melihat output teks ketika booting. Saya sudah mencoba ini dan cukup praktis.

Speaker sekarang berfungsi dengan normal karena profil Alsa yang benar sudah diinstall default. WIFI sudah stabil, ternyata sebelumnya ada masalah di power management yang membuat chipnya “tidur” dan koneksinya putus. Chromium (versi opensource Chrome) bisa diinstall walau butuh edit konfigurasi tertentu. Jika laptop ditutup sekarang otomatis sleep, ternyata masalahnya hanya modul kernel yang tidak diload secara default.

Sampai saat ini Desktop secara keseluruhan belum accelerated. Artinya game-game tidak bisa berjalan cepat, video youtube tidak bisa diputar lancar. Khusus untuk film, kita bisa memakai smplayer/mplayer yang bisa menjalankan video dengan akselerasi (walau tidak selalu bisa lancar). Sekarang disertakan juga program smtube untuk browsing youtube, walau tidak selalu lancar juga.

Untuk mengupgrade firmware di PineBook, kita cuma perlu menuliskan image ke sdcard (bisa memakai program Etcher atau dd manual). Masukkan sdcard, restart, dan otomatis proses update akan dilakukan. Setelah selesai, keluarkan sdcard, restart lagi.

Proses update

Saya sekalian mencoba Android Nougat (Android 7) untuk PineBook. Image Android saat ini dirancang untuk diinstall ke SD Card, artinya kita bisa dual boot Android dan Ubuntu. Jika SD Card berisi Android dimasukkan, maka kita akan boot ke Android, jika SD Card dikeluarkan ketika boot, maka kita akan masuk Ubuntu (setelah proses booting dimulai, kita bisa memasukkan lagi cardnya dan mengakses data di card-nya).

Masalah video lebih bagus di Android, kita bahkan bisa menjalankan Kodi dan beberapa film HD bisa diputar. Aplikasi Google seperti GMail, Chrome, dan Play Store sudah diinstall. Sebagian aplikasi seperti Netflix tidak bisa diinstall, dan meskipun ada banyak aplikasi bisa diinstall dari Play Store, tapi tidak semua usable. Sebagian terlalu lambat, sebagian game “memaksa” mode portrait sehingga tidak nyaman. Beberapa aplikasi yang saya coba: Kindle, Google Docs, Microsoft Word (lambat), Cut The Rope. Program remote desktop dari Micorosft juga bisa berjalan, jadi Pinebook bisa digunakan untuk mengakses komputer yang lebih powerful.

Mode split window di Android Nougat memungkinkan kita membuka dua aplikasi sekaligus dan tampil berdampingan. Sampai saat ini saya tetap merasa keyboard versi 14″ ini kurang enak, sedangkan saya lihat banyak yang memuji keyboard versi 11.6 inch.

Demikian update singkatnya mengenai Pinebook. Meski waktu launch softwarenya kurang bagus, saat ini Pinebook sudah usable. Saat ini banyak sekali yang ingin memesan Pinebook sehingga orang yang ingin memesan harus “antri” cukup lama. Jika ada kemajuan yang signifikan dalam software/hardware Pinebook, saya akan membuat posting baru lagi.

Unbreakable Encryption

“Emangnya nggak bisa dibongkar virusnya?”. Masih terkait dengan ransomware. Banyak orang yang sulit menerima bahwa dalam kasus tertentu tidak ada cara membongkar file yang terenkripsi tanpa mengetahui keynya walaupun kita bisa membongkar algoritmanya sampai sangat detail.

Konsep yang sepertinya sulit diterima oleh orang awam yang tidak memiliki dasar dalam kriptografi: bahwa ada kriptografi yang tidak bisa dijebol meskipun kita tahu dengan tepat apa algoritmanya. Bahwa satu-satunya cara menjebol adalah dengan mengetahui kunci-nya. Dan bahwa kadang satu-satunya cara mencari keynya adalah dengan mencoba semua kemungkinan yang ada yang jumlahnya sangat besar.

Enkripsi Simetrik

Mari kita mulai dengan satu konsep kriptografi yang sederhana: one time pad. Ini adalah bentuk enkripsi sangat sederhana, tapi tidak mungkin bisa dipecahkan tanpa mengetahui key-nya. Dalam one time pad, keynya harus sama panjangnya atau lebih panjang dari pesan yang akan kita enkrip, dan keynya hanya boleh dipakai sekali.

Saya contohkan sederhana sekali: anggap huruf A=1, B=2, C=3, … , Z=26 dan 0 adalah spasi.  Sekarang jika saya punya pesan rahasia ini:XYZABCD. Apakah isi pesannya? Kuncinya adalah serangkaian bilangan, bisa negatif ataupun positif.

Jika kuncinya adalah: 1 -10 -18 0 12 2 15, maka pesannya ternyata adalah: YOHANES. Jika kuncinya adalah: -10 -4 -19 17 13 5 11, maka isi pesannya adalah: NUGROHO. Jika keynya adalah: -10 -4 -19 17 -1 5 -3, maka pesannya adalah NUGRAHA. Jika keynya dalah: -22 -20 -12 6 9 2 8 maka isinya adalah: BENGKEL.

Dalam kasus one time pad, meskipun saya sudah memberitahu BAGAIMANA (algoritma) enkripsinya, dan apa CIPHERTEXT-nya (teks yang sudah dienkripsi), maka Anda bisa mencoba-coba berbagai key yang bisa menghasilkan teks apapun (bisa saja kurang dari 7 huruf, dan sisanya spasi).

Kelemahan dari algoritma di atas adalah ini: jika saya ingin mengirim pesan ke seseorang, maka orang tersebut harus punya key yang sama. Sebuah key cuma bisa dipakai SEKALI, jika lebih dari sekali, maka ada kemungkinan tidak aman. Biasanya di jaman dulu ini dilakukan dengan menggunakan buku berisi angka-angka, dan buku yang sama dimiliki oleh pengirim dan penerima. Pengirim dan penerima hanya perlu membuat janji: di hari ke N tahun ini, gunakan halaman ke N.

Bagaimana angka-angka di buku itu dihasilkan? dengan acak, misalnya melempar dadu. Tapi kadang buku seperti itu terlalu rumit. Kita bisa juga menggunakan kode, daripada memiliki buku khusus, kita bisa saja menggunakan buku lain sebagai kuncinya. Contohnya kita bisa menyebutkan: “Buku Hitchikers Guide To Galaxy, edisi pertama, mulai halaman ke-7, kata ke-8”.

Jika pemilihan bukunya cukup acak, dan jumlah bukunya sangat banyak, maka cara ini cukup  aman dari serangan manual (masih mungkin bisa dipecahkan dengan komputer jika diberikan semua teks dari semua buku). Saya hanya ingin menekankan bahwa dari sebuah teks singkat (judul buku, edisi, nomor halaman) kita bisa membuat pesan yang panjang dan hampir sama amannya dengan one time pad.

Tentunya ini tetap tidak seaman one time pad karena jumlah buku di dunia ini terbatas, bisa dicek satu persatu mencari yang mana yang membentuk kalimat yang masuk akal, sedangkan di one time pad, jika kita mengecek setiap bilangan, maka pesannya bisa menjadi apa saja (tidak jelas mana pesan yang benar).

Sekarang jika Anda diberi tahu ALGORITMA pertukaran pesan menggunakan judul buku, edisi dan nomor halaman. Anda juga diberitahu teks hasil enkripsinya (CIPHERTEXT), tapi tidak diberi tahu keynya (buku apa, edisi berapa, halaman berapa), maka Anda tetap tidak bisa membaca pesannya. Anda perlu mencoba-coba semua buku.

Bentuk enkripsi seperti yang saya sebutkan termasuk dalam kategori: enkripsi simetrik, artinya yang menerima dan mengirim pesan harus punya kunci yang sama. Enkripsi yang saya pakai juga hanya merupakan “substitusi”, artinya hanya mengganti satu teks dengan teks lain. Cara lain enkripsi adalah dengan permutasi, artinya menukar posisi teks dengan sebuah kunci tertentu. Dan tentunya kombinasi keduanya bisa dipakai agar aman.

Contoh permutasi sangat sederhana adalah seperti ini: tiap 4 karakter ABCD menjadi CDAB, jadi JONATHAN dipecah menjadi JONA dan THAN. JONA dipermutasi menjadi NAJO dan THAN menjadi ANTH dan gabungannya menjadi NAJOANTH.  Dengan key yang pendek, enkripsi dengan permutasi SAJA akan mudah dipecahkan, tapi permutasi DAN substitusi akan menambah kesulitan analisis.

Kriptografi simetrik modern memiliki kemiripan dengan penjelasan sebelumnya: key yang sepertinya kecil misalnya 16 byte (1 byte = 8 bit, 16 byte = 128 bit) bisa dipakai untuk mengenkripsi file sebesar apapun dengan substitusi dan permutasi. Ini bisa dianalogikan seperti memakai “judul buku, nomor halaman” menjadi sebuah “kunci” untuk pesan yang panjang.

Walaupun 16 byte itu sepertinya kecil (dibandingkan ukuran file yang dalam orde megabyte atau gigabyte), tapi untuk mencoba satu persatu kemungkinan 16 byte kita harus mencoba 340282366920938463463374607431768211456 (2 pangkat 128) kemungkinan. Jika ada satu trilyun (10 pangkat 12) komputer yang bisa melakukan satu trilyun operasi perdetik, dibutuhkan lebih dari sejuta tahun untuk mencoba semua kemungkinan 2 pangkat 128.

Meskipun kita diberitahu dengan tepat setiap langkah yang dilakukan, dan diberi tahu data hasil enkripsinya, kita tetap tidak bisa membaca pesan aslinya tanpa keynya. Salah satu contoh enkripsi modern adalah AES, ada penjelasan bagus algoritma AES di sini. Setiap langkah enkripsi dijelaskan dalam bentuk karikatur.

Perlu dicatat bahwa proses enkripsi simetrik AES, DES, dsb sebenarnya sangat sederhana dan bisa diimplementasikan dengan mudah, hanya butuh ketelitian saja. Tidak ada hal ajaib atau algoritma kompleks yang perlu diimplementasikan. Tapi karena rawan bug, mengimplementasikan sendiri hanya bagus untuk tujuan belajar, bukan untuk dipakai di produk.

Sekarang bisa dipahami bahwa titik kelemahan sebuah sistem enkripsi adalah pada KEY-nya. Jika kita memiliki sebuah program enkripsi SIMETRIK, maka yang mengenkripsi dan yang mendekripsi harus memiliki key yang sama.

Jika Anda pergi ke rumah seorang mata-mata yang mengirim pesan dengan enkripsi simetrik, maka kemungkinan besar Anda akan menemukan kunci enkripsi di rumah itu. Kunci itu bisa dipakai untuk membongkar pesan-pesan yang ada.

Enkripsi Asimetrik

Sekarang saya akan jelaskan enkripsi “ajaib” berikutnya: Asymmetric encryption. Tidak ada versi sederhana enkripsi ini yang tidak melibatkan matematika, jadi saya analogikan saja dengan benda. Anda tahu gembok seperti ini:

Gembok ini bisa dipakai untuk mengirimkan pesan rahasia, caranya: yang ingin mengirim pesan ke saya saya berikan gemboknya, silahkan masukkan pesan ke kotak, dan kunci dengan gembok itu. Sekarang pesan itu sudah terkunci dan hanya saya yang bisa membukanya dengan kunci yang saya pegang.

Tentunya gembok biasa memiliki banyak kelemahan, misalnya dari lubang kuncinya bisa dianalisis kuncinya seperti apa. Gembok juga bisa dipatahkan atau dirusak. Tapi coba bayangkan gembok yang sangat canggih, memakai finger print recognition, memakai logam yang tidak bisa dipecahkan, atau mungkin mengandung bomb jika berusaha dibuka paksa.

Di dalam kriptografi Asimetrik, gembok dan kunci hanyalah dua bilangan yang memiliki relasi tertentu. Gembok dan kuncinya bisa dihasilkan dari bilangan acak yang memenuhi syarat tertentu. Gembok di sini adalah kunci publik (public key) dan kuncinya adalah kunci privat (private key). Jika dilakukan operasi X=enkrip(Y, KUNCI PUBLIK) maka dekrip hanya bisa dilakukan dengan Y=dekrip(X, KUNCI PRIVAT).

Salah satu contoh kriptografi asimetrik adalah RSA (nama ini dari nama depan para penemunya:Ron Rivest, Adi Shamir, dan Leonard Adleman) contoh yang lain misalnya ECC (Elliptic Curve Cryptography).

Kriptografi RSA ini juga tidak sulit, dan bisa diimplementasikan di berbagai bahasa dengan relatif mudah. Khusus untuk bahasa low level seperti C, kesulitannya biasanya adalah mengimplementasikan penanganan big integer (bilangan bulat dengan digit sangat banyak), sedangkan di bahasa lain seperti Python, PHP, Ruby, Java, C#, library Big Integer ini sudah built in. RSA ini begitu sederhana sehingga jadi tugas kuliah di banyak tempat (ini contohnya).

Harap jangan terpaku pada analogi gembok saya di level implementasi, analogi itu tidak akan cocok dengan implementasi algoritmanya. Gembok bersifat fisik yang bisa dibongkar dengan mudah, tapi bilangan memiliki sifat yang lebih sulit dimengerti. Kesamaan dari analogi gembok adalah: kriptografi asimetrik memiliki “biaya” besar, dalam arti butuh komputasi besar (artinya waktu yang lama) untuk mengenkrip file besar.

Sekarang jika Anda menemukan gembok saja di rumah seorang agen rahasia, Anda tetap tidak bisa membuka pesan yang ada. Anda butuh anak kunci untuk membuka gembok yang ada. Inilah kelebihan kritografi asimetrik: kunci dan gembok terpisah. Kita bisa menyebar gembok ke ribuan orang dan hanya pemilik kunci yang bisa membukanya.

Sebagai informasi: sistem enkripsi asimetrik ini dipakai untuk berkirim email dengan aman menggunakan PGP.

Mencari Kunci

Ada banyak ransomware di dunia ini, dan banyak yang memiliki kelemahan. Ada yang memakai enkripsi simetrik, ada yang memakai enkripsi asimetrik tapi keynya tapi disimpan lokal.

Dalam kasus ransomware: enkripsi dilakukan lokal, jadi ada kunci yang sempat ada lokal. Beberapa ransomware cukup ceroboh sehingga keynya disimpan di memori, dan bisa diekstraksi dengan melakukan RAM dump. Beberapa ransomware cukup ceroboh, keynya dikirim via jaringan, sehingga jika kita melakukan sniffing terhadap paket jaringan, maka kita bisa mendapatkan keynya.

Enkripsi yang dilakukan malware tertentu sangat bagus, sehingga tidak mungkin bisa mendapatkan keynya. Contoh dari malware ini adalah Teslaware, tapi untungnya mereka “menyerah” dan memberikan master keynya ke publik.

Sekarang mari saya detailkan dengan contoh dari WannaCry. WannaCry memakai kombinasi enkripsi simetrik untuk mengenkrip file, dan asimetrik untuk mengenkrip key yang dipakai mengenkrip file.

Pertama sebuah kunci RSA X dihasilkan di komputer lokal. Kunci ini adalah gembok (public) dan anak kuncinya (private). Ingat: dalam RSA kunci dan gembok hanyalah bilangan acak yang memiliki sifat tertentu.

Malware ini juga punya sebuah kunci RSA Y, tapi hanya public keynya saja (gemboknya saja). Setelah kunci RSA X dihasilkan, private key X langsung dienkrip (anak kunci X dimasukkan kotak dan digembok dengan kunci Y) dan lenyap dari memori. Malware ini menyimpan private key X yang sudah dienkrip tadi ke dalam sebuah file (namanya 00000000.eky). Public key X (gembok X) disimpan di 00000000.pky.

Hanya sepersekian detik (beberapa microsecond) saja private key (anak kunci) X ini ada di memori, tidak akan sempat dicari dan disimpan siapapun. Kalau kita iseng menjalankan malware di dalam debugger, menjalankan malware langkah demi langkah, baru kita bisa menangkap key ini, tapi jika sudah lewat key ini sudah hilang dari memori. Kalaupun ditemukan untuk satu komputer, key ini tidak akan berfungsi untuk komputer lain. Private key X ini juga tidak pernah dikirim ke manapun dalam proses enkripsi.

Berikutnya malware akan mencari semua file untuk dienkrip dari semua drive. Untuk tiap file yang akan dienkripsi, malware akan menghasilkan bilangan acak yang dijadikan kunci simetris S untuk file tersebut. File dibaca, dienkrip, dituliskan ke namafile.wncry. Tiap file punya kunci S yang berbeda. Tentunya jika kunci S ini disimpan apa adanya, maka kita bisa membukanya dengan mudah.

Sebelum mulai mengenkripsi satu file, key S segera digembok dengan kunci X dan dituliskan di header file namafile.wncry. Lalu S yang belum digembok dipakai untuk mengenkrip isi file. Setelah selesai, key S dihapus dari memori.

Jika misalnya malware belum selesai mengenkripsi sebuah dan kita bisa mem-pause seluruh proses dan mengambil “snapshot” isi seluruh RAM, maka kita mungkin bisa mendapatkan key file yang sedang diproses. Tapi file-file sebelumnya semuanya memiliki key S yang berbeda, jadi percuma saja. Jika kita bisa menghentikan prosesnya berarti file tersebut belum dihapus dan bisa dikembalikan, jadi keynya tidak berguna.

Sekarang bagaimana file-file itu bisa dibuka nantinya? Pertama perlu dijelaskan bahwa malware ini punya mode “trial”, yang sebenarnya agak curang. Di atas saya sebutkan bahwa enkripsi dilakukan dengan key S lalu disimpan di file setelah S dienkripsi. Malware ini memilih secara acak beberapa file yang bisa didecrypt gratis, dengan cara membuat beberapa file dengan ekstensi .wncyr (cyr bukan cry) yang tidak dienkripsi S-nya.

Pembukaan file hanya bisa dilakukan jika kita bisa mendekrip private key X (anak kunci X) yang telah dienkrip dengan public key Y (digembok dengan Y). Dekripsi private key X ini hanya bisa dilakukan dengan private key Y (yang dipegang oleh pembuat ransomware).

Jika seseorang membayar, maka pembayar perlu mengirimkan private key X yang sudah dienkrip tadi, lalu mengembalikan X yang didekrip. Jadi pembuat malwarenya tidak mengirimi kita dengan private key Y (karena jika begitu, semua X yang dikunci bisa dibuka).

Jadi dengan asumsi bahwa pembuat malwarenya tidak membuat kesalahan dalam proses enkripsinya (sejauh ini sih belum ada yang menemukan kesalahan), maka enkripsi ini aman. Satu-satunya cara membuka adalah dengan memiliki private key Y yang dipegang pembuat malware ini.

Cara lain yang mungkin adalah jika seseorang berhasil menemukan cara prime factorization yang cepat atau jika komputer kuantum bisa dibuat yang bisa menangani bilangan sebesar ini (perkiraan saat ini: 20-30 tahun lagi). Sejauh ini yang berhasil dibongkar adalah RSA 768 bit (akhir 2009, butuh 2 tahun), sedangkan yang dipakai oleh malware ini 2048 bit.

Untuk Anda yang masih penasaran bagaimana enkripsinya bekerja, sudah ada yang membaca dengan teliti isi malwarenya dan mengekstrasi bagian enkripsinya saja, tanpa bagian eksploitasi, tanpa pesan malware, dsb.

Hasil ekstraksi ini kemudian dituliskan ke file dalam bahasa C dan bisa dicompile di Windows. Sejauh perbandingan saya dengan melakukan reverse engineering sendiri, yang ada di github ini akurat.

https://github.com/odzhan/wanafork

Anda bisa mengenkrip file Anda sendiri, satu per satu, bisa mencoba mempelajari cara kerja enkripsinya menggunakan debugger langkah demi langkah. Jadi Anda nggak perlu melihat assemblynya ataupun menyiapkan virtual machine.

Di dalam link tersebut juga ada contoh public dan private key X dan juga public key Y yang dipakai oleh malware. Perhatikan baik-baik ini CONTOH key X ini dari satu PC, key X ini beda untuk tiap PC dan di contoh ini pemilik repository tersebut rajin untuk mengeksekusi malware di dalam debugger dan menangkap private key  X untuk PC-nya dia. Seperti telah dijelaskan di atas, normalnya private key X ini tidak bisa kita dapatkan.

Salah satu alasan saya menyebarkan link ke repository tersebut adalah karena banyak orang yang masih insist bahwa “pasti ada caranya”, atau “Sayang saya udah lama nggak liat assembly”, atau “enkripsinya pasti ada kelemahannya”. Nah semua sudah disediakan di depan mata dan sudah saya deskripsikan dalam bahasa awam bahasa Indonesia (versi bahasa Inggris juga banyak beredar), jika memang ada yang bisa menemukan cara membuka filenya tanpa key dari pembuat malware, seluruh dunia akan sangat berterima kasih pada Anda.

Di masa depan saya yakin akan lebih banyak lagi Ransomware yang seperti ini, yang tidak bisa didekripsi tanpa “master key” dari pembuatnya. Jadi bukan kesalahan pihak reverse engineer yang “kurang bisa membaca kode”, tapi memang kodenya sudah bagus. Andaikan diberikan source code malware yang sempurna lengkap dengan komentar sekalipun, tetap saja tidak akan ada yang bisa membongkar tanpa keynya.

Untuk Anda yang belum membaca posting sebelumnya: kemungkinan recovery yang masih mungkin adalah melalui program recovery yang sejenis melakukan operasi “undelete” terhadap free space. Windows juga memiliki sistem backup otomatis, tapi ini pun akan dihapus malware. Dalam kasus sangat jarang, jika kebetulan ransomware gagal menghapus volume shadow copy, maka ada kemungkinan file bisa dikembalikan. Jadi secara umum, recovery yang ada tidak melakukan dekripsi, dan tidak semua file bisa kembali.

Update 18 Mei 2017

Seseorang telah menemukan solusi untuk Windows XP (saja) yang belum pernah direstart sejak kena infeksi.

WannaCry memakai fungsi-fungsi kriptografi yang ada di OS Windows. Khusus untuk Windows XP, ada bug di fungsi milik Microsoft. Teorinya kode program ransomware ini sudah benar, menghapus key dengan memanggil CryptDestroyKey/CryptReleaseContext, tapi di Windows XP:

CryptDestroyKey and CryptReleaseContext does not erase the prime numbers from memory before freeing the associated memory.

Dalam kasus jika: WannaCry mengenkrip Windows XP DAN
Komputer tersebut belum pernah direstart sejak kena infeksi, Maka ada kemungkinan kunci private untuk komputer itu bisa didapatkan untuk mendekrip file di komputer tersebut (kunci ini tidak bisa dipakai di komputer lain). Jika komputer sudah direstart/dimatikan sejak infeksi ya tidak bisa.

https://github.com/aguinet/wannakey

Update: 19 Mei 2017 bug tersebut ternyata berlaku juga untuk  Windows 7,Vista, Server 2003 & 2008 yang belum pernah direstart sejak kena infeksi.

https://github.com/gentilkiwi/wanakiwi

Ransomware WannaCry

Posting ini sekedar klarifikasi untuk berbagai misinformasi mengenai ransomware, khususnya WannaCry/WannaCrypt yang baru saja beredar. Sejujurnya saya malas menuliskan ini, tapi nggak tahan juga melihat banyak informasi salah yang beredar. Sekalian juga saya bahas Ransomware secara umum baik penyebaran maupun penanganannya. Posting ini akan saya update jika ada sesuatu yang baru.

Ransomware adalah jenis malware (software jahat) yang mengenkripsi data milik korban lalu meminta tebusan uang (biasanya melalui bitcoin) agar file korban bisa dibuka lagi. Ransomware bisa menyebar melalui email, website, network share, ataupun media lain. Khusus untuk WannaCry, malware ini juga memanfaatkan bug di OS Windows. Jika komputer Windows di jaringan yang sama belum diupdate (dan setting SMB-nya belum diubah), maka tanpa melakukan apapun, komputer tersebut bisa kena.

Jika dilihat di berita, banyak komputer di tempat umum (ATM, mesin antrian, dsb) terinfeksi, ini karena ransomware tersebut sudah masuk ke jaringan tempat mesin tersebut berada. Titik awal masuknya ransomware tersebut bisa dari komputer yang terhubung ke internet langsung yang kena serangan, atau ada orang yang salah membuka attachment ransomware.

Sebelum membaca lebih lanjut. Updatelah Windows Anda, updatelah Antivirus Anda. Backup semua data penting Anda. Sudah ada himbauan resmi dari kominfo dan ID-SIRTII, jadi tidak perlu saya ulangi.

Jika Anda mendengar nama NSA disebut-sebut, alasannya adalah: NSA sudah menemukan bug ini cukup lama, tapi dijadikan tool rahasia (eternalblue). Tool ini dibocorkan oleh salah satu group hacking beberapa bulan lalu sehingga semua orang bisa memakainya. Microsoft sudah langsung menutup lubangnya dengan mengeluarkan update sejak 2 bulan lalu, tapi banyak orang yang tidak mengupdate Windowsnya. Bug ini ada di kode untuk protokol SMB (Server Message Block) Versi 1, protokol ini dipakai dalam berbagai hal, misalnya untuk sharing file dan printer di Windows.

Hal yang penting diketahui adalah: jika Windows Anda sudah update terbaru maka Anda terproteksi dari serangan di jaringan yang sama. Anda bisa masuk ke jaringan perusahaan yang kena WannaCry, dan Anda tidak akan terinfeksi. Tapi  jika Anda menjalankan file ransomware ini, Anda tetap bisa  kena (misalnya dari email atau dari share jaringan). Jadi tetaplah berhati-hati. Updatelah  semua software Anda (misalnya: MS Office juga, jangan cuma Windows), Antivirus Anda, dan jangan sembarangan membuka attachment.

Ada banyak saran untuk memblok port tertentu (TCP: 139/445 & 3389 dan UDP: 137 & 138). Saran ini terutama ditujukan untuk server yang terbuka ke internet. Untuk workstation. perlu diketahui bahwa port 3389 digunakan untuk remote deskop. Untuk port 137/138/139: jika dimatikan maka fitur file sharing, printer sharing tidak akan jalan. Tentunya jika fitur-fitur tersebut tidak dibutuhkan bisa saja ditutup portnya (misalnya sharing file dengan dropbox atau layanan lain).

Misinformasi

Beberapa orang/situs menyebarkan bahwa password WannaCry [email protected] Ini hanyalah password salah satu komponen malware, bukan untuk membuka file yang sudah terenkrip (contoh situs yg salah, sengaja nggak saya bikin jadi link supa mereka gak panen klik: http://nerdylab.me/hacking/recover-wanacry-ransomware-attack/), contoh lain di Twitter:

Beberapa situs juga memberikan langkah-langkah sniffing jaringan untuk mencari decryption key atau melakukan bruteforce RSA. Contoh situs: http://sensorstechforum.com/wncry-wannacry-virus-how-to-restore-encrypted-files-may-2017/

Kedua cara itu tidak akan berhasil karena WannaCrypt tidak melewatkan key di jaringan. WannaCrypt juga memakai RSA 2048 bit yang hampir mustahil difaktorkan.

Saat ini cara recovery yang masih agak mungkin terjadi adalah dengan mencoba program sejenis undelete. Cara ini tidak selalu berhasil dan jika berhasil hanya sebagian saja yang bisa direcover.

Ketika ransomware mengenkrip file biasanya yang terjadi adalah: sistem operasi akan mengalokasikan di space baru untuk file terenkripsi, baru malware akan menghapus file setelah selesai.

Di kasus ini, free space yang belum ditimpa file lain masih mengandung data yang belum dibersihkan. Semakin besar free disk space, semakin besar kemungkinan file masih bisa selamat. Semakin kecil disk space, kemungkinan file sudah ditimpa dengan data lain.

Windows juga memiliki sistem backup otomatis yang bernama volume shadow copy, tapi ini pun akan dihapus malware. Dalam kasus sangat jarang, jika kebetulan ransomware gagal menghapus volume shadow copy, maka ada kemungkinan file bisa dikembalikan.

Katanya sudah berhasil dicegah dengan killswitch?

Jawabannya: ya dan tidak. Ransomware ini mengecek jika domain bernama tertentu ada. Ini tadinya dipakai untuk mendeteksi apakah malware sedang diamati via sandbox. Biasanya sandbox akan mengatakan semua domain ada, agar bisa mengamati koneksi malware ke situs mana saja.

Dalam kasus ini malware berusaha melakukan koneksi ke domain yang seharusnya tidak ada. Tapi kemudian domain ini didaftarkan oleh seorang analis malware. Karena domain tersebut benar-benar ada, maka malware ini akan berhenti. Nah sayangnya ada dua hal: pertama sudah ada patch untuk malware ini sehingga tidak lagi mengecek domain kill-switch.

Kedua: malware ini tidak mengecek Proxy, hanya langsung melakukan direct connection ke domain tersebut. Di berbagai perusahaan, proxy wajib digunakan untuk mengakses internet. Karena malware gagal mengakses domain tanpa proxy, maka malware tersebut tetap aktif di banyak perusahaan.

Ada beberapa varian malware ini yang beredar. Sebagian dari varian ini adalah kerjaan orang iseng, misalnya ada yang meremove check kill switch. Ini bisa diketahui karena patching dilakukan manual, bukan dengan rekompilasi source softwarenya. Apa alasan keisengan orang-orang ini? nggak ada.

“…some men aren’t looking for anything logical, like money. They can’t be bought, bullied, reasoned, or negotiated with. Some men just want to watch the world burn.”
― Michael Caine

Pertanyaan seputar dekripsi file tanpa membayar

Pertanyaan yang paling utama ditanyakan adalah: apakah ada tool dekripsi file tanpa membayar? jawaban singkatnya: belum ada, dan mungkin tidak akan ada jika key-nya tidak dirilis oleh pembuatnya.

Pembuat malware ini cukup cerdas dalam melakukan enkripsinya. Pertama dia membuat sebuah RSA Keypair (artinya: public dan private key) yang unik per komputer, anggap saja nama key ini X . RSA public key bisa dipakai untuk mengenkripsi data, dan RSA private key bisa dipakai untuk mendekrip data.

Enkripsi data besar dengan RSA sangat lambat, jadi enkripsi file dilakukan dengan AES.  Dalam malware ini: tiap file dienkripsi dengan key AES-nya berbeda untuk tiap file. Tentunya jika kita tahu keynya, maka kita bisa mendekrip filenya, jadi key AES ini dienkrip dengan public key X yang unik per komputer.

Karena public dan private X dihasilkan di komputer, jika kita tahu private key X, maka kita bisa mendekrip filenya. Nah supaya private key X tidak bisa dipakai, maka ransomware ini mengenkrip private key X tersebut dengan sebuah public key Y.

Public key Y ini ditanam di dalam ransomware, dan private key Y ada ditangan pembuat ransomware. Jika user membayar, maka private key X akan didekrip oleh pembuat ransomware dan bisa dipakai untuk mendekrip semua file lain.

Seseorang sudah mengekstrak algoritma enkripsi yang dipakai, dan sejauh ini tidak ditemukan kelemahan dalam implementasi WannaCry. Sekarang ini semua orang sudah tahu dengan tepat algoritma yang dipakai dan cara enkripsi dilakukan oleh ransomwarenya, tapi BELUM/TIDAK ditemukan kelemahan dalam algoritmanya.

Beberapa ransomware lama akan memakai sistem yang terlalu rumit untuk managemen key-nya, ada yang mengirimkan key via jaringan, ada yang membuat key berdasarkan waktu, dsb. Ransomware ini efektif karena enkripsi bisa dilakukan offline, tidak perlu koneksi ke server untuk mengenkrip komputer yang ada di dalam LAN.

Sebagai catatan: ada beberapa kemungkinan key RSA bisa didapatkan, misalnya faktorisasi (dalam kasus ini hampir tidak mungkin karena jumlah bit terlalu besar), penggunaan key lemah (weak keys, tapi sudah dicek bahwa key yang digunakan aman), masuk ke server pembuat malware, atau mencari pembuat malwarenya (sulit). Pernah juga ada kasus bahwa pembuat ransomware “menyerah” dan memberikan master keynya gratis setelah beberapa bulan (kasus Teslaware).

Sampai saat ini saya masih belum menemukan bagaimana caranya pembuat ransomware mengetahui user mana yang sudah bayar dan yang mana yang belum. Saya liat ada cara untuk mengirim pesan ke pembuatanya dengan dialog, yang akan dikirim melalui Tor (jaringan anonim). Jadi kemungkinan besar untuk bisa mendekrip, Anda perlu kontak manual dengan “customer service” ransomware ini. Jadi tidak dijamin 100% file Anda kembali meski Anda membayar.

Pertanyaan seputar bitcoin

Banyak juga yang bertanya: apakah nggak bisa “account” bitcoin hackernya diblok? jawabannya: tidak bisa karena bitcoin tidak memakai sistem account, tapi wallet berdasarkan enkripsi.

Atau apakah tidak bisa ditrace nanti bitcoinnya dipakai belanja di mana? Kemungkinan besar hackernya akan memakai layanan bitcoin mixer untuk menghilangkan jejak (semacam layanan pencucian uang). Jadi jawaban singkatnya juga: tidak bisa.

Backup

Hal terpenting yang harus dilakukan adalah membuat backup. Tapi backup ini juga harus aman. Dalam kasus WannaCry, jika backup dilakukan di jaringan menggunakan file server Windows, maka kemungkinan file server itu juga akan kena WannaCry.

Backup online perlu dilakukan, dan perlu dicek. Contoh: versi personal OneDrive tidak membuat arsip versi lama. Jadi jika disk lokal Anda dienkrip oleh ransomware, dan isi filenya diupload ke OneDrive, maka hilanglah backup Anda di OneDrive.

Perlu dicatat: WannaCry bukanlah ransomware pertama, dan tidak akan jadi yang terakhir. Meskipun segala langkah telah dilakukan untuk menangani malware ini (update windows, blok port, dsb), tapi jika user ceroboh (misalnya membuka attachment yang tidak dikenal), maka mereka tetap bisa kena.

Menggunakan OS selain Windows akan mengurangi risiko ransomware, tapi ingat juga bahwa sudah pernah ada Ransomware yang meyerang Linux sebelumnya (dan juga OS X, walau penyebarannya tidak sebesar WannaCry).

Pentingnya Reverser di Indonesia

Saya sekalian ingin menekankan betapa pentingnya peran reverse engineering dalam mengatasi ransomware ini. Tanpa reverse engineering, domain killswitch tidak akan ditemukan. Dengan reverse engineering pula bisa ditemukan tepatnya bug apa yang dipakai oleh ransomware ini untuk menyebarkan dirinya.

Saat ini di Indonesia masih kurang reverser handal. Jika ada kasus seperti ini yang dibuat oleh hacker lokal, maka kemungkinan besar reaksinya akan sangat lama. Sebagai catatan: membuat ransomware seperti ini sangat mudah, banyak contoh source code ransomware di github maupun di situs lain. Jika ada bug Microsoft yang baru, siapapun bisa meniru ransomware ini. Saat ini pembuat ransomware WannaCry sudah mendapatkan beberapa puluh ribu USD, dan angkanya masih terus naik  (ini bisa dimonitor karena Bitcoin sifatnya terbuka).

Saya sarankan juga agar yang mau belajar reversing untuk memulai dari yang jinak. Sering kali di saat ada serangan seperti ini, semua rame-rame ingin ikutan bisa membongkar ransomwarenya, tapi dasarnya masih lemah sekali. Yang terjadi bisa fatal: jaringan di tempat Anda berada (misalnya kantor) bisa terinfeksi semuanya. Niatnya ingin “show off”, malah bisa menyusahkan banyak orang. Berhati-hatilah dengan malware ini karena BELUM ADA decryptornya, jadi jika terkena ini sama saja seperti diformat harddisknya.

Terus setelah bisa membuka filenya dengan aman, banyak yang “bengong” karena dasar enkripsinya masih sangat lemah. Bahkan pemahaman public/private key juga masih kurang. Kalaupun ransomwarenya ada bugnya, belum tentu bisa menemukan apa kelemahannya. Jadi saran saya berikutnya adalah: perkuatlah dasar enkripsi.  Ada banyak CTF yang bisa jadi sarana untuk belajar.

Remote IR via WIFI dengan ESP8266

Posting ini sekedar membahas proyek sederhana mengendalikan peralatan yang dikontrol dengan remote infrared (IR) melalui WIFI. Sekarang kami bisa menyalakan dan mematikan AC, mensetup temperatur, kipas, dan juga swing dari HP atau laptop.

Saya dan Risna tadinya sama-sama memakai Samsung Note 4 yang memiliki fitur IR blaster sehingga bisa jadi remote AC maupun TV. Ternyata fitur ini sangat terpakai, sering kali remote TV terselip, dan remote AC kadang tidak terlihat di malam hari di kamar tidur, sedangkan biasanya HP tidak jauh dari tangan.

Sebenarnya dari dulu sudah ingin membuat ini, tapi Sekarang Risna ganti HP memakai Asus Zoom yang tidak punya fitur IR.  Jadi diniatkan untuk membuat gateway WIFI ke IR. Plus saya kadang lupa mematikan AC dan sudah terlanjur meninggalkan rumah.

 

Modul WIFIESP8266 yang saya gunakan adalah Wemos D1. Harga modulnya murah, sekitar 2.9-4 USD per modul.  Saya hanya perlu menambahkan transistor, resistor dan LED IR-nya, dan supaya rapi saya solder ke perfboard. Pin header sifatnya opsional, saya pakai header supaya mudah mengganti LED jika nanti rusak.

Harga komponen lain terlalu murah untuk beli satuan: harga 100 buah transistor 1 USD, harga 20 buah LED IR 1 USD, harga 100 resistor 0.65 USD. Harga 10 perfboard 1.99 USD (satu perfboard bisa dipatahkan menjadi beberapa).

Saya meletakkan LED IR beberapa meter dari AC. Andaikan semua bisa diletakkan dekat AC, sebenarnya transistor dan resistor tidak perlu, langsung saja sambungkan IR LED ke modul ESP8266-nya.

Saya membuat tiga board, satu untuk ruang TV, satu untuk kamar tidur utama, dan satu untuk kamar tidur Jonathan. Rencananya saya akan menambahkan juga sensor suhu supaya AC bisa mati otomatis jika sudah terlalu dingin.

Secara teori memprogram WIFI IR ini mudah sekali karena sudah ada library IR dan banyak contohnya di Internet. Kenyataannya tidak semudah itu kalau device yang kita miliki kurang terkenal. Untuk AC merk LG saya menemukan repository ini di github. Sayangnya saya tidak menemukan yang cocok untuk AC Sharp yang ada di kamar tidur Jonathan dan ruang tidur utama.

Ada beberapa hasil pencarian protokol Sharp, misalnya ini, tapi ternyata sama sekali tidak cocok dengan AC. Akhirnya saya menggunakan Orange Pi PC yang memiliki infrared receiver dan program mode2 dari LIRC, untuk menerima signal raw dari remote AC.

Setelah melakukan reverse engineering, saya jadi punya lebih banyak clue untuk melakukan pencarian lagi. Dari  jumlah bitnya (104 bit atau 13 byte) dan dari beberapa bit awal, akhirnya saya menemukan repository ini. Kode yang ada di repository tersebut cukup membantu dalam hal perhitungan checksum. Tapi akhirnya saya tetap harus mencari sendiri kode-kode untuk remote Sharp.

Saya membuat user interface berbasis web agar mudah diakses dari ponsel maupun komputer. Karena programnya sangat sederhana, saya memakai JQuery mobile dan PHP. Tombol AC On dan Off sengaja dibuat terpisah, bukan toggle seperti pada remote AC, karena saya ingin yakin mengirimkan signal off, terutama ketika tidak berada di dekat AC-nya.

Jika diakses dari jaringan rumah, saya tidak perlu autentikasi untuk mengakses remotenya. Jika diakses dari luar rumah, saya perlu menggunakan SSL client certificate supaya tidak semua orang bisa mengaksesnya.

Jika Anda ingin memprogram ESP8266, mengendalikan LED IR via WIFI ini merupakan salah satu proyek menarik yang sangat sederhana, murah, dan berguna.

Outernet: packet radio from space

Outernet adalah layanan broadcast data via satelit yang sifatnya terbuka dan gratis. Kita bisa menerima data yang dikirimkan dengan receiver yang bisa dibeli jadi atau dirakit sendiri. Data yang disiarkan outernet beraneka ragam, mulai dari cuaca, berita, sampai artikel yang bisa kita usulkan.

Sebenarnya proyek Outernet ini sudah dimulai cukup lama, sejak 2014 mereka sudah memulai broadcast di Ku Band, tapi sekarang mereka memakai L Band. Jangkauan Outernet sampai saat ini sudah hampir seluruh bumi.

Akhir tahun lalu mereka memberi diskon untuk  kit receiver Outernet. Tadinya 99 USD belum termasuk ongkos kirim, tapi waktu itu dijual 89 USD, sudah termasuk ongkos kirim. Semestinya saya akan menerima paketnya bulan Maret, tapi baru dikirim April. Baru sabtu sore lalu saya menerima paketnya.

Sebagai catatan: mereka juga memulai kampanye Indiegogo untuk menjual hardware receiver, tapi sampai saat ini backer project tersebut belum mendapatkan barangnya. Kalau tertarik dengan Outernet, sebaiknya pesan langsung dari webnya, jangan dari Indiegogo. Tadinya mereka menjual sebagian kit saja (misalnya Antenna saja, atau LNA saja, atau SDR saja), tapi sekarang kita harus membeli kit langsung.

Paket yang saya terima adalah: CHIP (komputer 9 USD), Patch Antenna, dan SDRx yang merupakan gabungan software  defined radio (SDR), plus low-noise amplifier/LNA dan sebuah kertas manual singkat.

Merakit kit ini cukup mudah: colokkan SDRx ke CHIP, colokkan Antenna ke SDRx, beri power melalui colokan micro SD di CHIP dan arahkan antenna ke satelit. Bagian terakhir itu mungkin kedengaran sulit, tapi sekarang ada software Sattelite AR untuk Android. Cukup masukkan nama satelit (Inmarsat I4 untuk daerah Asia Pasifik), dan arahkan ke angkasa, nanti kita bisa tau di mana kira-kira satelitnya berada.

Jika Anda ingin mulai membeli receiver, atau membuat sendiri receivernya, coba install dulu software Sattelite AR-nya untuk mengetahui apakah Anda akan bisa mendapatkan signal satelit dengan mudah dari tempat Anda berada. Jika Anda ingin membuat sendiri receivernya, Anda bisa memakai Raspberry Pi dengan SDR Receiver yang bagus (misalnya dari sini), Anda juga perlu membeli atau membuat LNA (misalnya dengan design dari sini) dan tentunya Anda perlu membuat antennanya.

Untuk mengakses outernet, kita cukup melakukan koneksi via WIFI, lalu mengakses interfacenya dengan web browser. Defaultnya outernet akan berfungsi seperti access point. Sayangnya saya memiliki sedikit kesulitan di sini: akses pointer Outernet tidak terlihat meskipun LED pada CHIP dan SDRx terlihat menyala. Setelah dicoba-coba, ternyata access point-nya hidden, jadi perlu kita masukkan namanya manual. 

Sekarang untuk memudahkan koneksi, saya ubah modenya menjadi WIFI Client agar bergabung ke jaringan WIFI di rumah.

Setelah semua siap, kunjungi bagian Tuner. Pastikan satelit yang benar sudah dipilih (defaultnya untuk Eropa). Perlu diperhatikan di tab status bahwa SNR harus lebih dari 3 supaya kita bisa menerima file. Jika SNR baik, setelah agak lama, paket akan mulai berdatangan. Dibutuhkan waktu cukup lama sampai transfer dimulai. Di hari pertama saya mencoba sekitar satu jam dan tidak mendapatkan apa-apa (hanya file parsial).

Karena hari pertama akan hujan, saya bawa masuk kit outernetnya. Hari Minggu, sebelum mengantar Jonathan ke dokter gigi, saya setup lagi outernet receivernya. Ketika pulang dari dokter gigi kami ke kebun binatang. Waktu tiba di rumah, sudah ada cukup banyak file yang diterima, termasuk juga data cuaca.

Saat ini saya belum punya tempat yang permanen yang tahan cuaca. Receivernya saya tahan dengan kotak yang diberikan.

Saat ini jika kita ingin mengirimkan berita via Outernet atau memilih artikel untuk disiarkan, kita bisa membeli kredit (minimal 10 USD untuk 1000 credit). Satu pesan broadcast biayanya 10 kredit. Untuk sebuah artikel, biayanya 10 kredit plus 5 kredit untuk tiap 1000 byte artikel.

Saya sendiri belum membeli credit, belum tahu untuk apa. Mungkin kalau iseng, saya bisa membeli kredit 10 USD dan mengucapkan selamat ulang tahun ke 100 orang.

Bagi kebanyakan orang, Outernet ini saat ini tidak semenarik Internet, karena sifatnya yang searah (butuh internet untuk bisa mengirimkan sesuatu), kontennya masih relatif sedikit (hanya sekitar 20 megabyte per hari disiarkan). Bagi sebagian orang, ternyata outernet ini sudah berguna, misalnya untuk mereka yang membutuhkan data cuaca ketika berlayar.

Rencana mulia Outernet adalah menyebarkan berita dan ilmu ke seluruh dunia bebas biaya, termasuk juga ke daerah yang sulit dijangkau Internet (terlalu sulit/terlalu mahal). Untuk saat ini sebelum tujuan mulia tersebut tercapai, Outernet bisa jadi mainan menarik untuk hacker dan orang yang suka teknologi radio. Saat ini software outernet sifatnya proprietary, tapi sudah ada yang melakukan reverse engineering modulasi, coding, framenya.