1. Apa itu Denial of Service (DOS) ?
Denial of Service adalah aktifitas menghambat kerja sebuah layanan (servis) atau mematikan-nya, sehingga user yang berhak / berkepentingan tidak dapat menggunakan layanan tersebut. Dampak akhir dari aktifitas ini menjurus kepada tehambatnya aktifitas korban yang dapat berakibat sangat fatal (dalam kasus tertentu). Pada dasarnya Denial of Service merupakan serangan yang sulit diatasi, hal ini disebabkan oleh resiko layanan publik dimana admin akan berada pada kondisi yang membingungkan antara layanan dan kenyamanan terhadap keamanan. Seperti yang kita tahu, kenyamanan berbanding terbalik dengan keamanan. Maka resiko yang mungkin timbul selalu mengikuti hukum ini. . 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.
Denial of Service adalah aktifitas menghambat kerja sebuah layanan (servis) atau mematikan-nya, sehingga user yang berhak / berkepentingan tidak dapat menggunakan layanan tersebut. Dampak akhir dari aktifitas ini menjurus kepada tehambatnya aktifitas korban yang dapat berakibat sangat fatal (dalam kasus tertentu). Pada dasarnya Denial of Service merupakan serangan yang sulit diatasi, hal ini disebabkan oleh resiko layanan publik dimana admin akan berada pada kondisi yang membingungkan antara layanan dan kenyamanan terhadap keamanan. Seperti yang kita tahu, kenyamanan berbanding terbalik dengan keamanan. Maka resiko yang mungkin timbul selalu mengikuti hukum ini. . 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.
Beberapa aktifitas DoS adalah:
a. Aktifitas 'flooding' terhadap suatu server.
b. Memutuskan koneksi antara 2 mesin.
c. Mencegah korban untuk dapat menggunakan layanan.
d. Merusak sistem agar korban tidak dapat menggunakan layanan.
2. Motif penyerang melakukan Denial of Service
Menurut Hans Husman , ada beberapa motif cracker dalam melakukan Denial of Service yaitu:
1. Status Sub-Kultural.
2. Untuk mendapatkan akses.
3. Balas dendam.
4. Alasan politik.
5. Alasan ekonomi.
6. Tujuan kejahatan/keisengan.
Menurut Hans Husman , ada beberapa motif cracker dalam melakukan Denial of Service yaitu:
1. Status Sub-Kultural.
2. Untuk mendapatkan akses.
3. Balas dendam.
4. Alasan politik.
5. Alasan ekonomi.
6. Tujuan kejahatan/keisengan.
Satatus subkultural dalam dunia hacker, adalah
sebuah unjuk gigi atau lebih tepat kita sebut sebagai pencarian jati diri.
Adalah sebuah aktifitas umum dikalangan hacker-hacker muda untuk menjukkan
kemampuannya dan Denial of Service merupakan aktifitas hacker diawal karirnya.
Alasan politik dan ekonomi untuk saat sekarang juga merupakan alasan yang
paling relevan. Kita bisa melihat dalam 'perang cyber' (cyber war), serangan
DoS bahkan dilakukan secara terdistribusi atau lebih dikenal dengan istilah
'distribute Denial of Service'. Beberapa kasus serangan virus semacam
'code-red' melakukan serangan DoS bahkan secara otomatis dengan memanfaatkan
komputer yang terinfeksi, komputer ini disebut 'zombie' dalam jargon.Lebih
relevan lagi, keisengan merupakan motif yang paling sering dijumpai. Bukanlah hal
sulit untuk mendapatkan program-program DoS, seperti nestea, teardrop, land,
boink, jolt dan vadim. Program-program DoS dapat melakukan serangan Denial of
Service dengan sangat tepat, dan yang terpenting sangat mudah untuk
melakukannya. Cracker cukup mengetikkan satu baris perintah pada Linux Shell
yang berupa ./nama_program argv argc ... .o0 Denial of Sevice, serangan yang
menghabiskan resource.
Pada dasarnya, untuk melumpuhkan sebuah
layanan dibutuhkan pemakaian resource yang besar, sehingga komputer/mesin yang
diserang kehabisan resource dan manjadi hang. Beberapa jenis resource yang
dihabiskan diantaranya:
A. Swap Space
B. Bandwidth
C. Kernel Tables
D. RAM
E. Disk
F. Caches
G. INETD
a. Swap Space
Hampir semua sistem menggunakan ratusan MBs spasi swap untuk melayani permintaan client. Spasi swap juga digunakan untuk mem-'forked' child process. Bagaimanapun spasi swap selalu berubah dan digunakan dengan sangat berat. Beberapa serangan Denial of Service mencoba untuk memenuhi (mengisi) spasi swap ini.
b. Bandwidth
Beberapa serangan Denial of Service menghabiskan bandwidth.
A. Swap Space
B. Bandwidth
C. Kernel Tables
D. RAM
E. Disk
F. Caches
G. INETD
a. Swap Space
Hampir semua sistem menggunakan ratusan MBs spasi swap untuk melayani permintaan client. Spasi swap juga digunakan untuk mem-'forked' child process. Bagaimanapun spasi swap selalu berubah dan digunakan dengan sangat berat. Beberapa serangan Denial of Service mencoba untuk memenuhi (mengisi) spasi swap ini.
b. Bandwidth
Beberapa serangan Denial of Service menghabiskan bandwidth.
c. Kernel Tables
Serangan pada kernel tables, bisa berakibat sangat buruk pada sistem. Alokasi memori kepada kernel juga merupakan target serangan yang sensitif. Kernel memiliki kernelmap limit, jika sistem mencapai posisi ini, maka sistem tidak bisa lagi mengalokasikan memory untuk kernel dan sistem harus di re-boot.
Serangan pada kernel tables, bisa berakibat sangat buruk pada sistem. Alokasi memori kepada kernel juga merupakan target serangan yang sensitif. Kernel memiliki kernelmap limit, jika sistem mencapai posisi ini, maka sistem tidak bisa lagi mengalokasikan memory untuk kernel dan sistem harus di re-boot.
d. RAM
Serangan Denial of Service banyak menghabiskan RAM sehingga sistem mau-tidak mau harus di re-boot.
e. Disk
Serangan klasik banyak dilakukan dengan memenuhi Disk.
f. Caches
memory berukuran kecil yang sifatnya temporary (sementara). sebuah daerah memori cepat yang berisi salinan data. Akses ke sebuah salinan yang di- cache lebih efisien daripada akses ke data yang asli.
Serangan Denial of Service banyak menghabiskan RAM sehingga sistem mau-tidak mau harus di re-boot.
e. Disk
Serangan klasik banyak dilakukan dengan memenuhi Disk.
f. Caches
memory berukuran kecil yang sifatnya temporary (sementara). sebuah daerah memori cepat yang berisi salinan data. Akses ke sebuah salinan yang di- cache lebih efisien daripada akses ke data yang asli.
g. INETD
Sekali saja INETD crash, semua service (layanan) yang melalui INETD tidak akan
bekerja.
3. Cara melakukan serangan DoS
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.
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.
4. Penanggulangan serangan Denial of Service
Sejujurnya, bagian inilah yang paling sulit. Anda bisa lihat bagaimana mudahnya menggunaka sploits/tool untuk membekukan Ms Windows, atau bagaimana mudahnya melakukan input flooding dan membuat tool sendiri. Namun Denial of service adalah masalah layanan publik.Sama halnya dengan anda memiliki toko, sekelompok orang jahat bisa saja masuk beramai-ramai sehingga toko anda penuh. Anda bisa saja mengatasi 'serangan' ini dengan 'menutup' toko anda - dan ini adalah cara paling efektif - namun jawaban kekanak-kanakan demikian tentu tidak anda harapkan.
1. Selalu Up 2 Date.
Seperti contoh serangan diatas, SYN Flooding sangat efektif untuk membekukan Linux kernel 2.0.*. Dalam hal ini Linux kernel 2.0.30 keatas cukup handal untuk mengatasi serangan tersebut dikarenakan versi 2.0.30 memiliki option untuk menolak cracker untuk mengakses system.
2. Ikuti perkembangan security
Hal ini sangat efektif dalam mencegah pengerusakan sistem secara ilegal. Banyak admin malas untuk mengikuti issue-issue terbaru perkembangan dunia security. Dampak yang paling buruk, sistem cracker yang 'rajin', 'ulet' dan 'terlatih' akan sangat mudah untuk memasuki sistem dan merusak - tidak tertutup kemungkinan untuk melakukan Denial of Service -. Berhubungan dengan 'Selalu Up 2 Date', Denial of service secara langsung dengan Flooding dapat diatasi dengan menginstall patch terbaru dari vendor
atau melakukan up-date.
3. Teknik
pengamanan httpd Apache.
Pencegahan serangan Apache Benchmark. Hal ini sebenarnya sangat sulit untuk diatasi. Anda bisa melakukan identifikasi terhadap pelaku dan melakukan pemblokiran manual melalui firewall atau mekanisme kontrol Apache (Order, Allow from, Deny From). Tentunya teknik ini akan sangat membosankan dimana anda sebagai seorang admin harus teliti. Mengecilkan MexClients juga hal yang baik, analognya dengan membatasi jumlah pengunjung akan menjaga toko anda dari 'Denial of Service'. Jangan lupa juga menambah RAM.
4. Pencegahan serangan non elektronik.
Serangan yang paling efektif pada dasarnya adalah local. Selain efektif juga sangat berbahaya. Jangan pernah berfikir sistem anda benar-benar aman, atau semua user adalah orang 'baik'. Pertimbangkan semua aspek. Anda bisa menerapkan peraturan tegas dan sanksi untuk mencegah user melakukan serangan dari dalam. Mungkin cukup efektif jika dibantu oleh kedewasaan berfikir dari admin dan user bersangkutan.
Pencegahan serangan Apache Benchmark. Hal ini sebenarnya sangat sulit untuk diatasi. Anda bisa melakukan identifikasi terhadap pelaku dan melakukan pemblokiran manual melalui firewall atau mekanisme kontrol Apache (Order, Allow from, Deny From). Tentunya teknik ini akan sangat membosankan dimana anda sebagai seorang admin harus teliti. Mengecilkan MexClients juga hal yang baik, analognya dengan membatasi jumlah pengunjung akan menjaga toko anda dari 'Denial of Service'. Jangan lupa juga menambah RAM.
4. Pencegahan serangan non elektronik.
Serangan yang paling efektif pada dasarnya adalah local. Selain efektif juga sangat berbahaya. Jangan pernah berfikir sistem anda benar-benar aman, atau semua user adalah orang 'baik'. Pertimbangkan semua aspek. Anda bisa menerapkan peraturan tegas dan sanksi untuk mencegah user melakukan serangan dari dalam. Mungkin cukup efektif jika dibantu oleh kedewasaan berfikir dari admin dan user bersangkutan.
Tidak ada komentar:
Posting Komentar