OpenSource

wireshark 고급기능

아르비스 2017. 2. 9. 09:06

http://m.blog.naver.com/shj1126zzang/220012807672




이번 포스팅에서는 와이어샤크 분석과 그래프 기능을 살펴보자.

 

1. 네트워크 종단점과 대화

​종단점(endpoint)은 네트워크에서 데이터를 보내거나 받는 장치다.

 

 

위 그림과 같이 두 사용자가 있을 때 2계층에서 통신은 두 개의 물리적 NIC들과 해당 MAC 주소들 사이에서 일어난다.

IP간의 대화는 'SYN', 'SYN/ACK', 'ACK'와 같은 대화를 한다.

 

 

1.1 종단점 보기

​트래픽을 분석할 때 네트워크상의 특정 종단점에서 발생한 문제를 정확히 파악할 필요도 생길 것이다.

Statistics -> Endpoints 를 클릭하면 종단점 간의 데이터를 전송하고 전송받은 바이트와 패킷의 수와 주소 등의 각 종단점을 위한 통계치를 보여준다.

 

위의 탭은 지원 가능한 모든 프로토콜과 종단점을 보여준다.

Name Resolution은 이름 변환을 사용하려면 클릭하면 된다.

 

특정 종단점에 마우스 오른쪽 버튼을 누르면 다양한 기능이 있다.

 

1.2 네트워크 대화보기

 

Statistics -> Conversations에 들어간다.

 

 

아래와 같은 창이 뜨는데 Address A와 Address B 같이 대화 목록에 포함된 종단점들의 주소와 각 장치 사이에 전달된 바이트의 패킷들을 보여준다.

 

이 또한 마우스 오른쪽 버튼으로 필터기능을 이용할 수 있다.

 

1.3 종단점과 대화 창을 이용한 문제 해결

 

위에서 봤던 종단점과 대화 창은 네트워크의 문제를 해결하는 데 아주 중요하다.

네트워크에서 상당한 양의 트래픽을 전송하는 발신지의 위치를 찾거나 가장 많이 통신을 하는 서버를 찾는 데 중요하게 사용한다.

 

EndPoints창에서 패킷 갯수 순으로 나열해보자.

첫번 째는 로컬 호스트 임으로 넘어가고

두번째 IP 주소에서 많은 데이터를 보내는 것을 볼 수 있다.

지금 소리바다를 켜놓고 이선희 노래를 듣고 있기 때문이다.

 

 

마찬가지로 Conversations창을 보자.

역시 121.189.21.211과의 대화에서 가장 많은 패킷을 주고 받는 것을 볼 수 있다.

 

 

2. 프로토콜 계층 통계

 

​엄청나게 큰 캡처 파일을 다룰 때 프로토콜의 분포를 결정할 필요가 있다.

TCP, IP, DHCP와 같은 프로토콜이 어느 정도 비율을 차지하는지 통계가 필요할 경우가 있다.

 

Statistic -> Protocol Hierarchy를 선택해서 프로토콜 계층 통계 창을 연다.

 

아래와 같은 창을 볼 수 있다.

이를 통해 정확한 숫자보다는 어떤 프로토콜이 많이 네트워크를 차지하는지 볼 수 있다.

 

3. 이름 변환

 

​네트워크에서 데이터는 00:16:CE:6E:8B:24처럼 어려운 주소 체계로 전송되는데 이름 변환은 하나의 식별 주소 체계를 다른 것으로 변환하는 데 사용되는 프로토콜이다.

 

​3.1 이름 변환 사

Capture -> Options 을 클릭해서 Capture Options 창을 연다.

 

빨간색 부분을 보자.

 

- Resolve MAC addresses

ARP 프로토콜을 사용하여 2계층 주소를 3계층 주소를 바꿔준다.

이 것이 실패되면 ethers 파일을 사용하여 변환을 시도한다.

마지막으로 MAC 주소의 앞쪽 세 바이트를 IEEE 지정 하드웨어 제조사의 이름으로 변환시켜준다.

Netgear_01:02:03 같이 말이다.

 

- Resolve network-layer names

네트워크 이름 변환은 IP 주소 같은 3계층 주소를 읽기 쉬운 DNS 이름으로 변환 시켜 준다.

 

- Resolve transport-layer name

전송(transport) 이름 변환은 포트 번호를 해당하는 이름으로 변환해 보여준다.

예를 들면 포트 80번을 http로 변환하는 것처럼...

 

 

​3.2 이름 변환의 잠재적인 결점

1) 일반적으로 쿼리를 보냈어도 네임 서버에서 이름을 알 수 없기 때문에 이름 변환은 실패할 수 있다.

