Wireshark 활용

김경윤·2025년 4월 18일

정보보안

목록 보기
7/10

와이어샤크(Wireshark) 개요

1. 와이어샤크란?

  • 와이어샤크(Wireshark)는 대표적인 네트워크 패킷 분석 도구입니다.
  • 1998년 Gerald Combs가 개발했으며, 현재까지 지속적으로 업데이트되고 있음.
  • 원래 이름은 Ethereal이었으나, 2006년 상표 문제로 인해 현재의 이름인 Wireshark로 변경됨.
  • 유선 및 무선 네트워크 트래픽을 실시간 캡처하여 모니터링하고 분석 가능.

2. 와이어샤크의 사용 목적

  • 네트워크 트래픽 실시간 분석을 통해 다음과 같은 용도로 사용됨:

🔧 네트워크 문제 해결

  • 네트워크 연결 문제 진단
  • 성능 저하 원인 분석
  • 보안 위협 탐지 및 대응

🔐 보안 분석

  • 침입 탐지 및 비정상적인 활동 모니터링
  • 보안 위협에 대한 상세한 트래픽 로그 분석

🧪 개발 및 테스트

  • 네트워크 기반 애플리케이션 개발 시, 통신 흐름 테스트
  • 프로토콜 구현 검증 및 디버깅

다음은 요청하신 주요 기능만을 마크다운 형식으로 정리한 내용입니다:


3. 주요 기능

  • 📡 실시간 패킷 캡처

    • 네트워크 인터페이스에서 실시간으로 패킷을 캡처하고 분석
  • 🧩 프로토콜 디코딩

    • 다양한 네트워크 프로토콜을 해석하고 디코딩하여 상세한 정보 제공
  • 🔍 필터링 및 검색

    • 특정 패킷이나 프로토콜을 쉽게 찾을 수 있도록 강력한 필터링 기능 제공
  • 📈 네트워크 흐름 분석

    • 트래픽의 흐름을 시각적으로 분석하여 네트워크 성능을 진단
  • 📝 보고서 생성

    • 분석 결과를 바탕으로 다양한 형태의 보고서 자동 생성 가능

와이어샤크 구조

패킷 스니퍼(sniffer)

  • Packet capture
    • 컴퓨터가 보내거나 받은 모든 링크 레이어의 프레임을 복사하여 가져옴(무차별 모드)
  • Packet analyzer
    • 프로토콜 메시지 안에 있는 모든 필드 내용을 보여줌
    • 패킷의 헤더 구조를 이해하고 있으면 도움이 됨


와이어샤크의 한계와 주의사항

  • 보안 문제
    • 민감한 데이터를 캡처할 수 있으므로 사용시 적절한 보안 조치가 필요
  • 성능 이슈
    • 대량의 패킷을 캡처할 경우 성능 저하 발생 가능
  • 법적 이슈
    • 네트워크 트래픽 캡처는 스니핑(Sniffing)과 동일한 과정이므로 법적 문제가 될 수 있음

와이어샤크 설치

와이어샤크 설치


PCAP(Packet Capture)

  • 네트워크 데이터 패킷을 캡처하고 분석하는데 사용되는 파일 포맷 및 API
  • 네트워크 트래픽을 모니터링하고 분석하는데 사용

Npcap vs WinPcap 비교

항목NpcapWinPcap
지원 플랫폼Windows 10 및 최신 버전 지원Windows 10에서 공식 지원 없음
성능 및 안정성최신 드라이버 모델로 성능 및 안정성 우수오래된 드라이버 모델로 성능 저하
기능루프백 캡처 기능 지원루프백 캡처 기능 없음
보안최신 보안 패치 반영, 보안성 강화업데이트 중단으로 보안 취약
개발 및 지원적극적인 개발과 지원개발 중단, 공식 지원 없음

※ 루프백 캡처 : 컴퓨터의 네트워크 인터페이스에서 내부적으로 발생하는 트래픽을 캡처하는 기능.
(시스템 내부의 통신을 분석할 수 있게 해 줌)


