📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 105편
이전 글: 104. Wireshark 화면 구조와 필드 읽는 법 · 다음 글: 106. Packet Bytes 구조

1. 개념

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): ...]해석 중 발견한 주의 사항

2. 동작 원리

트리는 바깥 계층부터 안쪽 계층 순서로 쌓입니다. 각 해석기는 자기 헤더를 해석한 뒤 "다음은 누구에게 넘길지"를 결정합니다.

Frame      ← 캡처 파일의 메타데이터 (도착 시각, 길이, 인터페이스)
  ↓ 링크 유형: Ethernet
Ethernet II   eth.type = 0x0800
  ↓
Internet Protocol Version 4   ip.proto = 6
  ↓
Transmission Control Protocol   포트·휴리스틱으로 상위 해석기 결정
  ↓
Hypertext Transfer Protocol (또는 TLS, Data ...)
  • Frame 계층은 패킷 안에 없는 정보입니다. frame.time, frame.len(원래 길이), frame.cap_len(저장된 길이), frame.protocols(해석된 계층 목록), frame.coloring_rule.name(적용된 색상 규칙) 등이 여기 있습니다.
  • 한 패킷 안에 같은 계층이 두 번 나올 수 있습니다. ICMP 오류 메시지 안의 원본 IP 헤더(117. ICMP 패킷 분석 — Type·Code와 오류 메시지 속 원본 헤더 읽기), VPN·GRE 같은 터널이 대표적입니다. 이때 ip.src 같은 필드는 값이 두 개가 됩니다.

3. 주요 특징

Details에서 필드를 선택하면 상태 표시줄에 필드 이름(예: ip.ttl)과 바이트 길이가 표시됩니다. 이 필드 이름이 필터·열·tshark에서 공통으로 쓰는 이름입니다.

오른쪽 클릭 메뉴결과분석에서의 용도
Apply as Filter → Selected해당 필드 = 값 필터를 즉시 적용같은 값을 가진 패킷 모으기
Prepare as Filter필터 바에 식만 넣고 적용은 보류and/or 조건 추가 후 적용
Apply as ColumnPacket 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 요청정상 흐름 정보

4. 예시

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 창에서 심각도별로 묶인 항목 목록


5. 보안 관점

  • 해석은 추정일 수 있습니다. TCP 위의 상위 계층은 포트나 휴리스틱으로 결정되므로, 비표준 포트를 쓰는 공격 통신은 Data로만 보이거나 엉뚱한 프로토콜로 해석될 수 있습니다. Details에 보이는 계층 이름이 곧 실제 프로토콜이라는 보장은 없습니다.
  • Malformed 표시는 조작된 패킷, 해석기 우회 시도, 단순한 캡처 잘림(frame.cap_len < frame.len) 중 무엇이든 될 수 있습니다. 먼저 캡처 길이 제한(snaplen)을 확인합니다.
  • 같은 필드가 두 번 있는 패킷(터널, ICMP 오류)에서 필터 ip.src == x는 둘 중 하나만 맞아도 참입니다. 바깥·안쪽 헤더를 구분해 읽어야 출발지를 잘못 판단하지 않습니다.

6. SOC 관점

확인 대상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 필드 읽는 법), 이전 세그먼트 미캡처는 캡처 시작 시점 문제인 경우가 많습니다.


7. 핵심 정리

  • Details 트리는 계층 줄, 일반 필드, 비트 필드, [ ] 계산 필드, Expert 항목으로 구성됩니다.
  • Frame 계층은 캡처 파일의 메타데이터이며 패킷 바이트에 포함되지 않습니다.
  • 필드를 선택하면 상태 표시줄에 필드 이름이 나오고, 이 이름이 필터·열·tshark -e에 공통으로 쓰입니다.
  • tshark -V, -O, -T pdml, -G fields로 GUI 트리를 CLI에서 재현·검색할 수 있습니다.
  • 터널·ICMP 오류처럼 같은 필드가 두 번 나오는 패킷과, 포트 기반 추정 해석에 주의합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글