2) 이름 변환은 파일 안의 이름 변환에 대한 정보가 저장되지 않기 때문에 캡쳐된 파일을 열 때마다 이름 변환 작업이 이뤄진다. 즉 이름을 변환하는 서버에 문제가 있을 때는 이름 변환이 실패한다.

3) DNS에 대한 의존도는 추가적인 패킷이 만들어지는 원인이 된다. 모든 DNS 기반 주소들을 해결하기 위해 발생하는 트래픽은 캡처 파일을 모호하게 만든다. 때문에 패킷 분석시에 자신의 트래픽을 보지 않는 것이 일반적이다.

4) 이름 변환은 추가적인 부하를 발생시킨다.

 

​4. 프로토콜 정밀 분석

프로토콜 정밀 분석기는 와이어샤크가 프로토콜을 좀 더 정밀하게 분석할 수 있게 한다.

 

4.1 정밀 분석기 변경

 

​정밀 분석기를 사용한다 하지만 네트워크상에서 디폴트 포트가 아닌 포트나 표준화되지 않은 설정을 사용하는 프로토콜이 많기 때문에 항상 정확하고 제대로 된 결과를 보여주지는 않는다.

패킷 하나로 예를 들어보자.

SSL은 호스트 사이에서 안전하게 암호화된 통신을 위해 사용되는 보안 소켓 계층 프로토콜이다. 일반적으로 SSL 트래픽을 봐도 암호화되어 정보를 얻을 수 없는데 아래 패킷은 일반 텍스트를 볼 수 있다.

 

FileZilla Server 임을 봐서 FTP와 관련됨을 알 수 있고

SSL 프로토콜이라기 보다는 FTP 프로토콜임을 예상할 수 있다.

그런데 포트를 보면 443임을 볼 수 있고

보통 443은 HTTPS에 사용되는 포트이다

자 그럼 정밀 분석을 해보자

 

1) SSL 패킷에 마우스 오른쪽 버튼을 누르고 Decode As를 클릭한다.


2) 433 Port를 선택하고 오른쪽 리스트에서 FTP를 선택한다.


3) 4번 패킷이 FTP로 변경되었고 상세한 패킷 정보를 볼 수 있다.

 

SSL로 되어있던 패킷이 FTP로 바뀌어 정보들을 볼 수 있다.


 

Show Current 버튼을 누르면 현재 활성화 되어 있는 디코드 목록이 뜨며 삭제도 가능하다.

 

 

5. Following TCP 스트림

 

와이어샤크의 가장 유용한 분석 기능 중 하나는 TCP 스트림을 쉽게 읽을 수 있는 형태로 재조립하는 기능이다.

 

패킷에서 마우스 오른쪽 버튼을 누르면 Follow TCP Stream이 있다.

 

색깔로 구분할 수 있는데

빨간색은 발신지에서 목적지로

파란색은 목적지에서 발신지로의 트래픽을 확인할 수 있다.

아래에서 빨간 부분을 보면 클라이언트가 웹 서버에 대한 연결을 시작하는 것을 볼 수 있다.


이 창에서는 다양한 형태로 바꿀 수 있다.

ASCII, EBCDIC, Hex, C배열 등..

 

6. 패킷 길이


​한 개의 패킷이나 그룹 패킷의 크기는 상황에 대해 많은 것을 알려준다. 정상적인 상황일 때 이더넷 네트워크에서 프레임의 최대 크기는 1,518바이트이다.

이 숫자에서 이더넷, IP와 TCP 헤더를 빼야하는 경우 7계층 프로토콜이나 헤더나 데이터의 전송을 위해 사용될 수 있는 1,460 바이트를 남겨둔다.

 

이 지식을 알고 패킷으로 예를 들어보자.

 

Statistics -> Packet Lengths를 클릭한다.

 

 

창이 뜨면 Create_Stat을 클릭한다. 패킷의 길이에 따라 분류가 된다.


이를 통해 알 수 있는 사실은 1280-2559는 데이터의 전송을 나타낸 것을 임을 추측할 수 있다. 40-79 패킷도 많은데 이는 프로토콜 제어 순서 번호를 나타냄을 추측할 수 있다.

즉 HTTP나 FTP와 같은 데이터가 전송되는 네트워크 통신이라고 추측할 수 있다.

 

특히 40-79는 데이터를 전달하지 않는 TCP 제어 패킷인데

이더넷 헤더 14, IP헤더 최소 20바이트, TCP패킷 20바이트이다.

적어도 54바이트는 차지한다는 뜻이다.

 

 

