101. tcpdump와 Wireshark — 언제 무엇을 쓰는가

changseop lee·6일 전

네트워크 · 패킷 분석

목록 보기
101/300

📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 101편
이전 글: 100. SOC Port 분석 · 다음 글: 102. Wireshark 설치와 실행

1. 왜 알아야 하는가

"실제로 어떤 패킷이 오갔는가?"에 답하려면 먼저 수집하고, 그다음 분석해야 합니다. 이 두 단계는 요구 조건이 다릅니다.

  • 수집: GUI가 없는 서버에서, 오래, 디스크를 가득 채우지 않고, 최소 권한으로 돌아가야 합니다.
  • 분석: 필드를 펼쳐 보고, 세션을 따라가고, 통계를 뽑아야 합니다.

tcpdump 하나로 전부 하거나, 운영 서버에 Wireshark GUI를 설치하려는 것은 둘 다 흔한 실수입니다. 이 글은 tcpdump / dumpcap / tshark / Wireshark의 역할을 나누고, 장시간 수집에 필요한 링 버퍼 옵션을 정확하게 정리합니다.


2. 핵심 개념

2-1. 네 가지 도구의 역할

도구형태주 용도기본 저장 형식
tcpdumpCLI서버에서 빠른 확인·수집, 한 줄 요약 출력pcap
dumpcapCLI (Wireshark 패키지 구성요소)수집 전용 엔진. Wireshark·tshark도 내부적으로 사용pcapng
tsharkCLI (Wireshark의 터미널 버전)Wireshark 해석기로 필드 추출·통계, 스크립트 처리pcapng
WiresharkGUI필드 단위 해석, 스트림 추적, 통계 시각화pcapng

tcpdump와 Wireshark 계열은 모두 libpcap으로 패킷을 받고 BPF 캡처 필터를 공유합니다. 차이는 "해석기(dissector)"에 있습니다. Wireshark 계열은 수천 개의 프로토콜 해석기를 갖고 있어 필드 단위로 분해해 보여 줍니다.

2-2. pcap과 pcapng

항목pcappcapng
호환성거의 모든 도구Wireshark 계열 중심 (tcpdump는 읽기 지원 여부가 버전에 따라 다름)
여러 인터페이스 동시 기록불가 (파일당 링크 타입 1개)가능
패킷 주석(comment)불가가능
캡처 환경 정보(OS, 인터페이스)없음섹션 헤더에 기록 가능

다른 팀이나 오래된 도구와 주고받을 때는 pcap이, 분석 메모를 남길 때는 pcapng가 유리합니다.

2-3. 링 버퍼(Ring Buffer)

장시간 캡처하면 디스크가 가득 찹니다. 링 버퍼는 파일 크기·개수·시간 단위로 파일을 나누고, 개수 한도에 도달하면 가장 오래된 파일부터 덮어쓰는 방식입니다. "최근 N시간은 항상 보존"하는 효과를 냅니다.


3. 동작 원리

수집과 분석을 분리하는 일반적인 흐름입니다.

tcpdump와 Wireshark 역할
그림 1. tcpdump는 수집, Wireshark·tshark는 분석

 [운영 서버 / 센서]                         [분석 PC (본인 실습 PC)]
  tcpdump 또는 dumpcap                        Wireshark (GUI)
   -i ens33, 캡처 필터(BPF)                    ├ 필드 해석
   링 버퍼로 파일 분할 저장                     ├ Follow Stream
        ↓                                     └ Statistics
  cap_00001.pcap, cap_00002.pcap ...  ──복사──→      ↑
        ↓  (해시 기록 후 전달, 6편)                  │
  tshark -r 로 서버에서 1차 요약  ───────────────────┘
   (-Y 표시 필터, -T fields, -z 통계)
  • 캡처 권한 분리: Wireshark는 GUI를 root로 실행하지 않고, 권한이 필요한 캡처는 dumpcap만 수행하도록 설계되어 있습니다. GUI의 수많은 해석기 코드를 root로 돌리지 않기 위해서입니다.
  • tcpdump의 권한 하향: 많은 배포판의 tcpdump는 인터페이스를 연 뒤 tcpdump 사용자로 권한을 낮춥니다(-Z 옵션). 그래서 -C/-G로 새 파일을 여는 시점에 저장 디렉터리 쓰기 권한이 없으면 Permission denied가 발생할 수 있습니다.

4. 실제 명령어 / 실습

실습 환경: 본인 소유 Linux VM (Rocky Linux 또는 Ubuntu). 인터페이스는 ens33을 예시로 사용합니다.

