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.

Flare-On 5 (2018)

Ini sudah keempat kalinya saya mengikuti challenge tahunan Flare-On dari FireEye. Saya sudah pernah menuliskan tentang Flare-On ini di posting saya yang lain, tapi akan saya ulangi sedikit.

Flare-On adalah challenge reverse engineering, alias tantangan membongkar program. Bentuk Flare-On adalah challenge, semua yang selesai adalah pemenang. Ini ibaratnya seperti marathon, semua yang berhasil menyelesaikan disebut sebagai finisher. Ini berbeda dari CTF lain yang biasanya sifatnya adalah lomba (seperti lari Sprint) di mana yang duluan memecahkan adalah pemenangnya (contoh seperti ini adalah ketika saya menang hadiah ke Hong Kong dari reverse engineering). 

Hadiah Flare-On Tahun ini

Panitia sudah memberikan write-up tentang bagaimana caranya menyelesaikan berbagai soal yang ada, jadi saya tidak akan membuat write-up.  Tapi ada permintaan supaya saya menuliskan: ilmu apa sih yang dibutuhkan buat menyelesaikan masing-masing level? memang kadang membaca sebuah write-up itu terasa membingungkan kalau belum tahu dasar ilmunya. Jadi di posting ini akan saya tuliskan deskripsi challengenya, dan ilmu apa yang perlu diketahui untuk menyelesaikan tiap challengenya. Tahun ini dari Indonesia hanya Faco lagi yang solve, dan dari Thailand ada 2 orang lain selain saya.

Chal 1: Minesweeper Championship Registration

Ini adalah bentuk challenge reverse engineering paling sederhana. Ini sekedar memfilter orang-orang yang blank sama sekali soal reverse engineering. Misalnya ada yang bertanya di Twitter apa invitation codenya, padahal itulah soalnya (mencari invitation code).

Solusi untuk soal ini sangat sederhana, dengan decompiler Java didapatkan jawabannya, hanya sebuah if saja yang perlu dibaca. Hal yang perlu diketahui hanya ini: sebuah program bisa ditulis dalam berbagai bahasa, setelah mengetahui bahasanya, kadang kita bisa mendapatkan decompilernya dan bisa membaca kodenya.

Meskipun soal ini terlihat amat sangat sederhana, bukan berarti tidak terpakai. Sekitar 20 tahun yang lalu ada banyak aplikasi shareware yang proteksinya segampang ini, hanya ada satu password statik saja. Bahkan beberapa tahun terakhir ini  ketika para ahli security membongkar firmware router, ditemukan juga perbandingan statik seperti ini (account  backdoor dengan password statik).

Chal 2: Ultimate minesweeper

Tantangan ini mulai agak serius: hacking game. Gamenya sangat sederhana, hanya minesweeper. Tugas kita hanya satu: mencari tahu di mana yang bukan bom, tapi kebanyakan isinya adalah bom (900 sel dan hanya 3 yang bukan bom).

Cara yang manual adalah dengan mengklik satu per satu 900 kali untuk mencari tahu lokasi yang bukan bomb karena posisinya tidak akan berubah. Cara yang lebih cerdas adalah dengan membaca kode atau melakukan debugging untuk melihat isi memori, supaya tahu mana yang ada bombnya.

Ini adalah contoh di mana pengetahuan programming diperlukan. Jika Anda adalah programmer, maka akan terbayang bahwa perlu ada struktur data board (biasanya dalam bentuk array 2 dimensi) yang isinya apakah di suatu posisi ada bomb atau tidak. Jika Anda programmer yang membuat program semacam ini tentunya akan bisa mendebug program sendiri dan bisa menentukan di mana bom dan bukan bom.

Challenge ini sederhana karena 90% nama bisa dibaca dan tidak menyesatkan. Hanya ada satu bagian kecil saja yang dibuat agak membingungkan (bagian mengisi lokasi yang bukan bom).

Ini masih game yang super sederhana dan banyak yang menyerah tapi orang-orang ini sebagian ingin bisa membongkar dan mengakali game di App Store/Play Store. Untuk game yang serius, ada lebih banyak lagi hal-hal yang perlu dicatat oleh game, lokasi pemain, jumlah koin, kondisi musuh dsb. Jika Anda tahu cara kerja game (meskipun tidak pernah memprogram langsung), Anda akan terbayang data apa saja yang disimpan.

