본문 바로가기

서버운영 (TA, ADMIN)/네트워크

[네트워크] 와이어샤크란?

LAN 분석툴(LAN Analyzer)은 네트워크상의 패킷을 가져와서 그 의미를 화면에 표시해주는 소프트웨어이다.

 

LAN(근거리 통신망:Local Area Network)이란, 회사나 가정에서 케이블로 연결된 구내(로컬) 네트워크를 말한다. LAN 분석툴은 네트워크 가게의 전류계나 전압계와 같은것으로, 이를 이용하면 네트워크 케이블을 지나는 내용물이 어떻게 생겼는지 볼 수 있다.

 

PC로 홈페이지를 보거나 이메일을 보낼때 전송되는 정보는 시렞로는 LAN 케이블 내부를 전기 신호 형태로 흐르게 된다. LAN 분석기는 LAN 케이블을 지나는 전기 신호를 데이터 즉, 패킷 형태로 가져와서 패킷의 의미를 조사할 수 있다. LAN 케이블을 지나는 전기신호를 데이터 형태로 가져오는 것을 패킷 캡처라고 한다. 가져온 패킷의 의미를 조사하는 것은 덤프 분석이라고 한다. 

 

LAN 분석툴은 매개체를 지나는 신호를 가져와서 패킷을 캡처한다. 환경에 따라서는 자신의 PC 이외의 신호, 즉 타인의 신호나 네트워크 전체의 통신 신호에 대해서도 패킷을 캡처할 수 있다. 이는 네트워크 문제를 조사하거나 좀처럼 원인을 찾기 힘든 네트워크 전체에 대한 트러블(장애)을 해결할때 도움이 된다.

 


하드웨어 분석툴

하드웨어 분석툴은 휴대형으로, 액정화면이나 네트워크에 접속하기 위한 커넥터가 달려있다. 이 커넥터를 조사하려는 네트워크에 직접 연결해서 패킷을 보거나 네트워크의 상태를 확인한다(Health Check)

 

하드웨어 분석툴은 주로 네트워크 장애가 발생했을 때 직접 현장에 들고 가서 장애를 해결하기 위해 사용한다. 소프트웨어 분석툴로는 파악하기 어려운 케이블의 품질조사가 가능하고 에러 프레임 등을 정확히 측정할 수 있다는 것이 장점이다. 일반 사용자보다는 기업이 주로 사용한다. 실제 대부분은 사내 네트워크 시스탬 관리 부문 등에 이용되고 있다.

 

소프트웨어 분석툴

소프트웨어 분석툴은 PC나 서버에 설치해서 네트워크 인터페이스 카드를 통해 네트워크에 접속한다.

 

상용분석툴은 특히 트렌드(통계) 기능이나 리포트(보고) 기능, Threshold(임계치) 설정 기능이 뛰어나다. 트렌드 기능이란 일정한 시간 동안 패킷 캡처한 내용을 바탕으로 패킷의 경향이나 특징에 대해 시계열로 통계를 작성하는 기능이다. 네트워크 이용률, 에러율(일정 시간 내에 발생한 패킷의 에러 비율을 말한다. Ethernet 2의 CRC 에러 등), 브로드캐스트 비율(일정 시간 내의 모든 패킷 중에 목적지가 브로드캐스트로 되어있는 패킷이 차지하는 비율), 프로토콜 분포, 호스트별 트래픽 분포 등의 통계나 보고서를 실시간으로 생성할 수 있다.

 

리포트 기능이란 패킷 캡처 내용에 관한 보고서를 생성하는 것이다. 이 보고서는 파이차트나 히스토그램, 일람표 등으로 가공할 수 있다.

 

Threshold 설정 기능이란 패킷을 캡처하기 전에 Threshold를 설정할 수 있는 기능이다. Threshold란 임계치라고도 하며 트렌드를 분석할때의 기준값을 말한다. 예를 들어, 브로드캐스트 비율에 20%, 에러프레임 비율에 0.1%라고 임계치를 설정한다. 패킷을 캡처할때 이 설정값을 넘으면 분석툴 화면에 경고 메시지를 표시하거나 관리자에게 메일을 보내고 또는 서버로 메시지를 보낼 수가 있다.

 

