📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 109편
이전 글: 108. Display Filter · 다음 글: 110. Conversations
pcap을 받자마자 1번 패킷부터 읽기 시작하면 금방 길을 잃습니다. 분석가가 먼저 알아야 하는 것은 다음과 같은 전체 윤곽입니다.
Wireshark의 Statistics 메뉴는 이 질문들에 답하는 도구입니다. 전체 윤곽을 먼저 보고, 의심 구간을 골라 필터(3편)와 필드 해석(4편)으로 내려가는 것이 효율적인 순서입니다.
| 기능 (Wireshark 메뉴) | 답하는 질문 | tshark / CLI 대응 |
|---|---|---|
| Statistics → Capture File Properties | 캡처 기간, 패킷 수, 파일 형식, 누락(드롭) 정보 | capinfos 파일 |
| Statistics → Protocol Hierarchy | 어떤 프로토콜이 어떤 비율로 있는가 | tshark -r 파일 -q -z io,phs |
| Statistics → Conversations | 어떤 두 지점이 얼마나 주고받았나 | tshark -r 파일 -q -z conv,tcp (conv,ip, conv,udp) |
| Statistics → Endpoints | 개별 주소별 송수신량은 | tshark -r 파일 -q -z endpoints,ip |
| Statistics → I/O Graphs | 시간에 따라 트래픽이 어떻게 변했나 | tshark -r 파일 -q -z io,stat,60 |
-q는 패킷별 출력을 생략하고 통계만 보여 주는 옵션입니다.
| 구분 | 단위 | 예 |
|---|---|---|
| Endpoint | 주소 하나 | 192.168.10.20 |
| Conversation (IPv4) | 주소 쌍 | 192.168.10.20 ↔ 203.0.113.10 |
| Conversation (TCP/UDP) | 주소+포트 쌍 (연결 단위에 가까움) | 192.168.10.20:52344 ↔ 203.0.113.10:443 |
Endpoint는 "누가 가장 많이 말했나", Conversation은 "누구와 누구 사이에서 말했나"에 답합니다.
계층 구조로 표시되며, 하위 항목의 비율이 상위 항목 안에 포함됩니다. 예를 들어 Ethernet → IPv4 → TCP → TLS처럼 나타납니다. TCP 아래에 상위 프로토콜 없이 Data로 표시되는 비율이 높다면 해석기가 모르는 페이로드가 많다는 뜻이므로 확인 대상입니다.
통계 기반 분석의 흐름(위에서 아래로 좁혀 가기)입니다.