Secara teknis, program ini dibuat dengan .NET, diperlukan pengetahuan bahwa ada banyak debugger sekaligus decompiler .NET. Cara termudah adalah dengan dnspy yang bisa mendecompile dan mendebug. Menelusuri program bisa dilakukan cukup jelas, mulai dari klik sampai dia membaca memori yang berisi struktur data board.

Chal 3: FLEGGO

Di sini tantangan sudah masuk lebih serius: membongkar native code alias kode assembly. Ini hanya sedikit lebih sulit dari challenge pertama, karena di challenge pertama kita bisa mendapatkan kodenya dengan membaca source code Java. Kali ini yang dibaca adalah assembly, tapi string passwordnya masih jelas di file.  

Masalah utamanya adalah: ada 48 file. Ini masih bisa dilakukan satu per satu, tapi butuh waktu lama. Di sini diperlukan otomasi, bagaimana mengulangi proses yang sama 48 kali.  Proses otomasi ini juga penting dalam dunia nyata, contohnya FireEye pernah harus mengecek 10 ribu komputer untuk mengetahui apakah BIOS-nya diinfeksi malware atau tidak.

Orang yang tidak bisa mengotomasi ini sering saya temui dalam hidup, dulu saya pernah menuliskan tentang admin yang membuat secara manual 100 account dan menginstall satu per satu semua software. Inti dari otomasi adalah membuat program atau skrip untuk mengulangi berbagai pekerjaan manual.

Jadi ilmu dasar untuk menyelesaikan soal ini adalah: keahlian membaca assembly dasar dan memprogram untuk mengotomasi pembuatan solusi.

Chal 4: binstall

Ini contoh serius dari sebuah malware yang disederhanakan dan dijinakkan. Ini merupakan versi sederhana dari trojan banking sejenis Zeus dan sejenis berbagai malware lain yang membajak browser. Di sini sudah banyak dipakai berbagai teknik yang mulai rumit, seperti obfuscation dan dll injection. Karena malware ini sudah disederhanakan, ilmu dari berbagai buku dan tutorial website masih bisa digunakan.

Challenge ini mengkombinasikan .NET (installer), .dll (native code) dan .js (javascript).  “Malware” ini  akan menginjeksikan skrip pada website flare on dan menambahkan command baru. Malware yang sesungguhnya akan aktif di sebuah situs banking dan mencuri password kita, atau mengubah tujuan transfer ke nomor lain.

Ada banyak sekali ilmu dasar analisis malware yang perlu dimengerti untuk menyelesaikan soal ini. Saran saya adalah: bacalah salah satu buku analisis malware, dan coba praktikkan ilmunya pada soal ini.

Chal 5: Web 2.0

Beberapa tahun lagi WebAssembly akan populer. Saat ini WebAssembly sudah disupport semua browser, tapi masih belum banyak dipakai oleh berbagai website. Sebagai reverse engineer, kita harus berpikir maju dan mulai belajar membaca kode yang akan populer, bukan yang sudah populer.

Challenge di bab ini adalah untuk memahami kode WASM, dan sebenarnya setelah dipelajari bisa diselesaikan dengan sangat mudah menggunakan debugger yang ada di browser. Saat ini belum banyak resource reverse engineering web assembly, jadi kita perlu membaca banyak dasar teori untuk menyelesaikan soal ini.

Chal 6: Magic

Soal ini adalah mengenai binary Linux. Soalnya rada mengada-ada, kita diminta mengisi 666 password yang dihasilkan dari algoritma tertentu. Ada banyak cara menyelesaikan ini, baik dengan otomasi, ataupun memahami algoritma supaya tidak perlu menjawab sama sekali.

Dalam mencari bug di dunia nyata, kita tidak akan diberi program sederhana yang mudah dibongkar. Berbagai program di Linux ukurannya besar dan hasil compile  dari ratusan ribu atau jutaan baris kode. Soal ini sekedar mensimulasikan bahwa kadang kita harus memahami beberapa algoritma yang ada di sebuah file biner dan memahaminya dengan benar.