이러한 기능이 상용 LAN 분석툴의 주된 장점이라고 할 수 있다. 비교적 고가이므로, 기업 시스템 관리 부문이나 네트워크 전문 부서 등에 도입되고 있다.

 

오픈소스 소프트웨어 분석툴은 LAN 분석툴 중에는 가장 친근한 제품이다. 상용의 하드웨어 또는 소프트웨어 분석툴이 굉장히 비싼데 반해 오픈소스 소프트웨어 분석툴은 무료로 이용할 수 있다. 개인이나 학교에서 이용하는 것은 물론이고 기업에서 상업적으로도 자유롭게 이용할 수 있다.

 


와이어샤크의 개념

와이어샤크는 GPL(General Public License)로 배포되고 있는 오픈소스 LAN 분석툴이다. 와이어샤크의 이용 목적 중 대부분은 프로토콜 학습일 것이다. 이는 LAN 분석툴의 또 하나의 용도, 통신하고 있을때 실제 흘러가고 있는 패킷을 캡처함으로써 실제 현장에서 네트워크 프로토콜을 학습할 수 있다는 용도를 새로 만들어 냈다. 

 

와이어샤크의 주요기능

 - 네트워크 인터페이스에서 raw 패킷 캡처

 - 패킷 내용을 자세하게 표시

 - 패킷 캡처 데이터를 열거나 저장

 - 다른 많은 LAN 분석툴이 캡처한 패킷 캡처 데이터를 변환해서 읽어 들이거나 저장 가능

 - 다양한 조건으로 패킷을 필터링하거나 검색

 - 필요한 패킷만 특정 색으로 표시 가능

 - 다양한 통계 생성

 - 플러그인을 제작해서 자유롭게 기능을 확장 가능

 - USB나 블루투스(2.4GHz대역을 이용하는 무선기술로 휴대단말 등에 주변기기기를 접속하기 위해 이용) 등 네트워크 이외의 프로토콜을 분석 가능

 - Python이나 Lua 등의 언어를 이용해서 독자적인 분석기(패킷의 의미를 해석해서 상세화면에 표시하기 위한 데이터베이스)를 제작 가능. 와이어샤크로 해석할 수 없는 자사의 프로토콜이라도 트리형식으로 표시해서 패킷 분석

1) 와이어샤크의 장점

와이어샤크의 장점이라고 할 수 있는 부분은 패킷 내용 상세표시와 패킷 분석이다. 버전업 빈도가 잦다는 점도 강점이라고 할수 있다.

 

와이어샤크는 패킷의 내용을 상세하게 표시해서 상용 LAN 분석툴을 훨씬 뒤어넘는 종류의 패킷을 분석(디코드)할 수 있다. 새로운 프로토콜이 나오더라도 금방 그에 대응한 버전이 등장하고 있다.

 

패킷 변환도 와이어샤크의 강점이다. 와이어샤크는 상용 LAN 분석툴이 캡처한 패킷이 저장한 파일(이후 캡처 파일이라고 함)을 읽어 들여 다른 파일 형식으로 출력하거나 여러 개의 캡처 파일을 결합해서 이를 바탕으로 분석을 수행할 수 있다.

 

와이어샤크의 활용 예를 들자면,

어느 회사에서는 두 종류의 상용 LAN 분석툴을 본사 시스템 관리 부문에 도입해서 네트워크 트렌드 분석이나 리포트 작성을 하고 있다. 어느날 갑자기 지점 LAN의 네트워크에 장애가 발생해서 조사를 시작했다. 네트워크를 조사하기 위해서는 현장에서 패킷을 수집할 필요가 있다. 상용 LAN 분석툴에는 LAN 분석툴을 사용하지 않는 다른 지점의 LAN도 조사하는 에이전트 기능이 있다. 모든 지점이나 영업점에 에이전트를 배치하는 것은 비용면에서 곤란하다. 하드웨어 분석툴도 비용을 생각하면 그렇게 많이는 준비할 수는 없을 것이다.

 

평소에 노트북에 와이어샤크를 설치해두면 이러한 비상사태에도 당황하지 않고 대처할 수 있다. 이 경우 비용이 발생하지 않는 것은 물론, 현장에서 수집한 캡처 파일을 본사에 가지고 돌아가 트렌드 분석이나 리포트 생성 패킷 캡처 데이터를 변환할 수 있다. 와이어샤크를 설치하면 도입된 툴을 이용해서 리모트 캡처를 더욱 효율적으로 수행할 수 있게 된다.

