By : Hacker Anonymous CYber Team
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.