본문 바로가기

OSI 7계층/[기타2] 명령어

wireshark 완전정복하기[PART.1]

아직도 여전히 추운 겨울이네요! 

19년의 1월, 다들 따뜻하게 마무리하시길 바래요!!



오늘은! 

tcpdump 와 같이 사용하면 좋은 wireshark 에 대해서 살펴볼까 합니다 ;-D

시작해볼까요!?



1. wireshark 란 무엇일까? 




Wireshark is a free and open-source packet analyzer. It is used for network troubleshooting, analysis, software and communications protocol development, and education.

                                                                                                                          - Wikipedia

와이어샤크는 무료 오픈 툴(tool)로서 네트워크 상의 패킷을 분석해서 보여주는 도구입니다.


*잠깐 지식*

 처음 배포되었을 때의 툴의 이름은 Ethereal(이더리얼)이었으나 

 회선 위에서 상어가 패킷을 잡아먹는 것과 유사하다고 하여 프로그램의 이름을  wireshark(와이어샤크)로 개명


유닉스와 윈도우에서 둘 다 사용이 가능하며 실시간으로 패킷 확인이 가능하여 유용합니다. 

추가로 패킷을 캡쳐하기 위해 pcap 네트워크 라이브러리를 사용합니다. 

엔지니어들이 네트워크적 문제를 해결하는데 많이 사용하는 도구랍니다. :-D


다운로드 경로는 다음과 같습니다. ( 컴퓨터 OS에 맞게 다운하셔서 설치하시면 됩니다! )

 https://www.wireshark.org/


2. wireshark 사용법



와이어샤크 인터페이스에 대해서 살펴보겠습니다. 


인터페이스는 총 4부분으로 구성되며 다음과 같습니다. 


1번은 메뉴들을 나타내며 [ File | Edit | View | Go | Capture | Analyze | Statistics | Help ] 총 8개의 메뉴로 구성되어 있습니다. 

- [File]       : 캡쳐 데이터를 열거나 저장

- [Edit]       : 패킷을 찾거나 표시합니다. 프로그램의 속성 설정 (예를들어, ssl 패킷을 보기위한 개인키 등록 등)

- [View]      : wireshark 플랫폼의 보이는 모양 설정

- [Go]        : 캡쳐된 데이터를 특정 위치로 이동

- [Capture]  : 캡쳐 필터 옵션을 설정하고 캡쳐 시작

- [Analyze]  : 분석 옵션 설정

- [Statistics] : wireshark 통계 데이터 확인

- [Help]       : 도움말 보기

  

2번~4번 항목들을 합하여 출력창이라고 하며 실시간 혹은 tcpdump로 저장한 패킷의 송수신을 볼 수 있습니다. 


2번은 출발지와 목적지를 기준으로 오고가는 패킷들을 시간순서대로 리스트 형식으로 나열해 놓은 것을 확인할 수 있습니다.

3번은 2번 출력창에서 선택한 하나의 단일 패킷에 대하여 세부내용을 정리해서 보여주는 상세 정보창입니다. 

   이 창을 통하여 각 계층에서 어떤 프로토콜을 사용하였는지, 출발지/목적지의 맥 주소 등의 정보를 알 수 있습니다. 

    (프로토콜의 필드값에 대하여 자세하게 확인이 가능하답니다!)

4번은 2번 출력창에서 선택한 하나의 단일 패킷에 대하여 패킷 데이터를 16진수와 ASCII 코드로 보여줍니다. 


필터

와이어샤크를 사용하는데 있어서 참 중요합니다. 

왜냐구요? 

 ① 로그에 기록되는 데이터를 선택하기 위해 사용 (캡쳐가 시작되기 전에 정의)

Ex) 메뉴 - Capture 

 ② 캡쳐된 로그에서 데이터를 찾을 때 사용 (데이터가 캡쳐되는 동안/후에 수정 가능) 

Ex) 메뉴 - Display 

 

       다음은 캡쳐된 로그에서 필요한 데이터를 찾을 때 자주 사용하는 옵션값을 정리해 보았습니다. 


* 추가! ip.addr == 192.168.9.0/24 로 네트워크 대역 검색도 가능합니다! 


논리/비교 연산자도 간단히 정리해 보았습니다. 





3. wireshark 예시 


다음은 네이버로 접속하는 패킷 스트림을 캡쳐해보았습니다. 



검색 필터는 udp.port == 53 을 사용하여 DNS쿼리 패킷만 검색했습니다. 

출력창에서 프로토콜이 DNS이며 선택한 패킷은 DNS request 패킷인 것을 확인할 수 있습니다. 


다음은 아마도 가장 많이 사용하는 예시가 아닐까하는데요! 

 

클라이언트 pc(172.30.1.56)의 통신과정을 보기위해 와이어샤크로 패킷을 캡쳐한 예입니다. 

필터 ip.addr == 172.30.1.56 으로 걸어서 확인한 결과입니다. 어떠신가요?

출력창이 직관적이지 않죠? 



필터를 추가해봅시다!

필터 ip.addr == 172.30.1.56 && !icmp 로 icmp 패킷은 제외시켰습니다. 

 위 출력창에 비해 보다 직관적으로 통신과정을 확인하기가 쉬워졌습니다!



이렇게 우리 모두, wireshark 의 꽃이라 할 수 있는 옵션값들을 잘 활용하여 패킷분석을 합시다~ ;-D


다음시간에는 사례를 통한 tcpdump 및 wireshark 활용에 대하여 알아보겠습니다!