Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
thc-ipv6 — Kit d'attaque IPv6 | Kitploit
Outils/GitHubGitHub/vanhauser-thc/thc-ipv6
ReconnaissanceAnalyse des VulnérabilitésExploitationÉvasion IDS/IPSFuzzingSécurité RéseauSécurité Sans FilTests d'IntrusionUtilitaires et FrameworksRed Teaming
GitHubvanhauser-thc/thc-ipv6

thc-ipv6

1.2k229il y a 4 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

Kit d'attaque IPv6

Voir le dépôt
Partager

THC-IPV6-ATTACK-TOOLKIT (c) 2005-2022 [email protected] https://github.com/vanhauser-thc/thc-ipv6

root@kitploit:~
	Sous licence AGPLv3 (voir le fichier LICENSE)

INTRODUCTION

Ce code a été inspiré lorsque j'ai découvert IPv6, en ai appris de plus en plus – et n'ai trouvé aucun outil pour m'amuser (lire : « hacker ») avec. J'ai d'abord essayé d'implémenter des choses avec libnet, mais j'ai constaté que l'implémentation IPv6 n'est que partielle – et nulle. J'ai essayé d'ajouter le code manquant, mais ce n'était pas si simple, j'ai donc économisé du temps et rapidement écrit ma propre bibliothèque.

LIMITATIONS

Ce code ne fonctionne actuellement que sur :

  • Linux 2.6.x ou plus récent (à cause de l'utilisation de /proc)
  • Ethernet Mais pour les utilisateurs Linux, cela signifie que cela fonctionnera dans 98 % de vos cas d'utilisation. Les correctifs sont les bienvenus ! (ajoutez « antispam » dans l'objet pour passer ma protection anti-spam, sinon le courriel sera rejeté)

CONSTRUCTION

Vous devez avoir libpcap-dev installé pour pouvoir construire les outils. De plus, libssl-dev et libnetfilter-queue-dev sont également recommandés.

Ces derniers peuvent être installés par (Kali, Debian, Ubuntu) : sudo apt-get install libpcap-dev libssl-dev libnetfilter-queue-dev

Vous pouvez construire les outils en exécutant : make all

Vous pouvez installer les outils et les pages de manuel existantes en exécutant : make install

LES OUTILS

LA THC IPV6 ATTACK TOOLKIT contient déjà de nombreux outils d'attaque efficaces :

  • parasite6 : usurpateur de sollicitation/annonce de voisin ICMPv6, vous place en tant qu'homme du milieu, identique à ARP mitm (et parasite)
  • alive6 : un scan de présence efficace, qui détectera tous les systèmes écoutant sur cette adresse
  • dnsdict6 : brute-forceur de dictionnaire DNS IPv6 parallélisé
  • fake_router6 : annoncez-vous comme routeur sur le réseau, avec la plus haute priorité
  • redir6 : redirige intelligemment le trafic vers vous (homme du milieu) avec un usurpateur de redirection ICMPv6 astucieux
  • toobig6 : diminueur de MTU avec la même intelligence que redir6
  • detect-new-ip6 : détecte les nouveaux périphériques IPv6 qui rejoignent le réseau, vous pouvez exécuter un script pour analyser automatiquement ces systèmes, etc.
  • dos-new-ip6 : détecte les nouveaux périphériques IPv6 et leur indique que l'adresse IP choisie est en conflit sur le réseau (DOS).
  • trace6 : traceroute6 très rapide avec support des échos ICMP6 et TCP-SYN
  • flood_router6 : inonde une cible avec des annonces de routeur aléatoires
  • flood_advertise6 : inonde une cible avec des annonces de voisin aléatoires
  • fuzz_ip6 : fuzzer pour IPv6
  • implementation6 : effectue diverses vérifications d'implémentation sur IPv6
  • implementation6d : démon d'écoute pour implementation6 afin de vérifier derrière un pare-feu
  • fake_mld6 : annoncez-vous dans un groupe multicast de votre choix sur le réseau
  • fake_mld26 : identique mais pour MLDv2
  • fake_mldrouter6 : falsifie les messages de routeur MLD
  • fake_mipv6 : vole une adresse IP mobile à la vôtre si IPSEC n'est pas requis pour l'authentification
  • fake_advertiser6 : annoncez-vous sur le réseau
  • smurf6 : smurfeur local
  • rsmurf6 : smurfeur distant, connu pour fonctionner uniquement contre linux pour le moment
  • exploit6 : vulnérabilités IPv6 connues pour tester contre une cible
  • denial6 : une collection de tests de déni de service contre une cible
  • thcping6 : envoie un paquet ping6 fabriqué à la main
  • sendpees6 : un outil par [email protected], qui génère des demandes de sollicitation de voisin avec beaucoup de CGA (trucs crypto ;-) pour occuper le CPU. sympa. et environ 25 autres outils à découvrir :-)

