Wireshark 치트 시트

핸즈온 실습으로 Wireshark 배우기

핸즈온 실습과 실제 시나리오를 통해 Wireshark 네트워크 패킷 분석을 학습하세요. LabEx 는 필수 패킷 캡처, 디스플레이 필터, 프로토콜 분석, 네트워크 문제 해결 및 보안 모니터링을 다루는 포괄적인 Wireshark 과정을 제공합니다. 네트워크 트래픽 분석 및 패킷 검사 기술을 마스터하세요.

캡처 필터 & 트래픽 캡처

호스트 필터링

특정 호스트와 주고받는 트래픽을 캡처합니다.

# 특정 IP와 주고받는 트래픽 캡처
host 192.168.1.100
# 특정 소스 트래픽 캡처
src host 192.168.1.100
# 특정 목적지 트래픽 캡처
dst host 192.168.1.100
# 서브넷 트래픽 캡처
net 192.168.1.0/24
퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

Wireshark 에서 host 192.168.1.100 필터는 무엇을 필터링합니까?
192.168.1.100 으로 들어오거나 나가는 모든 트래픽
192.168.1.100 에서 나가는 트래픽만
192.168.1.100 으로 들어오는 트래픽만
192.168.1.100 포트의 트래픽

포트 필터링

특정 포트의 트래픽을 캡처합니다.

# HTTP 트래픽 (포트 80)
port 80
# HTTPS 트래픽 (포트 443)
port 443
# SSH 트래픽 (포트 22)
port 22
# DNS 트래픽 (포트 53)
port 53
# 포트 범위
portrange 1000-2000
퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

Wireshark 에서 port 80 필터는 무엇을 필터링합니까?
HTTP 요청만
HTTP 응답만
TCP 패킷만
포트 80 의 모든 트래픽 (소스 및 목적지 모두)

프로토콜 필터링

특정 프로토콜 트래픽을 캡처합니다.

# TCP 트래픽만
tcp
# UDP 트래픽만
udp
# ICMP 트래픽만
icmp
# ARP 트래픽만
arp

고급 캡처 필터

여러 조건을 결합하여 정확하게 캡처합니다.

# 특정 호스트와 주고받는 HTTP 트래픽
host 192.168.1.100 and port 80
# SSH를 제외한 TCP 트래픽
tcp and not port 22
# 두 호스트 간의 트래픽
host 192.168.1.100 and host 192.168.1.200
# HTTP 또는 HTTPS 트래픽
port 80 or port 443
퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

tcp and not port 22 필터는 무엇을 캡처합니까?
SSH 트래픽만
SSH (포트 22) 를 제외한 모든 TCP 트래픽
포트 22 의 UDP 트래픽
모든 네트워크 트래픽

인터페이스 선택

캡처할 네트워크 인터페이스를 선택합니다.

# 사용 가능한 인터페이스 목록 보기
tshark -D
# 특정 인터페이스에서 캡처
# 이더넷 인터페이스
eth0
# WiFi 인터페이스
wlan0
# 루프백 인터페이스
lo

캡처 옵션

캡처 매개변수를 구성합니다.

# 캡처 파일 크기 제한 (MB)
-a filesize:100
# 캡처 기간 제한 (초)
-a duration:300
# 10개 파일의 링 버퍼
-b files:10
# 무차별 모드 (모든 트래픽 캡처)
-p

디스플레이 필터 & 패킷 분석

기본 디스플레이 필터

일반적인 프로토콜 및 트래픽 유형에 대한 필수 필터입니다.

# HTTP 트래픽만 표시
http
# HTTPS/TLS 트래픽만 표시
tls
# DNS 트래픽만 표시
dns
# TCP 트래픽만 표시
tcp
# UDP 트래픽만 표시
udp
# ICMP 트래픽만 표시
icmp

IP 주소 필터링

소스 및 목적지 IP 주소로 패킷을 필터링합니다.

# 특정 IP에서 오는 트래픽
ip.src == 192.168.1.100
# 특정 IP로 가는 트래픽
ip.dst == 192.168.1.200
# 두 IP 간의 트래픽
ip.addr == 192.168.1.100
# 서브넷에서 오는 트래픽
ip.src_net == 192.168.1.0/24
# 특정 IP 제외
not ip.addr == 192.168.1.1

포트 및 프로토콜 필터링

특정 포트 및 프로토콜 세부 정보로 필터링합니다.

# 특정 포트의 트래픽
tcp.port == 80
# 소스 포트 필터
tcp.srcport == 443
# 목적지 포트 필터
tcp.dstport == 22
# 포트 범위
tcp.port >= 1000 and tcp.port <=
2000
# 여러 포트
tcp.port in {80 443 8080}

프로토콜별 분석

HTTP 분석

HTTP 요청 및 응답을 분석합니다.