4-1. 설치

# Rocky Linux 9: GUI는 AppStream의 wireshark, tshark/dumpcap/capinfos 등은 wireshark-cli
sudo dnf install tcpdump wireshark wireshark-cli

# Ubuntu: tshark 패키지가 CLI 도구를 설치 (dumpcap·capinfos 등은 wireshark-common에 포함)
sudo apt install tcpdump wireshark tshark

일반 사용자로 dumpcap 캡처를 허용하려면 사용자를 wireshark 그룹에 넣는 방식을 씁니다. Ubuntu는 설치 중 질문에 "Yes"를 선택하거나 sudo dpkg-reconfigure wireshark-common으로 다시 설정할 수 있습니다.

sudo usermod -aG wireshark $USER     # 재로그인 후 적용
getcap /usr/bin/dumpcap              # 부여된 capability 확인 (배포판마다 방식이 다를 수 있음)

4-2. tcpdump: 빠른 확인

# 이름 해석 없이(-nn), 20개만(-c) 보기
sudo tcpdump -i ens33 -nn -c 20

# MAC 주소까지(-e), 상세(-v)
sudo tcpdump -i ens33 -nn -e -v -c 5 arp

# 저장(-w)과 읽기(-r)
sudo tcpdump -i ens33 -nn -w /tmp/lab.pcap -c 200
tcpdump -nn -r /tmp/lab.pcap | head

-w로 저장할 때는 화면에 패킷이 출력되지 않습니다. 저장 파일은 사람이 읽는 텍스트가 아니라 바이너리 pcap입니다.

4-3. tcpdump 링 버퍼 (-C / -W / -G)

옵션의미
-C N파일이 N × 1,000,000바이트를 넘으면 새 파일로 전환
-W N-C와 함께: 파일 N개를 순환하며 덮어씀 / -G와 함께: 회전 N번 후 종료
-G 초지정 초마다 새 파일. 파일명에 strftime 형식(%Y%m%d-%H%M%S) 사용
-Z 사용자파일을 연 뒤 해당 사용자로 권한 하향
# 100MB × 5개 순환 (최근 약 500MB 유지)
sudo mkdir -p /var/tmp/pcap
sudo tcpdump -i ens33 -nn -w /var/tmp/pcap/ring.pcap -C 100 -W 5 -Z root

# 1시간마다 새 파일, 24개 만들면 종료
sudo tcpdump -i ens33 -nn -G 3600 -W 24 \
  -w '/var/tmp/pcap/cap_%Y%m%d-%H%M%S.pcap' -Z root

-Z root는 실습 편의를 위한 것입니다. 운영 환경에서는 전용 사용자와 전용 디렉터리 권한으로 구성하는 편이 안전합니다. Ubuntu에서는 AppArmor 프로파일이 tcpdump의 쓰기 경로를 제한할 수 있으므로 권한 오류 시 함께 확인합니다.

4-4. dumpcap 링 버퍼 (-b / -a)

# 파일당 약 100MB(-b filesize는 kB 단위), 10개 순환
dumpcap -i ens33 -f "not port 22" -w /var/tmp/pcap/ring.pcapng \
  -b filesize:100000 -b files:10

# 10분마다 파일 전환, 1시간 뒤 자동 종료(-a)
dumpcap -i ens33 -w /var/tmp/pcap/cap.pcapng -b duration:600 -a duration:3600

dumpcap은 파일명 뒤에 일련번호와 시각을 붙여 저장합니다. SSH로 접속한 채 캡처할 때는 not port 22처럼 내 세션 트래픽을 제외해야 캡처가 자기 자신으로 가득 차지 않습니다.

4-5. tshark: 서버에서 1차 분석

# 저장된 파일에서 DNS 질의 이름만 추출
tshark -r /tmp/lab.pcap -Y "dns.flags.response == 0" -T fields -e frame.time -e ip.src -e dns.qry.name

# 라이브 캡처 + 캡처 필터(-f)
sudo tshark -i ens33 -f "udp port 53" -c 20

📷 [실습 화면 삽입] ls -l /var/tmp/pcap/ 결과 — 링 버퍼 파일이 순환 생성되는 모습
📷 [실습 화면 삽입] 같은 pcap을 tcpdump -r과 Wireshark로 각각 연 화면 비교


5. 결과 확인

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

$ ls -l /var/tmp/pcap/
-rw-r--r--. 1 root root 100000123 ... ring.pcap0
-rw-r--r--. 1 root root 100000456 ... ring.pcap1
-rw-r--r--. 1 root root  42000789 ... ring.pcap2