Exécutez simplement les outils sans options et ils vous donneront de l'aide et montreront les options de ligne de commande.

LA BIBLIOTHÈQUE

La bibliothèque thc-ipv6-lib.c est le cœur et l'âme de tous les outils – et de ceux que vous voudrez peut-être écrire. L'implémentation est si simple qu'il ne faut généralement que 2 à 4 lignes pour créer un paquet IPv6/ICMPv6 complet avec le contenu de votre choix.

Votre structure de base est (thc_ipv6_hdr *) par exemple thc_ipv6_hdr *my_ipv6_packet; int my_ipv6_packet_len; et vous n'aurez jamais à jouer avec ses options/champs.

Lorsque vous voulez construire un paquet IPv6, écrivez simplement : my_ipv6_packet = thc_create_ipv6_extended(interface, prefer, &my_ipv6_packet_len, src6, dst6, ttl, length, label, class, version); si quelque chose échoue, il retourne NULL (uniquement si my_ipv6_packet_len ou dst6 n'existent pas ou si malloc échoue). Les options de thc_create_ipv6_extended sont : (char*) interface - l'interface sur laquelle vous voulez envoyer le paquet (int) prefer - soit PREFER_LINK (pour utiliser l'adresse lien-local), soit PREFER_HOST pour utiliser une adresse IPv6 d'hôte, et PREFER_GLOBAL pour utiliser une adresse IP6 publique (Internet) (par défaut) (int ) &my_ipv6_packet_len - la taille du paquet qui sera créée (unsigned char) src6 - l'IP6 source (OPTIONNEL - sera sélectionnée si NULL) (unsigned char*) dst6 - l'IP6 destination (au format réseau, 16 octets) généralement le résultat de thc_resolve6("ipv6.google.com"); (int) ttl - le TTL du paquet (OPTIONNEL - 0 le mettra à 255) (int) length - la longueur qui sera définie dans l'en-tête (OPTIONNEL - 0 = longueur réelle) (int) label - l'étiquette de flux (0 convient) (int) class - la classe du paquet (0 convient) (int) version - la version IP6 (OPTIONNEL - 0 la mettra à la version 6) Il retourne NULL en cas d'erreur ou une structure allouée via malloc en cas de succès. free() la une fois que vous avez terminé.

Vous pouvez maintenant ajouter des en-têtes d'extension par-dessus : thc_add_hdr_route(my_ipv6_packet, &my_ipv6_packet_len, routers, routerptr); thc_add_hdr_fragment(my_ipv6_packet, &my_ipv6_packet_len, offset, more_frags, id); thc_add_hdr_dst(my_ipv6_packet, &my_ipv6_packet_len, buf, buflen); thc_add_hdr_hopbyhop(my_ipv6_packet, &my_ipv6_packet_len, buf, buflen); thc_add_hdr_nonxt(my_ipv6_packet, &my_ipv6_packet_len, hdropt); thc_add_hdr_misc(my_ipv6_packet, &my_ipv6_packet_len, type, len, buf, buflen); Explication des fonctions : _route : Ajoute un en-tête de routage de transfert (comme le routage source IP) (int) routers - le nombre de routeurs dans routerptr (char**) routerptr - une structure char[routers + 1] avec les destinations des routeurs au format réseau. Voir alive6.c pour un exemple. _fragment : Ajoute un en-tête de fragment (int) offset - le décalage auquel les données doivent être écrites (note : mettez l'emplacement du décalage en octets ici, pas en octets d'octets) (int) more_frags - mis à 0 s'il s'agit du dernier fragment, 1 sur tous les autres (int) id - un ID pour le paquet (identique pour tous les fragments) _dst : Ajoute un en-tête d'options de destination (char) buf - un tampon de caractères. Vous devez contrôler ce tampon vous- même avec ce que vous voulez y écrire. (int) buflen - la longueur de buf _hopbyhop : Ajoute un en-tête Hop-By-Hop (char*) buf - un tampon de caractères. Vous devez contrôler ce tampon vous- même avec ce que vous voulez y écrire. (int) buflen - la longueur de buf _nonxt : Spécifie qu'il n'y aura aucun en-tête suivant de quelque sorte que ce soit (int) hdropt - cette option est actuellement ignorée _misc : Spécifie un en-tête divers. Utilisez-le si vous voulez concevoir un en-tête d'extension invalide ou inexistant. (int) type - L'ID de type pour spécifier l'en-tête (int) len - La longueur à annoncer pour l'en-tête (OPTIONNEL - -1 la définit à la valeur correcte) (char*) buf - un tampon de caractères. Vous devez contrôler ce tampon vous- même avec ce que vous voulez y écrire. (int) buflen - la longueur de buf Ces fonctions retournent (int) 0 en cas de succès et -1 en cas d'erreur.

Enfin, vous pouvez ajouter les en-têtes stream ou dgram. thc_add_icmp6(my_ipv6_packet, &my_ipv6_packet_len, type, code, flags, buf, buflen, checksum); thc_add_tcp(my_ipv6_packet, &my_ipv6_packet_len, source_port, destination_port, sequence_number, ack_number, flags, window_size urgent_pointer, options, optione_length, data, data_length); thc_add_udp(my_ipv6_packet, &my_ipv6_packet_len, source_port, destination_port, checksum, data, data_length); thc_add_data6(my_ipv6_packet, &my_ipv6_packet_len, type, buf, buflen); _icmp6 : Ajoute un en-tête de paquet ICMP6 (int) type : le type ICMP6 (int) code : le code ICMP6 (int) flags : les indicateurs ICMP6 (char*) buf - un tampon de caractères. Vous devez contrôler ce tampon vous- même avec ce que vous voulez y écrire. (int) buflen - la longueur de buf _tcp|_udp : Ajoute un en-tête TCP ou UDP (ushort) source_port : port source (ushort) destination_port : port destination (uint) sequence_number : numéro de séquence TCP (uint) ack_number : numéro d'accusé de réception TCP (ushort) checksum : somme de contrôle UDP, 0 = générer la somme de contrôle (pour TCP, la somme de contrôle est toujours calculée) (uchar) flags : indicateurs TCP : TCP_SYN, TCP_ACK, TCP_FIN, TCP_RST, TCP_PSH, ... (uint) window_size : taille de fenêtre TCP (uint) urgent_pointer : pointeur urgent TCP (généralement 0) (char*) options : tampon d'options TCP, peut être NULL (uint) options_length : la longueur du tampon d'options TCP (char*) data : les données que le protocole transporte (uint) data_length : la longueur du tampon de données _data6 : Ajoute un en-tête divers (int) type : l'ID de protocole (char*) buf - un tampon de caractères. Vous devez contrôler ce tampon vous- même avec ce que vous voulez y écrire. (int) buflen - la longueur de buf Ces fonctions retournent (int) 0 en cas de succès et -1 en cas d'erreur.

Une fois terminé, vous créez et envoyez le paquet. thc_generate_pkt(interface, srcmac, dstmac, my_ipv6_packet, &my_ipv6_packet_len); thc_send_pkt(interface, my_ipv6_packet, &my_ipv6_packet_len); ou combinées en une seule fonction : thc_generate_and_send_pkt(interface, srcmac, dstmac, my_ipv6_packet, &my_ipv6_packet_len);

thc_generate_and_send_pkt : Génère le paquet IPv6 réel et final puis l'envoie. (char*) interface - l'interface sur laquelle envoyer le paquet (unsigned char*) srcmac - la mac source à utiliser (au format réseau) (OPTIONNEL, la mac réelle est utilisée si NULL) (unsigned char*) dstmac - la mac destination à utiliser (au format réseau) (OPTIONNEL, la mac réelle est recherchée si NULL) Les fonctions thc_generate_pkt et thc_send_pkt ensemble fournissent la même fonctionnalité. Vous les utilisez généralement seulement si vous faites quelque chose comme : thc_generate_pkt(...); while(1) thc_send_pkt(...); Ces fonctions retournent (int) 0 en cas de succès et -1 en cas d'erreur.

Lorsque vous avez terminé, libérez la mémoire avec : thc_destroy_packet(my_ipv6_packet);

Il y a quelques fonctions d'aide importantes dont vous aurez besoin : thc_resolve6(destinationstring); Résout l'adresse IPv6 ou le nom DNS en une adresse réseau IPv6. Utilisez-la pour dst6 dans thc_create_ipv6_extended(). Le résultat doit être libéré avec free() lorsqu'il n'est plus nécessaire. thc_inverse_packet(my_ipv6_packet, &my_ipv6_packet_len); Cette fonction intelligente permute les adresses source et destination, échange le type d'en-tête ICMP (ECHO REQUEST -> ECHO REPLY etc.) et recalcule la somme de contrôle. Si vous n'avez pas d'idée de l'utilité, allez jouer avec votre xbox :-)

Si vous voulez le faire très rapidement, il existe quelques fonctions prédéfinies de création ICMPv6 qui envoient des paquets ICMPv6 en une seule ligne de code : thc_ping6(interface, src, dst, size, count); thc_neighboradv6(interface, src, dst, srcmac, dstmac, flags, target); thc_neighborsol6(interface, src, dst, target, srcmac, dstmac); thc_routeradv6(interface, src, dst, srcmac, default_ttl, managed, prefix, prefixlen, mtu, lifetime); thc_routersol6(interface, src, dst, srcmac, dstmac); thc_toobig6(interface, src, srcmac, dstmac, mtu, my_ipv6_packet, my_ipv6_packet_len); thc_paramprob6(interface, src, srcmac, dstmac, code, pointer, my_ipv6_packet, my_ipv6_packet_len); thc_unreach6(interface, src, srcmac, dstmac, icmpcode, my_ipv6_packet, my_ipv6_packet_len); thc_redir6(interface, src, srcmac, dstmac, newrouter, newroutermac, my_ipv6_packet, my_ipv6_packet_len); thc_send_as_fragment6(interface, src, dst, type, buf, buflen, frag_len); Elles font ce à quoi vous vous attendez, donc je suis trop pares^H^H^H^H^Hoccupé pour les décrire plus en détail.

Les fonctions suivantes allouent de la mémoire pour le pointeur de résultat, alors pensez à libérer les pointeurs de résultat de ces fonctions une fois que vous n'en avez plus besoin : thc_ipv6_dummymac() thc_ipv62notation() thc_ipv62string() thc_string2ipv6() thc_string2notation() thc_resolve6() thc_get_own_ipv6() thc_get_own_mac() thc_get_multicast_mac() thc_get_mac() thc_lookup_ipv6_mac() thc_look_neighborcache() thc_generate_key() thc_generate_cga() thc_generate_rsa()

Cela aide beaucoup de jeter un œil aux exemples d'utilisation. Les meilleurs sont les outils du paquet thc-ipv6, en particulier implementation6.c et fake_*6.c – amusez-vous, et renvoyez du code, pour que la communauté puisse continuer à construire dessus.

DÉTECTION

La plupart des outils peuvent être facilement détectés par un IDS ou un logiciel de détection spécialisé. Cela est fait exprès pour faciliter la détection d'une utilisation malveillante. Les outils spécifient soit une signature de paquet fixe, soit reniflent génériquement les paquets (par exemple, répondant ainsi aux sollicitations de voisin ICMPv6 envoyées à une mac inexistante, et sont donc très faciles à détecter). Si vous ne le souhaitez pas, modifiez le code.

CORRECTIFS, BOGUES, ASTUCES, etc.

Envoyez-les à vh (at) thc (dot) org (et ajoutez « antispam » dans l'objet) Ou soumettez via github : https://github.com/vanhauser-thc/thc-ipv6

Amusez-vous bien !

Télécharger l’outil