# HTTP GET 요청
http.request.method == "GET"
# HTTP POST 요청
http.request.method == "POST"
# 특정 HTTP 상태 코드
http.response.code == 404
# 특정 호스트로의 HTTP 요청
http.host == "example.com"
# 문자열을 포함하는 HTTP 요청
http contains "login"

DNS 분석

DNS 쿼리 및 응답을 검사합니다.

# DNS 쿼리만
dns.flags.response == 0
# DNS 응답만
dns.flags.response == 1
# 특정 도메인에 대한 DNS 쿼리
dns.qry.name == "example.com"
# DNS A 레코드 쿼리
dns.qry.type == 1
# DNS 오류/실패
dns.flags.rcode != 0

TCP 분석

TCP 연결 세부 정보를 분석합니다.

# TCP SYN 패킷 (연결 시도)
tcp.flags.syn == 1
# TCP RST 패킷 (연결 재설정)
tcp.flags.reset == 1
# TCP 재전송
tcp.analysis.retransmission
# TCP 윈도우 크기 문제
tcp.analysis.window_update
# TCP 연결 설정
tcp.flags.syn == 1 and tcp.flags.ack == 0

TLS/SSL 분석

암호화된 연결 세부 정보를 검사합니다.

# TLS 핸드셰이크 패킷
tls.handshake
# TLS 인증서 정보
tls.handshake.certificate
# TLS 경고 및 오류
tls.alert
# 특정 TLS 버전
tls.handshake.version == 0x0303
# TLS Server Name Indication
tls.handshake.extensions_server_name

네트워크 문제 해결

일반적인 네트워크 문제를 식별합니다.

# ICMP 목적지 도달 불가 메시지
icmp.type == 3
# ARP 요청/응답
arp.opcode == 1 or arp.opcode == 2
# 브로드캐스트 트래픽
eth.dst == ff:ff:ff:ff:ff:ff
# 조각난 패킷
ip.flags.mf == 1
# 큰 패킷 (잠재적 MTU 문제)
frame.len > 1500

시간 기반 필터링

타임스탬프 및 타이밍별로 필터링합니다.

# 시간 범위 내의 패킷
frame.time >= "2024-01-01 10:00:00"
# 지난 1시간 이내의 패킷
frame.time_relative >= -3600
# 응답 시간 분석
tcp.time_delta > 1.0
# 패킷 간격 시간
frame.time_delta > 0.1

통계 & 분석 도구

프로토콜 계층 구조

캡처 내 프로토콜 분포를 확인합니다.

# 다음을 통해 액세스: 통계 > 프로토콜 계층 구조
# 각 프로토콜의 비율 표시
# 가장 일반적인 프로토콜 식별
# 트래픽 개요 파악에 유용
# 명령줄 동등 항목
tshark -r capture.pcap -q -z io,phs

대화 (Conversations)

엔드포인트 간의 통신을 분석합니다.

# 다음을 통해 액세스: 통계 > 대화
# 이더넷 대화
# IPv4/IPv6 대화
# TCP/UDP 대화
# 전송된 바이트 수, 패킷 수 표시
# 명령줄 동등 항목
tshark -r capture.pcap -q -z conv,tcp

I/O 그래프

시간 경과에 따른 트래픽 패턴을 시각화합니다.

# 다음을 통해 액세스: 통계 > I/O 그래프
# 시간 경과에 따른 트래픽 볼륨
# 초당 패킷 수
# 초당 바이트 수
# 특정 트래픽에 필터 적용
# 트래픽 급증 식별에 유용

전문가 정보 (Expert Information)

잠재적인 네트워크 문제를 식별합니다.

# 다음을 통해 액세스: 분석 > 전문가 정보
# 네트워크 문제에 대한 경고
# 패킷 전송 오류
# 성능 문제
# 보안 우려 사항
# 심각도별 전문가 정보 필터링
tcp.analysis.flags

흐름 그래프 (Flow Graph)

엔드포인트 간의 패킷 흐름을 시각화합니다.

# 다음을 통해 액세스: 통계 > 흐름 그래프
# 패킷 시퀀스 표시
# 시간 기반 시각화
# 문제 해결에 유용
# 통신 패턴 식별

응답 시간 분석

애플리케이션 응답 시간을 측정합니다.

# HTTP 응답 시간
# 통계 > HTTP > 요청
# DNS 응답 시간
# 통계 > DNS
# TCP 서비스 응답 시간
# 통계 > TCP 스트림 그래프 > 시간 시퀀스

파일 작업 및 내보내기

캡처 파일 저장 및 로드

다양한 형식으로 캡처 파일을 관리합니다.

