📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 116편
이전 글: 115. IP 헤더 분석 — TTL·Flags·Fragment·Checksum 필드 읽는 법 · 다음 글: 117. ICMP 패킷 분석 — Type·Code와 오류 메시지 속 원본 헤더 읽기

1. 개념

IPv6 주소 체계, 40바이트 고정 헤더, NDP·SLAAC, 터널 필터는 09. IPv6 기초 — 관제에서 놓치기 쉬운 두 번째 주소 체계에서 다뤘습니다. 이 글은 Wireshark에서 IPv6 패킷 한 개를 필드 단위로 읽는 방법에 집중합니다. IPv4 편(115. IP 헤더 분석 — TTL·Flags·Fragment·Checksum 필드 읽는 법)과 같은 순서로 비교하며 봅니다.

헤더 항목Wireshark 필드IPv4 대응 필드읽을 때 주의점
Versionipv6.versionip.version항상 6
Traffic Classipv6.tclass (ipv6.tclass.dscp, ipv6.tclass.ecn)ip.dsfieldQoS 표시
Flow Labelipv6.flow없음같은 흐름 식별용. 0이거나 연결마다 다른 값
Payload Lengthipv6.plenip.len헤더 40바이트 제외 길이 (IPv4는 헤더 포함)
Next Headeripv6.nxtip.proto상위 프로토콜 또는 확장 헤더 번호
Hop Limitipv6.hlimip.ttl의미는 TTL과 같음
Source / Destinationipv6.src, ipv6.dst, ipv6.addrip.src, ip.dst, ip.addr128비트, 축약 표기로 표시

IPv4에 있던 헤더 체크섬과 ID·Flags·Fragment Offset 필드는 IPv6 기본 헤더에 없습니다.


2. 동작 원리

IPv6는 부가 기능을 확장 헤더로 이어 붙이고, 각 헤더의 Next Header가 다음 헤더를 가리킵니다. Wireshark Details에서도 이 순서대로 트리가 펼쳐집니다.

Ethernet II   eth.type = 0x86dd
  ↓
IPv6 기본 헤더   ipv6.nxt = 0
  ↓
Hop-by-Hop Options (0)   다음 = 58      ← 예: MLD 메시지의 Router Alert
  ↓
ICMPv6 (58)   icmpv6.type = 143 (MLDv2 Report)

또는

IPv6 기본 헤더   ipv6.nxt = 44
  ↓
Fragment (44)   offset·more·ident → Wireshark가 재조립
  ↓
UDP (17) / TCP (6) ...     ← 첫 조각에만 상위 헤더가 있음
Next Header 값의미필터
0Hop-by-Hop Optionsipv6.hopopts
43Routingipv6.routing
44Fragmentipv6.fraghdr
60Destination Optionsipv6.dstopts
6 / 17 / 58TCP / UDP / ICMPv6tcp, udp, icmpv6
59No Next Header뒤에 아무것도 없음

ipv6.nxt는 기본 헤더의 값만 뜻합니다. 확장 헤더가 끼면 ipv6.nxt == 6으로는 TCP를 모두 찾지 못하므로, 상위 프로토콜은 tcp, udp처럼 프로토콜 이름으로 필터링합니다.


3. 주요 특징

IPv4 필터가 IPv6를 잡지 못하는 점이 분석에서 가장 흔한 누락 원인입니다.

의도IPv4만 보는 필터IPv6까지 포함
특정 호스트ip.addr == 192.168.10.20호스트의 IPv6 주소도 확인 후 ipv6.addr == ... 추가
경로 거리ip.ttl < 10ip.ttl < 10 or ipv6.hlim < 10
전체 IP 트래픽ipip or ipv6
연결 단위tcp.stream eq 3그대로 사용 가능 (IP 버전 무관)

주소 형태로 알 수 있는 단서입니다(09. IPv6 기초 — 관제에서 놓치기 쉬운 두 번째 주소 체계의 주소 유형과 함께 보기).

주소 형태해석
fe80:: 로 시작링크 로컬. 라우터를 넘지 않으므로 같은 링크의 통신
인터페이스 ID 가운데 ff:fe (예: …:20c:29ff:fe3a:4b5c)MAC 기반 EUI-64 주소일 가능성. MAC 추정 가능 (U/L 비트 반전 주의)
인터페이스 ID가 무작위, 시간이 지나며 바뀜임시(Privacy) 주소. 같은 단말이 여러 주소로 보임
ff02::1, ff02::2, ff02::1:ff…링크 로컬 멀티캐스트 (전체 노드, 전체 라우터, Solicited-Node)

Wireshark는 버전에 따라 EUI-64 주소에서 추정한 MAC을 [Source SLAAC MAC: …] 같은 계산 필드로 보여 주기도 합니다.


4. 예시

실습 예시 — 본인 소유 VM에서 IPv6 트래픽을 만들고 필드를 추출합니다. 명령과 출력은 예시(값은 환경마다 다름)입니다.

# Rocky/Ubuntu 공통: 링크 로컬 전체 노드로 ping (응답하는 이웃 확인)
ping -6 -c 3 ff02::1%ens33
sudo tcpdump -i ens33 -nn -w /tmp/v6.pcapng ip6

