Sécurité des systèmes d'information Sécurité des réseaux ENSIIE 6 avril 2012 Julien Raeis <julien [at] raeis.fr> Ou sur irc.iiens.net!
Plan de cours 1.Réseau? 2.Rappels sur TCP/IP 3.Éléments matériels 4.Découverte d'informations 5.Quelques faiblesses... 6.Conclusion
Réseau?
Réseau? Un réseau informatique est un ensemble d'équipements reliés entre eux pour échanger des informations. (Wikipedia) Objectifs d'un réseau : Connecter différents noeuds Livrer de l'information Transporter d'autres protocoles Permettre l'accès à des données à distance
Sécurité? Les quatre composantes : Disponibilité Intégrité Confidentialité Traçabilité Risques et enjeux Déni de service Falsification / altération de trafic Interception / écoute réseau Perte de traçabilité
Le réseau dans l'audit Moyen de transport pour se connecter aux «cibles» Par Internet, VPN, en LAN... Vecteur de «fuite» d'information Topologie, filtrage Services disponibles Diversité de l'environnement et des systèmes Support d'attaques Interception de trafic Détournement de trafic Injection de trafic
Quelques rappels... légaux Plusieurs articles de loi punissent les atteintes aux systèmes informatiques dans la loi française Droit pénal : jusqu'à l'emprisonnement (5 ans) et 75.000 d'amende Droit civil : préjudice commercial, perte d'exploitation, matériel, image de marque... Il faut l'accord explicite du propriétaire d'un système avant toute action!
Quelques rappels... légaux Notion de STAD (Systèmes de Traitement Automatisés des Données) Article 323-1 : intrusion «accéder ou se maintenir frauduleusement dans tout ou partie d'un STAD» Article 323-2 : déni de service «entraver ou fausser le fonctionnement» Article 323-3 : altération «introduire frauduleusement des données dans un STAD ou de supprimer ou modifier frauduleusement»
Quelques rappels... légaux Article 323-3-1 : les outils de piratage «Le fait, sans motif légitime...... d'importer, de détenir, d'offrir, de céder ou de mettre à disposition...... un équipement, un instrument, un programme informatique ou toute donnée conçus ou spécialement adaptés pour commettre une ou plusieurs des infractions prévues par les articles 323-1 à 323-3» Article 323-4 : groupement Article 323-7 : tentative
Vie privée et intellectuelle Code pénal sur la vie privée Articles 226-1 et suivants : vie privée (dossiers informatiques personnels), appareils d'écoute, secret professionnel... Article 226-15 : secret des correspondances : ouverture, retard, suppression, détournement... avec intention frauduleuse Code de la propriété intellectuelle 335-3-1 et autres : Mesure Technique de Protection (loi «DADVSI») «altérer la protection d'une œuvre par un décodage, un décryptage ou toute autre intervention personnelle» «pas applicables aux actes réalisés à des fins de sécurité informatique» (mais déclaré non constitutionnel)
Rappels sur TCP/IP
Modèles OSI et TCP/IP TCP / IP (1979) OSI (1981) Application Transport Réseau Liaison Physique Application Présentation Session Transport Réseau Liaison de données Physique HTTP, SMTP, IRC, SSH MIME, ASN.1, SMB TCP, SIP TCP, UDP, PPTP IP, ICMP, IGMP, ARP Ethernet, Token Ring, 100Base-TX, RS232
Vocabulaire précis : TCP/IP : vocabulaire Train de bits Trame ethernet Paquet/datagramme IP Connexion/segment TCP Pseudo-session/datagramme UDP Requêtes HTTP, SNMP, DNS, etc. Sessions SMTP, IMAP, POP3, SMB, etc.
Mécanismes de sécurité S/MIME - PGP SSH SSL/TLS IPsec Boîtier chiffrant
IP Internet Protocol IP (Internet Protocol),RFC 791 (1981) Buts : Routage/ transport de bout-en-bout de l'information Aucun contrôle garanti, aucune connexion Aucune garantie d'acheminement Deux versions : IPv4 et IPv6 Notion d'adresse IP (32 ou 128 bits) Route d'un paquet IP déterminée par le réseau
En-tête IP Champs intéressants Protocole encapsulé Adresses IP source et destination Version IHL TOS (Type de Service) Longueur totale Identification (IP ID) Flags Offset TTL Protocole Somme de contrôle Adresse IP source Adresse IP destination Options Bourrage Données
Routage Routage : acheminement de paquets à travers un réseau de routeurs ou d'équipements actifs de niveau 3 Effectué saut par saut, à chaque routeur Route déterminée pour chaque paquet et peut donc différer ou être asymétrique
Faiblesses d'ip Aucun mécanisme de sécurité de base Quelques vulnérabilités... Ecoute (sniffing) Modification de paquets Usurpation d'adresses (IP spoofing) «Man-in-the-Middle» IP flooding
IPsec Mécanismes de sécurités définis sur IP Pour IPv6 à l'origine, mais rétro-appliqué à IPv4 Date de novembre 1998 Suite de protocoles : AH / ESP Apporte : Intégrité / authentification («authenticité») Anti-rejeu Confidentialité Compression
IP : champ TTL TTL (Time-to-live) Durée de vie d'un datagramme IP Compteur décrémenté à chaque saut Paquet détruit quand TTL arrive à 0 But : éviter les boucles lors d'un problème de routage Le TTL arrive à zéro : le paquet IP est supprimé et une erreur est génér TTL = 1 TTL = 5 TTL = 4 ICMP TTL Exceeded-in-transit
IP : champ ID Identifiant unique d'un datagramme IP Nécessaire pour la fragmentation Utilité ici : Évaluer la charge d'une machine si les champs ID sont incrémentaux (le champ est incrémenté de X à chaque paquet reçu) Obtenir des informations sur l'architecture en place répartition de charge # hping -S -p 80 www.francetelecom.com HPING www.francetelecom.com (eth1 217.167.29.246): S set, 40 headers + 0 data bytes len=46 ip=217.167.29.246 flags=sa DF seq=0 ttl=52 id=26435 win=24656 rtt=53.0 ms len=46 ip=217.167.29.246 flags=sa DF seq=1 ttl=52 id=53343 win=24656 rtt=50.4 ms len=46 ip=217.167.29.246 flags=sa DF seq=2 ttl=52 id=26436 win=24656 rtt=48.3 ms len=46 ip=217.167.29.246 flags=sa DF seq=3 ttl=52 id=26437 win=24656 rtt=47.5 ms len=46 ip=217.167.29.246 flags=sa DF seq=4 ttl=52 id=46043 win=24656 rtt=47.9 ms len=46 ip=217.167.29.246 flags=sa DF seq=5 ttl=52 id=26438 win=24656 rtt=47.6 ms --- www.francetelecom.com hping statistic --- 6 packets tramitted, 6 packets received, 0% packet loss round-trip min/avg/max = 47.5/49.1/53.0 ms
IP : champ ID Répartition des champs ID pour http://www.ssi.gouv.fr/
IP : champ ID Répartition des champs ID pour http://www.sun.com/
IP : options Généralement inutilisées / filtrées par les piles TCP/IP et/ou les pare-feu Option source routing Loose source routing : spécification de 1 à 8 passerelle(s) intermédiaire(s) entre émetteur et destinataire Strict source routing : spécification du chemin exact (1 à 8 passerelle(s)) entre émetteur et destinataire Possibilité (théorique) d'attendre des adresses en RFC 1918 derrières des passerelles Option record route : chaque passerelle inscrit son adresse IP dans le paquet Possibilité de traceroute sur IP (avec limitation à 8 sauts)
ARP Address Resolution Protocol, RFC 826, 1981 Met en relation les couches 2 et 3 du modèle OSI Obtention des adresses physiques d'une carte MAC pour Ethernet # tcpdump -n -v -i eth0 arp Tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 15:21:08.828884 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.0.90 tell 192.168.0.1, length 46 15:21:08.828901 ARP, Ethernet (len 6), IPv4 (len 4), Reply 192.168.0.90 is-at 00:21:9b:6e:54:db, length 28
ICMP Internet Control Message Protocol, RFC 792, 1981 Couche 3 modèle OSI Contrôle et gestion d'erreur IP Deux catégories de messages : diagnostic et erreur Utilisé par ping par exemple (echo request/reply) Type Code Somme de contrôle Données variables (selon le type et le code)
Exemple de message ICMP Exemple : ICMP Port Unreachable Type Code Somme de contrôle inutilisé en-tête IP + min. 8 premiers octets des données du datagramme IP d origine port 53/UDP fermé
TCP Transmission Control Protocol, RFC 791, 1981 Couches 4 du modèle OSI Notion de port Objectif : fournir un service de transfert de données fiable entre deux applications Protocole orienté connexion Contrôle d'erreur, de flux, de congestion Numéros de séquences pour chaque segment TCP Drapeaux (états)
TCP : en-tête Port source Port destination Numéro de séquence Numéro d acquittement HL Réservé Flags Fenêtre Somme de contrôle TCP Options Pointeur d urgence Bourrage Données U R G A C K P S H R S T S Y N F I N
Drapeaux TCP Drapeaux SYN : établir une connexion ACK : acquitter un segment TCP RST : détruire une session FIN : fin d'une session PSH : données à transmettre aux couches supérieures URG : traitement prioritaire au niveau d'un équipement actif
Exemple de connexion TCP établissement de connexion TCP Time 192.0.2.42 192.0.2.1 4,832 SYN Seq = 1469137698 Ack = 0 (60864) ------------------> (3128) 4,834 SYN, ACK Seq = 512683169 Ack = 1469137699 (60864) <------------------ (3128) 4,834 ACK Seq = 1469137699 Ack = 512683170 (60864) ------------------> (3128) 11,911 PSH, ACK - Len: 36 Seq = 1469137699 Ack = 512683170 (60864) ------------------> (3128) 11,917 ACK Seq = 512683170 Ack = 1469137735 (60864) <------------------ (3128) 12,241 PSH, ACK - Len: 1 Seq = 1469137735 Ack = 512683170 (60864) ------------------> (3128) 12,243 ACK Seq = 512683170 Ack = 1469137736 (60864) <------------------ (3128) 12,387 PSH, ACK - Len: 404 Seq = 512683170 Ack = 1469137736 (60864) <------------------ (3128) 12,387 ACK Seq = 1469137736 Ack = 512683574 (60864) ------------------> (3128) 12,387 FIN, ACK Seq = 512683574 Ack = 1469137736 (60864) <------------------ (3128) 12,387 FIN, ACK Seq = 1469137736 Ack = 512683575 (60864) ------------------> (3128) 12,390 ACK Seq = 512683575 Ack = 1469137737 (60864) <------------------ (3128) terminaison de connexion TCP
Numéros de séquence TCP Génération de numéros de séquence initiaux (ISN) pseudo-aléatoires But : rendre difficile la prédiction des numéros de séquence pour ne pas pouvoir s'insérer dans une connexion TCP (cf. TCP hijacking attack) Sous Windows 98 :
Option TCP timestamp Option TCP qui permet de connaître le temps depuis lequel une machine cible est allumée Permet aussi de compter les machines derrière de la répartition de charge Attention : en fait peut être remis à 0, dépend de l'implémentation
Quelques ports et services TCP Ports «bien connus» assignés par l'iana HTTP : 80 HTTPS : 443 SMTP : 25 Telnet : 23 SSH : 22 FTP : 20 et 21 DNS : 53
UDP UDP (User Datagram Protocol), RFC 768 (1980) Couche 4 du modèle OSI Notion de ports (comme TCP) Objectif : délivrer le plus simplement possible des données à une application Pas de connexion ni de session ni de signalisation Pas d'acquittement de messages Avantage : rapidité
UDP Format minimaliste Simple «surcouche» à IP Gestion des erreurs par ICMP Port source Longueur totale Données Port destination Somme de contrôle Protocole particulièrement sensible à la falsification d'adresse IP source et au déni de service! Il faut sécuriser au niveau applicatif!
Quelques ports et services UDP Protocoles d'infrastructure : DNS (53) Voix sur IP, diffusion multimédia Administration, supervision : SNMP (161), syslog (514) De découverte : NetBIOS (137) De configuration : DHCP (69)
Éléments matériels
Le matériel Nombreux types d'équipements réseau : Commutateurs (switches) Concentrateurs (hubs) Routeurs Pare-feu Reverse-proxy Du côté architecture, tout sera vu (revu?) lors du cours de Guillaume Valadon
Concentrateur (HUB) Simple équipement «répéteur» de signal Les trames sont dont renvoyées à tous les ports...
Commutateur (switch) Équipement «intelligent» Envoie à tout le monde la première fois qu'une adresse MAC apparaît comme destination Ensuite garde une table des correspondances MAC/port pour juste envoyer vers le bon port
VLAN Norme 802.1q Objectif : créer des réseaux virtuels en utilisant les mêmes ressources physiques (donc avec des équipements de type commutateurs) Peut se faire par marquage des paquets (VLAN tagging) Généralement par port de switch Certains tuyaux servent au transport de plusieurs VLAN : VLAN trunking
Découverte d'informations
Découverte d'informations Ce qui nous intéresse Le plan d'adressage Les services disponibles Et donc le filtrage appliqué Les versions des systèmes d'exploitation et services Comment? Écoute du réseau (méthode passive) Envoi de paquets pour forcer des réponses (méthode active)
Écoute réseau Écoute passive Pas besoin d'avoir d'adresse IP : mode promiscuous Paquets en broadcast/multicast Outils : tcpdump/wireshark/etherape Mais aussi outils spécialisés pour extraire des données de captures : Identifiants et mots de passe URL Contenu d'e-mails... Écoute «active» On prend une adresse propre... ou on l'usurpe! (cf. Plus loin)
Capture Wireshark
Prise d'empreinte passive Les paquets IP et leur contenu peuvent en dire long... p0f : outil de prise d'empreinte en fonction des données des paquets IP (ISN, TTL, etc.) Diffusion NetBIOS (service Browser) Divulgation du nom de la machine De son adresse IP Parfois de l'infrastructure Microsoft...
Découverte active : génération de paquets IP : génération du datagramme IP en espace utilisateur pour contourner la pile IP du noyau Pour TCP/UDP, rien de plus simple : telnet ou netcat Outils : perl avec IO::Socket en C avec libnet hping, scapy...
hping Quelques options intéressantes : -a : usurpation d'adresse IP -s : port source -p : port destination -k : pas d'incrément du port source --icmp, --udp Envoi de segments particuliers : -S, -A Traceroute -T...
Scapy Outil de forge de paquets en python Dispose de fonctions avancées type traceroute : $ sudo scapy >>> traceroute('86.65.182.120') ; Begin emission : ******************.*********Finished to send 30 packets. Received 29 packets, got 28 answers, remaining 2 packets 86.65.182.120:tcp80 2 192.168.3.2 11 3 62.160.114.166 11 [ ] 18 86.65.182.120 SA [ ] (<Traceroute: TCP:13 UDP:0 ICMP:15 Other:0>, <Unanswered: TCP:2 UDP:0 ICMP:0 Other:0>)
Cartographie du réseau Découvrir l'architecture qui nous entoure Un bon moyen : traceroute Outils : tracert, traceroute, tcptraceroute... Permet : Découverte de redirection de ports, IP internes des équipements de routage... Contournement d'équipements de filtrage pour la découverte
Balayage de ports Objectif : Découvrir les machines d'un réseau donné... et les services réseau fournis Envoi de paquets spécifiques à des adresses IP Analyse des paquets retour au niveau IP et/ou TCP/UDP Permet de déterminer l'état d'un port L'outil par excellence : nmap
nmap Outil devenu véritable boîte à outils Choix du type de scan (UDP, TCP, ARP...) Ports à scanner Découverte des services Prise d'empreinte Scan de vulnérabilités... Scriptable en LUA
nmap par l'exemple $ sudo nmap -ss -F 192.168.5.10 Starting Nmap 5.51 ( http://nmap.org ) at 2011-04-14 16:26 CEST Nmap scan report for 192.168.5.10 Host is up (0.00052s latency). Not shown: 93 filtered ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 53/tcp open domain 80/tcp open http 143/tcp open imap 443/tcp open https 993/tcp open imaps Nmap done: 1 IP address (1 host up) scanned in 2.70 seconds
Comment ça marche? Comment déterminer si un port est ouvert? open : port accessible et ouvert (SYN-ACK) closed : port accessible et fermé (réponse cohérente type RST, ou un ICMP Port Unreachable) filtered : non accessible et fermé Généralement absence de réponse ou ICMP Destination unreachable unfiltered : port accessible (donc open ou closed) open filtered : on ne sait pas (souvent le cas UDP)
Résultats Rapidement on obtient, et de façon tout à fait légitime des informations sur un système d'information Adressage Filtrage (déductions) Localisation des équipements de sécurité Services accessibles Versions et donc potentielles vulnérabilités
Quelques faiblesses...
État des lieux Réseaux de mieux en mieux protégés Beaucoup d'attaques depuis la création d'internet Et donc beaucoup d'enseignements tirés Création des équipements de sécurité Filtrage réseau, applicatif Bonnes pratiques d'architecture Apparition de protocoles sécurisés pour répondre à certains besoins Notamment la confidentialité
Failles dans les équipements Pas mal de dénis de services ou de vulnérabilités dans les équipements eux-même... Les équipements actifs sont de vrais ordinateurs Par exemple, système d'exploitation IOS chez Cisco Nombreuses failles de déni de service Heureusement souvent dans des modules auxiliaires IPv6 a été un grand vecteur de failles dans les implémentations il y a quelques années! Et personne ne s'en sert...
Interception Attaque «Man-in-the-Middle» (homme du milieu) Le client croit communiquer avec le serveur L'attaquant observe et détourne le trafic
Man-in-the-Middle Comment c'est possible? Réseaux non-segmentés : tout est sur le même brin, juste séparé par des switches Équipements anciens de type hub Protocoles n'assurant pas de sécurité Intégrité Authentification de bout-en-bout Confidentialité Faciles à modifier/détourner/intercepter, etc.
Attaques sur le matériel Peut on transformer un switch en hub? Inondation d'adresses MAC (MAC flooding) A pour effet de surcharger les tables de correspondance de l'équipement Transformation en hub... Équipements «professionnels» sont protégés contre ce genre de manipulations Trafic trop important vers un port avec de multiples adresses MAC sera ignoré
ARP spoofing Détournement du trafic réseau sur un switch Principe : Chaque machine garde un cache des correspondances MAC IP On va corrompre ce cache Sur la victime : IP destination IP attaquant Sur la destination : IP victime IP attaquant Et on se place en routeur au milieu
ARP spoofing
S'en prémunir? Segmentation des réseaux Routage avec contrôle d'accès Utilisation de VLAN Table ARP statique sur les équipements Cache qui expire rapidement...
Et aux couches supérieures? Principe de l'authentification mutuelle Appliqué dans IPsec, mais aussi dans SSL/TLS Basé sur un secret partagé ou des certificats Attention à l'interception Dans le cadre d'https, les navigateurs affichent maintenant des messages d'avertissement difficiles à contourner Mais les utilisateurs cliquent souvent aveuglément...
Attaques DNS Principe similaire à celui de l'arp spoofing On remplace une entrée DNS dans le cache d'un résolveur Contrôler DNS c'est contrôler la destination du trafic Modifications se font au niveau applicatif, plus au niveau 2 ou 3 Attaques apparaissent de temps à autre Notamment celle de Dan Kaminsky en 2008 Pas d'authentification dans les paquets DNS, faible entropie des identifiants, données prédictibles... DNS reste sensible, et les solutions proposées sont très dures à mettre en place (DNSSEC...)
TCP session hijacking «Kevin Mitnick Attack» Consiste à injecter des segments TCP falsifiés dans une session TCP déjà existante Nécessite de connaître ou de prédire les numéros de séquence et d'ack Besoin de réaliser un déni de service sur le client légitime pour qu'il ne réponde plus aux sollicitations du serveur Ne fonctionne plus aujourd'hui, les ISN étant pseudoaléatoires... Utilisation de protocoles sécurisés pour éviter ceci aux couches supérieures (SSH, TLS)
Contournement de filtrage Principe du filtrage : Niveau 3 : ACL sur les IP Niveau 4 : ACL IP/ports + établissement de sessions TCP Niveau 7 : contenu du protocole applicatif, voire authentification Contournement? Comment accéder aux ports filtrés? Contourner depuis l'intérieur pour sortir?
Fuite d'informations Gros enjeu, éviter les fuites à tout prix! Encapsulation dans de nombreux protocoles, notamment des champs qui sont rarement vérifiés ICMP : champs de données dans un Echo Request ou Reply TCP (RST, ACK, nombreux champs pas vérifiés par la pile IP) HTTP DNS...
Déni de service Objectif : stopper un service ou saturer un réseau Moyens : Souvent l'épuisement de ressources Parfois le plantage direct Aujourd'hui, grande peur des dénis de service Intérêts économiques, financiers, etc. Vers blaster en 2003, DDoS sur l'estonie, attaques sur les serveurs racine DNS en 2007
Déni de service Niveau 2 ou 3 : injection de routes inexistantes, attaques par mac flooding ICMP : ICMP flood TCP : SYN flood ou ouverture de sessions complètes pour saturer les piles LAND attaque (adresse source et destination identiques) Attaques par amplification, déni de service distribué, etc.
Exemple : SYN flood Envoi de segments TCP SYN à destination d'un port ouvert (80/tcp ici), avec adresse IP source falsifiée et de préférence inaccessible (pour éviter de récupérer un RST) 2 SYN/ACK 1 SYN www Va épuiser les tampons réseau du côté de la cible, conduisant à un déni de service Pour sécuriser, les connexions semi-ouvertes sont détruites sous BSD et apparition des «syncookies» sous Linux
Exemple d'attaque multi-couches Déni de service distribué s'appuyant sur des serveurs DNS récursifs ET des adresses IP source falsifiées DNS est un protocole asymétrique Taille moyenne d'une requête DNS : 60 octets Taille maximale d'une réponse (E)DNS : environ 4000 octets Principe : Facteur d'amplification de 66 environ Requête DNS (sur UDP) vers un enregistrement «lourd» (4000 octets) forgé pour l'occasion Adresse IP source forgée comme étant celle de la cible Utilisation de plusieurs centaines de machines pour les requêtes La machine cible va crouler sous les réponses DNS
Résultat d'un DDoS sur les DNS root G et L
Conclusion
Sécurité? Les réseaux sont au centre d'internet Ils véhiculent de nombreuses informations Interconnectent des noeuds partout dans le monde, et non contrôlés La sécurité est certes de plus en plus présente... mais les protocoles sécurisés doivent être adoptés par tous pour que ça marche!
Se prémunir des attaques? Segmentation des réseaux VLAN routage A défaut d'avoir des protocoles sécurisés partout... Du filtrage IP, TCP, UDP, voire applicatif Détection d'intrusion HIDS/HIPS NIDS/NIPS Problématique de la journalisation