Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
thc-ipv6 — Kit de herramientas de ataque IPv6 | Kitploit
Herramientas/GitHubGitHub/vanhauser-thc/thc-ipv6
ReconocimientoAnálisis de VulnerabilidadesExplotaciónEvasión de IDS/IPSFuzzingSeguridad de RedesSeguridad InalámbricaPruebas de PenetraciónUtilidades y FrameworksRed Teaming
GitHubvanhauser-thc/thc-ipv6

thc-ipv6

1.2k229hace 4 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →

Kit de herramientas de ataque IPv6

Ver Repositorio
Compartir

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

root@kitploit:~
	Licenciado bajo AGPLv3 (ver archivo LICENSE)

INTRODUCCIÓN

Este código fue inspirado cuando entré en contacto con IPv6, aprendí más y más sobre él, y luego no encontré herramientas para jugar (léase: "hackear") con él. Primero intenté implementar cosas con libnet, pero luego descubrí que la implementación de IPv6 es solo parcial - y es pésima. Intenté agregar el código faltante, pero bueno, no fue tan fácil, así que ahorré mi tiempo y rápidamente escribí mi propia librería.

LIMITACIONES

Este código actualmente solo funciona en:

  • Linux 2.6.x o más reciente (por el uso de /proc)
  • Ethernet Pero esto significa para todos los usuarios de Linux que funcionará para el 98% de tus casos de uso. ¡Se aceptan parches! (agrega "antispam" en la línea de asunto para superar mi protección antispam, de lo contrario el correo rebotará)

CONSTRUCCIÓN

Debes tener instalado libpcap-dev para poder construir las herramientas. Adicionalmente se recomienda libssl-dev y libnetfilter-queue-dev.

Se pueden instalar con (Kali, Debian, Ubuntu): sudo apt-get install libpcap-dev libssl-dev libnetfilter-queue-dev

Puedes construir las herramientas ejecutando: make all

Puedes instalar las herramientas y las páginas de manual existentes ejecutando: make install

LAS HERRAMIENTAS

EL THC IPV6 ATTACK TOOLKIT ya viene con muchas herramientas de ataque efectivas:

  • parasite6: Falsificador de solicitud/publicidad de vecinos ICMPv6, te coloca como hombre en el medio, igual que ARP mitm (y parasite)
  • alive6: Un escaneo de alive efectivo, que detectará todos los sistemas escuchando en esta dirección
  • dnsdict6: Fuerza bruta de diccionario DNS IPv6 paralelizada
  • fake_router6: Anúnciate como un router en la red, con la prioridad más alta
  • redir6: Redirige el tráfico hacia ti de forma inteligente (hombre en el medio) con un astuto falsificador de redirección ICMPv6
  • toobig6: Reductor de MTU con la misma inteligencia que redir6
  • detect-new-ip6: Detecta nuevos dispositivos IPv6 que se unen a la red; puedes ejecutar un script para escanear automáticamente estos sistemas, etc.
  • dos-new-ip6: Detecta nuevos dispositivos IPv6 y les dice que su IP elegida colisiona en la red (DOS).
  • trace6: Traceroute6 muy rápido con soporte para solicitud de eco ICMP6 y TCP-SYN
  • flood_router6: Inunda un objetivo con anuncios de router aleatorios
  • flood_advertise6: Inunda un objetivo con anuncios de vecinos aleatorios
  • fuzz_ip6: Fuzzer para IPv6
  • implementation6: Realiza varias pruebas de implementación en IPv6
  • implementation6d: Demonio de escucha para implementation6 para comprobar detrás de un FW
  • fake_mld6: Anúnciate en un grupo multicast de tu elección en la red
  • fake_mld26: Lo mismo pero para MLDv2
  • fake_mldrouter6: Falsifica mensajes de router MLD
  • fake_mipv6: Roba una IP móvil a la tuya si no se requiere IPSEC para autenticación
  • fake_advertiser6: Anúnciate en la red
  • smurf6: Smurfer local
  • rsmurf6: Smurfer remoto, conocido por funcionar solo contra Linux por el momento
  • exploit6: Vulnerabilidades IPv6 conocidas para probar contra un objetivo
  • denial6: Una colección de pruebas de denegación de servicio contra un objetivo
  • thcping6: Envía un paquete ping6 manipulado a mano
  • sendpees6: Una herramienta de [email protected], que genera solicitudes de vecinos con muchos CGA (cosas criptográficas ;-) para mantener la CPU ocupada. Bonito. y alrededor de 25 herramientas más para que descubras :-)

