Dalam artikel ini saya 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:
- Mematikan Server
- 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:
- Ping of Death ( CA-1996-26 )
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. - MySQL IF Query DoS ( SA25188 )
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”.
- Cisco Global Site Selector DNS Request Denial of Service (SA33429)
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:
- TCP SYN Flood DoS
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 mod_deflate DoS
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.
Source: ilmuhacking . com
|