# 기본 헤더 필드
tshark -r /tmp/v6.pcapng -Y ipv6 -T fields -E header=y \
  -e frame.number -e ipv6.src -e ipv6.dst -e ipv6.nxt -e ipv6.hlim -e ipv6.plen -e ipv6.flow

# 확장 헤더가 있는 패킷과 Fragment 헤더 값
tshark -r /tmp/v6.pcapng -Y 'ipv6.hopopts or ipv6.routing or ipv6.dstopts' -T fields -e ipv6.src -e ipv6.dst
tshark -r /tmp/v6.pcapng -Y 'ipv6.fraghdr' -T fields \
  -e ipv6.src -e ipv6.fraghdr.ident -e ipv6.fraghdr.offset -e ipv6.fraghdr.more

기본 헤더 추출 결과의 형식 예시입니다.

frame.number  ipv6.src                   ipv6.dst   ipv6.nxt  ipv6.hlim  ipv6.plen  ipv6.flow
1             fe80::20c:29ff:fe3a:4b5c   ff02::1    58        1          64         0x0a1b2
2             fe80::250:56ff:fedd:eeff   fe80::20c:29ff:fe3a:4b5c   58   64   64   0x00000
확인 포인트읽는 법
1번 ipv6.hlim = 1링크 로컬 멀티캐스트 ping은 Hop Limit 1로 나가 라우터를 넘지 않음
ipv6.plen = 64ICMPv6 헤더 8 + 데이터 56. 전체 IP 패킷은 40 + 64 = 104바이트
2번 응답의 hlim = 64Linux 계열 기본값과 일치 (Windows는 보통 128)

📷 [실습 화면 삽입 위치] IPv6 패킷의 Details에서 Traffic Class·Flow Label·Payload Length·Next Header·Hop Limit를 펼친 화면

📷 [실습 화면 삽입 위치] Hop-by-Hop Options 확장 헤더가 포함된 MLD 패킷의 Details 트리 (Next Header 체인 확인)


5. 보안 관점

  • 확장 헤더 남용: 여러 확장 헤더를 이어 붙이거나 첫 조각에 상위 헤더가 모두 들어가지 않도록 쪼개면 일부 보안장비가 포트·프로토콜을 판별하지 못할 수 있습니다. 첫 조각에는 상위 헤더까지 포함되어야 한다는 규정(RFC 7112)이 있어, 이를 어긴 패킷은 그 자체로 의심 대상입니다.
  • Routing Header Type 0은 보안 문제로 폐기되었습니다(RFC 5095). ipv6.routing.type == 0 패킷은 정상 통신에서 기대하기 어렵습니다.
  • 정책 불일치: IPv4에만 적용된 방화벽·IDS 룰은 같은 서버의 IPv6 주소로 온 트래픽을 놓칠 수 있습니다. 서버가 IPv6 주소를 갖고 있다면 두 주소 모두 분석 범위에 넣습니다.

6. SOC 관점

흔적 위치확인할 수 있는 것
패킷 캡처eth.type == 0x86dd 비율, 확장 헤더, 글로벌 주소 통신 여부
방화벽·IDSIPv6 정책·룰 적용 여부, IPv6 세션 로그 존재 여부
DNS 로그AAAA 질의·응답 (단말이 IPv6 목적지를 선택했는지)
호스트인터페이스의 IPv6 주소, 임시 주소 사용 여부

관제자가 확인할 질문

  • 이 캡처에 IPv6 트래픽이 있는가? 있다면 분석 필터가 ip만으로 작성되어 누락되지 않았는가?
  • 사건 호스트의 IPv6 주소(링크 로컬, 글로벌, 임시)를 모두 파악했는가?
  • 확장 헤더나 IPv6 단편이 업무 트래픽에서 설명되는가?

오탐 주의: 임시 주소 때문에 같은 단말이 여러 IPv6 주소로 보이는 것은 정상이며, MLD·NDP의 Hop-by-Hop 헤더와 ff02:: 멀티캐스트도 일상적인 트래픽입니다. 단말 식별은 MAC·DHCPv6·NDP 기록과 함께 합니다(113. MAC Address 분석).


7. 핵심 정리

  • IPv6 필드는 ipv6.*(plen, nxt, hlim, flow, tclass)이며, ipv6.plen은 헤더 40바이트를 제외한 길이입니다.
  • 확장 헤더는 Next Header 체인으로 이어지므로 상위 프로토콜은 ipv6.nxt 대신 tcp·udp·icmpv6로 찾습니다.
  • Fragment 헤더는 ipv6.fraghdr.ident·offset·more로 읽고, 상위 헤더는 첫 조각에만 있습니다.
  • ip 기반 필터는 IPv6를 포함하지 않으므로 ip or ipv6, ipv6.hlim 등을 함께 씁니다.
  • 주소 형태(링크 로컬, EUI-64, 임시 주소)는 단말 해석의 단서일 뿐이며 다른 기록과 대조해 판단합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글