[Wireshark] 네트워크 패킷 필터 A to Z

주싱·2021년 5월 7일
0
post-thumbnail

Wireshark를 통해 네트워크 상에서 캡처한 패킷들은 분석 목적에 따라 적절한 필터가 적용되어 정리되어야 한다. 패킷분석의 첫 걸음인 패킷 필터링 기법! 먼저 실무에서 자주 사용되는 핵심 필터 기능들을 정리해 보자. 아래 예제 구문들을 Display Filter 입력창에 입력하면 Packet List 창에 관련된 패킷들만 출력되고, Packet Details 및 Packet Bytes 창에서 세부적인 확인이 가능하게 된다.

주요 필터 구문

Protocol 필터
TCP 또는 UDP 프로토콜 패킷 필터링 하기

tcp or udp

Mac Address 필터
Mac Source or Destination Address 에 12:34:56:78:00:00 주소를 가지는 패킷 필터링

eth.addr == 12:34:56:78:00:00

IP, PORT 필터
Destination IP가 192.168.0.11이고 Destination PORT가 12345인 패킷 필터링 하기

ip.dst == 192.168.0.11 and tcp.dstport == 12345

TCP 연결관련 필터
TCP 연결 or 연결해제 or TCP 서버 포트가 닫혀 있을 때 서버 응답

tcp.flags.syn == 1 or tcp.flags.fin == 1 or tcp.flags.reset == 1

Data 길이 필터
Application Protocol Data가 0 보다 큰 패킷 필터 하기 ( 프로토콜 헤더만 존재하는 패킷들을 제외하는 목적으로 주로 사용됨 )

data.len > 0

Data 특정 영역에 특정 값을 가지는 패킷 필터
Application Protocol의 Data 4번째 바이트의 값이 0x11이고 10번째 바이트 값이 0x01이 아닌 패킷 필터링 (특정 식별자를 가지는 패킷만 필터링 하는 경우 사용)

data[4] == 0x11 and data[10] != 0x01

Data에 특정 바이트 배열 값을 포함하는 패킷 필터
Application Protocol의 Data에 16진수로 0A0B0C0D 값을 포함하는 패킷 필터링

data contains 0A:0B:0C:0D

Data에 특정 문자열 값을 포함하는 패킷 필터
Application Protocol의 Data에 "hello"라는 문자열(쌍따옴표 포함)을 포함하는 패킷 필터링 (역슬러쉬 ('\') 문자는 Escape 문자로 동작해서 쌍따움표('"')를 문자값으로 인식하도록 한다)

data contains "\"hello\""

Data 영역에 필터 적용하기

Wireshark는 Application Data 영역이 알려진 프로토콜이 아닌 경우 단순히 바이트 배열로 나열해 준다. 그러나 Lua Script를 활용하면 잘 알려진 TCP, UDP 프로토콜 헤더처럼 분석이 용이한 형태로 해부(Dissect)할 수 있다. 또한 Application Data 영역의 세부 필드들도 TCP, UDP 프로토콜등과 같이 필터링에 손쉽게 활용이 가능하다.

(GitHub : Lua Scirpt 활용한 Message Dissector)

필터 구문을 알지 못하는 경우

특정 프로토콜의 특정 필드 값을 필터에 사용하고 싶은데 관련된 필터 구문을 알지 못한다면 아래와 같이 확인이 가능하다.

  1. Packet Details 창에서 프로토콜의 특정 필드를 마우스 오른쪽 클릭

  2. Apply as Filter 선택

  3. 해당 필드 필터링 위한 구문 확인 가능

  4. Selected, Not Selected 등을 통해 필터 구문 자동입력 역시 가능

필터 구문 재사용하기

자주 사용하는 필터 구문은 매번 입력하지 않고 저장하여 재사용이 가능하다.

  1. 필터 입력창 옆에 '+' 버튼을 선택한다.

  2. 해당 필터의 이름 및 필터 구문을 입력한다.

  3. 'OK' 버튼 선택한다.

  4. My Filter라는 바로가기 버튼이 생성된다.

Display Filter vs Capture Filter

본 포스팅은 Display Filter에 대한 내용이다. Display Filter는 네트워크 상에 모든 패킷을 캡처하고 필요한 뷰를 필터링 하는 것이라면 Capture Filter는 캡처할 패킷 자체를 필터링함으로 캡쳐 패킷 용량을 획기적으로 줄일 수 있다.

더 공부하기

더욱 자세한 Wireshark 사용에 대한 내용은 공식 페이지에 가시면 상세히 보고 공부할 수 있다.

gitlab.com/wireshark

profile
소프트웨어 엔지니어, 일상

0개의 댓글