Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
thc-ipv6 — Toolkit per attacchi IPv6 | Kitploit
Strumenti/GitHubGitHub/vanhauser-thc/thc-ipv6
RicognizioneAnalisi delle VulnerabilitàExploitEvasione IDS/IPSFuzzingSicurezza di ReteSicurezza WirelessPenetration TestingUtilità e FrameworkRed Teaming
GitHubvanhauser-thc/thc-ipv6

thc-ipv6

1.2k22964 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Toolkit per attacchi IPv6

Vedi Repository
Condividi

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

root@kitploit:~
	Licensed under AGPLv3 (vedi file LICENSE)

INTRODUZIONE

Questo codice è nato quando sono entrato in contatto con IPv6, ho imparato sempre di più - e poi non ho trovato strumenti per giocare (leggi: "hackerare") con esso. All'inizio ho provato a implementare cose con libnet, ma poi ho scoperto che l'implementazione IPv6 è solo parziale - e fa schifo. Ho provato ad aggiungere il codice mancante, ma beh, non era così facile, quindi ho risparmiato tempo e ho scritto rapidamente la mia libreria.

LIMITAZIONI

Questo codice attualmente funziona solo su:

  • Linux 2.6.x o successivo (a causa dell'uso di /proc)
  • Ethernet Ma per tutti i ragazzi Linux significa che funzionerà per il 98% dei tuoi casi d'uso. Sono gradite patch! (aggiungi "antispam" nell'oggetto per superare la mia protezione antispam, altrimenti l'email rimbalzerà)

BUILD

Devi avere installato libpcap-dev per poter compilare gli strumenti. Inoltre sono raccomandati anche libssl-dev e libnetfilter-queue-dev.

Questi possono essere installati con (Kali, Debian, Ubuntu): sudo apt-get install libpcap-dev libssl-dev libnetfilter-queue-dev

Puoi compilare gli strumenti eseguendo: make all

Puoi installare gli strumenti e le pagine man esistenti eseguendo: make install

GLI STRUMENTI

Il THC IPV6 ATTACK TOOLKIT viene già fornito con molti strumenti di attacco efficaci:

  • parasite6: spoof ICMPv6 neighbor solicitation/advertisement, ti mette come man-in-the-middle, come ARP mitm (e parasite)
  • alive6: uno scan alive efficace, che rileverà tutti i sistemi in ascolto su questo indirizzo
  • dnsdict6: brute forcer parallelo di dizionario DNS IPv6
  • fake_router6: annunciati come router sulla rete, con la massima priorità
  • redir6: reindirizza il traffico verso di te in modo intelligente (man-in-the-middle) con un abile spoof ICMPv6 redirect
  • toobig6: riduttore di MTU con la stessa intelligenza di redir6
  • detect-new-ip6: rileva nuovi dispositivi IPv6 che si uniscono alla rete, puoi eseguire uno script per scansionare automaticamente questi sistemi ecc.
  • dos-new-ip6: rileva nuovi dispositivi IPv6 e dice loro che il loro IP scelto collide sulla rete (DOS).
  • trace6: traceroute6 molto veloce con supporto di ICMP6 echo request e TCP-SYN
  • flood_router6: inonda un target con annunci router casuali
  • flood_advertise6: inonda un target con annunci neighbor casuali
  • fuzz_ip6: fuzzer per IPv6
  • implementation6: esegue vari controlli di implementazione su IPv6
  • implementation6d: demone di ascolto per implementation6 per controllare dietro un FW
  • fake_mld6: annunciati in un gruppo multicast di tua scelta sulla rete
  • fake_mld26: stesso ma per MLDv2
  • fake_mldrouter6: falsifica messaggi router MLD
  • fake_mipv6: ruba un IP mobile al tuo se IPSEC non è richiesto per l'autenticazione
  • fake_advertiser6: annunciati sulla rete
  • smurf6: smurf locale
  • rsmurf6: smurf remoto, noto per funzionare solo contro linux al momento
  • exploit6: vulnerabilità IPv6 note da testare contro un target
  • denial6: una raccolta di test denial-of-service contro un target
  • thcping6: invia un pacchetto ping6 artigianale
  • sendpees6: uno strumento di [email protected], che genera richieste neighbor solicitation con molti CGA (roba crittografica ;-) per tenere la CPU occupata. carino. e circa altri 25 strumenti da scoprire :-)

