Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
thc-ipv6 — Набор инструментов для атак на IPv6 | Kitploit
Инструменты/GitHubGitHub/vanhauser-thc/thc-ipv6
РазведкаАнализ уязвимостейЭксплуатацияОбход IDS/IPSФаззингСетевая безопасностьБезопасность беспроводных сетейТестирование на ПроникновениеУтилиты и фреймворкиRed Teaming
GitHubvanhauser-thc/thc-ipv6

thc-ipv6

1.2k2294 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Набор инструментов для атак на IPv6

Репозиторий

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

root@kitploit:~
	Лицензировано по AGPLv3 (см. файл LICENSE)

ВВЕДЕНИЕ

Этот код был вдохновлён, когда я познакомился с IPv6, узнавал о нём всё больше и больше — и не нашёл инструментов для игры (читай: «взлома»). Сначала я пытался реализовать вещи с помощью libnet, но потом обнаружил, что реализация IPv6 частична и отвратительна. Я попытался добавить недостающий код, но, ну, это было не так просто, поэтому я сэкономил время и быстро написал собственную библиотеку.

ОГРАНИЧЕНИЯ

Этот код в настоящее время работает только на:

  • Linux 2.6.x или новее (из-за использования /proc)
  • Ethernet Но это означает для всех пользователей Linux, что он будет работать в 98% ваших случаев. Патчи приветствуются! (добавьте «antispam» в тему письма, чтобы пройти мою защиту от спама, иначе письмо будет отклонено)

СБОРКА

Для сборки инструментов у вас должен быть установлен libpcap-dev. Кроме того, рекомендуется также libssl-dev и libnetfilter-queue-dev.

Их можно установить с помощью (Kali, Debian, Ubuntu): sudo apt-get install libpcap-dev libssl-dev libnetfilter-queue-dev

Вы можете собрать инструменты, выполнив: make all

Вы можете установить инструменты и существующие руководства, выполнив: make install

ИНСТРУМЕНТЫ

Набор инструментов THC IPV6 ATTACK TOOLKIT уже включает множество эффективных атакующих инструментов:

  • parasite6: спуфер ICMPv6 запросов/объявлений соседей, делает вас посредником, как и ARP mitm (и parasite)
  • alive6: эффективное сканирование на живые узлы, которое обнаружит все системы, прослушивающие этот адрес
  • dnsdict6: параллельный DNS IPv6 словарный брутфорсер
  • fake_router6: объявите себя маршрутизатором в сети с наивысшим приоритетом
  • redir6: перенаправляйте трафик на себя интеллектуально (человек посередине) с помощью умного спуфера ICMPv6 redirect
  • toobig6: уменьшитель MTU с той же интеллектуальностью, что и redir6
  • detect-new-ip6: обнаружение новых IPv6 устройств, присоединяющихся к сети; можно запустить скрипт для автоматического сканирования этих систем и т.д.
  • dos-new-ip6: обнаружение новых IPv6 устройств и сообщение им, что их выбранный IP конфликтует в сети (DOS).
  • trace6: очень быстрый traceroute6 с поддержкой ICMP6 echo request и TCP-SYN
  • flood_router6: затопление цели случайными объявлениями маршрутизатора
  • flood_advertise6: затопление цели случайными объявлениями соседей
  • fuzz_ip6: фаззер для IPv6
  • implementation6: выполнение различных проверок реализации IPv6
  • implementation6d: демон прослушивания для implementation6 для проверки за брандмауэром
  • fake_mld6: объявите себя в любой многоадресной группе по вашему выбору в сети
  • fake_mld26: то же самое для MLDv2
  • fake_mldrouter6: подделка сообщений MLD-маршрутизатора
  • fake_mipv6: украдите мобильный IP, если IPSEC не требуется для аутентификации
  • fake_advertiser6: объявите себя в сети
  • smurf6: локальный smurf
  • rsmurf6: удалённый smurf, в настоящее время работает только против Linux
  • exploit6: известные уязвимости IPv6 для тестирования цели
  • denial6: набор тестов на отказ в обслуживании против цели
  • thcping6: отправка специально созданного пакета ping6
  • sendpees6: инструмент от [email protected], который генерирует запросы соседей с множеством CGA (крипто-штуки ;-), чтобы загрузить процессор. приятно. и ещё около 25 инструментов для вашего открытия :-)

