109. Statistics로 전체 흐름 파악 — Conversations·Endpoints·Protocol Hierarchy

changseop lee·6일 전

네트워크 · 패킷 분석

목록 보기
109/300

📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 109편
이전 글: 108. Display Filter · 다음 글: 110. Conversations

1. 왜 알아야 하는가

pcap을 받자마자 1번 패킷부터 읽기 시작하면 금방 길을 잃습니다. 분석가가 먼저 알아야 하는 것은 다음과 같은 전체 윤곽입니다.

  • 이 파일은 언제부터 언제까지, 몇 개의 패킷인가?
  • 어떤 프로토콜이 주로 오갔는가? 예상하지 못한 프로토콜은 없는가?
  • 누가 누구와 얼마나 많이 통신했는가?
  • 트래픽이 특정 시점에 급증하지 않았는가?

Wireshark의 Statistics 메뉴는 이 질문들에 답하는 도구입니다. 전체 윤곽을 먼저 보고, 의심 구간을 골라 필터(3편)와 필드 해석(4편)으로 내려가는 것이 효율적인 순서입니다.


2. 핵심 개념

2-1. 통계 기능과 분석 질문

기능 (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는 패킷별 출력을 생략하고 통계만 보여 주는 옵션입니다.

2-2. Conversation과 Endpoint의 차이

구분단위예
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은 "누구와 누구 사이에서 말했나"에 답합니다.

2-3. Protocol Hierarchy 읽는 법

계층 구조로 표시되며, 하위 항목의 비율이 상위 항목 안에 포함됩니다. 예를 들어 Ethernet → IPv4 → TCP → TLS처럼 나타납니다. TCP 아래에 상위 프로토콜 없이 Data로 표시되는 비율이 높다면 해석기가 모르는 페이로드가 많다는 뜻이므로 확인 대상입니다.


3. 동작 원리

통계 기반 분석의 흐름(위에서 아래로 좁혀 가기)입니다.

Statistics 분석 순서
그림 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,<필터> 형식으로 필터를 붙일 수 있습니다.


4. 실제 명령어 / 실습

실습 환경: 본인 소유 Linux VM (Rocky Linux 또는 Ubuntu). 인터페이스는 ens33을 예시로 사용합니다. 도구 설치는 2편을 참고하세요(capinfos는 Rocky의 wireshark-cli, Ubuntu의 wireshark-common에 포함).

4-1. 통계용 pcap 준비

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의 공개 샘플을 사용해도 됩니다.

4-2. 파일 개요: capinfos

capinfos /tmp/stats.pcap

4-3. 프로토콜 계층

tshark -r /tmp/stats.pcap -q -z io,phs

4-4. 대화와 엔드포인트

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)'

4-5. 시간대별 추이

# 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 패킷 그래프를 겹친 화면


5. 결과 확인

형식 예시(값은 환경마다 다름):

$ 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 버전에 따라 조금씩 다릅니다.

  • capinfos로 캡처 시작·종료 시각과 패킷 수를 확인했다
  • Protocol Hierarchy에서 예상 밖 프로토콜이나 Data 비율을 확인했다
  • Endpoints에서 송수신량 상위 주소를 확인했다
  • Conversations에서 상위 주소의 상대방과 포트를 확인했다
  • I/O Graph(또는 -z io,stat)로 급증 시점을 확인했다

6. 패킷 / 로그 분석

통계 결과에서 "다시 볼 대상"을 고르는 기준입니다.

통계에서 본 것정상일 수 있는 경우의심해야 하는 경우
내부 → 외부 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

7. 보안관제 관점

  • 관제에서 받는 pcap은 IDS 경보 전후 일부 구간인 경우가 많습니다. Capture File Properties에서 캡처 기간과 드롭 여부를 먼저 확인해야 "이 파일로 어디까지 말할 수 있는지"가 정해집니다.
  • Conversations·Endpoints는 NetFlow/세션 로그와 비슷한 관점입니다. 세션 로그와 pcap 통계를 교차 확인하면 누락이나 NAT로 인한 주소 차이를 발견할 수 있습니다. (플로우 기반 관제와 SIEM 연계는 「07. 네트워크 보안관제 통합 분석」 시리즈에서 다룹니다.)
  • 한계: 통계는 양(量)을 보여 줄 뿐, 내용의 악성 여부를 알려 주지 않습니다. 암호화 트래픽은 크기·빈도·상대방 정도만 판단 근거가 됩니다.
  • 오탐 주의: "송신량 상위 = 유출"이 아닙니다. 자산 역할(백업 서버, 파일 서버)과 평소 기준선을 함께 봐야 합니다.
  • 스캔 유형별 판별은 「05. 네트워크 스캔 · 공격 징후 분석」 시리즈에서 다룹니다.

8. 핵심 정리

  • 패킷을 한 줄씩 보기 전에 capinfos → Protocol Hierarchy → Endpoints → Conversations → I/O Graph 순서로 윤곽을 잡습니다.
  • Endpoint는 주소 하나, Conversation은 주소(+포트) 쌍 단위입니다.
  • tshark 대응: -z io,phs, -z conv,ip|tcp|udp, -z endpoints,ip, -z io,stat,간격 (통계만 보려면 -q).
  • "Limit to display filter"나 -z conv,tcp,<필터>로 범위를 좁힌 통계를 만들 수 있습니다.
  • 통계는 다시 볼 대상을 고르는 도구이며, 판단은 필드와 흐름을 확인한 뒤에 합니다.

다음 글: 06. pcap 증거 보존과 해시 검증

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글