2) 와이어샤크의 단점

와이어샤크는 상용 LAN 분석툴에 비해 트렌드 기능이나 리포트 기능, Threshold 기능이 비교적 약한 편이다. 다만 트렌드 기능과 리포트 기능에 대해서는 현재 버전업이 진행되고 있고 패킷 캡처 내용을 표형식으로 알기 쉽게 표시하거나 트래픽 꺾은 선 그래프나 히스토그램을 생성할 수 있게 되어 있다.

 

와이어샤크는 IDS(Intrusion Detection System)로 설계되어 있지는 않기 때문에 네트워크 침해를 감지해서 화면에 경고 메시지를 표시하거나 과닐자에게 메일을 발신하는 등의 기능은 할 수 없다. 패킷을 캡처하는 것이 네트워크 침해를 알아차리는 수단은 될 수 있는 것이다. 와이어샤크는 네트워크를 직접 조가할 수도 없다. 분석툴에 따라서는 packet generator라고 하는 패킷 생성툴이 포함되어 있어, 실제로 특정 패킷을 생성해서 네트워크로 전송할 수 있다. 이에 비해 와이어샤크는 어디까지나 네트워크를 측정하는 기능만 있다.

 


WinPcap

와이어샤크는 뛰어난 LAN 분석툴이지만 개발 와이어샤크만으로는 패킷을 자유롭게 캡처할 수 없다. 네트워크를 지나는 패킷을 캡처하기 위해서는 패킷 캡처 드라이버가 필요하다.

 

패킷 캡처 드라이버가 필요한 이유는?

대개 일반적인 애프리케이션에서는 소켓을 경유해서 데이터를 송수신한다. 소켓이란 OS의 기능 중 하나로, 다른 프로그램에서 이용하기 위한 함수를 말한다. 소켓을 경유하면 네트워크를 지나는 데이터를 직접 캡처할 수 없게 된다. 이때 패킷 캡처 드라이버를 도입하면 소켓을 bypass해서 직접 LAN 분석툴에서 네트워크를 지나는 모든 패킷을 조작할 수 있게 된다.

 

패킷 캡처 드라이버는 promiscuous mode라고 하는 특수한 설정에서 동작할 수 있다. 보통의 네트워크 인터페이스 카드(LAN 카드)는 기본적으로 자신과 관련이 있는 패킷만 받아들일 수 있다. 즉 다른 PC의 토신을 캡처할 수 없다. 이에 반해 패킷 캡처 드라이버는 목적지가 자신과 관련이 없는 패킷이더라도 모두 캡처할 수 있는 상태로 LAN 카드를 설정할 수 있도록 하고 있다.

 

 - WinPcap(윈도우용 패킷 캡처 드라이버)

 - libpcap(유닉스/리눅스용 패킷 캡처 드라이버)

 

와이어샤크는 오픈소스 GPL 라이선스로 배포되고 있으며 소스코드뿐만 아니라 바로 설치 가능한 형태로 제공되고 있다. 패킷 캡처 드라이버인 WinPcap은 별도의 라이선스로 배포되고 있으며 와이어샤크 설치 프로그램에 포함되어 있다. 와이어샤크와 WinPcap을 설치하면 패킷을 캡처할 수 있을 환경이 된다.

 

1) Wireshark GUI 기반 와이어샤크
2) TShark 텍스트 기반 와이어샤크 (tshark.exe)
3) Plugins/Extensions 패킷 분석 기능이나 통계 기능과 같은 추가 기능이나 확장 기능.
 [+]를 클릭하면 개별 프로토콜 분석 내용을 기술한 Dissector Plugins,
 트리형식으로 통계정보를 생성하는 Tree Statistics Plugin,
 패킷 메타분석 엔진인 Mate,
 와이어샤크의 각종 설정 템플릿인 Configuration Profiles,
 네트워크 관리 프로토콜인 기기정보 데이터베이스 SNMP MIBs 등이 표시된다.