Просто запустите инструменты без параметров, и они покажут справку и параметры командной строки.

БИБЛИОТЕКА

Библиотека thc-ipv6-lib.c является сердцем и душой всех инструментов — и тех, которые вы, возможно, захотите написать. Реализация настолько проста, что обычно требуется всего 2–4 строки, чтобы создать полный пакет IPv6/ICMPv6 с содержимым по вашему выбору.

Ваша базовая структура: (thc_ipv6_hdr *) например: thc_ipv6_hdr *my_ipv6_packet; int my_ipv6_packet_len; и вам никогда не придётся возиться с её опциями/полями.

Всякий раз, когда вы хотите создать пакет IPv6, просто напишите: my_ipv6_packet = thc_create_ipv6_extended(interface, prefer, &my_ipv6_packet_len, src6, dst6, ttl, length, label, class, version); если что-то не удаётся, возвращается NULL (только если my_ipv6_packet_len или dst6 не существуют или malloc не удаётся). Параметры thc_create_ipv6_extended: (char*) interface — интерфейс, через который вы хотите отправить пакет (int) prefer — либо PREFER_LINK (использовать локальный адрес канала), либо PREFER_HOST (использовать IPv6-адрес хоста) и PREFER_GLOBAL (использовать публичный (интернет) IP6 адрес) (по умолчанию) (int ) &my_ipv6_packet_len — размер пакета, который будет создан (unsigned char) src6 — исходный IP6 (ОПЦИОНАЛЬНО; будет выбран, если NULL) (unsigned char*) dst6 — целевой IP6 (в сетевом формате, 16 байт) обычно результат thc_resolve6("ipv6.google.com"); (int) ttl — TTL пакета (ОПЦИОНАЛЬНО; 0 установит 255) (int) length — длина, которая будет установлена в заголовке (ОПЦИОНАЛЬНО; 0 = реальная длина) (int) label — метка потока (0 подходит) (int) class — класс пакета (0 подходит) (int) version — версия IP6 (ОПЦИОНАЛЬНО; 0 установит версию 6) Возвращает NULL при ошибках или malloc'нутый структуру при успехе. free() её, когда закончите.

Теперь вы можете установить заголовки расширения поверх него: 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); Описание функций: _route: Добавить заголовок маршрутизации пересылки (как IP Source Routing) (int) routers — количество маршрутизаторов в routerptr (char**) routerptr — структура char[routers + 1] с адресами маршрутизаторов в сетевом формате. См. пример в alive6.c. _fragment: Добавить заголовок фрагментации (int) offset — смещение, по которому должны быть записаны данные (обратите внимание: указывайте смещение в байтах, а не в октетах) (int) more_frags — установите 0, если это последний фрагмент, 1 для всех остальных (int) id — ID для пакета (одинаковый для всех фрагментов) _dst: Добавить заголовок опций назначения (char) buf — буфер символов. Вы сами управляете этим буфером, записывая в него то, что хотите. (int) buflen — длина buf _hopbyhop: Добавить заголовок Hop-By-Hop (char*) buf — буфер символов. Вы сами управляете этим буфером, записывая в него то, что хотите. (int) buflen — длина buf _nonxt: Указать, что никаких последующих заголовков не будет (int) hdropt — эта опция в настоящее время игнорируется _misc: Указать произвольный заголовок. Используйте это, если хотите создать недействительный или несуществующий заголовок расширения. (int) type — ID типа для указания заголовка (int) len — длина, рекламируемая для заголовка (ОПЦИОНАЛЬНО; -1 устанавливает правильное значение) (char*) buf — буфер символов. Вы сами управляете этим буфером, записывая в него то, что хотите. (int) buflen — длина buf Эти функции возвращают (int) 0 при успехе и -1 при ошибке.