와이어샤크 UI


캡처 필터

  • 대용량 파일 캡처는 성능을 느리게 함
  • 필터를 통해 원하는 패킷만 캡처 가능 (ex) TCP, UDP 등




패킷 목록

  • 패킷 번호(No.)
    • 캡처된 패킷의 식별 번호
  • 시간(Time)
    • 패킷이 캡처된 시간(상대시간) cf) 절대시간은 프레임 헤더 확인!!
    • 요청 메시지를 보낸 후 응답 메시지를 받을 때까지 몇 초 걸렸는지 확인 가능
  • 송수신 주소
  • 프로토콜
  • 패킷 길이
  • 패킷의 정보


패킷 상세

  • 캡처된 패킷의 캡슐화(Encapsulation)된 상태를 표시
    • (예) TCP 패킷의 경우, Frame header, IP header, TCP header 정보를 표시


패킷 바이트

  • 네트워크를 통해 실제로 전송되는 값
  • 각 헤더의 값이 어느 위치에서, 어떤 값으로 표현(16진수 값)되는지 확인
  • 편집 > 설정 > 모양 > 레이아웃 에서 “패킷 다이어그램”으로 변경하면,
    각 헤더의 어느 부분의 값인지 쉽게 확인 가능


패킷 마크 설정

  • 마크 설정
    • 마우스 우클릭을 통해, 선택 항목 마크/해제 선택(ctrl+M)
      • 다음 마크로 이동 : ctrl + shift + N
      • 이전 마크로 이동 : ctrl + shift + B
  • 마킹한 패킷만 별도 인쇄 가능
    • 파일 > 프린트 > 마크한 패킷만 옵션 선택
  • 기본적으로 패킷 종류에 따라 색깔이 지정되어 있음


패킷 필터링

  • 표시 필터 적용
    • 사용자가 원하는 조건을 와이어샤크 상단에 입력
      • (예) http, tcp, udp, dns 등
  • 기본 문법에 대한 학습이 필요함(맨 뒤 참고)
    • 자동완성 적극 활용 필요!


패킷 필터링 문법

  • 연산자 활용
    • 사용자가 원하는 패킷을 추출하기 위해 연산자 활용
    • ip.src == 192.168.0.1 or ip.src eq 192.168.0.1
    • tcp.port != 80 or tcp.port ne 80
    • tcp.seq <= 1000 or tcp.seq le 1000
    • ip.src == 192.168.0.1 && tcp.port == 80

와이어샤크 필터 연산자 정리

연산자키워드설명
==eq조건을 만족하는 패킷을 선택
!=ne조건을 만족하지 않는 패킷을 선택
&&and조건을 모두 만족하는 패킷을 선택
``
!not조건에 부합하지 않는 패킷을 선택
>gt지정한 값을 초과하는 패킷을 선택
<lt지정한 값보다 작은 패킷을 선택
>=ge지정한 값보다 크거나 같은 패킷을 선택
<=le지정한 값보다 작거나 같은 패킷을 선택

캡처 파일 저장 및 열기

  • 파일 저장
    • 현재 캡처된 상태를 저장 or 사용자에 의해 추출된 상태를 저장
    • 일반적으로 확장자가 pcapng로 저장
    • 저장 & 다른 이름으로 저장
      • 현재 캡처된 모든 패킷들을 저장
    • 지정한 패킷 내보내기
    • 사용자가 필터를 통해 필요한 패킷만 추출한 것을 저장
  • 파일 열기
    • 캡처 파일(pcapng 등)을 언제든지 열 수 있음
      • 파일 > 열기를 선택해 파일 열기
      • 캡처 파일 더블클릭


프로토콜 분석

TCP/IP 프로토콜


프로토콜 분석 - HTTP


따라가기

  • 분석 원하는 패킷을 선택 후,
    마우스 우측 버튼 눌러 HTTP 스트림 따라가기
  • HTTP 요청 / 응답 내용을 한 눈에 확인 가능