Dasar ilmu untuk menyelesaikan soal ini adalah: kriptografi (dasar) dan pengetahuan debugging binary Linux. Beberapa tool juga bisa dipelajari (misalnya pexpect, frida, gdb) untuk mengotomasi solusinya.

Chal 7: WOW

Soal ini hanya bisa dijalankan di Windows 7 64 bit karena memakai teknik Heaven’s Gate. Ini hanyalah salah satu contoh teknik aneh yang dipakai oleh malware. Ada banyak sekali teknik-teknik lain yang dipakai oleh malware untuk mempersulit debugging.

Secara umum untuk menyelesaikan soal semacam ini kita perlu banyak mengikuti perkembangan malware dan teknik-teknik terbaru yang dipakai oleh malware untuk menyulitkan debugging.

Chal 8: Doogie Hacker

Challenge ini sebenarnya bisa dianggap sebagai selingan saja. Pengetahuan yang perlu dimiliki adalah melakukan reverse engineering boot sector. Jaman dulu banyak virus boot sector sederhana, dan sekarang ini ada yang namanya “bootkits” yang kompleks (rootkit yang bisa menginfeksi boot sector/MBR).

Hanya diperlukan keahlian dasar membaca kode 16 bit plus sedikit ilmu kriptografi untuk menyelesaikan ini. Soal ini juga merupakan pengantar untuk soal terakhir yang lebih kompleks. Soal sederhana seperti ini diberikan supaya pemain merasa sedikit tenang.

Chal 9: leet editr

Ini contoh lain penggunakan teknik yang digunakan oleh malware. Kali ini yang dipakai adalah VirtualAlloc dan VirtualProtect yang mempersulit debugging. Tapi sayangnya soal ini masih kurang kompleks sehingga ada beberapa shortcut untuk menyelesaikannya. Seperti challenge no 7, diperlukan pemahaman cukup dalam mengenai trik malware dan internal Windows untuk menyelesaikan soal ini.

Chal 10: golf

Ini soal yang luar biasa,  berupa penggunaan hypervisor dengan menggunakan VT-X Extension dari Intel. Diperlukan pemahaman yang cukup dalam mengenai prosessor dan hypervisor untuk bisa menyelesaikan soal ini. Pembuat CTF tidak main-main dalam mengimplementasikan soal ini. Teknik semacam ini hanya dipakai oleh malware tingkat lanjut.

Di sini fitur Intel VT-X digunakan untuk mengimplementasikan sebuah instruction set khusus tapi tetap memakai register prosessor itu sendiri. Untuk menyelesaikan soal ini diperlukan banyak membaca mengenai hardware virtualization.

Chal 11: malware skillz

Ini soal tahun lalu yang disederhanakan. Jika sudah membaca soal dan solusi tahun lalu, tentunya akan tahu betapa panjangnya proses memahami soal ini. Bagi yang sudah menyelesaikan soal tahun lalu, menyelesaikan ini sangat gampang, segala macam tipuannya sudah terbaca dari awal dan soalnya sudah disederhanakan dari tahun sebelumnya.

Ini adalah soal yang paling dekat dengan malware yang sesungguhnya. Di soal ini juga diberikan file pcap yang merupakan hasil sniffing jaringan yang perlu kita analisa.

Untuk menyelesaikan soal ini diperlukan kombinasi dari berbagai hal:

  • Pengetahuan jaringan (Wireshark, protokol DNS dan SMB)
  • Reverse engineering native code
  • Enkripsi, hashing, dan berbagai algoritma lainnya
  • Reverse engineering .NET
  • Pengetahuan mengenai git

Chal 12: Suspicious Floppy Disk

Soal ini awalnya seperti soal no 8, kita perlu melakukan reverse engineering kode 16 bit pada sebuah floppy disk. Di sini berbagai teknik DOS yang lama seperti intercepting interrupt digunakan. Saya menyangka tantangan kali ini akan memanfaatkan berbagai trik DOS yang kompleks (misalnya kode polymorphic) sehingga saya mempersiapkan diri membuat custom instrumentation untuk Bochs.

