📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 105편
이전 글: 104. Wireshark 화면 구조와 필드 읽는 법 · 다음 글: 106. Packet Bytes 구조
Packet Details는 선택한 패킷 하나를 해석기(dissector)가 만든 필드 트리로 보여 주는 영역입니다. 세 영역(List·Details·Bytes)의 관계와 [ ] 계산 필드의 기본 의미는 104. Wireshark 화면 구조와 필드 읽는 법에서 다뤘으므로, 이 글은 트리 한 줄 한 줄이 어떤 종류의 항목인지 구분하고 그것을 분석 도구로 연결하는 방법에 집중합니다.
트리의 줄은 크게 다섯 종류입니다.
| 줄의 종류 | 모양 예 | 의미 |
|---|---|---|
| 계층(프로토콜) 줄 | Internet Protocol Version 4, Src: ..., Dst: ... | 해석기 하나의 시작. 펼치면 필드가 나옴 |
| 일반 필드 | Time to Live: 64 | 패킷 바이트에서 읽은 값 |
| 비트 필드 | .1.. .... = Don't fragment: Set | 한 바이트 안의 일부 비트. 점(.)은 해당 없는 비트 |
| 계산 필드 | [Stream index: 3] | Wireshark가 계산·추론한 값 (바이트 없음) |
| Expert 항목 | [Expert Info (Note/Sequence): ...] | 해석 중 발견한 주의 사항 |
트리는 바깥 계층부터 안쪽 계층 순서로 쌓입니다. 각 해석기는 자기 헤더를 해석한 뒤 "다음은 누구에게 넘길지"를 결정합니다.
Frame ← 캡처 파일의 메타데이터 (도착 시각, 길이, 인터페이스)
↓ 링크 유형: Ethernet
Ethernet II eth.type = 0x0800
↓
Internet Protocol Version 4 ip.proto = 6
↓
Transmission Control Protocol 포트·휴리스틱으로 상위 해석기 결정
↓
Hypertext Transfer Protocol (또는 TLS, Data ...)
frame.time, frame.len(원래 길이), frame.cap_len(저장된 길이), frame.protocols(해석된 계층 목록), frame.coloring_rule.name(적용된 색상 규칙) 등이 여기 있습니다.ip.src 같은 필드는 값이 두 개가 됩니다.Details에서 필드를 선택하면 상태 표시줄에 필드 이름(예: ip.ttl)과 바이트 길이가 표시됩니다. 이 필드 이름이 필터·열·tshark에서 공통으로 쓰는 이름입니다.
| 오른쪽 클릭 메뉴 | 결과 | 분석에서의 용도 |
|---|---|---|
| Apply as Filter → Selected | 해당 필드 = 값 필터를 즉시 적용 | 같은 값을 가진 패킷 모으기 |
| Prepare as Filter | 필터 바에 식만 넣고 적용은 보류 | and/or 조건 추가 후 적용 |
| Apply as Column | Packet List에 열 추가 | 여러 패킷의 같은 필드 비교 |
| Copy → Field Name / Value / as Filter | 필드 이름·값·필터식 복사 | 보고서, tshark 명령 작성 |
| Protocol Preferences | 해당 해석기 설정 변경 | 상대 시퀀스, 체크섬 검증 등 |
| Expand Subtrees / Collapse | 하위 트리 전체 펼치기·접기 | 긴 헤더 빠르게 훑기 |
Expert 항목은 심각도로 나뉩니다. 전체 목록은 Analyze → Expert Information에서 볼 수 있습니다.
| 심각도 | 예 | 해석 |
|---|---|---|
| Error | 잘못된 형식(Malformed) | 해석 실패. 캡처 잘림·비표준 구현·조작된 패킷 가능성 |
| Warning | 이전 세그먼트 미캡처, 체크섬 오류 | 캡처 누락이나 오프로드 영향일 수 있음 |
| Note | 재전송, Duplicate ACK | 통신 품질 문제의 단서 |
| Chat | 연결 수립, HTTP 요청 | 정상 흐름 정보 |
Details 트리의 형식 예시(값은 환경마다 다름, 일부 생략)입니다.
Frame 42: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface ens33, id 0
[Protocols in frame: eth:ethertype:ip:tcp]
Ethernet II, Src: 00:0c:29:aa:bb:cc, Dst: 00:50:56:dd:ee:ff
Internet Protocol Version 4, Src: 192.168.10.20, Dst: 192.168.10.30
Flags: 0x2, Don't fragment
0... .... = Reserved bit: Not set
.1.. .... = Don't fragment: Set
..0. .... = More fragments: Not set
Time to Live: 64
Transmission Control Protocol, Src Port: 52344, Dst Port: 80, Seq: 0, Len: 0
[Stream index: 3]
Flags: 0x002 (SYN)
[Expert Info (Chat/Sequence): Connection establish request (SYN): server port 80]
실습 예시 — 같은 트리를 CLI에서 확인합니다(Rocky/Ubuntu 공통).
# Details 전체 (GUI의 모든 트리를 펼친 것과 같음)
tshark -r /tmp/lab.pcapng -V -c 1
# 특정 계층만 상세 표시 (나머지는 요약 한 줄)
tshark -r /tmp/lab.pcapng -O ip,tcp -c 1
# 필드 이름 찾기: 전체 필드 목록에서 검색
tshark -G fields | grep -P '\tip\.ttl\t'
# 트리 구조를 필드 이름·바이트 위치와 함께 (PDML)
tshark -r /tmp/lab.pcapng -T pdml -c 1 | grep 'name="ip.ttl"'
PDML 출력의 형식 예시입니다. pos(시작 바이트)와 size가 다음 편의 Bytes 영역 위치와 연결됩니다.
<field name="ip.ttl" showname="Time to Live: 64" size="1" pos="22" show="64" value="40"/>
찾은 필드 이름은 그대로 추출에 씁니다. 계산 필드와 Expert 메시지도 필드로 추출할 수 있습니다.
tshark -r /tmp/lab.pcapng -Y 'tcp' -T fields -E header=y \
-e frame.number -e ip.src -e ip.ttl -e tcp.stream -e frame.coloring_rule.name -e _ws.expert.message
📷 [실습 화면 삽입 위치] Details에서
Time to Live필드를 선택했을 때 상태 표시줄에ip.ttl필드 이름과 바이트 수가 표시되는 화면
📷 [실습 화면 삽입 위치] Analyze → Expert Information 창에서 심각도별로 묶인 항목 목록
Data로만 보이거나 엉뚱한 프로토콜로 해석될 수 있습니다. Details에 보이는 계층 이름이 곧 실제 프로토콜이라는 보장은 없습니다.frame.cap_len < frame.len) 중 무엇이든 될 수 있습니다. 먼저 캡처 길이 제한(snaplen)을 확인합니다.ip.src == x는 둘 중 하나만 맞아도 참입니다. 바깥·안쪽 헤더를 구분해 읽어야 출발지를 잘못 판단하지 않습니다.| 확인 대상 | Details에서 볼 곳 | 관제 질문 |
|---|---|---|
| 해석 계층 | frame.protocols | 포트와 기대 프로토콜이 일치하는가? |
| 잘림 여부 | frame.len, frame.cap_len | 페이로드 판단이 가능한 캡처인가? |
| 계산 필드 | tcp.stream, tcp.analysis.* | 보고서에 원본 값과 계산 값을 구분했는가? |
| Expert 항목 | _ws.expert | 경고가 캡처 환경 때문인지 통신 이상인지? |
IDS Alert에 첨부된 패킷을 열었을 때는 Alert가 지목한 필드(예: URI, DNS 질의 이름)를 Details에서 직접 찾아 Alert 설명과 실제 값이 일치하는지 확인하는 것이 첫 단계입니다. Alert 분석 절차는 06. 방화벽 · IDS 기초 영역에서 다룹니다.
오탐 주의: Expert의 Warning·Error는 "주의해서 볼 곳"이지 공격 판정이 아닙니다. 체크섬 오류는 오프로드(115. IP 헤더 분석 — TTL·Flags·Fragment·Checksum 필드 읽는 법), 이전 세그먼트 미캡처는 캡처 시작 시점 문제인 경우가 많습니다.
[ ] 계산 필드, Expert 항목으로 구성됩니다.tshark -e에 공통으로 쓰입니다.tshark -V, -O, -T pdml, -G fields로 GUI 트리를 CLI에서 재현·검색할 수 있습니다.