2010년 1월 11일 월요일

와이어샤크의 프로토콜 계층별 상태 보기

패킷 분석을 할 때 무작정 패킷 정보 보기 부터가 아니라 기본 정보를 얻고 시작하자고 언급하였다. Summary 정보이외에 프로토콜별 상태를 파악하는 것도 분석의 시작에 큰 도움이 된다.

와이어샤크의 메뉴에서 Statistics -> Protocol Hierarchy 를 클릭해 보자. 단축키로는 Alt+s 후 p 를 누르면 된다. 각 프로토콜 계층별로 한눈에 보기 쉽게 나열되어 있어, 프로토콜중 어떤 것이 가장 많은 분포를 차지하는지 알 수 있다. 만약 출력필터를 반영한 상태라면 그 출력필터에 맞는 상태 정보가 나오며, 아래 그림의 예제에서는 Display filter:none 로 아무것도 선택되어 있지 않아, 전체 패킷을 대상으로 한 정보이다.


여기 예에서는 IP 프로토콜이 대부분이고 그 중에서도 TCP 가 크게 차지하고 있으며, ICMP 도 높게 나타난 편이다. 해당 프로토콜 위에서 오른쪽 클릭을 해 보면 바로 프로토콜로 필터를 걸 수 있도록 메뉴가 나타난다. 여기서 %Packets 은 이 프로토콜이 얼마나 차지하고 있는지 퍼센트로 보여주는데, 나타나는 각 퍼센트를 더해보면 딱 맞아 떨어지지는 않다. 이것은 해당 프로토콜이 하나라도 포함되어 있으면 그것을 일괄적으로 다 계산한 것이기 때문이므로 100 을 기준으로 딱 맞지가 않는다. Packets 는 개수 그리고 Bytes 는 전송된 트래픽 양을 뜻한다. 그리고 End Packets 가 있는데, 이것은 상위 계층의 프로토콜을 마지막으로 계산한 값이다. 필자도 이 부분에서 혼돈스러웠는데, 이유는 일부 서적에서는 End Packets 을 패킷의 마지막 값으로 표현하기도 하였다. 즉, TCP RST 패킷이 발생한 것과 같이 패킷이 전송 후 마지막이라는 의미로 사용하였던 것이다.

쉽게 이해가 안된다면 그림에서 HTTP 프로토콜을 기준으로 설명해 보겠다.  HTTP 를 보면 375 개의 패킷으로 3.37%를 차지하고 있다. 그 중에 Line-based text data, Compuserve GIF, JPEG File Interchange Format, Media Type 으로 각각 또 나뉘어 있다. 각 값이 21, 104,54, 3을 더한다고 HTTP 의 개수인 375 가 되지는 않는다. 이유는 앞서 언급한 것과 같이 프로토콜에 해당하는 모든 개수를 산출하기 때문이다. 프로토콜 안에는 한개의 프로토콜만 있는 것이 아니라, 그 안에 여러개로 구성될 수 있는 것이다.

HTTP 패킷 건수는 375 건으로 나오지만, 실제는 403 개였다. 하지만 거기에는 SSDP 프로토콜 안에 HTTP 프로토콜이 들어가 있는 것으로 나와 실제 개수는 375 개 였던 것이다. 이걸 출력필터 문법으로 하면 아래와 같다.

http and !(udp.port == 1900)  => SSDP 를 제외한 HTTP

여기에서 HTTP 의 End Packets 을 보면 193 개다. 아니, HTTP 전체는 375 개가 나왔는데 193 개는 도대체 무슨말이던가? 이것은 각 프로토콜의 상위 계층 까지만을 표시한 것이다.

다음 그림을 보면 HTTP 프로토콜 아래에 Line-based text data 가 있다. 그렇다 HTTP End Packets 은 순수하게 HTTP 프로토콜까지 나열된 것을 뜻 하며, Line-based text data 가 포함된 것은 21 건이라는 의미가 된다.

즉, 193 건을 뽑아본다면 출력 필터는 아래와 같은 형식이 된다.

http and !(udp.port == 1900) and !(data-text-lines) and !image-gif and !image-jfif and !media

이제 프로토콜 계층별 상태를 완벽히 이해할 수 있겠죠.

댓글 없음:

댓글 쓰기