Simplemente ejecuta las herramientas sin opciones y te darán ayuda y mostrarán las opciones de línea de comandos.

LA LIBRERÍA

La librería thc-ipv6-lib.c es el corazón y el alma de todas las herramientas - y aquellas que quizás quieras escribir. La implementación es tan simple que normalmente son solo 2-4 líneas para crear un paquete IPv6/ICMPv6 completo con el contenido que elijas.

Tu estructura básica que usas es (thc_ipv6_hdr *) por ejemplo thc_ipv6_hdr *my_ipv6_packet; int my_ipv6_packet_len; y nunca tendrás que jugar con sus opciones/campos.

Cuando quieras construir un paquete IPv6, solo escribes: my_ipv6_packet = thc_create_ipv6_extended(interface, prefer, &my_ipv6_packet_len, src6, dst6, ttl, length, label, class, version); si algo falla, devuelve NULL (solo si my_ipv6_packet_len o dst6 no existen o malloc falla). Las opciones de thc_create_ipv6_extended son: (char*) interface - la interfaz en la que deseas enviar el paquete (int) prefer - puede ser PREFER_LINK (para usar la dirección de enlace local) o PREFER_HOST para usar una dirección IPv6 de host, y PREFER_GLOBAL para usar una dirección IP6 pública (internet) (por defecto) (int ) &my_ipv6_packet_len - el tamaño del paquete que se creará (unsigned char) src6 - la IP6 de origen (OPCIONAL - se seleccionará si es NULL) (unsigned char*) dst6 - la IP6 de destino (en formato de red, 16 bytes de longitud) usualmente el resultado de thc_resolve6("ipv6.google.com"); (int) ttl - el ttl del paquete (OPCIONAL - 0 establecerá esto a 255) (int) length - la longitud que se establecerá en la cabecera (OPCIONAL - 0 = longitud real) (int) label - la etiqueta de flujo (0 está bien) (int) class - la clase del paquete (0 está bien) (int) version - la versión de IP6 (OPCIONAL - 0 establecerá esto a la versión 6) Devuelve NULL en errores o una estructura asignada con malloc en caso de éxito. libérela con free() una vez que hayas terminado con ella.

Ahora puedes establecer cabeceras de extensión sobre ella: 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); Las funciones explicadas: _route: Agrega una cabecera de reenvío de enrutamiento (como Source Routing IP) (int) routers - el número de routers en routerptr (char**) routerptr - una estructura char[routers + 1] con destinos de router en formato de red. Consulta alive6.c para un ejemplo. _fragment: Agrega una cabecera de fragmento (int) offset - el desplazamiento en el cual se deben escribir los datos (nota: aquí coloca la ubicación del desplazamiento en bytes, no en octetos de byte) (int) more_frags - establece a 0 si es el fragmento final, 1 en todos los demás (int) id - un ID para el paquete (igual para todos los fragmentos) _dst: Agrega una cabecera de opciones de destino (char) buf - un búfer de caracteres. Debes controlar este búfer tú mismo con lo que quieras escribir en él. (int) buflen - la longitud de buf _hopbyhop: Agrega una cabecera salto por salto (char*) buf - un búfer de caracteres. Debes controlar este búfer tú mismo con lo que quieras escribir en él. (int) buflen - la longitud de buf _nonxt: Especifica que no habrá cabeceras siguientes en absoluto (int) hdropt - esta opción actualmente se ignora _misc: Especifica una cabecera miscelánea. Úsala si quieres diseñar una cabecera de extensión inválida o inexistente. (int) type - el ID de tipo para especificar la cabecera (int) len - la longitud que se anunciará para la cabecera (OPCIONAL - -1 establece esto a el valor correcto) (char*) buf - un búfer de caracteres. Debes controlar este búfer tú mismo con lo que quieras escribir en él. (int) buflen - la longitud de buf Estas funciones devuelven (int) 0 en caso de éxito y -1 en caso de error.