# 캡처 파일 저장
# 파일 > 다른 이름으로 저장 > capture.pcap
# 캡처 파일 로드
# 파일 > 열기 > existing.pcap
# 여러 캡처 파일 병합
# 파일 > 병합 > 파일 선택
# 필터링된 패킷만 저장
# 파일 > 지정된 패킷 내보내기

내보내기 옵션

특정 데이터 또는 패킷 하위 집합을 내보냅니다.

# 선택된 패킷 내보내기
# 파일 > 지정된 패킷 내보내기
# 패킷 분해 내보내기
# 파일 > 패킷 분해 내보내기
# HTTP에서 개체 내보내기
# 파일 > 개체 내보내기 > HTTP
# SSL/TLS 키 내보내기
# 편집 > 환경 설정 > 프로토콜 > TLS

명령줄 캡처

자동화된 캡처 및 분석을 위해 tshark 를 사용합니다.

# 파일로 캡처
tshark -i eth0 -w capture.pcap
# 필터와 함께 캡처
tshark -i eth0 -f "port 80" -w http.pcap
# 패킷 읽기 및 표시
tshark -r capture.pcap
# 파일에 디스플레이 필터 적용
tshark -r capture.pcap -Y "tcp.port == 80"

일괄 처리 (Batch Processing)

여러 캡처 파일을 자동으로 처리합니다.

# 여러 파일 병합
mergecap -w merged.pcap file1.pcap file2.pcap
# 큰 캡처 파일 분할
editcap -c 1000 large.pcap split.pcap
# 시간 범위 추출
editcap -A "2024-01-01 10:00:00" \
        -B "2024-01-01 11:00:00" \
        input.pcap output.pcap

성능 및 최적화

메모리 관리

대용량 캡처 파일을 효율적으로 처리합니다.

# 연속 캡처를 위한 링 버퍼 사용
-b filesize:100 -b files:10
# 패킷 캡처 크기 제한
-s 96  # 처음 96바이트만 캡처
# 데이터를 줄이기 위해 캡처 필터 사용
host 192.168.1.100 and port 80
# 속도를 위해 프로토콜 분해 비활성화
-d tcp.port==80,http

디스플레이 최적화

대용량 데이터 세트에서 GUI 성능을 개선합니다.

# 조정할 환경 설정:
# 편집 > 환경 설정 > 모양
# 색 구성표 선택
# 글꼴 크기 및 유형 조정 필요 시
# 편집 > 환경 설정 > 프로토콜
# 불필요한 프로토콜 분해기 비활성화
# TCP 재조립 감소
# 대용량 파일 분석을 위해 tshark 사용
tshark -r large.pcap -q -z conv,tcp

효율적인 분석 워크플로우

네트워크 트래픽 분석을 위한 모범 사례.

# 1. 캡처 필터로 시작
# 관련 트래픽만 캡처
# 2. 점진적으로 디스플레이 필터 사용
# 광범위하게 시작하여 좁혀가기
# 3. 먼저 통계 사용
# 상세 분석 전에 개요 파악
# 4. 특정 흐름에 집중
# 패킷에서 마우스 오른쪽 버튼 클릭 > 흐름 따라가기 > TCP 스트림

자동화 및 스크립팅

일반적인 분석 작업을 자동화합니다.

# 사용자 지정 디스플레이 필터 버튼 생성
# 보기 > 디스플레이 필터 표현식
# 시나리오별 프로필 사용
# 편집 > 구성 프로필
# tshark로 스크립팅
#!/bin/bash
tshark -r $1 -q -z endpoints,tcp | \
grep -v "Filter:" | head -20

설치 및 설정

Windows 설치

공식 웹사이트에서 다운로드하여 설치합니다.

# wireshark.org에서 다운로드
# 관리자 권한으로 설치 프로그램 실행
# 설치 중 WinPcap/Npcap 포함
# 명령줄 설치
(chocolatey)
choco install wireshark
# 설치 확인
wireshark --version

Linux 설치

패키지 관리자 또는 소스에서 설치합니다.

# Ubuntu/Debian
sudo apt update
sudo apt install wireshark
# Red Hat/CentOS/Fedora
sudo yum install wireshark
# 또는
sudo dnf install wireshark
# wireshark 그룹에 사용자 추가
sudo usermod -a -G wireshark
$USER

macOS 설치

Homebrew 또는 공식 설치 프로그램을 사용하여 설치합니다.

# Homebrew 사용
brew install --cask wireshark
# wireshark.org에서 다운로드
# .dmg 패키지 설치
# 명령줄 도구
brew install wireshark

구성 및 환경 설정

인터페이스 환경 설정

캡처 인터페이스 및 옵션을 구성합니다.

# 편집 > 환경 설정 > 캡처
# 기본 캡처 인터페이스
# 무차별 모드 설정
# 버퍼 크기 구성
# 라이브 캡처에서 자동 스크롤
# 인터페이스별 설정
# 캡처 > 옵션 > 인터페이스 세부 정보