Dengan menuliskan kode instrumentasi saya bisa mencatat berbagai perintah yang dieksekusi sejak titik tertentu (minta password) sampai ada hasilnya. Ternyata jumlah instruksi yang dieksekusi banyak sekali. Setelah dipelajari lebih dalam lagi, ternyata isinya adalah sebuah virtual machine untuk arsitektur one instruction set computer (OISC) subleq.

Untuk yang menyelesaikan soal tahun lalu, tentunya akan ingat bahwa ini adalah soal no 11 tahun lalu. Ada pembahasan yang cukup dalam mengenai soal ini (jumlah halaman solusinya: 81 halaman). Saya juga membaca berbagai pendekatan lain untuk memahami yang dilakukan kode ini, termasuk juga membuat plot instruction pointer terhadap waktu. 

Di sini diperlukan pengetahuan bagaimana sebuah interpreter bekerja. Saya mengimplementasikan ulang virtual machine subleq dalam C, lalu menjalannya. Bedanya dengan tahun lalu: kode subleq ini sangat panjang.  Ada sekitar 500 ribu instruksi dieksekusi untuk menampilkan pesan dan mengecek password. Tahun lalu ini relatif pendek dan bisa dianalisis cukup cepat.

Akhirnya mau tidak mau saya harus membaca kode subleqnya, ternyata kodenya dipenuhi dengan sampah untuk mempersulit pembacaan. Contoh sampah adalah operasi aritmatika yang hasilnya dibuang. Ternyata kode subleq ini merupakan virtual machine juga. Jadi ini adalah virtual machine di dalam virtual machine. Virtual machine yang diimplementasikan oleh kode subleq adalah RSSB (Reverse subtract and skip if borrow), salah satu jenis one instruction set computer selain subleq.

Kode RSSB jauh lebih sulit dibaca dari subleq, dan saya perlu membuat kode python custom untuk menyederhanakan kode RSSB-nya. Ternyata kode inipun dipenuhi dengan sampah sehingga sulit dibaca.  Di sini menurut saya yang dibutuhkan adalah ketekunan. Ini seperti kembali ke awal belajar membaca kode assembly (tanpa decompiler).

Jadi intinya untuk menyelesaikan soal ini butuh sedikit membaca teori dan banyak kesabaran.

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.

Aksesori elektronik kecil

Sudah lama saya tidak menuliskan tentang oprekan elektronik. Salah satu alasannya adalah karena tahun ini saya berusaha mengurangi pembelian berbagai benda dari AliExpress. Tahun lalu saya membeli terlalu banyak benda yang akhirnya kurang sempat dioprek.

Capture HDMI kualitas rendah

Ketika mengerjakan salah satu proyek Raspberry Pi, saya perlu berada di depan komputer karena menyangkut akses GPU untuk menampilkan video secara langsung dari kamera ke layar (pernah saya tuliskan di sini). Ada beberapa alternatif cara menangkap output HDMI, tapi harganya masih relatif mahal. Alternatif saat ini: PCI  card USB 3 capture card, dan device independen. Dari berbagai review yang saling bertentangan saya masih ragu harus membeli hardware yang mana, sedangkan harga hardwarenya tidak murah (puluhan hingga ratusan USD).

Dalam kasus kali ini, saya tidak benar-benar butuh capture kualitas tinggi, saya hanya ingin memastikan bahwa di layar tampil sesuatu yang seperti harapan saya. Jadi saya mengambil pendekatan paling murah: saya membeli HDMI2AV (kurang dari 7 USD). Signal HDMI diubah menjadi AV (dan resolusinya diresize), lalu saya tangkap signal AV ini dengan USB capture card yang sudah saya miliki (dulu harganya 4.5 USD).

LCD 1602 Acrylic case

Sudah beberapa kali mencetak case dengan printer 3D, tapi hasilnya kurang memuaskan. Saya melihat ada case Acrylic murah untuk LCD 16 karakter x 2 baris  jadi saya coba beli.  Harga benda ini bervariasi dari satu toko ke yang lain, antara 0.99 USD-2 USD.