$ tshark -r /tmp/lab.pcap -Y "dns.flags.response == 0" -T fields -e frame.time -e ip.src -e dns.qry.name
Sep 26, 2026 10:00:01.123456789 KST	192.168.10.20	example.com

tcpdump의 -C와 -W를 함께 쓰면 파일명 뒤에 번호가 붙습니다(자릿수는 -W 값에 따라 달라짐).

  • 서버에서는 tcpdump/dumpcap, 분석은 Wireshark/tshark로 역할을 나눴다
  • -C/-W 조합으로 파일 개수가 한도에서 멈추고 덮어써지는 것을 확인했다
  • -G 사용 시 파일명에 시각 형식이 들어가는 것을 확인했다
  • SSH 원격 캡처 시 내 세션(port 22)을 제외했다
  • 저장 디렉터리 권한 문제(-Z, AppArmor)를 점검했다

6. 패킷 / 로그 분석

같은 파일이라도 도구마다 보여 주는 깊이가 다릅니다. 분석 질문에 맞는 도구를 고릅니다.

분석 질문적합한 도구이유
지금 이 서버로 SYN이 들어오고 있는가?tcpdump즉시 한 줄 요약 확인
이 세션에서 HTTP 요청 본문이 무엇이었나?Wireshark (Follow TCP Stream)재조립·해석 필요
하루치 pcap에서 질의된 도메인 목록은?tshark -T fields대량 추출·스크립트 처리
사건 전후 1시간을 빠짐없이 보존했는가?dumpcap/tcpdump 링 버퍼수집 설계 문제

또한 캡처 도구 자체가 보안 이벤트가 될 수 있습니다.

관찰정상일 수 있는 경우의심해야 하는 경우
서버에서 tcpdump 프로세스 실행변경 요청·장애 분석으로 승인된 캡처승인 기록 없음, 비정상 계정으로 실행
/tmp에 대용량 pcap 파일점검 후 정리 누락알 수 없는 이름·숨김 파일, 외부 전송 흔적
dumpcap에 capability 부여패키지 설치 시 기본 설정알 수 없는 바이너리에 cap_net_raw 부여
ps -ef | grep -Ei 'tcpdump|dumpcap|tshark' | grep -v grep
sudo find / -xdev \( -name '*.pcap' -o -name '*.pcapng' \) -size +10M 2>/dev/null
getcap -r /usr/bin /usr/sbin 2>/dev/null | grep -i net_raw

7. 보안관제 관점

  • 관제 센서는 보통 전용 수집 엔진(링 버퍼 기반)으로 pcap을 보관하고, 경보가 발생하면 해당 시간대 pcap을 잘라 분석합니다. 링 버퍼 보존 기간이 짧으면 경보를 늦게 확인했을 때 증거가 이미 덮어써질 수 있습니다.
  • 흔적이 남는 곳: 캡처 도구 실행은 프로세스 목록, 셸 히스토리, sudo 로그(Rocky /var/log/secure, Ubuntu /var/log/auth.log)에 남습니다.
  • 한계: tcpdump 한 줄 출력만으로는 암호화 여부, 애플리케이션 계층 내용을 판단하기 어렵습니다. 반대로 GUI 분석은 대용량에서 느리므로 tshark로 먼저 범위를 좁힙니다.
  • 오탐 주의: 운영팀의 장애 분석용 캡처를 "스니핑"으로 오판하지 않도록 변경 이력과 대조합니다.
  • 센서·풀패킷 캡처 장비 구성은 「04. 네트워크 장비 실습」 시리즈에서 다룹니다.

8. 핵심 정리

  • tcpdump·dumpcap은 수집, Wireshark·tshark는 해석·분석에 강합니다. 모두 libpcap과 BPF 캡처 필터를 공유합니다.
  • 운영 서버에는 GUI 대신 CLI 도구를 쓰고, pcap은 분석 PC로 옮겨서 봅니다.
  • tcpdump 링 버퍼: -C(백만 바이트 단위) + -W(개수 순환), 시간 단위는 -G + 파일명 시각 형식.
  • dumpcap 링 버퍼: -b filesize:(kB) / -b files: / -b duration:, 자동 종료는 -a.
  • 권한 하향(-Z)과 저장 경로 권한 때문에 파일 회전 시 오류가 날 수 있습니다.
  • 캡처 도구 실행 자체도 승인 여부를 확인해야 하는 보안 이벤트입니다.

다음 글: 03. Capture Filter와 Display Filter

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

0개의 댓글