프로토콜 설정

프로토콜 분해기 및 디코딩을 구성합니다.

# 편집 > 환경 설정 > 프로토콜
# 프로토콜 분해기 활성화/비활성화
# 포트 할당 구성
# 암호 해독 키 설정 (TLS, WEP 등)
# TCP 재조립 옵션
# 다음으로 디코드 기능
# 분석 > 다음으로 디코드

디스플레이 환경 설정

사용자 인터페이스 및 디스플레이 옵션을 사용자 지정합니다.

# 편집 > 환경 설정 > 모양
# 색 구성표 선택
# 글꼴 크기 및 유형
# 열 표시 옵션
# 시간 형식 설정
# 보기 > 시간 표시 형식
# 캡처 시작 이후 경과 시간
# 현지 시간
# UTC 시간

보안 설정

보안 관련 옵션 및 암호 해독을 구성합니다.

# TLS 암호 해독 설정
# 편집 > 환경 설정 > 프로토콜 > TLS
# RSA 키 목록
# 사전 공유 키
# 키 로그 파일 위치
# 잠재적으로 위험한 기능 비활성화
# Lua 스크립트 실행
# 외부 확인자

고급 필터링 기술

논리 연산자

여러 필터 조건을 결합합니다.

# AND 연산자
tcp.port == 80 and ip.src == 192.168.1.100
# OR 연산자
tcp.port == 80 or tcp.port == 443
# NOT 연산자
not icmp
# 그룹화를 위한 괄호
(tcp.port == 80 or tcp.port == 443) and ip.src ==
192.168.1.0/24

문자열 일치

패킷 내 특정 콘텐츠를 검색합니다.

# 문자열 포함 (대소문자 구분)
tcp contains "password"
# 문자열 포함 (대소문자 구분 안 함)
tcp matches "(?i)login"
# 정규 표현식
http.request.uri matches "\.php$"
# 바이트 시퀀스
eth.src[0:3] == 00:11:22

필드 비교

패킷 필드를 값 및 범위와 비교합니다.

# 등호
tcp.srcport == 80
# 보다 큼/보다 작음
frame.len > 1000
# 범위 확인
tcp.port >= 1024 and tcp.port <= 65535
# 집합 멤버십
tcp.port in {80 443 8080 8443}
# 필드 존재 여부
tcp.options

고급 패킷 분석

특정 패킷 특성 및 이상 징후를 식별합니다.

# 잘못된 형식의 패킷
_ws.malformed
# 중복 패킷
frame.number == tcp.analysis.duplicate_ack_num
# 순서가 잘못된 패킷
tcp.analysis.out_of_order
# TCP 윈도우 크기 문제
tcp.analysis.window_full

일반적인 사용 사례

네트워크 문제 해결

네트워크 연결 문제를 식별하고 해결합니다.

# 연결 시간 초과 찾기
tcp.analysis.retransmission and tcp.analysis.rto
# 느린 연결 식별
tcp.time_delta > 1.0
# 네트워크 혼잡 찾기
tcp.analysis.window_full
# DNS 확인 문제
dns.flags.rcode != 0
# MTU 검색 문제
icmp.type == 3 and icmp.code == 4

보안 분석

잠재적인 보안 위협 및 의심스러운 활동을 감지합니다.

# 포트 스캔 감지
tcp.flags.syn == 1 and tcp.flags.ack == 0
# 단일 IP에서 많은 수의 연결
# 통계 > 대화 참조
# 의심스러운 DNS 쿼리
dns.qry.name contains "dga" or dns.qry.name matches
"^[a-z]{8,}\.com$"
# 의심스러운 URL로의 HTTP POST
http.request.method == "POST" and http.request.uri
contains "/upload"
# 비정상적인 트래픽 패턴
# I/O 그래프에서 급증 확인

애플리케이션 성능

애플리케이션 응답 시간을 모니터링하고 분석합니다.

# 웹 애플리케이션 분석
http.time > 2.0
# 데이터베이스 연결 모니터링
tcp.port == 3306 and tcp.analysis.initial_rtt > 0.1
# 파일 전송 성능
tcp.stream eq X and tcp.analysis.bytes_in_flight
# VoIP 품질 분석
rtp.jitter > 30 or rtp.marker == 1

프로토콜 조사

특정 프로토콜 및 동작을 심층적으로 조사합니다.

# 이메일 트래픽 분석
tcp.port == 25 or tcp.port == 587 or tcp.port == 993
# FTP 파일 전송
ftp-data or ftp.request.command == "RETR"
# SMB/CIFS 파일 공유
smb2 or smb
# DHCP 임대 분석
bootp.option.dhcp == 1 or bootp.option.dhcp == 2

관련 링크