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
Dos itu?
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:
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.
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:
|
0 komentar:
Posting Komentar