HTTP vs. HTTPS

  • HTTP는 평문으로 전송
  • HTTPS는 TLS 프로토콜로 암호화해서 전송
  • TLS는 대칭키/비대칭키 모두 사용
    • HTTP의 데이터는 대칭키로 암호화
    • TLS는 비대칭키(공개키, 비공개키)를 이용해 암호화


TCP의 동작

  • 연결 / 데이터 전송 / 종료과정 확인


TCP 컨트롤 플래그(Control Flag)

  • URG : 긴급 데이터 플래그
  • ACK : 응답 플래그
  • PSH : 넣기 플래그
    • 버퍼링 되지 않고 즉시 전달하는 데이터
  • RST : 연결 재설정 플래그
    • 비정상적인 상황에서 연결을 즉시 종료(강제종료)
  • SYN : 연결요청 플래그
  • FIN : 연결 종료 플래그
  • ECN-Echo
    • 수신측이 네트워크 혼잡 상태를 감지 했음을 송신측에 알림
  • CWR
    • 송신측이 혼잡 상황을 인지하고 송신 윈도 크기를
      줄였음을 수신측에 알림


따라가기


TCP 재전송

  • SEQ와 ACK 관계 확인
    • 확인 응답번호(ACK)를 통해 메시지 수신 여부 확인
    • 수신한 확인 응답 번호를 확인 후,
      그 번호를 일련번호로 설정하여 전송
    • TCP에서는 메시지를 수신하지 못하면 재전송
    • 빠른 재전송(Fast Retransmit)
      - 3개의 중복 ACK를 수신할 경우 문제의 패킷을 즉시 전송
      - 자신이 설정한 타임 아웃 전에 재전송하므로 빠르게 보냄
      - 혼잡 현상이 발생한 것이므로 데이터 전송을 위한
      윈도우 크기를 줄임
    • tcp-retransmission.pcapng 파일



프로토콜 분석 - IP

  • IP 단편화(Fragmentation)
    • IP 프로토콜에서 패킷을 몇 개의 작은 패킷으로 나누어 전송하고, 수신측에서 재조합하는 과정
    • 식별자(Identification) : 어떤 패킷에서 단편화가 발생했는지 나타내는 값
    • 단편화 플래그(flag) : 조각난 플래그가 더 있는지 표시
    • 단편화 오프셋(offset) : 각 패킷은 1480의 단위로 떨어져 있음
    • ipv4-fragmentation.pcapng 파일

★ MSS(Maximum Segment Size)

  • 사용자 데이터를 분할하지 않고 한 번에 보내는
    최대 크기(MTU 값에 의해 결정)
    ★ MTU(maximum Transmission Unit)
  • 네트워크에서 전송할 수 있는 최대 크기의 패킷

프로토콜 분석 - ICMP

ping

  • 와이어샤크에 icmp로 필터 설정
  • ping www.google.com (혹은 교수컴)
  • 에코 요청 타입 : 8
  • 에코 응답 타입 : 0


tracert

  • 와이어샤크에 icmp로 필터 설정
  • tracert www.google.com
  • ping을 사용하는 것 확인


프로토콜 분석 - ARP

ARP

  • 동일한 네트워크 대역에서 통신하기 위해
    IP주소로 MAC 주소를 알아내는 프로토콜
    • 요청(Request) : Broadcast로 전송
    • 응답(Reply) : 해당 IP가 unicast로 전송
  • 만약, ARP 요청한 IP가 동일한 네트워크 대역이 아니라면,
    게이트웨이의 IP로 변경하여 게이트웨이의 MAC 주소 등록


ARP request

  • 220.67.174.1의 MAC 주소 확인
    • MAC 주소가 00:00:00_00:00:00인을 확인!!
    • 앞 3부분은 제조사, 뒤 3부분은 주소를 나타냄


ARP Reply

  • MAC 주소가 채워져서 응답 오는 것을 확인!
  • arp -a를 통해 확인


