USB Rubber Ducky adalah nama produk dari Hack5, bentuknya seperti USB biasa, tapi sebenarnya mengemulasikan keyboard. Ketika dicolok ke USB, benda ini akan bisa mengetikkan berbagai perintah dan menekan shortcut secara otomatis. Benda ini sudah dijual sejak belasan tahun yang lalu, di kalangan security sudah sangat dikenal, dan bisa dipakai untuk bagian dari pentesting ataupun red teaming.
Saya baru menyadari bahwa banyak orang di luar security yang belum kenal benda ini, padahal USB Rubber Ducky ini bisa berguna sekali untuk otomasi setup komputer. Di posting ini saya akan bercerita tentang otomasi yang belum lama saya lakukan di IOI 2022 untuk mensetup laptop untuk perlombaan.
Dalam tulisan ini saya akan membahas UEFI (Unified Extensible Firmware Interface) dari mulai dasarnya, securitynya, dan sekilas cara reverse engineeringnya, dan hal-hal apa yang perlu diperhatikan ketika berurusan dengan UEFI (misalnya ketika melakuan cloning komputer).
Meskipun tulisan ini cukup panjang, tapi ini hanya perkenalan saja. Ada banyak topik yang tidak saya bahas. Ada beberapa topik yang penjelasannya saya sederhanakan sehingga mungkin kurang akurat. Silakan baca berbagai website yang saya link dari artikel ini jika ingin mendapatkan penjelasan lebih dalam. Jika ingin belajar langsung dari sumbernya, spesifikasi UEFI dan source code dari Intel bisa dibaca.
Secara awam UEFI adalah pengganti BIOS (Basic Input Output System). BIOS sendiri adalah software yang sudah tertanam di komputer yang menyediakan akses dasar ke hardware. Sebagai informasi: BIOS hanya ada di arsitektur x86, sedangkan di arsitektur lain, fungsi BIOS ini digantikan oleh software lain. Software low level yang menempel ke hardware ini disebut juga sebagai firmware.
Ketika sebuah komputer dinyalakan, perlu ada firmware yang bisa meload sistem operasi dari suatu media, entah itu dari disk (macam-macam, bisa flash disk, micro sd, harddisk, SSD, NVME, dsb) dari network, atau mungkin dari sumber lain. Di dunia PC, firmware ini dulunya adalah BIOS, tapi sudah belasan tahun ini digantikan oleh UEFI.
Sedikit Sejarah
BIOS untuk x86 usianya sudah sangat tua (dari jaman PC XT), dan memiliki banyak keterbatasan (misalnya hanya bisa berjalan di mode 16 bit). Jadi untuk sistem operasi 32 atau 64 bit, boot loader atau sistem operasi perlu beralih mode dari 16 ke 32/64 bit setelah diload oleh BIOS.
Saya dulu pernah membuat sendiri OS sederhana dari nol, dan proses bootnya cukup panjang: mengimplementasikan kode MBR (yang otomatis diload oleh BIOS, ukurannya maksimal 512 byte), yang akan meload boot loader (memanggil fungsi/interrupt BIOS untuk mengakses disk), lalu boot loadernya meload kernel, switch ke mode 32 bit, lalu baru melakukan jump ke mode 32 bit. Detail proses booting klasik bisa dibaca di sini.
Saat ini kebanyakan gadget elektronik bisa memiliki umur yang panjang, dan biasanya masalah utamanya adalah batere. Kadang batere menjadi menggelembung, atau kadang baterenya tiba-tiba mati. Saat ini sebagian batere bisa mudah dicari gantinya, dan proses penggantiannya juga kadang tidak sulit.
Sudah beberapa kali saya mengalami masalah pada batere, baik itu di ponsel atau di gadget yang lain. Batere Lithium ini memang rawan bisa tiba-tiba mati, atau menggelembung. Jika mengalami masalah seperti ini sebaiknya jangan gunakan devicenya, terutama jika menggelembung karena ada kemungkinan bisa meledak.
Raspberry Pi Pico adalah board microcontroller dari yayasan pembuat board mikrokomputer Raspberry Pi. Microcontroller yang dipakai di Pico adalah RP2040 yang dirancang oleh tim Raspberry Pi. Saya sudah langsung membeli board ini sejak diluncurkan, tapi belum sempat menuliskannya, dan memang baru akhir-akhir ini sempat ngoprek lebih jauh board ini.
Microcontroller RP2040 selain digunakan di Raspberry Pi Pico (selanjutnya saya sebut Pico saja supaya singkat) juga sudah digunakan di berbagai board lain. Di tulisan ini saya akan menuliskan Pico, untuk hal-hal yang spesifik Pico (misalnya ukuran Flash memory), dan RP2040 untuk hal-hal yang sama di semua board yang berdasarkan RP2040.
Ini cuma sekedar cerita: kadang instalasi sesuatu yang seharusnya sederhana bisa jadi rumit dan lama. Ini kisahnya tentang VMWare ESXi, sebuah Hypervisor dari VMWare. Penjelasan awamnya Hypervisor: ini seperti sebuah server khusus untuk menjalankan virtual machine.
Kalau kita menjalankan emulator VMware/VirtualBox/Parallel PC di Windows/Linux/Mac, ada sistem operasi utama (host) di mana kita menjelankan emulator dan ada sistem operasi yang kita install dalam VM. Sebuah hypervisor menggantikan peran sistem operasi, jadi hypervisor ini seperti sebuah OS sendiri yang hanya bisa menjalankan virtual machine.
Kenapa saya ingin menginstall ESXi? ada banyak alternatif sejenis seperti ProxMox, Xen, dsb. Saya ingin mempelajari lebih jauh karena saya lihat ESXi dipakai di banyak perusahaan. Berbagai lab pentest juga memakai solusi ini. Contoh: labnya Offsensive Security (yang mengeluarkan sertifikat OSCP, OSWE, dsb) juga memakai solusi ini.
Dari dulu saya belum pernah menginstall VMWare ESXi di hardware beneran (ESXi ini bisa diinstall di VMWare juga dengan nested virtualization). Tapi saya lakukan karena kebetulan ada hardware tersedia. Beberapa waktu lalu komputer yang dipakai Joshua sering error, jadi akhirnya Joshua diberi laptop lama Risna. Komputer dengan prosessor AMD ini setelah saya cek dengan memtest, ternyata salah satu keping memorinya error. Jadi saya belikan saja satu keping RAM lagi.
VMWare ESXi ini hanya disertifikasi untuk bisa berjalan di hardware dengan konfigurasi tertentu saja. Karena saya tadinya tidak merencanakan memakai komputer ini untuk ESXi, masalah mulai bermunculan.
Setelah tidak pulang beberapa tahun, rencananya saya akan pulang ke Indonesia bulan Juli. Saya jadi sadar bahwa banyak sekali hal yang sudah saya setup di sini, dan mungkin akan butuh akses berbagai komputer dan data saya dari Indonesia nanti.
Ada device/komputer yang ingin bisa diakses setiap waktu. Contohnya: saya ingin agar NAS saya tetap membackup data-data terbaru dari Internet ke harddisk lokal (agar tidak apa-apa jika terjadi kasus account diblok seperti yang pernah saya alami). Andaikan internet di Indonesia sangat lancar, mudah dan bisa diandalkan, saya mungkin hanya akan butuh sebagian server saya ini di sini (misalnya server backup saja).
Untuk komputer yang ingin agar selalu menyala, harapannya adalah:
Komputer selalu on
Komputer tidak hang
Ada beberapa komputer yang hanya dibutuhkan sesekali. Contoh kasusnya: komputer powerful dengan RAM besar yang punya GPU dan hanya dipakai sesekali untuk traning AI atau cracking password. Untuk ini yang diinginkan adalah:
bisa menyalakan komputer jika dibutuhkan
bisa mematikan komputer jika tidak dibutuhkan.
bisa troubleshooting jika ada masalah startup
Setting BIOS: After Power Loss
Jika listrik mati dan kemudian menyala lagi, kita ingin agar komputer otomatis menyala lagi. Cara paling sederhana yang tidak butuh modal ekstra adalah mengganti setting di BIOS. Nama settingnya agak berbeda di tiap BIOS: “After Power Loss”, “AC Power Recovery” dan sejenisnya, intinya adalah kita ingin agar jika power dicolok, komputer langsung menyala.
Setelah settingnya diaktifkan, coba cabut power dan colok lagi, seharusnya komputer akan langsung menyala. Perlu diperhatikan: kadang ini tidak selalu berhasil. Dua kegagalan yang pernah saya temui:
Ketika power ON/OFF berkali-kali dalam waktu singkat, kadang setting di komputer saya akan tereset menjadi off
Batere CMOS lemah dan setting BIOS ter-reset
Jika komputer yang dipakai adalah Windows, dan gagal boot berkali-kali (baru mulai booting lalu listrik mati lagi) maka kadang bisa gagal boot atau masuk ke safemode.
Uninterruptible Power Supply (UPS)
Supaya bisa tetap hidup walau mati listrik, ya tentunya menggunakan UPS. Dengan cara ini komputer saya sudah ada yang uptime-nya sampai lebih dari 500 hari.
Biasanya gabungan antara UPS dan setting BIOS sudah cukup untuk membuat komputer tetap menyala. UPS ini kapasitasnya terbatas, jadi hanya akan mengurangi kemungkinan komputer restart karena mati lampu sebentar. Jika UPS habis batere, lalu listrik menyala lagi, maka komputer otomatis hidup lagi dengan setting BIOS yang dijelaskan sebelumnya.
Tapi kemarin ketika hujan badai besar, listrik nyala dan mati berkali-kali (mungkin sampai 20 kali dalam waktu sangat singkat) dan hasilnya: UPS-nya sempat gagal juga dan komputernya restart berkali-kali.
Saya ingat waktu ke Medan dulu, mati listrik ini sering terjadi. Di sini saya lebih beruntung: sejak 2019, di komplek ini listrik tidak pernah mati lama. Terakhir kali di bulan Mei 2019 ada pemadaman 8 jam.
Jangan lupa kalau batere UPS juga punya batas usia. UPS saya merk APC bisa diakses statusnya dengan apcaccess. Ternyata kapasitas batere salah satu UPS saya sudah sangat sedikit, sehingga cepat sekali mati (padahal baru 2 tahun).
UPS yang agak mahal biasanya gampang diganti baterenya, sedangkan UPS murah sering kali semuanya disegel jadi sulit dibuka. Selain itu UPS murah juga tidak bisa dikalibrasi ulang setelah baterenya diganti (jadi UPS tidak tahu bahwa baterenya sudah baru).
LoRa merupakan teknologi proprietary untuk komunikasi radio jarak jauh yang butuh daya rendah (low power-wide area network). Nama LoRa sendiri singkatan dari “long range“. Di tulisan ini saya akan mempernalkan teknologi ini dan eksperimen yang sudah saya lakukan menggunakan LoRa.
LoRa dan LoRaWAN
LoRa merupakan protokol proprietary (artinya dimiliki perusahaan tertentu, bukan teknologi terbuka) tepatnya dimiliki oleh SemTech. Walau proprietary, tapi LoRa sudah didukung banyak perusahaan lain yang bergabung pada LoRa Alliance. LoRa hanya merupakan bagian standard modulasinya, sedangkan di layer atasnya ada yang namanya LoRaWAN (LoRa Wide Area Network). Di tulisan ini saya hanya membahas LoRa saja.
LoRa memiliki kecepatan rendah (hanya puluhan kilobit per second), jadi hanya cocok untuk mengirim data sensor atau teks singkat. LoRa tidak cocok digunakan mengirimkan data besar (misalnya gambar/video). LoRa memakai daya sangat rendah, sehingga device dengan batere bisa mengirim data selama beberapa tahun.