4) Tools 와이어샤크 설치 폴더와 같은 위치에 놓이는 커맨드라인 툴이다.
 [+]를 클릭하면 캡처 파일을 편집할 수 있는 Editcap,
 텍스트 데이터를 기반으로 캡처 파일을 만드는 Text2Pcap,
 여러 개의 캡처 파일을 합치는 Mergecap,
 캡처 파일의 순번을 시계열로 재배치하는 Reordercap,
 캡처 파일의 정보를 표시하는 Capinfos,
 디코드(분석)를 하지 않은 그대로의 Raw 패킷을 처리하고 필터링하는 Rawshark,
등이 표시된다.
5) User's Guide 와이어샤크의 이용방법 등이 적힌 매뉴얼

 


와이어샤크 커맨드라인 툴

와이어샤크를 설치하면 여러 커맨드라인 툴도 동시에 설치된다. 커맨드라인 툴을 사용하면 GUI에서는 할 수없는 일괄 처리(배치 처리)나 파일 변환 등을 수행할 수가 있다.

 

커맨드라인 툴에는 editcap, text2pcap, mergecap, capinfos, recordercap, tshark 등이 있으며, 디폴트로는 모든 툴이 설치된다.

1) editcap.exe

editcap 명령은 기존 캡처 파일(캡처한 패킷이 저장된 파일. .pcapng 파일 등)을 정리하고 중복된 패킷을 삭제하거나 패킷 사이즈를 변경하는 등의 작업을 하고 다른 캡처 파일로 출력하는 프로그램이다.

 

'-h' 옵션을 덧붙여 editcap 명령의 도움말을 확인할수 있다. editcap 명령을 사용하면 캡처 파일 형식을 변환할 수 있으므로 와이어샤크에서 캡처한 패킷을 Sniffer를 비롯한 상용 LAN 분석툴의 형식으로 변환하거나 특정 분석툴의 캡처 파일을 와이어샤크나 다른 분석툴의 캡처 형식으로 변환할 수 있다. 게다가 캡처 파일의 시각 등도 변경할 수 있으므로 해외에서 얻은 패킷의 타임존을 맞추는 것도 편리하다. 

2) text2pcap.exe

text2pcap 명령은 ASCII형식 패킷의 16진수 덤프를 읽어들여 와이어샤크 표준인 tcpdump 형식으로 변환하는 프로그램이다. text2pcap을 이용해서 와이어샤크가 지원하지 않는 분석기나, 로그 등에 기록된 16진수 덤프 데이터를 와이어샤크로 읽어 들일 수 있게 된다. 변환할 때 부족한 헤더에 대해서는 와이어샤크가 자동적으로 가상 헤더를 생성해서 추가한다.

3) reordercap.exe

reordercap 명령은 캡처 파일의 순번을 시간순으로 정렬해서 출력하는 프로그램이다. 파일 결합 등에 의해 순번이 뒤섞일때 이용할 수 있다.

4) mergecap.exe

mergecap 명령은 복수의 캡처 파일을 읽어들여 하나의 캡처 파일로 정리해주는 프로그램이다. mergecap을 사용하면 파일 결합과 동시에 캡처 파일 형식을 변환할 수 있다. 보통 장시간에 걸쳐 얻은 캡처 파일은 크기가 굉장히 큰 경우가 낳으므로 각 위치에서 캡처한 작은 파일을 결합해서 이를 분석하는데 이용한다. 예를 들면 지사 등에서 단시간에 캡처한 작은 크기의 캡처 파일을 결합해서 이를 본사에서 분석하는 식의 활용법이 있다.

 

와이어샤크 메뉴에서 [File]-[Merge]를 선택하면 파일을 결합할 수 있다. 와이어샤크가 크래시되거나 처리에 시간이 오래 걸릴때가 있는데 이런 경우에 mergecap.exe를 사용하면 배치처리로 파일을 결합할 수 있으므로 편리하다.

5) capinfos.exe

capinfos 명령은 캡처 파일에 관한 정보를 표시해주는 프로그램이다. capinfos 명령에는 리포트를 출력하기 위한 옵션이 마련되어 있다. capinfos를 사용하면 캡처 파일을 열지 않아도 파일 내용을 확인할 수 있어 편리하다. 필요한 정보만 추출해서 탭, 콤마, 스페이스 등으로 구분한 CSV형식으로 저장할 수 있는 형태로 출력할 수도 있다.

6) tshark.exe