그림 1. 전체 → 대화 → 호스트 → 시간 → 스트림 순서의 드릴다운
[capinfos] 기간·패킷 수·드롭 확인 → 분석 가능한 파일인가?
↓
[Protocol Hierarchy] 예상 밖 프로토콜/Data 비율 확인
↓
[Endpoints] 송수신량 상위 주소, 처음 보는 외부 IP
↓
[Conversations] 상위 주소가 누구와, 몇 개 포트로, 얼마나?
↓
[I/O Graph] 언제 급증했나? → 해당 시간대 선택
↓
[Display Filter + Follow Stream] 개별 패킷·필드 해석 (4편, 7편 이후)
Wireshark의 Conversations·Endpoints 창에는 "Limit to display filter" 옵션이 있습니다. 이것을 켜면 현재 디스플레이 필터 결과만 통계에 반영되므로, "외부로 나간 트래픽만의 Conversations"처럼 범위를 좁혀 볼 수 있습니다. tshark에서도 -z conv,tcp,<필터> 형식으로 필터를 붙일 수 있습니다.
실습 환경: 본인 소유 Linux VM (Rocky Linux 또는 Ubuntu). 인터페이스는 ens33을 예시로 사용합니다. 도구 설치는 2편을 참고하세요(capinfos는 Rocky의 wireshark-cli, Ubuntu의 wireshark-common에 포함).
sudo tcpdump -i ens33 -nn -w /tmp/stats.pcap 'not port 22' &
curl -s -o /dev/null https://example.com
dig example.com
ping -c 5 192.168.10.1
sudo pkill -INT tcpdump # 캡처 종료 (Ctrl+C와 동일한 SIGINT)
다양한 프로토콜을 보고 싶다면 Wireshark SampleCaptures의 공개 샘플을 사용해도 됩니다.
capinfos /tmp/stats.pcap
tshark -r /tmp/stats.pcap -q -z io,phs
tshark -r /tmp/stats.pcap -q -z conv,ip
tshark -r /tmp/stats.pcap -q -z conv,tcp
tshark -r /tmp/stats.pcap -q -z endpoints,ip
# 필터를 붙인 통계: 내부(192.168.10.0/24)끼리의 대화를 제외한 TCP 대화
tshark -r /tmp/stats.pcap -q -z 'conv,tcp,!(ip.src == 192.168.10.0/24 && ip.dst == 192.168.10.0/24)'
# 10초 단위 패킷·바이트 수
tshark -r /tmp/stats.pcap -q -z io,stat,10
# 10초 단위로 SYN(연결 시도) 패킷만 집계 — 필터를 붙이면 해당 조건의 패킷만 셉니다
tshark -r /tmp/stats.pcap -q -z 'io,stat,10,tcp.flags.syn==1 && tcp.flags.ack==0'
GUI에서는 Statistics → I/O Graphs에서 그래프를 추가하고, 그래프별로 디스플레이 필터(예: tcp.flags.reset == 1)를 지정해 전체 트래픽과 겹쳐 볼 수 있습니다.
📷 [실습 화면 삽입] Statistics → Conversations의 IPv4 / TCP 탭 (Bytes 열 기준 정렬)
📷 [실습 화면 삽입] I/O Graphs에 전체 패킷과 SYN 패킷 그래프를 겹친 화면
형식 예시(값은 환경마다 다름):
$ capinfos /tmp/stats.pcap
File name: /tmp/stats.pcap
File type: Wireshark/tcpdump/... - pcap
File encapsulation: Ethernet
Number of packets: 86
File size: 24 kB
Capture duration: 12.4 seconds
First packet time: 2026-09-26 10:00:01.100000
Last packet time: 2026-09-26 10:00:13.500000
...
$ tshark -r /tmp/stats.pcap -q -z conv,ip
IPv4 Conversations
Filter:<No Filter>
(방향별 Frames·Bytes, 합계, Relative Start, Duration 열)
192.168.10.20 <-> 203.0.113.10 ...
192.168.10.20 <-> 192.168.10.1 ...
실제 열 구성과 표기(바이트 단위 표시 등)는 tshark 버전에 따라 조금씩 다릅니다.
Data 비율을 확인했다-z io,stat)로 급증 시점을 확인했다통계 결과에서 "다시 볼 대상"을 고르는 기준입니다.
| 통계에서 본 것 | 정상일 수 있는 경우 | 의심해야 하는 경우 |
|---|---|---|
| 내부 → 외부 1곳으로 대용량 전송 | 백업, 업데이트 서버, 클라우드 동기화 | 업무 시간 외, 처음 보는 외부 IP, 평소보다 매우 큰 송신량(수신보다 송신이 큼) |
| 한 출발지의 TCP Conversation 수가 매우 많음 | 프록시, NAT 장비, 웹 크롤러 | 한 출발지가 여러 목적지 포트로 짧은 대화(대부분 패킷 1~2개) — 스캔 형태 |
| Protocol Hierarchy에 예상 밖 프로토콜 | 새로 도입된 서비스, 기본 활성화된 탐색 프로토콜(예: mDNS, LLMNR) | 서버 구간에 IRC, Telnet, 알 수 없는 UDP 대량 |
| DNS 비율이 비정상적으로 높음 | 캐시 없는 환경, 메일 서버의 역방향 조회 | 특정 호스트의 긴 서브도메인 질의 반복 (08. DNS 악용 유형) |
| I/O Graph의 짧은 급증 | 배치 작업, 백신 업데이트 시각 | 급증 구간에 SYN 또는 RST 그래프가 함께 치솟음 |
의심 대상이 정해지면 통계 창에서 해당 행을 오른쪽 클릭해 Apply as Filter로 곧바로 디스플레이 필터를 만들 수 있습니다. CLI로는 다음과 같이 이어 갑니다.
# 짧은 대화가 많은 출발지 확인 후, 해당 출발지의 SYN만 목적지 포트별 집계
tshark -r /tmp/stats.pcap -n -Y 'ip.src == 192.168.10.30 && tcp.flags.syn == 1 && tcp.flags.ack == 0' \
-T fields -e tcp.dstport | sort -n | uniq -c | sort -rn | head
-z io,phs, -z conv,ip|tcp|udp, -z endpoints,ip, -z io,stat,간격 (통계만 보려면 -q).-z conv,tcp,<필터>로 범위를 좁힌 통계를 만들 수 있습니다.다음 글: 06. pcap 증거 보존과 해시 검증