-
Wireshark 필터 사용법컴퓨터 네트워크 2022. 8. 14. 12:42728x90
본 포스트에서는 Wireshark를 사용할 때 필수 기능인 필터의 사용법에 대해 다룬다.
포스트 목차
- 01. 필터를 사용해야 하는 이유
- 02. 필터 적용 방법
- 03. 패킷을 보고 필터를 만드는 방법
01. 필터를 사용해야 하는 이유
와이어 샤크를 실행하면 실행 환경에 따라 다르겠지만 많은 수의 패킷이 캡쳐되어 패킷 리스트가 광대하게 늘어나는 것을 볼 수 있다.
이중에서 우리가 관심있게 보고 싶은 패킷을 하나하나 찾는 것은 굉장히 힘이 들 것이다. 이러한 수고를 줄여주는 것이 우리가 관심있는 패킷만 볼 수 있는 필터라는 기능이다.
잠깐의 캡쳐 실행에도 밀려들어오는 패킷 필터는 캡쳐 필터(Capture Filter)와 디스플레이 필터(Display Filter)가 있다.
- 캡쳐 필터: 스니핑 단계부터 해당 조건을 만족하는 패킷만 스니핑을 한다.
- 디스플레이 필터: 스니핑이 완료된 패킷들에 대해서 해당 조건을 만족하는 패킷만 화면에 보여준다.
캡쳐 필터를 설정하기 위해서는 캡쳐(Capture) 메뉴에 있는 Capture Filters... 를 선택하면 된다.
디스플레이 필터를 설정하기 위해서는 패킷 리스트 바로 위의 필터 입력란을 사용하면 된다.
02. 필터 적용 방법
본 포스트에서는 일단 디스플레이 필터 위주로 설명을 하려고 한다. 필터는 참 거짓을 판단할 수 있는 조건식으로 구성된다. 예를 들어 IP 주소가 192.168.0.172 인 패킷만 보고 싶다라고 한다면 위의 디스플레이 필터란에 다음과 같은 조건식을 작성한 후 엔터를 누르거나 우측의 화살표 버튼을 클릭하면 된다.
조건식의 문법은 C언어와 유사하다. 비교 연산자인 ==, !=, >, <. >=. <= 등이 사용가능하며, 논리 연산자인 ||, &&, ! 도 사용가능하다. 논리 연산자인 || , && 와 괄호를 사용하여 여러가지 조건을 동시에 사용하는 것도 가능하다.
연산자 의미 연산자 의미 == 또는 eq 같음 ! NOT != 또는 ne 다름 && AND > 또는 gt 좌항이 더 큼 || OR < 또는 lt 좌항이 더 작음 >= 또는 ge 좌항이 크거나 같음 <= 또는 le 좌항이 작거나 같음 이 외에도 좀 더 연산자와 함수가 많지만 해당 내용은 추후 다루도록 하겠다.
조건식을 만드는 방법은 어렵지 않은데, 키워드는 어쩔 수 없이 외워야한다. 예를 들어 인터넷 프로토콜(ip), 이더넷(eth) 등등
키워드에 대한 자세한 정보는 다음 사이트에서 찾아볼 수 있다.
https://www.wireshark.org/docs/dfref/
Wireshark · Display Filter Reference: Index
Display Filter Reference Wireshark's most powerful feature is its vast array of display filters (over 271000 fields in 3000 protocols as of version 3.6.7). They let you drill down to the exact traffic you want to see and are the basis of many of Wireshark'
www.wireshark.org
사실 자주 사용하는 거 외에는 찾아서 필터로 저장해 두는 것이 좋아보인다.
03. 패킷을 보고 필터를 만드는 방법
상술한 사이트에서 필터를 찾아보는 것도 좋은 방법이지만 간단한 필터는 패킷을 살펴보면서도 만드는 것이 가능하다.
예를 들어 TCP SOURCE PORT가 11860인 패킷만 필터로 걸러내보자.
일단 캡쳐된 패킷 리스트에서 내가 관심이 있는 종류의 프로토콜을 포함하고 있는 패킷을 하나 선택한다. 여기서는 프로토콜에 TCP 라고 명시되어 있거나 TCP를 사용할 것같은 프로토콜(HTTP 등)의 패킷을 선택하면된다.
선택한 패킷에는 TCP (Transmission Control Protocol) 에 대한 내용이 포함되어 있다. (위의 그림에서 빨간색으로 표기한 부분의 4번째 줄에 해당 내용이 있다.)
TCP 부분을 클릭하여 좀 더 자세한 정보를 볼 수 있는데, 우리가 관심있어하는 Source Port 부분이 나와있다. 이부분을 마우스 우클릭을 하면 다음과 같은 여러 메뉴가 나오는데 우리는 그중에서 필터부분을 보면 된다.
Apply as Filter를 선택 시에는 바로 해당 내용이 필터로 적용된다. Prepare as Filter는 해당 필터 구문이 Display 필터에 추가만 되고 적용은 사용자가 스스로 해야한다. 일단 Prepare as Filter를 클릭하면 우리가 원하는 조건식인 tcp.srcport == 11860이 나오게 된다. 즉 TCP SOURCE PORT에 대한 키워드를 모르는 상황에서도 이런식으로 키워드를 알아내는 것이 가능하다.
Selected , Not Selected가 있는데 Selected를 선택할 경우 등호 연산이 들어가며, Not Selected를 선택할 경우 Not Eqaul 연산이 들어간다고 보면된다. 일단 Selected를 선택해보자.
아직 필터가 적용된 상태는 아니고 위의 그림처럼 준비만 된 상태이다. 만약 다른 포트 번호를 찾고 싶다면 위의 포트번호 부분을 다른 값으로 변경하면 된다. 그리고 적용을 누르면 디스플레이 필터가 실행된다.
우리는 여기서 하나 더 추가로 필터를 적용해보려 한다.
TCP ACK 인 패킷을 가져오는 필터를 추가해 보자.
TCP 헤더 중에서 Flags 부분의 Acknowledgement 부분을 선택 후 우클릭 하여 Prepare as Filter를 선택하면 된다. 우리는 이미 TCP Source Port에 대한 필터가 있기 때문에 ... and Selected를 선택하면 된다. Or조건 이나 이번에 추가하는 내용에 Not을 붙이고 싶으면 해당 적절한 내용을 선택하면된다.
완성된 필터 이렇게 필터를 만드는 방법도 있다. 우리는 tcp.srcport와 tcp.flags.ack 라는 키워드를 모르고 있었지만, 패킷 분석 부분을 클릭하여 직접 필요한 필터를 만들 수 있었다. 이와 같은 방식으로 매뉴얼이 없을 때 급하게 필터를 만들어서 사용해보시기 바란다.
728x90'컴퓨터 네트워크' 카테고리의 다른 글
Wireshark TCP Stream 확인하기 (TCP 스트림 확인) (0) 2022.10.05 Wireshark 설치 (패킷 캡처 도구) (1) 2022.08.10