tshark 명령은 문자 표시만으로 동작하는(텍스트 기반) CUI 버전 와이어샤크 명령이다. tshark는 GUI를 필요로 하지 않으므로 텔넷 접속에 의한 패킷 캡처가 가능하다. 본사에서 와이어샤크가 설치된 지점 서버에 텔넷으로 접속해서 해당 지점의 단말의 패킷을 캡처할 수가 있다.

 

tshark에는 다양한 옵션이 있는데, '-T fields'와 '-e <field>' 옵션을 조합해서 사용하면 캡처 파일의 특정 항목과 내용을 추출할 수가 있다. 구체적으로는 캡처파일 'homepage.pcapng'를 열고 홈페이지의 응답코드 'http.response.code'만을 출력해서 숫자순으로 정렬할 수 있다. '-T fields'를 이용해 필드의 내용으로 패킷을 추출하는 모드가 되고 '-e' 뒤에 실제로 추출할 출력 필드 식을 입력한다.

tshark -r homepage.pcapng - -T fields -e http.response.code | sort

tshark 명령은 와이어샤크에 필적할 만한 기능이 있는 큰 프로그램이므로 패킷 캡처만 하는 용도로만 사용하는 것은 권장하지 않는다. tshark와 마찬가지로 커맨드라인에서 패킷 캡처를 수행하는 프로그램으로는 rawshark.exe와 dumpcap.exe가 있다. 

 

커맨드라인을 실행해서 대용량 패킷을 장시간 캡처하더라도 파일 크기를 일정한 크기로 제어할 수 있다. 캡처 데이터의 첫 128바이트까지만 가져오고 하나의 파일을 2메가바이트로 해서 최대 100개의 캡처 파일을 생성한다.

dumpcap -i 1 -s 128 -b files:100 -b filesize:2000000 -w c:\headersonly.pcapng

 


와이어샤크 UI

* 와이어샤크의 패킷리스트 영역

캡처한 패킷의 개요를 표시한다. 한 행에 한 개의 패킷(Ethernet 프레임)이 표시되며 여기에는 간단한 설명이 붙어있다. 각 행을 클릭하면 해당 패킷의 상세 내용이 패킷 상세 영역과 패킷 데이터 영역에 표시된다. 패킷 리스트 영역 'Info' 열에는 최상위 레이어(계층)의 정보가 표시된다. 패킷 분석 중에 드물게는 패킷 리스트 영역의 표시 내용이 낮은 레이어 정보에서 보다 높은 레이어 정보로 전환되는 경우가 있다.

열 이름 표시 내용
No. (이름) 패킷 일련변호를 표시한다. 이 번호는 표시 필터가 적용되더라도 변하지 않는다.
Time (시간) 패킷을 캡처한 시각을 표시한다. 시각 표시 형식은 변경할 수 있다.
Source (출발지) 패킷의 출발지 주소를 표시한다.
Destination (목적지) 패킷의 목적지 주소를 표시한다.
Protocol (프로토콜) 프로토콜 명을 표시한다.
Length (길이) 패킷의 크기를 표시한다.
Info (정보) 패킷의 개요를 표시한다.

패킷 리스트 영역의 열 제목에서 마우스 오른쪽 버튼을 클릭하면 메뉴가 표시되며, 해당 열 제목이나 표시 내용을 변경하거나 열 표시 여부 등을 설정할 수가 있다.

 

* 패킷 상세 영역

패킷 리스트 영역에서 선택한 패킷의 내용을 보다 상세하게 표시한다. 와이어샤크가 패킷을 분석한 내용이 여기에 표시된다. 패킷 상세 영역은 레이어별로 트리 형식으로 표시된다.

 

패킷 상세 영역은 패킷 리스트 영역에서 선택한 패킷에 대해 프로토콜이나 필드의 내용을 표시한다. 패킷에는 많은 정보가 포함되어 있으므로 헤더나 레이어별로 [+]가 붙어있고, 클릭하면 헤더나 레이어의 상세 내용이 표시된다. 플래그나 제어 필드와 같이 좀더 상세한 정보에 대해서는 여러 개의 [+]가 계층저으로 준비되어 있어서 이를 클릭해서 펼치면 정보를 표시할 수 있다.

 

자세히 알고자 하는 헤더에 대해서는 [+]를 클릭해서 필드를 펼쳐 의미를 조사해볼수 있다. 패킷에 따라서는 더 세세한 내용이 계층화되어 있는 경우가 있다.