프로토콜 분석 - DNS


DNS에 등록된 도메인의 IP 확인

  • nslookup www.youtube.com [다른 DNS 주소]
  • 내 컴퓨터가 등록한 DNS 서버 IP 주소 확인
    • ipconfig /all
  • DNS 서버에 등록된 도메인의 IP 확인
  • 내가 사용하는 DNS 서버 이외에 다른 DNS 사용 가능
    • 구글 : 8.8.8.8
    • KT : 168.126.63.1
    • SKB : 210.220.163.82
    • LGU+ : 164.124.101.2


패킷 필터링 문법


기본 프로토콜

필터설명 (한글 요약)
eth이더넷 프레임 분석
ipIPv4 패킷 분석
ipv6IPv6 패킷 분석
arpMAC 주소 확인을 위한 ARP 패킷
dhcpIP 자동 할당 관련 DHCP 트래픽
rip거리 벡터 기반 라우팅 프로토콜
ospf링크 상태 기반 라우팅 프로토콜
bgp경로 벡터 기반, 인터넷 백본 라우팅 프로토콜
icmp핑(ping)이나 트레이서트에서 사용되는 메시지 제어 프로토콜
tcp연결 지향 통신 프로토콜 (3-way handshake 등)
udp비연결형 통신 프로토콜 (빠르지만 신뢰성 낮음)
dns도메인 이름을 IP로 변환하는 프로토콜
http웹 통신의 기본 프로토콜
http2HTTP의 속도 개선 버전 (멀티플렉싱 등 지원)
http3QUIC 기반의 최신 HTTP 버전
tls암호화된 보안 통신(HTTPS 등에서 사용)

이더넷(2계층) 관련 필터


필터설명
eth.addr수신지 또는 송신지 MAC 주소 전체를 검색할 때 사용
eth.dst수신지(Destination) MAC 주소 필터링
eth.src송신지(Source) MAC 주소 필터링
eth.len이더넷 페이로드의 길이 (16비트 양의 정수)
eth.type이더넷 프레임 내 상위 프로토콜 식별 (예: IPv4는 0x0800)

✅ 예시 사용법

  • eth.src == aa:bb:cc:dd:ee:ff
    → 해당 MAC 주소에서 송신된 패킷 필터링
  • eth.type == 0x0806
    → ARP 패킷만 필터링

ip(3계층) 관련 필터


✅ IPv4 필터 목록 요약

필터설명
ip.addr송신지 또는 수신지 IPv4 주소
ip.dst수신지 IPv4 주소
ip.src송신지 IPv4 주소
ip.flags플래그 값 전체 (8비트 정수)
ip.flags.dfDF(조각 금지) 플래그
ip.flags.mfMF(더 많은 조각 있음) 플래그
ip.frag_offset단편화 오프셋 (16비트 정수)
ip.hdr_lenIP 헤더 길이 (8비트 정수)
ip.id패킷 식별자 (16비트 정수)
ip.len전체 IP 패킷 길이
ip.opt.mtuMTU 옵션 값
ip.ttlTTL(Time to Live, 생존 시간) 값

📌 실전 필터 사용 예시

  • ip.src == 192.168.0.10
    → 해당 IP가 출발지인 패킷만 보기
  • ip.dst == 8.8.8.8
    구글 DNS 서버로 향하는 트래픽 확인
  • ip.ttl < 10
    → TTL이 낮은 패킷만 필터링 (루프 가능성 진단 등)

udp(4계층) 관련 필터


✅ UDP 필터 정리

필터설명
udp.port수신지 또는 송신지 포트 번호 (16비트 정수)
udp.dstport수신지 포트 번호
udp.srcport송신지 포트 번호
udp.lengthUDP 데이터그램 전체 길이 (헤더 + 데이터, 16비트 정수)

📌 예시 필터 사용법

  • udp.port == 53
    → DNS 요청 및 응답 패킷 확인 (UDP 53 포트 사용)
  • udp.srcport == 123
    → NTP 서버로부터 전송된 패킷 필터링
  • udp.length > 100
    → 100바이트 이상인 UDP 데이터그램 확인