Tampilannya cukup cantik, mudah disusun dan cukup stabil (tidak mudah jatuh). Case ini juga cukup bagus karena dirancang untuk LCD 1602 yang diberi kontroller I2C (ada lubang di samping untuk 4 kabel Vcc/Gnd/SDA/SCL). Kita juga bisa meletakkan Wemos D1 di belakangnya jika ingin membuat display  dari internet (misalnya nilai mata uang atau bitcoin).

Konektor PSU

Sebenarnya dari dulu sudah ada banyak tutorial untuk mengubah PSU menjadi bench power supply, tapi biasanya langkahnya merepotkan, perlu memotong kabel, membuat konektor khusus dst.

Belum lama ini saya menemukan bahwa ada board konektor PSU yang relatif murah (5 USD). Board ini sangat mudah dipakai, hanya perlu colok langsung, dan sudah ada switch on/off-nya. Selain bisa digunakan untuk bench power supply, kita bisa menggunakan board ini untuk mengetes apakah sebuah PSU masih bagus atau tidak.

Demikian tulisan singkat saat ini. Semoga lain kali tulisan oprekannya lebih menarik.

Text-to-Speech untuk mainan

Joshua sangat menyukai huruf dan angka. Di usianya sekarang (3 tahun) dia sangat suka alfabet. Dia bisa menyebut nama alfabet dalam bahasa Inggris dan Indonesia, bisa mengingat urutan alfabet  dari depan ke belakang dan sebaliknya, bisa menuliskan semua huruf besar dan kecil. Selain itu Joshua juga suka alfabet Thai, dalam sekitar 2 minggu dia sudah mengingat nama semua 44 konsonan dan cara menuliskannya.

Mainan ini bisa mengucapkan kata-kata tertentu, misalnya APPLE, BALL, dsb

Setelah suka alfabet, Joshua suka belajar membaca dan juga menulis, termasuk juga mengetik di komputer. Dia sangat senang dibelikan mainan tablet alfabet di atas. Mainan di atas disertai beberapa buku, di buku itu ada kata-kata yang bisa “diketikkan”, dan setelah selesai  kata itu akan diucapkan oleh tablet tersebut.

Sayangnya jumlah kata-kata yang tidak banyak dan Joshua sudah bosan dengan semuanya. Kadang dia berusaha mengeja kata tertentu tapi tidak keluar suaranya. Tadinya kepikiran untuk membongkar benda itu dan memodifikasi supaya support lebih banyak kata, tapi sepertinya repot dan akan butuh waktu lama.

Setiap kali dekat saya, Joshua akan minta ikutan ngetik di keyboard saya, dan kadang kalau saya sedang bekerja, saya biarkan dia memakai Pinebook , Raspberry Pi atau Laptop yang kebetulan ada di samping saya sekedar untuk mengetik di editor teks atau LibreOffice. Tiap kali mengetik sesuatu dia akan meminta perhatian saya sambil mengucapkan apa yang baru diketiknya: “papa, APPLE”

Supaya lebih seru, saya buatkan web app kecil  dengan JS dan PHP untuk mengucapkan kata yang baru dia ketik. Pengucapannya memakai fitur dari Google Translate. Tampilannya sangat sederhana: masukkan teks dan tekan enter, suaranya akan keluar. Joshua sudah mengerti memakai backspace untuk menghapus karakter yang sudah diketik.

Sebenarnya aplikasi ini tidak butuh server, bisa langsung tembak ke URL Google translate, tapi saya agak khawatir bisa kena rate limit atau ban temporer, atau bahkan protokolnya berubah sama sekali. Jadi saya buatkan sisi server untuk mengontak Google untuk mengucapkan kata-kata, dan menyimpan ke disk dan berikutnya jika kata yang sama diminta lagi maka akan diambil dari disk. Andaikan Google mengubah URL/protokolnya, nanti bisa diganti dengan Text-to-speech offline atau dari layanan lain.

Tampilan program

Kode program baik untuk sisi server maupun client hanya beberapa baris, tapi cukup menghibur Joshua selama beberapa bulan terakhir ini. 

Dan ini kode servernya

Kode singkat tersebut tentunya bisa ditambahi banyak fitur, tapi saat ini masih takut terlalu membingungkan untuk Joshua. Misalnya saya terpikir untuk menambahkan fitur warna pada teks karena dia suka menuliskan nama tokoh Paw Patrol dengan warna yang sama dengan warna pakaian mereka (Marshall merah, Chase biru, dst).

