![Page 1: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/1.jpg)
ScapyExperimentieren mit Netzwerkpaketen
Dirk Loss
pyCologne, 2010-01-13
1
![Page 2: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/2.jpg)
Wer kennt
Wireshark?
2
![Page 3: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/3.jpg)
Was ist Scapy?
Sniffer
Paketgenerator– ähnlich hping2, nemesis, ...
Python-Library + interaktiv nutzbar
>>> _
3
![Page 4: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/4.jpg)
Wozu?
Experimentieren mit Netzwerkprotokollen auf Paketebene– Sicherheitstests
– TCP/IP lernen in der Praxis
4
![Page 5: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/5.jpg)
Analyse des Skype Protokolls[Biondi, Desclaux 2006]
5http://www.heise.de/newsticker/meldung/Skype-unter-die-Lupe-genommen-111559.html
![Page 6: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/6.jpg)
IPv6 Type 0 Routing Header DoS[Biondi, Ebalard 2007]
https://www.kb.cert.org/vuls/id/267289
6
![Page 7: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/7.jpg)
Grundfunktionen
Dekodieren Sniffen
SendenBauenObj → Str
Str → Obj
Netz
7
![Page 8: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/8.jpg)
Demo
8
![Page 9: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/9.jpg)
Bauen
Objekte instanziieren– IP(dst='192.168.1.1')
Verschachteln– Ether()/IP()/UDP()/DNS()
Scapy wandelt in Strings um– Default Werte werden einsetzt, Layer für Layer
– Checksummen, Längen, etc. werden berechnet
9
![Page 10: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/10.jpg)
Sniffen und Dekodieren
10
![Page 11: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/11.jpg)
Sniffen und Dekodieren
sniff()
Empfangene Bytes werden als String an Objekt-Konstruktoren übergeben– Ether('\x00\x1cJ\x1d\xad\xc9\x00"\xfb%\x14\xf6\x08\x00E\x00\x0
0\x14\x00\x01\x00\x00@\x00z\xc5\xc0\xa8\xb2+\xd8"\xb5-‘)
Überschüssige Bytes sind Payload– Wird rekursiv ebenfalls dekodiert
– Automatische Ermittlung des Objekttyps anhand des darüberliegenden Layers
11
![Page 12: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/12.jpg)
Senden
Intern grundsätzlich auf Layer 2– PF_PACKET oder libdnet
Bei Senden auf Layer 3 generiert Scapyden Layer 2 selbst– Auswahl des Netzwerkinterfaces
• conf.route
– ARP Anfrage• conf.netcache.arpcache
12
![Page 13: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/13.jpg)
Funktionen zum Senden
Layer 3
send()
sr()
sr1()
srloop()
srflood()
Layer 2
sendp()
srp()
srp1()
srploop()
srpflood()
13
Senden
Senden/Erste Antwort empfangen
Senden/Empfangen
Loop
Flooding
![Page 14: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/14.jpg)
sr1()
14[PacSec05]
![Page 15: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/15.jpg)
Rückgabewerte von sr()
15
![Page 16: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/16.jpg)
High-Level Funktionen
arping()
traceroute()
get_mac_by_ip()
tshark()
...
16
![Page 17: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/17.jpg)
traceroute()
17[PacSec05]
![Page 18: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/18.jpg)
arping()
18[PacSec05]
![Page 19: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/19.jpg)
High-Level Funktionenauf Paketen/Paketlisten
p.conversations()
p.plot()
p.pdfdump()
p.make_table()
...
19
![Page 20: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/20.jpg)
.conversations()
20[PacSec05]
![Page 21: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/21.jpg)
Werkzeuge
hexdump(), hexedit()
rdpacp(), wrpcap()
fragment()
fuzz()
...
21
![Page 22: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/22.jpg)
Fortgeschrittene Features
IPv6 SNMP und ASN.1
Automaten
22
![Page 23: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/23.jpg)
Internes
PacketList
Packet
Layer
Field
23
![Page 24: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/24.jpg)
Aufbau eines IP Pakets
24[PacSec05]
![Page 25: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/25.jpg)
Eigene Layer implementieren
25[PacSec05]
![Page 26: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/26.jpg)
Nachteile
Geringe Performance
TCP basierte Protokolle umständlich– Kein Zusammensetzen von TCP-Streams
– TCP/IP Stack weiß nichts von Scapy
Relativ wenige Layer implementiert– zumindest im Vergleich mit Wireshark...
26
![Page 27: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/27.jpg)
Das Projekt
Philippe Biondi
Mercurial Repositories
Trac für Bugtracking und Wiki
Mailingliste
27
![Page 28: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/28.jpg)
Quellcode
GNU GPL v2
~28.000 Zeilen Python Code– inkl. Kommentare, etc.
Seit Scapy v2 aufgeteiltin mehrere Module– Problem: Zirkuläre Imports
28
![Page 29: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/29.jpg)
Scapy und ich...
Nutzer seit ~2005
Windows Port, seit 2007
Dokumentation
OSPF Extension
Bug fixes
29
![Page 30: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/30.jpg)
Fazit
Flexibles Werkzeug zum Manipulieren von Netzwerkpaketen– Für Security Tests oder zum Lernen
– Ersetzt viele Spezialtools
Python als Domain Specific Language– Elegante Definition neuer Layer
– Integration in eigene Programme
30
![Page 31: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/31.jpg)
Vielen Dank für die Aufmerksamkeit!
Dirk Loss
mail at dirk-loss de
http://dirk-loss.de
http://twitter.com/dloss
31
![Page 32: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/32.jpg)
Links
Scapy-Homepage– http://www.secdev.org/projects/scapy/
Wiki, Mercurial-Repository– http://trac.secdev.org/scapy
– http://hg.secdev.org/scapy/
Mailingliste– http://news.gmane.org/gmane.comp.security.scapy.general
– scapy.ml-subscribe at secdev org
32
![Page 33: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/33.jpg)
Quellen
[PacSec05]:
Philippe Biondi: Network packet forgery with Scapy http://www.secdev.org/conf/scapy_pacsec05.pdf
33
![Page 34: Scapy - Dirk Loss | Personal Homepagedirk-loss.de/scapy/Scapy_pyCologne_2010-01-13_DirkLoss_v1.1.pdf · Wozu? Experimentieren mit Netzwerkprotokollen auf Paketebene –Sicherheitstests](https://reader030.vdokument.com/reader030/viewer/2022040501/5e215e5ee7c02a2ba918a71c/html5/thumbnails/34.jpg)
Dieses Werk ist unter einem Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenzvertrag lizenziert. Um die Lizenz anzusehen, gehen Sie bitte zu http://creativecommons.org/licenses/by-sa/3.0/de/ oder schicken Sie einen Brief an Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.