DDos Attack
Pengertian
DDoS Attack
Dalam artikel ini kelompok kami akan
menjelaskan mengenai jenis serangan yang bisa dikatakan tidak ada obatnya,
yaitu denial of service atau DoS. Bila
serangan DoS ini dilakukan secara beramai-ramai dan terorganisir dengan baik,
maka akan menghasilkan kerusakan yang dahsyat dan sanggup melumpuhkan
situs-situs populer seperti twitter.com dan metasploit.com.
Apa itu DoS
Denial of service adalah jenis serangan
yang tujuannya adalah mencegah pengguna yang sesungguhnya menikmati layanan
yang diberikan server. Server sesuai namanya adalah pelayan yang harus selalu
siap melayani permintaan pengguna, yang umumnya beroperasi 24 jam tanpa henti.
Contohnya adalah web server yang bertugas
melayani pengunjung web menyediakan informasi dalam bentuk halaman html. Dalam
kondisi normal, pengunjung dapat meminta resource dari web server untuk
ditampilkan dalam browsernya, namun bila web server terkena serangan DoS maka
pengunjung tidak bisa menikmati layanan web server.
Secara umum ada 2 cara melakukan
serangan DoS:
1. Mematikan Server
2. Menyibukkan Server
·
Tanpa
bug/vulnerability
·
Meng-exploit
bug/vulnerability
DoS dengan Mematikan Server: Kill
Them!
Anda pernah mengalami ingin memakai
telepon umum atau ATM namun tidak bisa karena di mesin tersebut ditempel kertas
berisi pesan “Out of Service” atau “Sedang dalam perbaikan”. Telepon umum adalah
target serangan DoS yang biasa terjadi, dimana-mana kita menemukan telpon umum
yang rusak karena serangan DoS seperti membanting gagang telpon, mencabut kabel, memecahkan LCD dan
aksi-aksi lainnya.
Tujuan serangan ini adalah membuat
server shutdown, reboot, crash, “not responding”. Jadi
serangan ini menghasilkan kerusakan yang sifatnya persisten artinya kondisi DoS
akan tetap terjadi walaupun attacker sudah berhenti menyerang, server baru
normal kembali setelah di-restart/reboot.
Bagaimana cara serangan DoS ini
dilakukan? Serangan ini dilakukan dengan meng-exploit bug/vulnerability pada
server. Kata kunci pada vulnerability jenis ini biasanya adalah
“specially/carefully crafted packet/request”, yang artinya paket yang dirancang
khusus. Kenapa dirancang khusus? Sebab dalam paket itu mengandung sifat
tertentu yang membuat server mati ketika mengolah paket khusus itu.
Mari kita perhatikan beberapa contoh
vulnerability yang berakibat pada DoS attack:
Ini
adalah jenis bug yang sudah sangat tua. Praktis sudah tidak ada lagi sistem
yang vulnerable terhadap bug ini. Bug ini bila diexploit akan membuat server
crash, freeze atau reboot. Serangan ini dilakukan dengan mengirimkan “specially
crafted” paket berupa oversized ICMP packet, yaitu paket yang ukurannya di
atas normal. Ketika server menerima dan memproses paket yang “aneh” ini, maka
server akan crash, freeze atau reboot. Ini adalah contoh serangan DoS “one shot
one kill” karena bisa merusak server hanya dengan satu tembakan saja.
Bug ini akan membuat
mysql server menjadi crash hanya dengan mengirim sql khusus yang mengandung
fungsi IF() contohnya: “SELECT id from example WHERE id IN(1, (SELECT
IF(1=0,1,2/0)))”. Ini juga jenis serangan “one shot one kill”.
Bug
ini membuat DNS server Cisco mati dengan
mengirimkan beberapa “specially crafted” paket request DNS dalam urutan
tertentu.
Tiga contoh di atas kiranya cukup
memberikan gambaran tentang bagaimana serangan DoS jenis ini dilakukan. Pada
intinya adalah attacker memanfaatkan (baca:mengexploit) bug yang membuat server
berhenti bekerja dan biasanya dilakukan sendirian secara remote dengan
mengirimkan specially crafted packet.
DoS dengan Menyibukkan Server: Make
Them As Busy As Possible!
Pada waktu menjelang lebaran kita
sering merasa begitu sulit mengirim sms, bahkan sering terjadi gagal kirim.
Begitu juga ketika berlangsung acara kuis di TV, mengelpon ke nomor untuk
menjawab kuis terasa begitu sulit. Hal ini terjadi karena ada begitu banyak
orang yang mengirim sms pada saat lebaran dan menelpon pada waktu kuis sehingga
membuat jaringan telekomunikasi menjadi begitu sibuk sampai tidak bisa melayani
pengguna lain. Peristiwa itu mirip dengan yang terjadi ketika sebuah server
mendapat serangan denial of service. DoS yang terjadi pada peristiwa tersebut
bukan jenis DoS yang mematikan server, namun jenis DoS yang menyibukkan server.
Jenis DoS ini bersifat sementara,
server akan kembali normal bila attacker berhenti mengirimkan request yang
membuat sibuk server.
DoS jenis ini terbagi lagi menjadi 2
jenis berdasarkan cara melakukan serangan:
·
Exploiting
vulnerability: Menyerang dengan malicious request/packet
·
No
vulnerability exploitation: Menyerang dengan normal request/packet
Membuat server sibuk dengan
mengexploitasi vulnerability lebih cepat daripada tanpa mengeksploit
vulnerability.
Make Server Busy by Exploiting
Vulnerability
Dalam serangan DoS jenis ini, attacker
memanfatkan bug yang membuat server berlebihan dalam menggunakan resource (cpu,memory,disk
space dsb). Attacker akan mencari cara bagaimana agar membuat server bekerja
ekstra keras (jauh lebih keras dari request normal) untuk melayani request dia.
Biasanya serangan DoS jenis ini tidak berupa serangan “one shot one kill”.
Serangan dilakukan dengan melakukan banyak request dengan setiap request
membuat server mengonsumsi lebih banyak resource dari request yang normal.
Dalam hitungan matematika sederhana,
bila attacker bisa membuat server bekerja selama 10 detik hanya untuk
melayani dia (misal normalnya 0,1 detik), maka attacker bisa mengirimkan
request 1.000x untuk membuat server melayani dia selama 10.000 detik (2,7 jam
lebih) sehingga membuat pengguna lain tidak bisa menikmati layanan server.
Untuk lebih memahami DoS jenis ini, mari
kita lihat contoh-contoh vulnerability yang bisa diexploit untuk melancarkan
serangan DoS jenis ini:
Ini
adalah serangan DoS yang sudah sangat tua. Attacker menyerang dengan cara
membanjiri server dengan malicious request berupa paket SYN dengan fake source
IP address. SYN packet adalah paket dari client yang mengawali terbentuknya
koneksi TCP/IP, setelah itu server akan membalas dengan SYN-ACK, dan dilengkapi
dengan paket SYN-ACK-ACK dari client, tiga proses ini disebut three way
handshake.
Triknya
adalah pada fake source ip address pada paket SYN dari client. Akibatnya server
akan mengirim SYN-ACK (step 2) ke ip address yang salah sehingga server juga
tidak akan mendapatkan balasan SYN-ACK-ACK dari client. Padahal untuk setiap
client yang mencoba membuka koneksi, server akan mengalokasikan resource
seperti memori dan waktu untuk menunggu datangnya balasan ACK dari client.
Dengan cara ini attacker menghabiskan resource server hanya untuk melayani
request palsu dari attacker.
Apache
menggunakan mod_deflate untuk memampatkan file. Bila visitor meminta sebuah file,
maka apache akan menggunakan mod_deflate untuk memampatkannya kemudian
mengirimkan ke visitor tersebut. Namun bila di tengah proses pemampatan,
visitor memutuskan koneksi TCP, Apache masih terus bekerja memampatkan file
untuk visitor yang sebenarnya sudah tidak ada (sudah disconnect). Jadi bugnya
adalah pada borosnya pemakaian resource cpu untuk memampatkan file untuk client
yang sudah tidak ada.
Attacker
memanfaatkan kelemahan ini dengan meminta sebuah file yang berukuran besar,
kemudian dalam waktu singkat memutuskan koneksi sehingga membuat server bekerja
keras mempatkan file untuk visitor yang sudah tidak ada. Request ini diulang
berkali-kali sampai server begitu sibuknya dan semua resource cpu habis.
Dua contoh vulnerability di atas cukup
menjelaskan bagaimana serangan DoS jenis ini dilakukan. Pada intinya adalah
dengan mengirim banyak malicious request/paket yang membuat server
mengonsumsi resource lebih banyak dan lebih lama untuk setiap requestnya.
Make Server Busy Without Exploiting
Vulnerability
Ini adalah jenis serangan yang
mengandalkan pada kemampuan mengirimkan normal request sebanyak-banyaknya
sehingga server menjadi sibuk. Perbedaan DoS jenis ini dengan DoS yang
mengexploit vulnerability adalah pada requestnya. Request yang dikirimkan pada
DoS jenis ini adalah request yang normal seperti yang dilakukan pengguna biasa,
sehingga server tidak mengonsumsi resource berlebihan. Sedangkan DoS yang
mengandalkan vulnerability mengirimkan specially crafted malicious request
untuk membuat server mengonsumsi resource lebih banyak untuk melayani malicious
request tersebut.
Normal request hanya membuat server
mengonsumsi resource dalam jumlah biasa-biasa saja, tidak akan mengganggu kerja
server secara keseluruhan. Diperlukan normal request dalam jumlah yang sangat
banyak untuk membuat server terganggu kerjanya. Jadi agar serangan ini menjadi
efektif, maka serangan harus dilakukan beramai-ramai dari banyak tempat,
semakin banyak penyerang semakin bagus hasilnya. Serangan ini juga disebut
dengan distributed DoS (DDoS) karena dilakukan dari banyak lokasi yang
terdistribusi (tersebar).
Serangan DDoS dilakukan dengan
menggunakan komputer zombie atau robot. Zombie adalah komputer yang sudah
dikuasai attacker sehingga bisa dikendalikan dari jarak jauh. Sekumpulan komputer
zombie membentuk jaringan yang disebut bot-net. Attacker mendapatkan banyak
zombie dengan menyebarkan virus atau worm, setiap komputer yang terinfeksi akan
diinstall program yang membuat komputer bersedia menjalankan perintah dari
attacker.
Courtesy
of: www.dos-attack.net
Gambar di atas menjelaskan cara kerja
DDoS. Attacker memberi perintah kepada semua pasukannya untuk membuat request
HTTP ke sebuah website. Bila pasukan yang dikuasai attacker sangat besar, maka
web server akan dibanjiri request sehingga menjadi terlalu sibuk dan tidak bisa
diakses oleh pengguna yang sebenarnya (real visitor).
Serangan jenis ini tidak ada obatnya
karena attacker tidak meng-exploit bug atau vulnerability apapun. Bila pada
jenis DoS yang lain, serangan dapat dicegah dengan melakukan patching atau
update software, maka serangan ini tidak bisa dihentikan dengan update atau
patch.
Kesimpulan
Denial of service adalah serangan yang
membuat server tidak bisa melayani pengguna yang sesungguhnya. Berikut adalah
jenis-jenis serangan DoS berdasarkan cara melakukan serangan:
·
Mematikan
Server: one shot, one kill untuk membuat server menjadi crash, hang, reboot.
·
Menyibukkan
Server: mengirim banyak sekali request untuk membuat server sibuk.
·
Exploiting
bug: mengirim banyak specially crafted request. Jumlah request tidak sebanyak
jenis DoS yang menyibukkan server dengan normal request.
·
Normal
request: mengirim banyak request normal seperti pengguna biasa. Diperlukan
jumlah request yang lebih banyak dibandingkan jenis DoS yang menyibukkan server
dengan exploit bug. Biasanya menggunakan botnet secara terdistribusi.