Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
thc-ipv6 — IPv6 공격 도구 키트 | Kitploit
도구/GitHubGitHub/vanhauser-thc/thc-ipv6
ReconnaissanceVulnerability AnalysisExploitationIDS/IPS EvasionFuzzingNetwork SecurityWireless SecurityPenetration TestingUtilities & FrameworksRed 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에 접하게 되면서 영감을 받아 작성되었습니다. IPv6에 대해 더 많이 배우고 나서 놀고 (읽기: "해킹") 사용할 도구가 없다는 것을 알게 되었습니다. 처음에는 libnet을 사용하여 구현하려고 했지만, IPv6 구현이 부분적이고 형편없다는 것을 알게 되었습니다. 누락된 코드를 추가하려고 시도했지만 쉽지 않았기 때문에 시간을 절약하고 빠르게 자체 라이브러리를 작성했습니다.

제한 사항

이 코드는 현재 다음에서만 실행됩니다:

  • Linux 2.6.x 이상 (/proc 사용 때문)
  • 이더넷 하지만 이는 리눅스 사용자의 경우 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 neighbor solicitation/advertisement 스푸퍼, 중간자 위치에 두는 도구 (ARP mitm 및 parasite와 동일)
  • alive6: 이 주소를 수신하는 모든 시스템을 탐지하는 효과적인 alive 스캔
  • dnsdict6: 병렬화된 DNS IPv6 사전 무차별 대입기
  • fake_router6: 네트워크에서 자신을 가장 높은 우선순위를 가진 라우터로 알림
  • redir6: 교묘한 ICMPv6 리다이렉트 스푸퍼를 사용하여 트래픽을 지능적으로 리다이렉트 (중간자)
  • toobig6: redir6과 동일한 지능을 가진 MTU 감소기
  • detect-new-ip6: 네트워크에 참여하는 새 IPv6 장치를 탐지하고, 자동으로 스캔하는 스크립트 실행 가능
  • dos-new-ip6: 새 IPv6 장치를 탐지하고 선택한 IP가 네트워크에서 충돌한다고 알림 (DOS)
  • trace6: ICMP6 echo request 및 TCP-SYN을 지원하는 매우 빠른 traceroute6
  • flood_router6: 대상에 무작위 라우터 광고 플러딩
  • flood_advertise6: 대상에 무작위 이웃 광고 플러딩
  • fuzz_ip6: IPv6 퍼저
  • implementation6: IPv6에 대한 다양한 구현 검사 수행
  • implementation6d: 방화벽 너머에서 implementation6을 검사하기 위한 수신 데몬
  • fake_mld6: 네트워크에서 선택한 멀티캐스트 그룹에 자신을 알림
  • fake_mld26: MLDv2에 대해 동일
  • fake_mldrouter6: 가짜 MLD 라우터 메시지
  • fake_mipv6: IPSEC이 인증에 필요하지 않은 경우 모바일 IP를 자신의 IP로 도용
  • fake_advertiser6: 네트워크에서 자신을 알림
  • smurf6: 로컬 스머퍼
  • rsmurf6: 원격 스머퍼, 현재 리눅스에서만 작동하는 것으로 알려짐
  • exploit6: 대상에 대해 테스트할 알려진 IPv6 취약점
  • denial6: 대상에 대한 다양한 서비스 거부 테스트 모음
  • thcping6: 수작업으로 제작된 ping6 패킷 전송
  • sendpees6: [email protected]의 도구로, 많은 CGA (암호 관련 ;-)를 포함한 neighbor solicitation 요청을 생성하여 CPU를 바쁘게 유지합니다. 좋습니다. 그 외에도 여러분이 발견할 약 25개 이상의 도구가 있습니다 :-)

옵션 없이 도구를 실행하면 도움말과 명령줄 옵션이 표시됩니다.

라이브러리

라이브러리 thc-ipv6-lib.c는 모든 도구의 핵심이자 영혼입니다. 또한 여러분이 작성하고 싶어할 수도 있는 코드입니다. 구현은 매우 간단합니다. 일반적으로 원하는 내용의 완전한 IPv6/ICMPv6 패킷을 생성하는 데 2-4줄이면 충분합니다.