tcp(4계층) 관련 필터


✅ TCP 필터 정리

필터설명
tcp.port송신지 또는 수신지 포트 번호
tcp.dstport수신지 포트 번호
tcp.srcport송신지 포트 번호
tcp.seq순서 번호 (Sequence Number, 32비트)
tcp.seq_raw실제 순서 번호 (32비트 음이 아닌 정수)
tcp.nxtseq다음 순서 번호
tcp.ack확인 응답 번호 (ACK Number)
tcp.ack_raw실제 ACK 번호
tcp.flagsTCP 플래그 필드 전체
tcp.flags.ackACK 플래그 (확인 응답 여부)
tcp.flags.finFIN 플래그 (연결 종료 요청)
tcp.flags.synSYN 플래그 (연결 요청)
tcp.hdr_lenTCP 헤더 길이
tcp.lenTCP 세그먼트 데이터 길이
tcp.window_size_value윈도 크기 (수신 측의 버퍼 크기)
tcp.options.mss_valMSS(Maximum Segment Size) 값
tcp.analysis.ack_rtt세그먼트에 대한 ACK까지의 RTT
tcp.analysis.out_of_order순서가 어긋난 세그먼트
tcp.analysis.retransmission재전송된 세그먼트
tcp.analysis.fast_retransmission빠른 재전송
tcp.analysis.duplicate_ack중복된 ACK
tcp.analysis.duplicate_ack_num중복 ACK 수 (정수)

📌 실전 예시

  • tcp.flags.syn == 1 && tcp.flags.ack == 0
    TCP 3-way handshake의 시작(SYN 요청) 필터링
  • tcp.analysis.retransmission
    재전송된 패킷 확인, 네트워크 품질 분석 시 유용
  • tcp.port == 443
    → HTTPS(SSL/TLS) 트래픽 확인

http 관련 필터


✅ Wireshark - HTTP 필터 통합표 (최종)

필터설명
http.requestHTTP 요청 여부
http.request.line요청 라인 전체
http.request.method요청 메서드 (GET, POST 등)
http.request.uri전체 URI
http.request.uri.pathURI 경로 (/path/only)
http.request.uri.query전체 쿼리 문자열
http.request.uri.query.parameter쿼리 파라미터 값
http.request.versionHTTP 요청 버전
http.responseHTTP 응답 여부
http.response.codeHTTP 응답 코드 (예: 200, 404)
http.response.phrase응답 문구 (OK, Not Found 등)
http.response.line응답 라인 전체
http.response.versionHTTP 응답 버전
http.acceptAccept 헤더
http.accept_encodingAccept-Encoding 헤더
http.accept_languageAccept-Language 헤더
http.cache_controlCache-Control 헤더
http.connectionConnection 헤더
http.content_encodingContent-Encoding 헤더
http.content_lengthContent-Length 헤더
http.content_typeContent-Type 헤더
http.dateDate 헤더
http.hostHost 헤더
http.locationLocation 헤더
http.last_modifiedLast-Modified 헤더
http.serverServer 헤더
http.set_cookieSet-Cookie 헤더
http.cookieCookie 헤더
http.user_agentUser-Agent 헤더
http.refererReferer 헤더
http.authorizationAuthorization 헤더
http.www_authenticateWWW-Authenticate 헤더

📌 필터 예시 몇 가지

  • http.user_agent contains "Chrome"
    → 크롬 브라우저에서 요청한 패킷만 보기

  • http.set_cookie
    → 서버가 Set-Cookie를 포함한 응답만 보기

  • http.authorization
    → Authorization 헤더를 포함한 인증 요청 필터링

  • http.referer contains "naver.com"
    → 네이버에서 유입된 트래픽만 보기

  • http.server contains "Apache"
    → Apache 서버가 응답한 HTTP 트래픽만 보기


0개의 댓글