Untuk yang belum tahu: Google sebenarnya punya API text to speech yang resmi, tapi lebih rumit. Untuk sekedar mainan, cara “menembak” URL Google translate sudah cukup, tapi jika ingin dipakai untuk proyek serius, sebaiknya pakailah API-nya yang berbayar. 

Restore Backup Ponsel

Sekitar 20 tahun lalu ketika masih memakai dumb phone, data di ponsel yang perlu dibackup hanya phone book dan SMS. Backup ini sangat diperlukan ketika reset HP (misalnya rusak dan direset ketika reparasi) dan ketika berpindah HP. Kerepotan waktu itu adalah masalah koneksi karena diperlukan kabel data khusus sebelum IR dan Bluetooth banyak digunakan. Setelah ponsel makin berkembang, data kalender juga mulai jadi masalah yang perlu dibackup.

Sekarang biasanya saya butuh backup untuk pindah ponsel atau rooting ponsel. Ketika unlock bootloader Android, biasanya data akan hilang jadi perlu backup lalu restore lagi.  Pernah juga saya butuh backup ketika HP tiba-tiba rusak dan perlu reparasi.

Sekarang masalah backup phone book, SMS, dan kalender sudah otomatis ke cloud sehingga tidak ada masalah restore data dasar ini ke HP baru (atau jika melakukan reset HP). Tapi ternyata sekarang juga masih banyak aplikasi baru yang butuh backup manual.

Posting ini sekedar jadi catatan supaya ingat apa yang harus dilakukan sebelum transfer data ke HP baru atau reset data HP. Posting ini juga bisa dijadikan pembanding beberapa tahun yang akan datang apakah proses backup semakin mudah atau tetap seperti ini.

Sekarang saya memakai Google Photos sehingga semua foto aman dibackup (tanpa batas) dan juga mengupload copynya di One Drive (batasnya 1 TB). Berbagai dokumen saya letakkan di Google Drive atau DropBox sehingga bisa diakses dari PC. Jadi sebenarnya sekarang ini yang masih mengganjal hanya beberapa aplikasi yang butuh aksi khusus sebelum (misalnya membackup data secara manual) dan sesudah pindah ponsel baru(restore manual).

Jenis aplikasi pertama adalah banking. Untuk alasan security, kita perlu mengaktifkan ulang aplikasinya. Ini bisa dimaklumi untuk masalah keamanan.  Jika aplikasi banking dengan mudah bisa direstore dari backup maka jika ada yang berhasil mengakses backup di PC akan bisa merestore aplikasi tersebut di ponselnya.

Untuk alasan security, ada bank yang menutup proses aktivasi di luar jam kerja meskipun semua proses sifatnya online. Mungkin tujuannya adalah jika ada masalah maka bisa ditangani jika aktivasi hanya dilakukan di jam kerja. Sebenarnya ini hal kecil, tapi saya pernah hampir lupa karena melakukan reset HP di malam hari.

Aplikasi yang lain yang berhubungan dengan security seperti Authy dan Keybase juga butuh perlakuan  khusus ketika backup. Keduanya butuh device lain yang aktif untuk memudahkan aktivasi device baru. Khusus untuk Authy (diperlukan untuk 2FA di Cloudflare) dibutuhkan waktu 24 jam untuk reaktivasi aplikasi jika kita cuma punya 1 phone dan mereset phone tersebut. Cara yang benar adalah: menambahkan phone baru, reset ponsel, restore, dan aktifkan kembali dari phone satu lagi.

Jenis aplikasi berikutnya yang butuh backup khusus adalah messaging seperti Whats App (WA) dan Line. WA berusaha menjadi aplikasi yang aman: semua data disimpan di ponsel — tidak di cloud — dan kita sendiri yang harus membackup datanya ke cloud. Ini bisa dilakukan otomatis tiap hari. Masalahnya kadang dalam beberapa jam saja sudah ada puluhan/ratusan pesan masuk, jadi kita harus ingat untuk membackup manual sebelum transfer data ke HP baru (jika tidak, maka sebagian chat akan hilang).

