Upload
konrad-halas
View
631
Download
0
Embed Size (px)
Citation preview
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 1/19
Scapypakiety sieciowe na pythonowym
warsztacie
Konrad Gawda, PyWaw#4 12.09.2011
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 2/19
Scapy - prezentacja
teoria● Co to jest pakiet...● Co to jest Scapy?● Co Scapy robi z pakietami?
praktyka
● Pakiety● Wysyłanie
● Odbieranie● Sniffing● Dla wzrokowców● Jako biblioteka
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 3/19
Pakiet, sieć... (krótkie przypomnienie)
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 4/19
Co to jest Scapy?
"Scapy is a powerful interactive packet manipulation program."
Nie ma idealnych narzędzi? Złóż je sobie sam...
● biblioteka pythonowa>>> form scapy.all import *
● narzędzie (dostosowana konsola pythonowa)$ sudo scapy
● głównie pod Linuxa, ale nowsza wersja działa też naWindows
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 5/19
Co Scapy robi z pakietami?
Tworzy oraz dekoduje pakiety dla wielu różnych protokołów.Wysyła, przechwytuje, łączy zapytania i odpowiedzi...
zastępuje:
wykonuje:
prawie zastępuje:
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 6/19
Scapy - założenia
Pakiet - jako obiektPayload jako atrybut pakietuLista pakietów - jako obiekt
Dobre ("sprytne") wartości domyślneŻadna wartość nie jest zabroniona ;)
Nie interpretuje - tylko dekoduje
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 7/19
Praktyka
scapy live
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 8/19
Zaczynamy
$ sudo scapy >> ls() #lista dostępnych typów
>> lsc() #lista dostępnych funkcji
(w prezentacji podam tylko polecenia - wyniki douzyskania samemu, dla leniwych - w tutorialu...)
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 9/19
Pakiety
a = IP(dst="192.168.1.1") #tak tworzymy pakietb = a / TCP() #operator "/" wkłada jeden pakiet do
b.show()
Ether() #"pakiet" ethernetowy
a = Ether()/IP(dst="www.slashdot.org")/ TCP()/"GET /index.htmlHTTP/1.0 \n\n" hexdump(a) str(a)
a[IP] #zwróć pakiet tylko z warstwami od IP w górę
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 10/19
Wysyłanie
send (IP(dst="1.2.3.4")/ICMP()) #wysyłamy w warstwie IPsend (IP(dst=("wp.pl","onet.pl"))/TCP(dport=[80,443]))#wiele wartości - jeden obiekt przedstawia wiele pakietów -różne możliwości zapisu:#("wp.pl","onet.pl")
#["wp.pl","onet.pl"]#"192.168.1.*"#"192.168.1.10-100"#"192.168.1.0/24"
sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="eth1")
#send z literką "p" - wysyłamy w warstwie 2 (Ethernet) sendp("I'm travelling on Ethernet", iface="wlan0",
loop=1, inter=0.2) #powtarzaj wysyłanie...
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 11/19
Wysyłanie + odbieranie
ans,unans = sr(IP(dst='wp.pl')/ICMP())#wyślij i zbieraj odpowiedzi aż do przerwania#domyślne wartości! dla ICMP: echo request
p = sr1(IP(dst="8.8.8.8")/UDP()
/DNS(rd=1,qd=DNSQR(qname="www.wp.pl")))#wyślij i czekaj na jedną odpowiedź
p.sprintf("%.time% %-15s,IP.src% -> %-15s,IP.dst% %IP.chksum% %03xr,IP.proto%") #wydrukujmy...
ans. make_table( #wydrukujmy tabelkę...lambda(s,r): (s.dst, s.dport,r.sprintf(
"{TCP:%TCP.flags%}{ICMP:%IP.src% - %ICMP.type%}"))) #własna notacja z klamrami i procentami...
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 12/19
Sniffing
tshark() sniff(iface="eth1", prn=lambda x: x.summary())
sniff(filter="icmp and host 66.35.250.151", count=2)
pkts = sniff(prn=lambda x:x.sprintf("{IP:%IP.src% -> %IP.dst%\n}{Raw:%Raw.load%\n}"
))
pkts[TCP] #zwróć tylko pakiety TCP pkts = sniff(filter="tcp and ( port 25 or port 110 )",
prn=lambda x: x.sprintf("%IP.src%:%TCP.sport% -> %IP.dst%:%TCP.dport%%2s,TCP.flags% : %TCP.payload%"
))
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 13/19
Dla wzrokowców
### Gnuplot a. multiplot(lambda x: (x[Ether].src, len(x)))
### Graphviz
res,unans = traceroute(["www.microsoft.com","www.cisco.com","www.yahoo.com","www.wanadoo.fr","www.pacsec.com"],dport=[80,443],maxttl=20,retry=-2)
res.graph() #patrz następna plansza... res.trace3D() #kolejna plansza...
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 14/19
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 15/19
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 16/19
Jako biblioteka
#! /usr/bin/env python from scapy.all import * def arp_monitor_callback(pkt):
if ARP in pkt and pkt[ARP].op in (1,2):return pkt.sprintf("%ARP.hwsrc% %ARP.psrc%")
sniff(prn=arp_monitor_callback,filter="arp", store=0)
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 17/19
Finał
Scapy? Where is Scapy?....
http://www.secdev.org/projects/scapy/
Oczywiście jest tutorial :)
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 18/19
Pytania?
5/10/2018 Scapy - pakiety sieciowe na pythonowym warsztacie - slidepdf.com
http://slidepdf.com/reader/full/scapy-pakiety-sieciowe-na-pythonowym-warsztacie 19/19