Basta eseguire gli strumenti senza opzioni e ti daranno aiuto e mostreranno le opzioni della riga di comando.

LA LIBRERIA

La libreria thc-ipv6-lib.c è il cuore e l'anima di tutti gli strumenti - e quelli che potresti voler scrivere. L'implementazione è così semplice, di solito sono bastano 2-4 righe per creare un pacchetto IPv6/ICMPv6 completo con il contenuto che desideri.

La struttura base che usi è (thc_ipv6_hdr *) per esempio thc_ipv6_hdr *my_ipv6_packet; int my_ipv6_packet_len; e non dovrai mai giocare con le sue opzioni/campi.

Ogni volta che vuoi costruire un pacchetto IPv6, scrivi: my_ipv6_packet = thc_create_ipv6_extended(interface, prefer, &my_ipv6_packet_len, src6, dst6, ttl, length, label, class, version); se qualcosa fallisce, restituisce NULL (solo se my_ipv6_packet_len o dst6 non esistono o malloc fallisce). Le opzioni di thc_create_ipv6_extended sono: (char*) interface - l'interfaccia su cui inviare il pacchetto (int) prefer - PREFER_LINK (per usare l'indirizzo link-local) o PREFER_HOST per usare un indirizzo IPv6 host, e PREFER_GLOBAL per usare un indirizzo IP6 pubblico (default) (int ) &my_ipv6_packet_len - la dimensione del pacchetto che verrà creato (unsigned char) src6 - l'IP6 sorgente (OPZIONALE - verrà selezionato se NULL) (unsigned char*) dst6 - l'IP6 di destinazione (in formato rete, 16 byte) solitamente il risultato di thc_resolve6("ipv6.google.com"); (int) ttl - il ttl del pacchetto (OPZIONALE - 0 lo imposterà a 255) (int) length - la lunghezza che verrà impostata nell'header (OPZIONALE - 0 = lunghezza reale) (int) label - l'etichetta di flusso (0 va bene) (int) class - la classe del pacchetto (0 va bene) (int) version - la versione IP6 (OPZIONALE - 0 imposterà la versione 6) Restituisce NULL in caso di errore o una struttura mallocata in caso di successo. free() una volta che hai finito.

Ora puoi impostare header di estensione sopra: 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); Le funzioni spiegate: _route: Aggiungi un Routing Forwarding Header (come IP Source Routing) (int) routers - il numero di router in routerptr (char**) routerptr - una struttura char[routers + 1] con destinazioni router in formato rete. Vedi alive6.c per un esempio. _fragment: Aggiungi un Fragment Header (int) offset - l'offset in cui scrivere i dati (nota: inserisci la posizione dell'offset in byte qui, non in ottetti) (int) more_frags - impostato a 0 se è l'ultimo frammento, 1 su tutti gli altri (int) id - un ID per il pacchetto (uguale per tutti i frammenti) _dst: Aggiungi un Destination Options Header (char) buf - un buffer di char. devi gestire questo buffer tu stesso con ciò che vuoi scrivere dentro. (int) buflen - la lunghezza di buf _hopbyhop: Aggiungi un Hop-By-Hop Header (char*) buf - un buffer di char. devi gestire questo buffer tu stesso con ciò che vuoi scrivere dentro. (int) buflen - la lunghezza di buf _nonxt: Specifica che non ci saranno header successivi (int) hdropt - questa opzione è attualmente ignorata _misc: Specifica un header miscellaneo. Usalo se vuoi progettare un header di estensione non valido o inesistente. (int) type - l'ID del tipo per specificare l'header (int) len - la lunghezza da pubblicizzare per l'header (OPZIONALE - -1 imposta il valore corretto) (char*) buf - un buffer di char. devi gestire questo buffer tu stesso con ciò che vuoi scrivere dentro. (int) buflen - la lunghezza di buf Queste funzioni restituiscono (int) 0 in caso di successo e -1 in caso di errore.