Aplikasi chat Line memiliki fitur backup, tapi backup harus dilakukan satu demi satu per conversation secara manual. Biasanya saya menyerah dan membiarkan saja tidak terbackup ketika pindah ke HP baru karena tidak banyak percakapan di Line. Line bisa memakai Facebook untuk login, tapi juga tetap harus verifikasi ponsel. Pengalaman terakhir jika langkah terakhir tidak dilakukan, beberapa teman jadi gagal mengirim pesan.

Beberapa aplikasi seperti Kindle memiliki sifat yang mengesalkan ketika kita reset HP. Semua data kita di cloud, tapi jika kita tidak melakukan “deregister device” sebelum reset HP, maka HP tersebut akan tercantum di cloud dua kali. Masalahnya adalah jika ada konten yang jumlah copynya dibatasi maka itu tetap terhitung di device yang sudah direset tadi. Jika terlupa deregister, solusinya adalah ke situs Amazon dan menderegister device dari cloud.

Sebagian besar game bisa menyimpan data di cloud (dan tersedia API-nya untuk Android dan iOS). Tapi ada game-game yang butuh backup manual seperti Pokemon Quest, Magicarp Jump,  dan Layton Mystery Journey. Game-game ini sifatnya cross platform (misalnya Pokemon Quest juga tersedia di Nintendo Switch), jadi mereka butuh sistem backup yang custom.

Terakhir ada kategori aplikasi yang memang nyebelin karena tidak memiliki fitur backup dan harus disetup manual. Untuk Android jika HP awal dan tujuan diroot maka program tertentu (misalnya Titanium Backup) bisa membackup datanya. Saat ini saya me-root ponsel biasanya setelah sebulan dipakai karena pernah 2 kali mengalami HP rusak tiba-tiba padahal baru dibeli.

Secara umum restore backup ponsel sudah lebih mudah dari jaman dulu, tapi masih banyak yang bisa diperbaiki di masa depan.

Ball Lightning dan trilogi The Three-Body Problem

Beberapa hari yang lalu buku Ball Lightning versi bahasa Inggris akhirnya diterbitkan dan dengan cepat saya selesaikan. Buku ini aslinya ditulis tahun 2004 oleh Liu Cixin dan bisa dibilang sebagai prequel dari  trilogi The Three-Body Problem yang sudah diterjemahkan duluan beberapa tahun yang lalu.

Dari dulu ingin menulis mengenai trilogi ini, tapi selalu ditunda, nah dengan adanya buku yang baru terbit ini, ada alasan untuk menulis seri ini.  Saya akan menyampaikan pendapat saya, dengan sedikit kutipan cerita yang semoga tidak menjadi spoiler (anggap saja seperti menonton trailer film). Semua buku ini saya baca secara elektronik di Kindle.

Hampir semua buku science fiction yang saya baca, terutama dalam kategori Hard science fiction (kategori sci-fi dengan penekanan pada akurasi sains) berasal dari negara barat. Buku seri trilogi The Three-Body Problem ini buku scifi pertama yang saya baca yang asalnya dari negeri China. Saya tidak bisa membaca dalam bahasa aslinya untungnya terjemahannya menurut saya sangat bagus, setidaknya tidak membuat saya bingung.

Biasanya buku scifi lain akan berfokus pada segala sejarah, teknologi dan lembaga yang ada di Amerika atau Eropa, tapi buku ini fokusnya adalah China. Hal ini saja sudah cukup membuat buku ini menarik, tapi scifi-nya juga sangat menarik dari berbagai sudut pandang.

Bagian pertama buku pertama (bab 1-3) memang agak membosankan dan kurang terasa aura buku scifi sampai akhir bab 3. Ceritanya di awali dengan masa Cultural Revolution di China dan menjadi pengantar pengembangan karakter. Tapi setelah melewati bagian ini ceritanya menjadi sangat menarik.

Judul buku ini dari masalah fisika: three-body problem, menentukan posisi dan gerakan 3 benda jika diketahui informasi awal (massa, kecepatan, dan posisi) benda-benda tersebut dengan menggunakan hukum Newton. Ini berhubungan erat dengan bagian dari cerita, mengenai peradaban alien yang tinggal di tata surya dengan 3 matahari, dan mereka memiliki masalah karena tidak bisa meramalkan posisi ketiga matahari tersebut.