​7. 그래프

 

 

​7.1 IO 그래프

 

​와이어샤크의 IO 그래프 창은 네트워크에서 데이터의 처리량을 그래프로 보여준다.

 

Statistics에 IO Graph를 클릭한다.

 

 

아래와 같이 창이 뜨는데 아래 그림은 두 개의 패킷을 비교한 그래프이다.

하나는 빠른 다운로드, 하나는 느린 다운로드를 보여준다.

확실히 비교가 됨을 볼 수 있다. 느린쪽이 불안정한 그래프를 나타내고 있다.



마찬가지로 Filter와 색깔을 적용할 수도 있다.

 

 

7.2 왕복 시간 그래프

 

​와이어샤크의 또 다른 그래프 기능은 주어진 캡처 파일에 대한 왕복 시간(Round-Trip Time)의 표시를 볼 수 있는 능력이다. 왕복 시간(RTT)는 패킷이 수신됐다는 승인에 대해 걸리는 시간이다.

이 RTT의 분석은 통신에서 느린 지점이나 병목 지점을 찾고 대기 시간을 결정하기 위해 종종 수행된다.

 

Statistics -> TCP Stream Graph -> Round Trip Time Graph를 클릭한다.

 

 

그래프를 확인할 수 있다.


 

7.3 흐름 그래프

 

흐름 그래프 기능은 연결을 시각화하고 시간에 따른 데이터 흐름을 보여주는데 매우 유용하다.

 

Statistics -> Flow Graph를 클릭한다.



몇 가지 옵션을 하고 OK를 누르면 다음과 같이 창이 뜬다.

 

 

 

​8. 전문가 정보

 

​와이어샤크에서 각 프로토콜에 대한 정밀 분석기는 해당 프로토콜을 사용해 패킷내의 특정 상태를 사용자에게 경고하는 데 사용될 수 있는 expert info를 정의한다.

 

4가지로 구분되는데 다음과 같다.

 

​1) Chat : 통신에 대한 기본 정보

2) Note : 정상 통신의 일부가 되는 비정상 패킷

3) Warning : 대부분이 정상 통신의 일부가 아닌 비정상 패킷

4) Error : 패킷이나 정밀 분석기 해석에서의 오류

 

​Analyze -> Expert Info를 클릭한다.


아래와 같은 창이 뜨는데 Error는 없고 Warnings 2개, Note 19개, Chat 3개가 있는 것을 볼 수 있다.

괄호 밖에 숫자는 고유 메시지 양, 안에는 해당 카테고리에서 발생하는 항목의 합계이다.

 

모든 메시지의 내용을 보면 TCP와 관련된 것을 알 수 있다. 14개의 Expert info 메시지는 TCP에 대해서 구성돼 있다.

 

1) Chat 메시지

- Window Update : 수신자에 의해 TCP 수신 창의 크기가 변경됐다는 것을 송신자에게 알림.

 

​2) Note 메시지

​TCP Retransmission : 패킷 손실 결과로, 중복 ACK를 수신하거나 패킷의 재전송 타이머가 만료될 때 발생.

- Duplicate ACK : 호스트가 예상되는 다음 순서 번호를 받지 못할 때 마지막으로 수신한 데이터의 중복 ACK를 만든다.

- Zero Window Probe : 제로 윈도우 패킷이 전송된 후 TCP 수신 창의 상태를 모니터링하기 위해 사용한다.

- Keep Alive ACK : keep-alive 패킷에 대한 응답으로 보낸다.

- Zero Window Probe ACK : zero-window-probe 패킷에 대한 응답으로 보낸다.

- Window is Full : 수신자의 TCP 수신 창이 가득 찼음을 송신하는 호스트에게 알리기 위해 사용.

 

​3) Warning 메시지

​- ​Previous Segment Lost : 패킷 손실을 표시. 데이터 스트림에서 예상되는 순서 번호가 생략됐을 때 발생

- ACKed Lost Packet : 패킷을 볼 수 있지만 승인된 패킷이 아닐 때 발생

- Keep Alive : 연결 keep-alive 패킷이보일 때 발생.

- Zero Window : TCP 수신 창의 크기에 도달하고 제로 윈도우가 전송을 마칠 경우 송신자에게 데이터 전송을 중지하도록 요청.

- Out-of-Order : 패킷이 잘못된 순서 번호를 수신할 경우 순서 번호를 탐지하기 위해 사용.

- Fast Retransmission : 중복 ACK가 발생하면 20밀리초 이내에 재전송.

 

​4) Error 메시지

​- ​No Error Messages