Débordement de la table CAM. 1
Petukhov Oleg, avocat en droit international et protection des renseignements personnels, spécialiste de l'information sécurité, protection de l'information et des données personnelles.
Canal Telegram: https://t.me/protecciondelainformacion
Groupe au Télégramme: https://t.me/securiteinformatique2
Site: https://legascom.ru
Courriel : online@legascom.ru
#sécuritéinformations #informationsécurité
Le commutateur a une table CAM (Memory Address Content) qui contient la liaison des adresses MAC aux ports du commutateur. C'est-à-dire que ce tableau indique quelles adresses MAC sur quel port sont acceptées. La table ELLE-même a une taille limitée, par exemple pour un commutateur Cisco Catalyst 2960, la table peut stocker jusqu'à 8192 adresses MAC et la série Catalyst 6000 jusqu'à 128 000 adresses MAC.
Si la table est complètement occupée, les nouveaux enregistrements ne peuvent pas être ajoutés et tout le trafic sera acheminé vers tous les ports. Dans ce cas, le commutateur commencera à fonctionner comme un concentrateur normal, et tout le trafic passant par ce segment de réseau peut être écouté de la même manière que nous avons utilisée dans la section précédente à l'aide de l'utilitaire Wireshark. Bien sûr, l'attaquant ne peut pas écouter tout le trafic sur le réseau local de cette manière, mais un initié travaillant dans un segment du réseau, par exemple avec la comptabilité, sera en mesure d'intercepter le trafic et de recevoir des informations sensibles.
Vous pouvez mettre en œuvre cette attaque à l'aide de l'utilitaire macchanger, qui vous permet de changer les adresses MAC.
À titre d'exemple, on peut remplacer l'adresse MAC sur une machine connectée à un commutateur.
root@kali:~# ifup eth0
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Listening on LPF/eth0/00:16:ec:f1:45:e8
Sending on LPF/eth0/00:16:ec:f1:45:e8
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPOFFER of 192.168.1.3 from 192.168.1.101
DHCPREQUEST of 192.168.1.3 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.1.3 from 192.168.1.101
bound to 192.168.1.3 -- renewal in 42928 seconds.
if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface eth2 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface ath0 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface wlan0 before doing NFS mounts
Lors de l'activation, une demande d'adresse IP a été envoyée au serveur DHCP. Ensuite, regardez l'état actuel des interfaces réseau.
root@kali:~# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:16:ec:f1:45:e8
inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::216:ecff:fef1:45e8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3952 (3.9 KB) TX bytes:1780 (1.7 KB)
Interrupt:21 Base address:0xd800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
L'adresse MAC ACTUELLE de notre interface réseau est 00:16:ce:f1: 45: e8. Maintenant, c'est cette adresse qui est sauvegardée dans la table CAM du commutateur. Maintenant, changeons cette adresse.
root@kali:~# macchanger –r eth0
Current MAC: 00:16:ec:f1:45:e8 (unknown)
Faked MAC: 04:2f:11:65:fc:0a (unknown)
Réorganiser l'interface réseau :
root@kali:~# ifdown eth0
root@kali:~# ifup eth0
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Listening on LPF/eth0/04:2f:11:65:fc:0a
Sending on LPF/eth0/04:2f:11:65:fc:0a
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPOFFER of 192.168.1.8 from 192.168.1.101
DHCPREQUEST of 192.168.1.8 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.1.8 from 192.168.1.101
bound to 192.168.1.8 -- renewal in 42928 seconds.
if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface eth2 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface ath0 before doing NFS mounts
if-up.d/mountnfs[eth0]: waiting for interface wlan0 before doing NFS mounts
Voyons encore une fois la configuration des interfaces réseau.
root@kali:~# ifconfig -a
eth0 Link encap:Ethernet HWaddr : 04:2f:11:65:fc:0a
inet addr:192.168.1.8 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::216:ecff:fef1:45e8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5801 (5.9 KB) TX bytes:1100 (1.1 KB)
Interrupt:21 Base address:0xd800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Comme on peut le constater, l'adresse MAC de l'interface eth0 a changé. Dans un scénario simple, vous pouvez forcer l'exécution d'actions pour changer l'adresse MAC dans une boucle qui sera exécutée avant que la table elle-même ne déborde. Écrire un tel scénario laissera les abonnés de la chaîne comme devoirs. Je remarque seulement que l'utilitaire macchanger nous est encore utile à plusieurs reprises lors de la mise en œuvre d'attaques réseau.
Après avoir identifié la menace, passons aux méthodes de protection. De nombreux guides de sécurité recommandent de lier en dur l'adresse MAC du poste de travail au port du commutateur ou de limiter le nombre d'adresses MAC connectées au port à une seule adresse. Ces conseils, bien sûr, sont corrects, mais il faut être prudent, car très souvent, un port sur le commutateur peut correspondre à plusieurs adresses MAC. Par exemple, le commutateur utilise tous les ports, mais vous devez y brancher plusieurs autres postes de travail (en raison de l'expansion ou, inversement, de la réduction). La meilleure solution dans ce cas serait de connecter un autre commutateur à ce commutateur et de réserver le port de connexion du nouveau commutateur derrière l'adresse MAC correspondante. Cependant, dans le contexte économique actuel, de nombreuses entreprises choisissent d'économiser de l'argent et utilisent les mêmes centres pour se connecter.
Il existe également des cas où plusieurs postes de travail peuvent être connectés alternativement à un port de commutateur. Par exemple, ils le font souvent dans les salles de réunion. Par conséquent, je vous conseille de ne pas vous laisser emporter par une «torsion excessive des écrous» lors de la configuration des restrictions de connexion sur les adresses MAC, afin d'éviter d'autres difficultés à l'avenir.
Passons maintenant à la partie pratique. À titre d'exemple, considérons la configuration d'un commutateur Cisco Catalyst 2960 avec le système d'exploitation IOS. Ce modèle dispose de 24 ports auxquels les utilisateurs sont connectés. Vous devez vous assurer qu'au plus trois machines (autrement dit, trois adresses MAC) peuvent être connectées sur chaque port. Pour ce faire, vous devez vous connecter au commutateur à distance ou à l'aide de la console et exécuter les commandes suivantes :
Switch# conf t
Switch(config)# int range f0/1-24
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport port-security
Switch(config-if-range)# switchport port-security violation shutdown
Switch(config-if-range)# switchport port-security maximum 3
Switch(config-if-range)# switchport port-security mac-address sticky
Maintenant, brièvement sur ce que chacune des commandes fait. Dans la première ligne, on passe en mode de configuration globale, dans la deuxième, on passe en mode de configuration des ports. Dans le troisième, on indique clairement que tout
les ports sélectionnés fonctionneront en mode d'accès. Ensuite, activez la protection du port port-security. Dans les trois prochaines lignes, on indique au commutateur ce qu'il faut faire lorsque plus de trois postes de travail tentent de se connecter au port. Tout d'abord, on précise que vous devez désactiver le port et envoyer le message approprié par snmp et syslog. D'ailleurs, cette option ne peut pas être activée de force, car elle agit par défaut. En plus du mode d'arrêt que nous avons utilisé, il y a aussi protect et restrict. La signification des deux derniers modes est que le port ne sera pas arrêté (c'est-à-dire qu'il passera à l'état shutdown), mais seulement les paquets seront bloqués lorsqu'une violation liée aux adresses MAC est détectée. La différence entre ces deux modes est qu'en cas de situation non autorisée, restrict peut envoyer un message snmp - trap et syslog pour signaler une violation de la stratégie de sécurité.
Dans la commande suivante, on indique au commutateur combien d'adresses MAC sont prêtes à être vues sur ce port. Dans notre cas, c'est trois. Finalement, la dernière commande met le port du commutateur en mode apprentissage, c'est-à-dire les trois premières adresses MAC qui seront reçues via ce port et seront automatiquement stockées dans running-config.
Donc, pour résumer, je dirais que toutes ces commandes sont suffisantes pour empêcher une attaque de débordement de table CAM.




