이 단계에서는 디스플레이 필터를 사용하여 Wireshark 에서 DNS 쿼리를 필터링하는 방법을 배우게 됩니다. DNS (Domain Name System, 도메인 네임 시스템) 는 인터넷의 전화번호부와 같아서, 사람이 읽을 수 있는 도메인 이름을 기계가 읽을 수 있는 IP 주소로 변환합니다. 네트워크 문제를 해결할 때 DNS 트래픽을 검사하면 중요한 단서를 얻을 수 있습니다.
dns.qry.name 필드에 집중할 것입니다. 이 필드는 DNS 쿼리에서 요청되는 도메인 이름을 구체적으로 보여줍니다. 이는 이전 단계에서 생성한 캡처에서 특정 웹사이트 또는 서비스와 관련된 트래픽을 검사해야 할 때 특히 유용합니다.
- 먼저, 이전에 저장한 캡처 파일을 Wireshark 에서 엽니다. 끝에 있는
&는 명령을 백그라운드에서 실행하므로 터미널을 계속 사용할 수 있습니다.
wireshark ~/project/dns_capture.pcapng &
- Wireshark 의 디스플레이 필터 바 (툴바 바로 아래의 빈 필드) 에 다음 필터를 입력하여 "example.com"에 대한 DNS 쿼리만 표시합니다.
dns.qry.name == "example.com"
이 엄격한 일치 필터 (==) 는 쿼리된 도메인이 "example.com"과 정확히 일치하는 패킷만 표시합니다.
- 요청되는 도메인에 관계없이 모든 DNS 쿼리를 보려면 필드 이름 자체를 사용하십시오.
dns.qry.name
이렇게 하면 DNS 쿼리 이름을 포함하는 모든 패킷이 표시되어 네트워크에서 어떤 도메인이 조회되는지 이해하는 데 도움이 됩니다.
- DNS 쿼리 (요청) 와 응답을 모두 표시하는 보다 완전한 보기를 보려면 DNS 응답 플래그를 확인하는 다음 필터를 사용하십시오.
dns.flags.response == 0 || dns.flags.response == 1
여기서 dns.flags.response == 0은 쿼리 (요청) 를 표시하고, dns.flags.response == 1은 응답을 표시합니다.
- 때로는 특정 조직 또는 서비스와 관련된 모든 쿼리를 찾고 싶을 수 있습니다. "contains" 연산자를 사용하여 부분 도메인 일치를 필터링해 보십시오.
dns.qry.name contains "example"
이렇게 하면 "example.com", "test.example.org" 또는 "example.net"과 같이 "example"을 포함하는 모든 도메인이 일치합니다.
이해해야 할 주요 사항:
-Y는 Wireshark 의 디스플레이 필터 옵션입니다 (필터 바에 입력하는 것과 동일).
dns.qry.name은 쿼리되는 도메인 이름을 포함하는 DNS 패킷의 특정 필드입니다.
- 디스플레이 필터는 관련 없는 패킷을 숨겨 특정 트래픽 패턴에 집중하는 데 도움이 됩니다.
- 필터는 다양한 비교 연산자를 사용할 수 있습니다.
- 정확히 일치하는 경우
==
- 제외하는 경우
!=
- 부분 일치하는 경우
contains
- DNS 프로토콜에는 쿼리 (
response == 0) 와 응답 (response == 1) 을 구분하는 플래그가 포함되어 있습니다.