Finalmente puedes agregar las cabeceras de flujo o datagrama. 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: Agrega una cabecera de paquete ICMP6 (int) type: el tipo ICMP6 (int) code: el código ICMP6 (int) flags: las banderas ICMP6 (char*) buf - un búfer de caracteres. Debes controlar este búfer tú mismo con lo que quieras escribir en él. (int) buflen - la longitud de buf _tcp|_udp: Agrega una cabecera TCP o UDP (ushort) source_port: puerto de origen (ushort) destination_port: puerto de destino (uint) sequence_number: número de secuencia TCP (uint) ack_number: número de acuse de recibo TCP (ushort) checksum: suma de comprobación UDP, 0 = generar suma de comprobación (para TCP la suma de comprobación siempre se calcula) (uchar) flags: banderas TCP: TCP_SYN, TCP_ACK, TCP_FIN, TCP_RST, TCP_PSH, ... (uint) window_size: tamaño de ventana TCP (uint) urgent_pointer: puntero urgente TCP (normalmente 0) (char*) options: búfer de opciones TCP, puede ser NULL (uint) options_length: la longitud del búfer de opciones TCP (char*) data: los datos que transporta el protocolo (uint) data_length: la longitud del búfer de datos _data6: Agrega una cabecera miscelánea (int) type: el ID del protocolo (char*) buf - un búfer de caracteres. Debes controlar este búfer tú mismo con lo que quieras escribir en él. (int) buflen - la longitud de buf Estas funciones devuelven (int) 0 en caso de éxito y -1 en caso de error.

Una vez que hayas terminado, creas y envías el paquete. thc_generate_pkt(interface, srcmac, dstmac, my_ipv6_packet, &my_ipv6_packet_len); thc_send_pkt(interface, my_ipv6_packet, &my_ipv6_packet_len); o combinado en una sola función: thc_generate_and_send_pkt(interface, srcmac, dstmac, my_ipv6_packet, &my_ipv6_packet_len);

thc_generate_and_send_pkt: Esto genera el paquete IPv6 real y final y luego lo envía. (char*) interface - la interfaz para enviar el paquete (unsigned char*) srcmac - la mac de origen a usar (en formato de red) (OPCIONAL, se usa la mac real si es NULL) (unsigned char*) dstmac - la mac de destino a usar (en formato de red) (OPCIONAL, se busca la mac real si es NULL) thc_generate_pkt y thc_send_pkt juntos proporcionan la misma funcionalidad. Normalmente los usas solo si haces algo como thc_generate_pkt(...); while(1) thc_send_pkt(...); Estas funciones devuelven (int) 0 en caso de éxito y -1 en caso de error.

Cuando hayas terminado, libera la memoria con: thc_destroy_packet(my_ipv6_packet);

Hay algunas funciones auxiliares importantes que necesitarás: thc_resolve6(destinationstring); Esto resuelve la dirección IPv6 o nombre DNS a una dirección de red IPv6. Úsalo para dst6 en thc_create_ipv6_extended(). El resultado debe liberarse con free cuando ya no sea necesario. thc_inverse_packet(my_ipv6_packet, &my_ipv6_packet_len); Esta inteligente función intercambia la dirección de origen y destino, intercambia el tipo de cabecera ICMP (ECHO REQUEST -> ECHO REPLY, etc.) y recalcula la suma de comprobación. Si no tienes idea de para qué podría ser esto útil, ve a jugar con tu xbox :-)

Si solo quieres hacerlo muy rápido, hay algunas funciones predefinidas de creación de ICMPv6 que envían paquetes ICMPv6 en solo una línea de código: 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); Estas hacen lo que esperas que hagan, así que estoy demasiado perezoso^H^H^H^H^Hocupado para describirlo con más detalle.

Las siguientes funciones asignan memoria para el puntero de resultado, así que recuerda liberar los punteros de resultado de estas funciones una vez que no los necesites más: 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()

Ayuda mucho si observas los usos de ejemplo. Los mejores son las herramientas del paquete thc-ipv6, especialmente implementation6.c y fake_*6.c - diviértete, y envía código de vuelta, para que la comunidad pueda seguir construyendo sobre él.

DETECCIÓN

La mayoría de las herramientas pueden ser fácilmente detectadas por un IDS o software de detección especializado. Esto se hace a propósito para facilitar la detección de usos maliciosos. Las herramientas o especifican una firma de paquete fija, o genéricamente olfatean paquetes (por ejemplo, respondiendo también a solicitudes de vecinos ICMPv6 que se envían a una mac inexistente, y por lo tanto son muy fáciles de detectar). Si no quieres esto, cambia el código.

PARCHES, ERRORES, CONSEJOS, ETC.

Envíalos a vh (at) thc (dot) org (y agrega "antispam" a la línea de asunto) O envíalos a través de github: https://github.com/vanhauser-thc/thc-ipv6

¡Diviértete!

Descargar herramienta