본문 바로가기
네트워크(Network)/WireShark(와이어샤크)

3. WireShark Tutorial - 디스플레이 필터 및 버튼 생성

by kkmin93 2024. 3. 17.
반응형

이전 Wireshark Tutorial에서는 Wireshark의 기본 설정 및 컬럼 표시를 사용자에 맞게 정의하는 방법을 확인했습니다. 이번 Tutorial에서는 악성 네트워크 트래픽에 대한 PCAP을 검토하는데 유용하도록 디스플레이 필터 표현식을 정의하는 방법에 대해서 확인해 보도록 하겠습니다.

 

목차
Wireshark 디스플레이 필터
필터 버튼 만들기

 

 

Wireshakr 디스플레이 필터

Wireshark의 기본 구성에서 표시 필터는 컬럼 표시 바로 위에 위치한 막대입니다. 이 부분은 pcap의 이더넷 프레임, IP 패킷 또는 TCP 세그먼트 보기를 필터링하는 표현식을 입력하는 곳입니다. 디스플레이 필터 표시줄에 입력하면 Wireshark는 아래 그림 1과 같이 입력된 텍스트를 기반으로 기본  제안 목록을 제공합니다. 또한 표시 필터 막대가 빨간색으로 유지되면 해당 표현식을 잘못되었다는 것을 알려줍니다.

그림 1. Wireshark의 디스플레이 필터는 사용자가 입력한 내용을 기반으로 검색 목록을 제공.

 

 

반면 디스플레이 필터에 http.request를 입력 하고 Enter를 누르게 되면 필터 막대가 녹색으로 아래 그림 1과 같이 표현식이 승인되었으며 제대로 된 검색결과를 보여주는 것을 확인할 수 있습니다.

그림 2. Wireshark의 디스플레이 필터에 적절한 표현식의 결과 화면.

 

 

또한 필터 표시줄이 노란색으로 변하면 해당 표현식은 허용되지만 의도한 대로 작동하지 않을 수 있음을 뜻합니다.

Wireshark의 디스플레이 필터는 부울 표현식을 사용하므로 값을 지정하고 이를 함께 연결할 수 있습니다. 아래 그림 3과 같이 Wireshark 필터 표현식에 사용되는 일반적인 부울 연산자를 확인할 수 있습니다.

그림 3. Wireshark 디스플레이 필터 표현식에 사용되는 부울 함수.

 

 

Wireshark 디스플레이 필터 표현식의 임의 예는 다음과 같이 사용할 수 있습니다.

  • ip.addr eq 10.8.15.1 and dns.qry.name.len > 36
  • http.request && ip.addr == 10.8.15.101
  • http.request || http.response

 

 

필터 버튼 생성

복잡한 필터 표현식은 필요할 때마다 Wireshark의 필터 표시줄에 입력하는 것이 비효율적일 수 있습니다. 때문에 이러한 입력한 표현식을 필터 버튼으로 저장하여 사용할 수 있는 버튼이 있습니다.

Wireshark 필터 표시줄 오른쪽에는 필터 버튼을 추가할 수 있는 더하기 기호가 있으며, Wireshark 디스플레이 필터에 표현식을 작성하여 검색 후 그림 4에 표시된 대로 더하기 기호를 클릭합니다.

그림 4. 더하기 기호를 클릭하여 필터 버튼을 추가.

 

 

더하기 기호를 클릭하면 위의 그림 4에서 설명한 것처럼 필터 표시줄 바로 아래에 임시 패널이 생성됩니다. 이 패널에는 레이블, 필터 및 설명의 세 가지 필드가 있습니다. 필터 필드에는 필터 표시줄에 이미 구현된 표현식이 포함되어야 합니다. 이것이 기본 웹 필터이므로 아래 그림 5와 같이 레이블 필드에 base(임의의 값)를 입력하고 확인 버튼을 클릭합니다.

그림 5. 기본 웹 필터 버튼 생성.

 

 

이렇게 하면 아래 그림 6과 같이 "base"이라는 라벨이 붙은 Wireshark 필터 표시줄 오른쪽에 버튼이 생성됩니다. Wireshark 필터 버튼에는 테두리가 없고 라벨처럼 보이지만 버튼 기능을 하게되며 앞으로는 아래의 표현식을 필요로 할 때마다 마우스 왼쪽 버튼을 클릭하기만 하면 됩니다.

  • (http.request or tls.handshake.type eq 1) and !(ssdp)
그림 6. 사용자가 정의한 필터 버튼.

 

 

추가적으로 아래 그림7과 같이 표현식의 버튼을 만들어두면 Wireshark에서 트래픽을 분석할 때 유용하게 사용할 수 있습니다.

그림 7. 추가적인 필터 표현식.

 

✔ (http.request or tls.handshake.type eq 1 or (tcp.flags.syn eq 1 and tcp.flags.ack eq 0)) and !(ssdp)

  • 위에서 생성한 base 필터와 동일한 정보를 표시하지만 tcp.flags.syn eq 1는 ACK 플래그가 아닌 SYN 플래그가 있는 TCP 세그먼트를 포함하게 해줍니다.
  • tcp.flags.ack eq 0는 TCP 스트림의 시작을 나타내는 TCP SYN 세그먼트를 표시합니다.
  • 때문에 위 필터를 사용하게 되면 웹이 아닌 트래픽을 찾을 수 있습니다.

  (http.request or tls.handshake.type eq 1 or (tcp.flags.syn eq 1 and tcp.flags.ack eq 0) or dns) and !(ssdp)

  • 두번재 필터와 동일한 데이터를 표시하지만 이 표현식은 PCAP의 DNS 쿼리를 추가적으로 포함합니다.
  • 때문에 위 필터를 사용하게 되면 웹이 아닌 트래픽과 관련된 도메인 이름을 확인하는데 유용합니다.

 

기본 웹 필터를 사용하면 트래픽에서 눈에 띄는 것이 없을 수도 있습니다. 하지만 추가적으로 생성한 필드를 사용하게 되면 트래픽에 대해 확인되지 않았던 프레임들에 대해 명확하게 분석할 수 있습니다. 예로 아래 그림 8과 같이 87.121.221[.]212로 확인되는  adaisreal.ddns[.]net 에 대한 DNS 쿼리를 찾은 다음 TCP 포트 7888을 통해 SYN 플래그가 있는 해당 IP 주소에 대한 TCP 세그먼트를 찾을 수 있습니다.

그림 8. PCAP에서 발견된 C2 통신 트래픽.

 

이처럼 웹 트래픽이 아닌 멀웨어 유형의 트래픽을 검색할 수 있습니다.

 

 

반응형