Dari sudut pandang ilmu komputer, akurasi buku ini sangat baik. Ini wajar karena penulisnya adalah seorang computer engineer. Contohnya di buku pertama (The Three-Body Problem) dia menggambarkan sebuah komputer yang terdiri dari banyak prajurit. Ini cuplikan dari buku pertama di mana John Von Neuman bertemu Qin Shi Huang:

Von Neumann turned to the three soldiers again. “Let’s form another component. You, Output: if you see either Input 1 or Input 2 raise a black flag, you raise the black flag. There are three situations where that will be true: black-black, white-black, black-white. When it’s white-white, you raise the white flag. Understand? Good lad, you’re really clever. You’re the key to the correct functioning of the gate. Work hard, and the emperor will reward you! Let’s begin operation. Raise! Good, raise again! Raise again! Perfect. Your Imperial Majesty, this component is called an OR gate.”

Then, Von Neumann used the three soldiers to form a NAND gate, a NOR gate, an XOR-gate, an XNOR-gate, and a tristate gate. Finally, using only two soldiers, he made the simplest gate, a NOT gate, or an inverter: Output always raised the flag that was opposite in color from the one raised by Input.

Von Neumann bowed to the emperor. “Now, Your Imperial Majesty, all the gate components have been demonstrated. Aren’t they simple? Any three soldiers can master the skills after one hour of training.”

“Don’t they need to learn more?” Qin Shi Huang asked.
“No. We can form ten million of these gates, and then put the components together into a system. This system will then be able to carry out the calculations we need and work out those differential equations for predicting the suns’ movements. We could call the system… um…”
“A computer,” Wang said.

Dari sudut pandang computer security, buku kedua cukup menarik: apa yang harus dilakukan jika pihak musuh punya teknologi untuk memonitor semua aksi kita tidak peduli di mana kita berada dan teknologi komunikasi kita, tapi tidak mengetahui niat kita.

Meskipun bukunya banyak bercerita tentang sains dan teknologi, tapi cerita mengenai aspek manusianya juga sangat banyak (ada kisah cintanya juga). Bagaimana bumi akan bereaksi kalau ternyata alien itu nyata? buku ini mencoba menggali aspek sosialnya tidak hanya teknologinya.

Meskipun ditulis pertama, tapi buku Ball Lightning diterjemahkan belakangan. Seharusnya terjemahan bukunya selesai tahun lalu, tapi tertunda hingga baru dirilis beberapa hari yang lalu. Buku ball lightning ceritanya cukup menarik, tapi menurut saya tidak terlalu berhubungan dengan buku-buku berikutnya.

Ada karakter yang muncul di buku berikutnya dan ada kejadian yang berhubungan, tapi teknologi yang ada tidak dipakai di buku trilogi The Three-body Problem. Menurut saya buku Ball Lightning ini menarik tapi ceritanya tidak sedalam The Three-Body problem.

Demikian ulasan buku Trilogi Three-Body Problem. Semoga banyak yang tertarik untuk membaca bukunya, karena sepertinya film yang sudah direncanakan belum jadi juga.  Kalau belum tertarik juga, mungkin pujian dari Barack Obama ini bisa membantu memutuskan:

What are some of those books?

It’s interesting, the stuff I read just to escape ends up being a mix of things — some science fiction. For a while, there was a three-volume science-fiction novel, the “Three-Body Problem” series —

Oh, Liu Cixin, who won the Hugo Award.

— which was just wildly imaginative, really interesting. It wasn’t so much sort of character studies as it was just this sweeping —

It’s really about the fate of the universe.

Exactly. The scope of it was immense. So that was fun to read, partly because my day-to-day problems with Congress seem fairly petty — not something to worry about. Aliens are about to invade

Oh iya, selagi menunggu buku Ball Lightning ini, saya sempat membaca juga The Wandering Earth yang merupakan koleksi cerpen dari penulis yang sama. Cerita-ceritanya bervariasi, ada yang menarik, dan ada juga yang membosankan tapi secara keseluruhan cukup menarik.