Chapter 10
Little Secret
Hack the Test
Disclaimer : Masashi Kishimoto
Pairing : SasuHina
Rated : T
Sasuke dan bootloader suda duduk sambil menghadap komputernya masing-masing. Waktu hitungan mundur tanda tes akan dimulai sudah menunjukkan satu menit lagi. Keduanya nampak menyeringai sambil memandang sinis layar komputer tersebut dengan seulas senyuman cool. Petugas yang saat ini sedang membicarakan peraturan tes tersebut pun tampak tidak dihiraukan oleh dua orang ini.
Mari kita lihat apa yang mereka berdua pikirkan.
Sasuke's POV
Yah...! Itulah kenapa mereka punya dua orang pemenang, karena inin bukanlah sebuah kontes individual. Ini adalah kontes kerjasama.
"Dan, sesama peserta tes tidak boleh saling bekerja sama" Huh...! Bohongmu sudah ketahuan. Kalo mereka berkata begitu, maka aku yakin sekali kalo mereka juga mengawasi gerak-gerik peserta yang bekerjasama. Aku tidak boleh ceroboh untuk bisa bekerja sama dengan bootloader.
Inti kerjasamanya adalah, untuk soal pertama ini, adalah Competitive Programming. Aku akan diberikan empat buah masalah matematis yang akan melibatkan programming dalam perhitunganku. Kemampuanku dan bootloader di bidang ini bisa dibilang sama rata, jadi dia pasti bisa mengerjakan secepat yang aku bisa.
Kemudian setelah itu, kami akan menerima filenya dan mulai meng-hack password untuk soal kedua, yang merupakan soal matematika diskrit. Nah...! Disini aku akan berbagi tugas dengan bootloader. Selama aku mengerjakan soal selanjutnya, bootloader akan mengamankan dan menambal kelemahan pada file yang diterimanya agar tidak mudah di-hack oleh orang lain.
Setelah aku selesai mengerjakan soal, dan bootloader selesai untuk mengamankan level agar peserta yang lain tidak bisa memasuki level selanjutnya, aku akan mengirimkan jawabanku pada bootloader dengan menggunakan sandi biner yang telah kami sepakati bersama sejak kecil. Dan kemudian kami akan kembali meng-hack level selanjutnya secara bersamaan.
"Sempurna...!" Gumam kami berdua bersamaan dengan tanda bahwa tes sudah dimulai. Kunci dari strategi satu ini adalah soal competitive programming ini sehingga aku harus cepat menyelesaikan keempatnya sebelum keduluan orang lain. Aku pun langsung membuka keempat soal online tersebut dalam empat tab yang berbeda dalam satu browser.
Soal pertama, menggunakan shortest paths, Dijkstra Algorithm dengan data structure graph
Soal kedua, Tree Traverse, dengan menggunakan heap
Soal ketiga, Dynamic Programming backward chaining
Soal keempat, Ad-hoc
Jangan bertanya bagaimana aku mendapatkan semua itu hanya dengan sekali lihat. Selama sebulan ini berlatih aku telah mendapatkan banyak sekali soal untuk praktek programmingku sehingga aku bisa menyebutkannya dengan hanya sekali lihat. Setelah berpikir sejenak solusi untuk keempatnya, aku pun mulai mengetik.
Ketik...! Ketik...! dan ketik...! Jangan sampai ada orang lain yang mendahuluiku untuk sampai ke tahap kedua. Bahkan tidak untuk bootloader, karena aku harus secepatnya menyelesaikan soal ini sebelum bootloader mengamankan level kedua.
Dalam waktu sekitar satu jam aku sudah berhasil menyelesaikan empat soal tersebut. Sikuku pegal karena terus-terusan mengetik tanpa henti. Dan sekarang, aku mendapatkan sebuah file aplikasi beserta source codenya.
Dengan cepat, aku pun membuka file aplikasi tersebut yang ternyata adalah file untuk menampilkan jam digital waktu di GMT. Hanya itu? Yah...! Dengan aplikasi 'jam' tersebut, aku harus membaca password yang disimpan di server. Bukankah itu merepotkan?
Tapi, tunggu dulu. Untuk bisa menunjukkan jam, maka kita harus menghubungi server dulu kan? Dalam library tidak ada variabel yang bisa menunjukkan nilai jam, kecuali dia meminta waktunya ke server. Berarti, aku bisa memodifikasi supaya dia tidak meminta informasi waktu ke server, melainkan meminta file password.
Cara untuk meminta informasi jam ke server adalah dengan menggunakan aplikasi sistem 'date' yang berada di folder '/bin'. Tapi, dairmana dia tahu kalo file date itu berada di folder '/bin'?
"Yah...! I get it" Gumamku ketika aku tahu jawabannya. Aku pun langsung beraksi begitu mengetahui rahasia dari file 'jam tersebut'.
User Environment Variabel. Ketika kita meminta aplikasi sistem, dan tidak menyertakan foldernya, maka sustem akan menganggap aplikasi tersebut ada di dalam '/bin'. Sekarang kita akan membuat folder tersendiri dengan nama '/tmp' dan membuat aplikasi 'date' milik kita sendiri untuk meminta password, bukan meminta informasi jam.
Setelah itu, aku akan mengganti environment variabel nya dengan '/tmp' dan menjalankan aplikasi yang di berikan server tersebut kembali.
Aplikasi tersebut akan mencari aplikasi sistem bernama 'date' yang disimpan di folder '/bin', tapi karena user environment variabel nya sudah ku set menjadi '/tmp', maka aplikasi tersebut akan mencari aplikasi 'date' tersebut di folder '/tmp' yang sudah kusiapkan sebelumnya untuk meminta password.
Kenapa aku tidak membuat aplikasi untuk meminta password saja? Nampaknya server sudah mengatur supaya yang bisa meminta informasi hanyalah aplikasi yang tadi di berikan oleh server, bukan buatan para peserta.
"Yes...!" Gumamku dengan semangat yang tertahan ketika melihat password tersebut muncul di layarku. Aku pun segera memasukkan password tersebut dan kemudian memasuki soal selanjutnya, matematika diskrit.
Tampaknya bootloader juga sudah selesai dengan hackingnya. Aku pun segera mengerjakan soal matematika diskrit yang satu ini. Matematika diskrit merupakan soal yang cukup mudah untuk dikerjakan, selain itu 'transmisi' ke bootloader lebih gampang karena jawabannya singkat sehingga mudah untuk mengirim jawabannya lewat sandi biner.
Aku belum menjelaskan soal sandi biner ya? Itu adalah sandi yang aku ciptakan bersama dengan bootloader waktu masih kecil dulu. Kami bisa mengirimkan sandi ini melalui apa saja, tapi untuk saat ini mungkin aku akan mengirimkan sandinya lewat ketukan. Dalam waktu sembilan detik, aku akan mengetuk beberapa kali. Dalam satu detik, jika aku mengetuk sekali, itu artinya angka 1, jika tidak mengetuk itu artinya angka 0.
Jangan bertanya bagaimana kami berdua bisa mengetahui waktu dan timing yang tepat, aku selalu bisa mengirimkan sandi tersebut pada bootloader disaat genting.
Dalam komputer ada delapan bit untuk setiap data, jika aku mengetuk pada bit ke-9 berarti delapan bit sebelumnya adalah kode. Jika tidak mengetuk, berarti 8-bit sebelumnya adalah data. Setelah itu akan ada jeda beberapa detik. Sama seperti morse, bahkan lebih sulit karena tidak semua orang mengerti bahasa biner.
Aku menyelesaikan soal matematika diskrit dalam waktu kurang dari tiga puluh menit dan mengirimkan jawabannya pada bootloader sebelum kami berdua fokus pada hacking level selanjutnya. Untuk hacking soal ketiga ini tidak menggunakan aplikasi, melainkan sebuah halaman web.
Seperti biasa, kita disuruh untuk meng-hack halaman web tersebut untuk mendapatkan password yang ada di server. Aku pun membuka halaman web tersebut dan kemudian dihadapkan pada layar login. Aku pun mengetikkan password sembarang dan kemudian menekan tombol login. Beberapa saat kemudian muncullah halaman kosong melompong yang hanya berisi tombol logout.
"Nih website cuman becanda kali ya" Gerutuku sambil sedikit menggaruk kepalaku melihat web 'aneh' dari server tersebut. Aku pun me-reloadnya beberapa kali, tapi tombol yang muncul cuman itu doang.
"Are...?" Gumamku entah pada siapa. Bila, di reload, harusnya yang muncul adalah halaman login baru. Jika begini, harusnya ada sesuatu yang disimpan dalam komputerku. Artinya, passworku tadi di kirim ke server, server kemudian mengirimkan cookie kepadaku berdasarkan password milikku tadi. Dan, karena aku tadi mengirimkan password acak, maka yang diambil adalah file acak sehingga tidak ada isinya.
Jika begini, maka mudah saja. Tinggal cari di source code, bagaimana caranya si server mengirimkan filenya dan kemudian mengambilnya dengan sah. Baiklah, aku akan melihat source code nya.
Dan beberapa saat kemudian, aku pun mendapatkan password tersebut dan kemudian mengirimkannya untuk mendapatkan password level ketiga. Aku langsung kearah soal selanjutnya.
Kali ini bukan soal yang menungguku, tapi Game Simulation. Aku langsung disambut dengan suara sniper yang sudah siap menembakkan pelurunya kearah kepala musuh. Hahah...! Pasti si bootloader sangat kesulitan dengan game ini karena dia sangat melankolis. Aku pun menjalankan game tersebut.
Nampaknya game ini adalah sebuah maze dan dibeberapa belokan akan terdapat sebuah ranjau yang bila dilewati, akan muncul segerombolan musuh yang langsung menyerangnya. Nampaknya Fuuma Corp. ingin mengetes kecepatan refleks mouse dan keyboard untuk bisa bekerja didepan komputer dengan efisiensi waktu dan juga tenaga yang tepat.
Tapi, kurasa bootloader tidak akan menjadi masalah. Karena selama dia mengurus masalah security file web barusan, aku akan selalu keep track tentang dimana ranjau monster tersebut akan muncul di dalam map. Bila aku sudah selesai dengan game ini, aku akan memandu bootloader dengan menggunakan sandi biner. Kali ini, L (11010111) untuk kiri dan juga R (11100011) untuk kanan.
"Kill...! Kill...! Double kill...! Triple kill...! Chain killer...!" Kataku sambil membantai musuh-musuh yang bermunculan di dalam map tersebut. Selain dengan sniper, nampaknya tokoh ini juga membawa pisau, sehingga efek pembunuhannya makin kerasa. Cipratan darah para musuh tersebut melumuri layar monitorku, dan nampaknya hal itu malah menambah semangat bermainku.
Kurasa game ini benar-benar membuat seseorang menjadi sadis secara tidak sadar.
Setelah game tersebut selesai dan bootloader sudah kupandu supaya tidak menginjak ranjau, kini tiba waktunya untuk soal hacking terakhir.
Karena soal yang terakhir ini adalah Interface designing, maka bootloader tidak akan bisa mencontekku. Oleh karena itu, kami akan mengerjakan dalam waktu bersamaan sehingga dia tidak mengurusi masalah security lagi. Artinya, soal hacking yang satu ini jauh lebih sulit daripada dua hack sebelumnya.
"Sialan...! Root Web server" Geramku dengan tangan yang hampir saja menggebrak meja. Hacking yang satu ini adalah hacking sebuah server dengan melalui perantara web. Kudengar bootloader juga mendesah di sampingku melihat hacking yang cukup sulit tersebut. Baiklah...! Baiklah...! Aku harus tetap tenang untuk yang satu ini. Waktuku masih banyak (sekitar dua jam lagi), aku harus berkonsentrasi.
"Let's rock" Kataku untuk memberi semangat pada diriku sendiri sambil membuka sebuah aplikasi untuk mengetik kode. Ini cukup merepotkan, tapi aku tahu harus berbuat apa untuk sekarang.
Baiklah, proses pertama, aku akan mengeksploitasi shell execute yang ada di web server dengan menggunakan salah satu exploit terkenal. Karena aku tidak bisa mendownload exploit tersebut, maka aku akan membuatnya dengan logikaku sendiri.
Pertama, kill proses server untuk melindungi shell dan membuat 'fork' untuk spawn shell sehingga aku bisa mengendalikan komputer server. Karena aku harus membuat 'fork', maka sistem server haruslah Linux. Maka, untuk membuat shellcode nya aku harus menggunakan syntax AT&T (ini bukan merk sepatu lho...!).
Baiklah, aku pun mulai mengetik beberapa code yang sejak tadi kupikirkan. Suara gemertak keyboard nampak sebagai lagu yang indah di kepalaku, meskipun saat ini yang kupikirkan hanyalah bagaimana cara untuk menembus root dalam sistem tersebut. Beberapa saat kemudian, kode milikku pun jadi dan langsung saja aku coba untuk spawn shell di web server tersebut melalui port 443 (port SSH). Port 443 merupakan port yang biasa dibuka sehingga tidak mungkin dicurigai.
"Sukses...!" Pekikku senang. Inilah kasyikan dari hacking dan juga menjadi detektif, ketika kamu sukses menjebol pertahanan (baik komputer maupun trik yang dipakai pembunuh) kau akan merasakan kesenangan yang amat sangat mendalam meskipun kau tidak mendapatkan apa-apa.
Kudengar bootloader tampak mendesah frustasi mendengar pekikanku barusan. Sekarang, aku bisa mengakses semua file user dalam komputer server. Tetapi, masalah selanjutnya adalah, file password untuk masuk ke soal selanjutnya itu adalah file sistem, sehingga perlu akses yang lebih tinggi yaitu root untuk membukanya. Selain itu, nampaknya web server itu sekarang sudah curiga dan sedang men-scan orang yang menyusupinya. Paling lama aku hanya bisa bertahan dalam mode ini selama lima belas menit. Jika dalam tenggang waktu itu bootloader tidak bisa melakukan seperti apa yang kulakukan, port 443 pasti akan tertutup oleh firewall. Dan, tidak akan ada kelemahan remeh seperti itu lagi.
"Opcode menyebalkan" Kataku ketika mencoba untuk memasuki root dan mendapati banyak sekali angka 1 dan 0 yang sangat mengesalkan untuk dibaca. Membuat shellcode tidak bisa dilakukan dalam waktu singkat, kita harus men-dissasemble berkali-kali sebelum membuat shellcode. Dan bahasa dissasemble itu selalu bikin perut mual dan berasa ingin muntah.
"Break point disini, sini, sini, kurasa cukup" Gumamku sambil dengan cepat menandai sesuatu untuk diperiksa ketika akan menjalankan shellcode. Baiklah, saatnya mencoba shellcode ini. Jika berhasil, mungkin aku harus segera menemukan passwordnya dan lanjut ke level berikutnya.
"Yes...! Rootshell" Gumamku ketika aku sudah berhasil memasuki root server. Sekarang, aku sudah berada di tingkatan tertinggi web server tersebut. Terserah aku mau berbuat apa, mau mengubah score, memformat hardisk dll. Tapi, kepentinganku sekarang adalah passwor itu, para panitia pasti tahu kalo aku sudah menyusup ke servernya. Salah sedikit pada server, aku akan di diskualifikasi.
"Baiklah...! Tinggal satu bagian lagi"
TBC
Waduh...! Gimana nih tesnya Sasuke? Menegangkan atau malah bikin pusing saat baca? Pasti bosan yah baca sesuatu yang tidak dimengerti? Author kasih bonus satu chapter lagi deh.
Dua soal hacking yang pertama itu adalah stripe CTF, sebuah wargame tentang hacking sekitar tahun 2011-2012. Ada 6 level, tapi author cuman bisa 2 level doang. Level lainnya malah bikin pusing.
Soal yang terakhir itu, sedikit pengalaman author soal hosting web. Bagi para reader yang suka bikin web pasti tahu. Web yang kita bikin harus meng-upload web tersebut ke sebuah hosting supaya bisa di lihat oleh orang sedunia.
Biasanya kalo orang yang kantongnya kempis (kayak author ini), akan memilih paket yang 'free plan' untuk buat web (yah...! Kan cuman hobi doang, gak usah ribet sama uang deh). Kebanyakan yang 'free plan' itu tidak bisa mendapatkan akses SSH. Tapi dengan menggunakan webshell kayak Sasuke diatas kita bisa dapet akses SSH meskipun dengan 'free plan' (itu zaman author masih SMP dulu, sekarang gak tahu masih bisa ato enggak).
Yah...! Mungkin kalo dilihat-lihat kayanya mudah banget ya, meng-hack suatu web, mendapatkan password, mencuri file dll. Tapi, mungkin itu disebabkan karena sistem yang tidak update. Yah...! Mungkin karena adminnya malas, file updatenya kegedean, atau pemikiran 'palingan sama saja' dll (sebenernya author juga jarang update sistem). Kalo sistemnya benar-benar update, maka hal seperti itu akan sangat sulit terjadi.
Kok jadi curhat? Heheh...! Anyway, kita lanjut aja deh chapter selanjutnya. Chapter selanjutnya, date Sasuke dan Hinata. Soalnya, Sasuke kan udah janji bakalan perhatian sama Hinata kalo tesnya udah selesai.
Apakah kerjasama bootloader dan Sasuke dalam tes ini akan terendus oleh Firmware AMI? Apakah Hinata mampu menemukan seseorang yang meng-hack server Fuuma Corp?
Happy Read