Infine puoi aggiungere gli header stream o 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: Aggiungi un header di pacchetto ICMP6 (int) type: il tipo ICMP6 (int) code: il codice ICMP6 (int) flags: i flag ICMP6 (char*) buf - un buffer di char. devi gestire questo buffer tu stesso con ciò che vuoi scrivere dentro. (int) buflen - la lunghezza di buf _tcp|_udp: Aggiungi un header TCP o UDP (ushort) source_port: porta sorgente (ushort) destination_port: porta destinazione (uint) sequence_number: numero di sequenza TCP (uint) ack_number: numero di acknowledgement TCP (ushort) checksum: checksum UDP, 0 = genera checksum (per TCP il checksum è sempre calcolato) (uchar) flags: flag TCP: TCP_SYN, TCP_ACK, TCP_FIN, TCP_RST, TCP_PSH, ... (uint) window_size: dimensione finestra TCP (uint) urgent_pointer: puntatore urgente TCP (di solito 0) (char*) options: buffer opzioni TCP, può essere NULL (uint) options_length: la lunghezza del buffer delle opzioni TCP (char*) data: i dati che il protocollo trasporta (uint) data_length: la lunghezza del buffer dati _data6: Aggiungi un header miscellaneo (int) type: l'ID del protocollo (char*) buf - un buffer di char. devi gestire questo buffer tu stesso con ciò che vuoi scrivere dentro. (int) buflen - la lunghezza di buf Queste funzioni restituiscono (int) 0 in caso di successo e -1 in caso di errore.

Una volta finito, crei e invii il pacchetto. 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 combinato in una singola funzione: thc_generate_and_send_pkt(interface, srcmac, dstmac, my_ipv6_packet, &my_ipv6_packet_len);

thc_generate_and_send_pkt: Genera il pacchetto IPv6 reale e finale e poi lo invia. (char*) interface - l'interfaccia su cui inviare il pacchetto (unsigned char*) srcmac - il mac sorgente da usare (in formato rete) (OPZIONALE, viene usato il mac reale se NULL) (unsigned char*) dstmac - il mac destinazione da usare (in formato rete) (OPZIONALE, viene cercato il mac reale se NULL) thc_generate_pkt e thc_send_pkt insieme forniscono la stessa funzionalità. Di solito li usi solo se fai qualcosa come thc_generate_pkt(...); while(1) thc_send_pkt(...); Queste funzioni restituiscono (int) 0 in caso di successo e -1 in caso di errore.

Quando hai finito, libera la memoria con: thc_destroy_packet(my_ipv6_packet);

Ci sono alcune importanti funzioni helper di cui avrai bisogno: thc_resolve6(destinationstring); Risolve l'indirizzo IPv6 o il nome DNS in un indirizzo di rete IPv6. Usalo per dst6 in thc_create_ipv6_extended(). Il risultato deve essere free()ato quando non serve più. thc_inverse_packet(my_ipv6_packet, &my_ipv6_packet_len); Questa intelligente funzione inverte indirizzo sorgente e destinazione, scambia il tipo di header ICMP (ECHO REQUEST -> ECHO REPLY ecc.) e ricalcola il checksum. Se non hai idea di a cosa possa servire, vai a giocare con la tua xbox :-)

Se vuoi fare tutto molto velocemente, ci sono alcune funzioni predefinite per creare pacchetti ICMPv6 che inviano pacchetti ICMP6 in una sola riga di codice: 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); Fanno quello che ti aspetti, quindi sono troppo pigro^H^H^H^H^Hoccupato per descriverle nel dettaglio.

Le seguenti funzioni allocano memoria per il puntatore di risultato, quindi ricordati di liberare i puntatori risultato da queste funzioni quando non ti servono più: 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()

Aiuta molto dare un'occhiata agli esempi di utilizzo. I migliori sono gli strumenti del pacchetto thc-ipv6, specialmente implementation6.c e fake_*6.c - divertiti, e rimanda indietro il codice, così la comunità può ulteriormente costruirci sopra.

RILEVAMENTO

La maggior parte degli strumenti può essere facilmente rilevata da un IDS o un software di rilevamento specializzato. Questo è fatto apposta per rendere più facile il rilevamento di usi malintenzionati. Gli strumenti specificano una firma fissa del pacchetto, o sniffano genericamente i pacchetti (es. quindi rispondono anche a neighbor solicitation ICMPv6 inviate a un mac inesistente, e sono quindi molto facili da rilevare). Se non vuoi questo, modifica il codice.

PATCH, BUG, SUGGERIMENTI, ecc.

Inviate a vh (at) thc (dot) org (aggiungete "antispam" all'oggetto) O inviate via github: https://github.com/vanhauser-thc/thc-ipv6

Divertitevi!

Scarica lo strumento