사용하는 기본 구조는 다음과 같습니다: (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 소스 라우팅과 유사) (int) routers - routerptr의 라우터 수 (char**) routerptr - 라우터 대상 (네트워크 형식)의 char[routers + 1] 구조 예제는 alive6.c 참조 _fragment: 프래그먼트 헤더 추가 (int) offset - 데이터가 기록될 오프셋 (참고: 오프셋 위치를 바이트 단위로 지정, 8바이트 단위 아님) (int) more_frags - 마지막 프래그먼트이면 0, 그 외에는 1 (int) id - 패킷의 ID (모든 프래그먼트에 대해 동일) _dst: 대상 옵션 헤더 추가 (char) buf - char 버퍼. 이 버퍼에 원하는 내용을 직접 제어해야 함 (int) buflen - buf의 길이 _hopbyhop: 홉별 홉 헤더 추가 (char*) buf - char 버퍼. 이 버퍼에 원하는 내용을 직접 제어해야 함 (int) buflen - buf의 길이 _nonxt: 이후에 헤더가 없음을 지정 (int) hdropt - 현재 이 옵션은 무시됨 _misc: 기타 헤더 지정. 유효하지 않거나 존재하지 않는 확장 헤더를 설계하려면 이 함수를 사용 (int) type - 헤더로 지정할 타입 ID (int) len - 헤더로 광고할 길이 (선택 사항 - -1은 올바른 값으로 설정) (char*) buf - char 버퍼. 이 버퍼에 원하는 내용을 직접 제어해야 함 (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 - char 버퍼. 이 버퍼에 원하는 내용을 직접 제어해야 함 (int) buflen - buf의 길이 _tcp|_udp: TCP 또는 UDP 헤더 추가 (ushort) source_port: 소스 포트 (ushort) destination_port: 대상 포트 (uint) sequence_number: TCP 시퀀스 번호 (uint) ack_number: TCP 확인 응답 번호 (ushort) checksum: UDP 체크섬, 0 = 체크섬 생성 (TCP의 경우 항상 체크섬이 계산됨) (uchar) flags: TCP 플래그: TCP_SYN, TCP_ACK, TCP_FIN, TCP_RST, TCP_PSH, ... (uint) window_size: TCP 윈도우 크기 (uint) urgent_pointer: TCP 긴급 포인터 (보통 0) (char*) options: TCP 옵션 버퍼, NULL 가능 (uint) options_length: TCP 옵션 버퍼의 길이 (char*) data: 프로토콜이 전달하는 데이터 (uint) data_length: 데이터 버퍼의 길이 _data6: 기타 헤더 추가 (int) type: 프로토콜 ID (char*) buf - char 버퍼. 이 버퍼에 원하는 내용을 직접 제어해야 함 (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 (네트워크 형식) (선택 사항, NULL이면 실제 MAC 사용) (unsigned char*) dstmac - 사용할 대상 MAC (네트워크 형식) (선택 사항, NULL이면 실제 MAC 조회) 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 네트워크 주소로 변환합니다. thc_create_ipv6_extended()의 dst6에 사용하세요. 결과는 더 이상 필요하지 않을 때 free()해야 합니다. thc_inverse_packet(my_ipv6_packet, &my_ipv6_packet_len); 이 영리한 함수는 소스와 대상 주소를 바꾸고, ICMP 헤더 타입을 교환하며 (ECHO REQUEST -> ECHO REPLY 등) 체크섬을 다시 계산합니다. 이것이 무엇에 유용할지 모르겠다면, Xbox로 놀러 가세요 :-)

매우 빠르게 수행하려면 한 줄의 코드로 impc6 패킷을 전송하는 미리 정의된 ICMPv6 생성 함수가 있습니다: 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바쁩니다.

다음 함수들은 결과 포인터에 메모리를 할당하므로, 더 이상 필요하지 않을 때 결과 포인터를 free()하는 것을 잊지 마세요: 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나 전용 탐지 소프트웨어로 쉽게 탐지될 수 있습니다. 이는 악성 사용 탐지를 더 쉽게 하기 위해 의도적으로 설계되었습니다. 도구는 고정된 패킷 시그니처를 지정하거나, 일반적으로 패킷을 스니핑합니다 (예: 존재하지 않는 MAC으로 전송된 ICMPv6 neighbor solicitation에도 응답하므로 탐지가 매우 쉽습니다). 원하지 않으면 코드를 변경하세요.

패치, 버그, 힌트 등

vh (at) thc (dot) org로 보내주세요 (제목 줄에 "antispam"을 추가하세요) 또는 github을 통해 제출: https://github.com/vanhauser-thc/thc-ipv6

즐거운 시간 되세요!

도구 다운로드