Наконец, вы можете добавить потоковые заголовки или заголовки датаграмм. 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: Добавить заголовок пакета ICMP6 (int) type: тип ICMP6 (int) code: код ICMP6 (int) flags: флаги ICMP6 (char*) buf — буфер символов. Вы сами управляете этим буфером, записывая в него то, что хотите. (int) buflen — длина buf _tcp|_udp: Добавить заголовок TCP или UDP (ushort) source_port: исходный порт (ushort) destination_port: порт назначения (uint) sequence_number: TCP sequence number (uint) ack_number: TCP acknowledgement number (ushort) checksum: UDP checksum, 0 = генерировать checksum (для TCP checksum всегда вычисляется) (uchar) flags: TCP flags: TCP_SYN, TCP_ACK, TCP_FIN, TCP_RST, TCP_PSH, ... (uint) window_size: TCP window size (uint) urgent_pointer: TCP urgent pointer (обычно 0) (char*) options: TCP options buffer, может быть NULL (uint) options_length: длина буфера TCP options (char*) data: данные, переносимые протоколом (uint) data_length: длина буфера данных _data6: Добавить произвольный заголовок (int) type: ID протокола (char*) buf — буфер символов. Вы сами управляете этим буфером, записывая в него то, что хотите. (int) buflen — длина buf Эти функции возвращают (int) 0 при успехе и -1 при ошибке.

Когда закончите, создайте и отправьте пакет. thc_generate_pkt(interface, srcmac, dstmac, my_ipv6_packet, &my_ipv6_packet_len); thc_send_pkt(interface, my_ipv6_packet, &my_ipv6_packet_len); или объединённая функция: thc_generate_and_send_pkt(interface, srcmac, dstmac, my_ipv6_packet, &my_ipv6_packet_len);

thc_generate_and_send_pkt: генерирует реальный и окончательный пакет IPv6 и затем отправляет его. (char*) interface — интерфейс для отправки пакета (unsigned char*) srcmac — исходный MAC (в сетевом формате) (ОПЦИОНАЛЬНО; используется реальный MAC, если NULL) (unsigned char*) dstmac — целевой MAC (в сетевом формате) (ОПЦИОНАЛЬНО; реальный MAC определяется, если NULL) Вместе thc_generate_pkt и thc_send_pkt обеспечивают ту же функциональность. Обычно вы используете их только если делаете что-то вроде thc_generate_pkt(...); while(1) thc_send_pkt(...); Эти функции возвращают (int) 0 при успехе и -1 при ошибке.

Когда закончите, освободите память с помощью: thc_destroy_packet(my_ipv6_packet);

Вот некоторые важные вспомогательные функции, которые вам понадобятся: thc_resolve6(destinationstring); Разрешает IPv6-адрес или DNS-имя в сетевой адрес IPv6. Используйте это для dst6 в thc_create_ipv6_extended(). Результат нужно освободить, когда он больше не нужен. thc_inverse_packet(my_ipv6_packet, &my_ipv6_packet_len); Эта умная функция меняет местами исходный и целевой адреса, заменяет тип заголовка ICMP (ECHO REQUEST -> ECHO REPLY и т.д.) и пересчитывает контрольную сумму. Если вы не понимаете, для чего это может пригодиться, идите играйте со своей xbox :-)

Если вы хотите сделать это очень быстро, существуют некоторые предопределённые функции-создатели ICMPv6, которые отправляют пакеты impc6 всего одной строкой кода: 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); Они делают то, что вы от них ожидаете, поэтому я слишком ленив^H^H^H^H^Hзанят, чтобы описывать их подробнее.

Следующие функции выделяют память для указателя результата, поэтому не забудьте освободить указатели результата этих функций, когда они вам больше не нужны: 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()

Очень полезно посмотреть на примеры использования. Лучшие из них — инструменты из пакета thc-ipv6, особенно implementation6.c и fake_*6.c — веселитесь и присылайте код обратно, чтобы сообщество могло дальше развивать его.

ОБНАРУЖЕНИЕ

Большинство инструментов легко обнаруживаются IDS или специализированным ПО обнаружения. Это сделано намеренно, чтобы упростить обнаружение неправомерного использования. Инструменты либо задают фиксированную сигнатуру пакета, либо обобщённо перехватывают пакеты (например, поэтому также отвечают на запросы соседей ICMPv6, которые отправляются на несуществующий MAC, и поэтому их очень легко обнаружить). Если вы этого не хотите, измените код.

ПАТЧИ, ОШИБКИ, СОВЕТЫ и т.д.

Отправляйте их на vh (at) thc (dot) org (и добавьте «antispam» в тему письма) Или отправляйте через GitHub: https://github.com/vanhauser-thc/thc-ipv6

Веселитесь!

Скачать инструмент