네트워크 패킷 분석의 표준 도구인 와이어샤크(Wireshark)를 사용할 때, 수많은 패킷의 홍수 속에서 원하는 정보를 찾아내는 능력은 분석의 성패를 좌우합니다. 이 능력의 핵심이 바로 ‘필터’입니다. 와이어샤크는 두 가지 강력하지만 근본적으로 다른 필터링 메커니즘을 제공합니다: 캡처 필터(Capture Filter)와 디스플레이 필터(Display Filter).
이 둘의 차이를 명확히 이해하고 전략적으로 사용하는 것은 초보자와 전문가를 가르는 중요한 기준입니다. 이 글에서는 두 필터의 개념, 문법, 그리고 실전 활용 전략을 심도 있게 다룹니다.
1. 캡처 필터 (Capture Filter): 필요한 데이터만 수집하기
캡처 필터는 패킷 캡처를 시작하기 전에 적용하는 필터입니다. 이는 마치 특정 크기의 그물코를 가진 어망으로 물고기를 잡는 것과 같습니다. 내가 원하는 종류의 패킷(물고기)만 그물(캡처 파일)에 담고, 나머지는 처음부터 무시합니다.
이렇게 수집 단계에서부터 데이터를 걸러내므로, 대용량 트래픽 환경이나 장시간 캡처 시 시스템의 부하를 줄이고 저장 공간을 효율적으로 사용하는 데 결정적인 역할을 합니다.
- 적용 시점: 캡처 시작 인터페이스 설정 화면
- 사용 문법: BPF(Berkeley Packet Filter) 문법
목적 | 필터 예시 | 설명 |
---|---|---|
특정 IP 주소 | host 192.168.0.10 | 출발지 또는 목적지 IP가 192.168.0.10인 모든 트래픽 |
출발지/목적지 IP | src host 192.168.0.10 / dst host 192.168.0.10 | 각각 출발지 또는 목적지 IP가 해당될 때 |
특정 포트 | port 80 | 출발지 또는 목적지 포트가 80인 모든 트래픽 |
프로토콜 | tcp , udp , icmp | 지정된 프로토콜 트래픽만 |
프로토콜과 포트 조합 | tcp port 443 | TCP 프로토콜을 사용하고 포트가 443(HTTPS)인 트래픽 |
IP 대역 (서브넷) | net 192.168.0.0/24 | 192.168.0.x 대역의 모든 트래픽 |
논리 연산 (AND/OR) | tcp and port 443 and host 1.1.1.1 | AND(and , && )와 OR(or , || )로 조건 조합 가능 |
2. 디스플레이 필터 (Display Filter): 수집된 데이터에서 원하는 정보 찾기
디스플레이 필터는 이미 캡처가 완료된 데이터 중에서 화면에 보여줄 패킷을 걸러내는 기능입니다. 이는 어망으로 잡은 모든 물고기를 일단 배 위에 쏟아 놓고, 그중에서 특정 색깔이나 종류의 물고기만 골라보는 것과 같습니다. 원본 캡처 파일(.pcapng)은 변경되지 않으며, 단지 분석가의 관점만 바꾸는 것입니다.
디스플레이 필터는 프로토콜의 거의 모든 필드를 조건으로 사용할 수 있어 매우 정교하고 강력한 분석을 가능하게 합니다.
- 적용 시점: 캡처 후 메인 화면 상단의 필터 입력창
- 사용 문법: 와이어샤크 고유의 상세한 필터 문법
목적 | 필터 예시 | 설명 |
---|---|---|
특정 IP 주소 | ip.addr == 192.168.0.10 | 출발지 또는 목적지 IP가 해당될 때 |
출발지/목적지 IP | ip.src == 192.168.0.10 / ip.dst == 192.168.0.10 | 각각 출발지 또는 목적지 IP 필터링 |
특정 포트 | tcp.port == 80 / udp.port == 53 | 특정 TCP 또는 UDP 포트 트래픽 |
프로토콜 | http , dns , tcp , udp , icmp | 해당 프로토콜만 화면에 표시 |
TCP 상태 플래그 | tcp.flags.syn == 1 / tcp.flags.reset == 1 | TCP 3-way-handshake의 시작 패킷(SYN) 또는 연결 종료(RST) 패킷 |
HTTP 요청 메소드/URI | http.request.method == "POST" | HTTP POST 요청만 필터링 |
http.request.uri contains "/login" | URI에 “/login” 문자열이 포함된 HTTP 요청만 필터링 | |
논리 연산 (AND/OR) | ip.src == 192.168.0.10 && tcp.port == 8080 | AND(&& , and ), OR(|| , or )로 조건 조합 가능 |
패킷 내용 검색 | frame contains "password" | 패킷의 Raw 데이터 전체에서 “password” 문자열 검색 (암호화되지 않은 경우) |
핵심 비교: Capture Filter vs. Display Filter
구분 | 캡처 필터 (Capture Filter) | 디스플레이 필터 (Display Filter) |
---|---|---|
시점 | 캡처 시작 전 | 캡처 완료 후 (또는 실시간 캡처 중) |
목표 | 수집할 데이터의 양 자체를 줄이는 것 | 수집된 데이터 내에서 분석할 대상을 좁히는 것 |
영향 | 원본 데이터에 직접적 영향 (필터링된 것만 저장) | 원본 데이터에 영향 없음 (화면에 보여주는 방식만 변경) |
문법 | BPF (host , port , net ) | Wireshark 전용 (ip.addr , tcp.flags , http ) |
유연성 | 낮음 (L2~L4 헤더의 일부 필드만 가능) | 높음 (프로토콜의 거의 모든 필드와 데이터 내용까지 가능) |
성능 | 시스템 부하 및 저장 공간 감소 효과 | 분석의 효율성과 속도 증대 |
전략적 활용법: 언제 무엇을 쓸 것인가?
최고의 분석 효율을 위해서는 두 필터를 목적에 맞게 조합하는 것이 중요합니다.
- 조사 범위가 넓고 불확실할 때:
관대한 캡처 필터 + 강력한 디스플레이 필터
- 상황: “192.168.0.10 서버에서 뭔가 문제가 있는데, 원인이 불분명하다.”
- 전략: 캡처 필터는
host 192.168.0.10
정도로 넓게 설정하여 해당 서버와 관련된 모든 트래픽을 일단 수집합니다. 그 후, 디스플레이 필터를 사용하여tcp.flags.reset == 1
(연결 실패),http.response.code >= 400
(HTTP 에러),dns.qry.name contains "malware"
(의심스러운 DNS 요청) 등 다양한 가설을 검증하며 분석의 범위를 좁혀나갑니다.
- 조사 대상이 명확하고 트래픽이 많을 때:
엄격한 캡처 필터
- 상황: “운영 중인 웹 서버(1.2.3.4)의 443 포트(HTTPS) 트래픽만 분석하면 된다.”
- 전략: 네트워크 트래픽이 매우 많은 경우, 불필요한 데이터를 모두 저장하는 것은 비효율적입니다. 캡처 필터에
host 1.2.3.4 and tcp port 443
이라고 명확히 지정하여 필요한 패킷만 수집합니다. 이렇게 하면 캡처 파일의 크기가 작아지고, 와이어샤크의 반응 속도도 빨라집니다.
캡처 필터는 수집할 데이터의 ‘양’을 제어하는 도구이고, 디스플레이 필터는 분석할 데이터의 ‘질’을 높이는 도구입니다. 이 두 가지 필터의 차이를 이해하고 능숙하게 조합하여 사용하는 것은 방대한 네트워크 트래픽 속에서 문제의 핵심을 꿰뚫어 보는 가장 효과적인 방법입니다.