Wireshark는 네트워크 트래픽을 분석하고 문제를 해결하는 데 필수적인 도구입니다. 최근에는 암호화된 정보가 많아 네트워크 상단의 복호화 장비를 통해 주고 받는 복호화 존(Decrypted Traffic Zone, DTZ)에서는 암호화된 트래픽이 복호화되어 이 구간에서 사용해야 실제 데이터 분석이 용이 할 수 있습니다. Wireshark의 강력한 기능 중 하나는 패킷 캡처 필터링입니다. 캡처 필터링을 사용하면 관심 있는 트래픽만 캡처하여 분석 시간을 단축하고 불필요한 데이터로 인해 발생하는 혼란을 줄일 수 있습니다. 이 글에서는 Wireshark 패킷 캡처 필터링의 고급 표현식을 자세히 살펴보고, 다양한 예시와 함께 실제 사용법을 익혀 보면 좋습니다.
1. 캡처 필터링 vs. 디스플레이 필터링
Wireshark에는 캡처 필터링과 디스플레이 필터링이라는 두 가지 주요 필터링 유형이 있습니다.
- 캡처 필터링: 네트워크 인터페이스에서 패킷을 캡처하기 전에 적용됩니다. 캡처 필터를 사용하면 필요한 트래픽만 저장하므로 디스크 공간을 절약하고 분석 속도를 높일 수 있습니다. 캡처 필터는 실시간으로 데이터를 걸러내기 때문에 CPU 사용량을 줄이는 데에도 효과적입니다.
- 디스플레이 필터링: 이미 캡처된 패킷 중에서 특정 조건을 만족하는 패킷만 화면에 표시하는 데 사용됩니다. 디스플레이 필터는 저장된 데이터를 기반으로 필터링하므로 캡처된 이후에도 필터 조건을 변경하고 다시 적용할 수 있습니다.
이 글에서는 캡처 필터링에 중점을 두고 설명합니다.
2. 캡처 필터링 기본 문법
Wireshark 캡처 필터는 libpcap 문법을 따릅니다. 기본적인 문법 요소는 다음과 같습니다.
- 프로토콜: tcp, udp, icmp, arp, http, ssl 등과 같은 프로토콜 이름을 지정합니다.
- 방향: src, dst 키워드를 사용하여 source(출발지) 또는 destination(목적지)를 지정합니다.
- 호스트: host 키워드를 사용하여 특정 호스트의 IP 주소 또는 호스트 이름을 지정합니다.
- 네트워크: net 키워드를 사용하여 특정 네트워크 대역을 지정합니다.
- 포트: port 키워드를 사용하여 특정 포트 번호를 지정합니다. portrange 키워드를 사용하여 포트 범위도 지정할 수 있습니다.
- 연산자: and, or, not 등의 논리 연산자를 사용하여 여러 조건을 결합할 수 있습니다.
- 괄호: 괄호를 사용하여 연산자 우선순위를 명확하게 지정할 수 있습니다.
3. 캡처 필터링 고급 표현식
기본적인 문법 외에도 Wireshark는 고급 표현식을 통해 더욱 강력하고 유연한 필터링 기능을 제공합니다.
- 필드 비교: 패킷 헤더의 특정 필드 값을 비교하여 필터링할 수 있습니다. 예를 들어, TCP 헤더의 tcp.flags.syn 필드가 1인 패킷만 캡처하는 식을 작성할 수 있습니다.
- 오프셋 및 길이 지정: 패킷 데이터의 특정 오프셋에서 특정 길이만큼 데이터를 추출하여 필터링할 수 있습니다.
- 정규 표현식: 정규 표현식을 사용하여 패킷 데이터 내에서 특정 패턴을 검색하고 필터링할 수 있습니다.
- 슬라이싱: 패킷 데이터의 특정 부분을 슬라이싱하여 필터링할 수 있습니다.
4. 다양한 예시를 통한 캡처 필터링 활용
다음은 Wireshark 캡처 필터링의 고급 표현식을 활용한 다양한 예시입니다.
예시 1: 특정 IP 주소와 포트 사이의 TCP 트래픽 캡처:
tcp and host 192.168.1.100 and port 80
이 필터는 192.168.1.100 IP 주소를 가진 호스트와 80 포트 간의 모든 TCP 트래픽을 캡처합니다.
예시 2: 특정 네트워크 대역의 모든 UDP 트래픽 캡처:
udp and net 10.0.0.0/24
이 필터는 10.0.0.0/24 네트워크 대역의 모든 UDP 트래픽을 캡처합니다.
예시 3: HTTP GET 요청 캡처:
tcp port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420)
이 필터는 80 포트의 TCP 트래픽 중에서 HTTP GET 요청을 캡처합니다. tcp[((tcp[12:1] & 0xf0) >> 2):4]는 TCP 헤더의 Data Offset 필드를 사용하여 TCP 페이로드의 시작 위치를 계산하고, 그 위치에서 4바이트를 읽어와 0x47455420 (ASCII 코드에서 "GET ")와 비교합니다.
예시 4: 특정 문자열을 포함하는 패킷 캡처 (정규 표현식 사용):
tcp[20:] contains "user"
이 필터는 TCP 헤더 이후의 데이터에서 "user"라는 문자열을 포함하는 모든 패킷을 캡처합니다. tcp[20:]은 TCP 헤더의 길이(일반적으로 20바이트) 이후의 모든 데이터를 의미합니다.
예시 5: SYN 플래그가 설정된 TCP 패킷 캡처:
tcp[13] & 2 != 0
이 필터는 TCP 헤더의 14번째 바이트(SYN 플래그 위치)에서 2 (SYN 플래그 값)와 AND 연산을 수행하여 SYN 플래그가 설정된 패킷을 캡처합니다.
예시 6: 특정 길이보다 큰 패킷 캡처:
greater 1000
이 필터는 패킷 길이가 1000바이트보다 큰 모든 패킷을 캡처합니다.
예시 7: HTTP POST 요청에서 특정 Content-Type 헤더를 가진 패킷 캡처:
tcp port 80 and tcp contains "Content-Type: application/json"
이 필터는 80 포트의 TCP 트래픽 중에서 "Content-Type: application/json" 헤더를 포함하는 패킷을 캡처합니다. 이는 JSON 데이터를 전송하는 HTTP POST 요청을 필터링하는 데 유용합니다.
예시 8: 특정 MAC 주소를 가진 이더넷 프레임 캡처:
ether host aa:bb:cc:dd:ee:ff
이 필터는 MAC 주소가 aa:bb:cc:dd:ee:ff인 이더넷 프레임을 캡처합니다. ether host는 source 또는 destination MAC 주소를 모두 포함합니다. 특정 방향을 지정하려면 ether src host 또는 ether dst host를 사용할 수 있습니다.
예시 9: VLAN 태그가 있는 트래픽 캡처:
vlan and host 192.168.1.1
이 필터는 VLAN 태그가 있는 트래픽 중에서 IP 주소가 192.168.1.1인 호스트의 트래픽을 캡처합니다.
예시 10: ICMP Echo Request (Ping) 캡처:
icmp[0] = 8
이 필터는 ICMP 패킷의 첫 번째 바이트(Type 필드)가 8 (Echo Request)인 패킷을 캡처합니다.
5. 캡처 필터링 시 주의사항
- 성능: 복잡한 캡처 필터는 CPU 사용량을 증가시킬 수 있습니다. 필요 이상으로 광범위한 필터를 사용하지 않도록 주의하십시오.
- 문법 오류: 캡처 필터 문법 오류는 캡처가 제대로 작동하지 않도록 만들 수 있습니다. Wireshark는 문법 오류를 감지하고 경고를 표시하지만, 주의 깊게 확인하는 것이 중요합니다.
- 보안: 캡처 필터는 민감한 정보를 포함할 수 있습니다. 필터를 안전하게 보관하고 공유 시 주의하십시오.
- 필터 검증: 캡처 필터가 의도한 대로 작동하는지 확인하기 위해 항상 샘플 트래픽을 캡처하고 분석하십시오.
6. 캡처 필터링 문제 해결
cf. 캡처가 되지 않는 경우
- 필터 문법이 올바른지 확인하십시오.
- 네트워크 인터페이스가 올바르게 선택되었는지 확인하십시오.
- 필터가 너무 엄격하지 않은지 확인하십시오. 라이브 필터로 데이터 유입을 먼저 보면서 필터를 완화하여 캡처되는 트래픽이 있는지 확인하고, 점진적으로 필터를 강화하십시오.
- 필터가 예상대로 작동하지 않는 경우:
- 필터 표현식을 다시 확인하고, 의도한 대로 작동하는지 확인하십시오.
- 샘플 트래픽을 캡처하여 필터가 예상대로 작동하는지 확인하십시오.
- Wireshark 문서를 참조하거나 온라인 Wireshark 커뮤니티에 질문하십시오.
7. 정리하면
Wireshark 캡처 필터링은 네트워크 트래픽 분석 효율성을 극대화하는 핵심 기능입니다. 이 글에서 소개된 고급 표현식과 다양한 예시를 통해 Wireshark 캡처 필터링을 통해 네트워크 문제 해결 능력을 향상시킬 수 있을 것입니다. 다양한 시나리오에 적용해 봄으로써 Wireshark 전문가로 거듭나시기를 바랍니다.
'IT 관련 > 기초개념' 카테고리의 다른 글
UEBA와 EDR에 관해서 (1) | 2025.04.26 |
---|---|
안티바이러스의 한계, 비정상 행위 감시가 필수! (0) | 2025.04.25 |
BitLocker와 VeraCrypt 암호화 솔루션 비교 분석 (0) | 2025.04.21 |
AES, RSA 암호화 알고리즘 구분 및 활용 가이드 (2) | 2025.04.20 |
북한이 사용한다는 스테가노그래피란? (1) | 2025.04.18 |