[ccna/cisco] 이더리얼 강좌 1] 패킷 캡처 실사례를 통한 이더리얼의 이해
필자는 직업상 많은 사이트들을 돌아다니면서 수많은 패킷들의 이상 증상들을 확인한다. 구두만드는 사람 눈에는 구두만 보이는 것처럼 이상 증상을 보는 것이 직업인 필자의 눈에는 모든 패킷이 이상 패킷으로 보인다. 때로는 새로 나온 애플리케이션들이 원래 그렇게 동작하도록 만든 것임에도 불구하고 '내게 보이는 패킷들은 다 이상한 것'이라는 색안경이 씌어 있어서인지 이상하게 보이는 경우도 물론 있다.
여하튼 패킷을 이리저리 살펴보다 보면 일단 의심을 하게 되고, 그로부터 뭔가 단서가 잡히게 된다. 그것이 네트워크 상의 이상 증상이든, 서버 애플리케이션 동작 과정에서의 문제이든 간에, 항상 해당 상황에 맞는 기준을 세우고, 패킷의 흐름과 헤더를 살피다 보면 단서는 잡히기 마련이다. 이렇게 이상한 패킷들이 있을 때 필자가 주로 사용하는 패킷분석기가 바로 이더리얼(Ethereal)이다.
무료로 이용가능한 공개용 패킷 분석기 '이더리얼'
이더리얼은 무료로 구할 수 있는 공개용 패킷 분석기로, 사용이 무척 쉽고, 우리가 알고 있는 대부분의 운영체계에서 사용할 수 있는 것이 장점이다. 또한 계속해서 업데이트 버전이 나오기 때문에 낡아서 쓸모없게 돼 버리는 프로그램들과는 많이 틀리다.
필자는 주로 윈도우 버전을 사용하기 때문에 앞으로 이야기의 전개는 윈도우 버전이 중심이 될 것이다. 때문에 이외 운영체제 지원에 대한 사항들은 관련 사이트(www.ethereal.com, http://winpcap.polito.it)에서 확인하기 바란다.
이더리얼을 설치할때는 이더리얼 프로그램(www.ethereal.com에서 무료로 다운로드 받을 수 있다)과 더불어 한가지 더 필요한 설치 프로그램이 있는데, (화면 1)에서 'e'자로 쓰여진 아이콘 옆에 있는 WinPcap_3_0.exe이 그것이다.
이 프로그램은 윈도우에서 프로토콜을 캡처하려고 할 때 NIC에 '나 이제부터 네가 받는 정보의 자세한 부분들을 들여다 보려고 해'라고 이야기하는 역할을 한다. 이 파일 역시 관련 사이트(http://winpcap.polito.it)에서 최신 버전을 무료로 다운로드 받을 수 있다.
참고로 'WinPcap_3_1_beta'와 'ethereal_0.10.1'은 윈도우 2000에서 테스트해 본 결과 아직 불안정한 측면이 많이 있었다. 때문에 안정화와 버그 수정 과정을 거친 후 정식 릴리즈될 때 사용할 것을 권한다. 이번 강좌에서 사용하는 버전은 'WinPcap_3_0'과 'ethereal_0.10.0'이다.
이더리얼 설치하기
자, 그럼 지금부터 본격적인 설치를 시작해보자. 설치 순서는 WinPcap_3_0을 먼저 실행하고, ethereal-setup 파일을 실행시키면 된다. 순서가 바뀌면 이더리얼이 제대로 실행되지 않으니 반드시 순서를 지켜서 설치해야 한다. 먼저 WinPcap을 실행하면 (화면 2)와 같은 화면을 만날 수 있다.
이 화면에서 '동의한다'에 체크하고, 과감하게 'Next' 버튼을 누르면 설치가 완료된다. 이 과정이 끝났다면 이제 이더리얼 셋업 파일을 실행시키자. 역시 동의 과정을 거치고 나면 (화면 3)과 같이 위치지정 메뉴가 나온다.
여기서는 기본값으로 정해wu 있는 'C'의 프로그램 폴더에 이더리얼을 설치하는 것으로 설정했다. 설치가 완료되면 바탕화면에 이더리얼 아이콘이 생기는데 이를 실행하면 다음과 같은 메인화면을 볼 수 있다.
소리바다가 발생시키는 과다한 트래픽 잡아내기
각 메뉴에 대한 설명은 다음회에서 다루기로 하고, 이번 시간에는 이더리얼이 무엇인지 알기 위해 패킷 캡처부터 무작정 실행해보자. 제일 먼저 패킷을 캡처하는 사례는 (그림 1)과 같이 파이어월을 통해서 192.168.10.X 대역의 사설 IP를 사용하는 사용자들이 하나의 공인 IP를 가지고 인터넷에 접속하는 환경이다.
(그림 1)과 같은 환경에서 필자는 아무 생각없이 노트북에 설치된 이더리얼을 실행시킨 후 (화면 5)와 같이 무조건 패킷캡처를 했다. 그런데 이때 이상 패킷이 눈을 끌었다(이상 패킷이라기 보다는 해당 패킷의 패턴이 이상하다는 표현이 더 정확할 것이다).
(화면 5)에서 보는 구성은 1개의 공인 IP를 가지고 192.168.10.0/24 대역의 사설 호스트들이 인터넷 서비스를 사용하는 환경이다. 그런데 무작위로 캡처한 패킷을 자세히 들여다 보면, NAT된 IP 중에서 192.168.10.71이 이상하다는 것을 알 수 있다(뭐가 이상한지 모르겠다면 패킷을 좀더 들여야다봐야 할 것이고, 이 패킷으로 한번이라도 고생해 본 경험이 있다면 금방 이상한 점을 발견했을 것이다).
그럼 뭐가 이상하단 말인가. 그것은 바로 '도대체 어떻게 된 패킷이기에 스위치단을 넘어서 필자의 노트북 NIC까지 UDP를 날린단 말인가'이다. 뿐만 아니다. 해당 패킷의 소스 포트와 도착지 포트를 자세히 살펴보자. 보는 바와 같이 출발지와 목적지의 포트가 동일하다. '보통의 애플리케이션 패킷들은 출발지와 목적지의 포트가 서로 다르다'라는 사실을 알고 있는 엔지니어라면 당연히 이상한 패킷임을 감지할 수 있을 것이다.
예를 들면 DNS 요청(Query)의 경우, DNS 서버로 목적지 53번 UDP 포트를 달고 나오며, 출발지 포트는 임의의 포트를 달고 나오게 된다. 그리고 목적지인 DNS 서버는 해당 요청 패킷이 UDP 53을 목적지 포트로 해서 나왔다는 사실에 대해 자신에게 DNS 쿼리(Query)를 한다. 왜 이런 패킷이 캡처됐는지를 알기 위해 파이어월에 남겨진 NAT 테이블을 살펴봤다. 결과는 (화면 6)처럼 나타났다.
역시나 의심이 가는 구석이 있다. 보통은 정상적인 통신 상황이라면 해당 통신에 대한 기록에는 (화면 6)에서 보듯이 패킷 수의 증가량과 데이터양의 변동이 존재한다. 그러나 나머지 NAT 테이블들을 살펴보면 수많은 목적지로, 목적지 22321번 UDP 포트를 이용한 접속시도가 있었다는 것을 알 수 있다.
22321 UDP 포트는 소리바다에서 사용하는 포트이며, 이를 바탕으로 192.168.10.71번 IP를 가진 내부 사용자가 소리바다를 사용하고 있으며, 이런 소리바다의 사용이 (화면 6)의 NAT 테이블에서처럼 수많은 세션을 발생시키고 있었던 것이다.
이제야 비로소 처음에 보았던 이상 패킷의 정체를 찾아낼 수 있었다. 소리바다 프로그램 실행 후 음악이나 파일 등을 검색하게 되면 (화면 6)과 같이 수많은 목적지로 정보를 확인하기 위한 요청이 일어나는 것이다. P2P인 소리바다는 개인적으로는 참 좋은 응용프로그램일지는 모르지만, 네트워크나 보안 엔지니어의 입장에서는 정말로 골칫거리가 아닐 수 없다.
이제 다음단계는 과연 누구의 PC에서 과다 트래픽을 생성하고 있는지를 찾아내는 것이다. 윈도우 환경을 기반으로 NetBios를 사용하고 있는 경우라면 (화면 7)과 같이 간단하게 확인할 수 있다.

(화면 7)을 보면 호스트 이름을 KHTNOTE를 사용하는 PC로, MAC 주소도 명확하게 볼수 있다. 이제 남은 일은 해당 PC의 주인에게 다가가서 '과도한 소리바다 사용은 네트워크의 건강을 해치며, 현재 사용중인 파이어월이나 라우터의 성능을 현저히 떨어지게 만들 수 있으니 집에서나 사용해 해주십시오'라고 정중히 부탁하는 것이다.
이같이 '일단 잡아보자'는 용도로 사용되는 이더리얼의 캡처 옵션은 'Capture packets in promiscuous mode'이라는 기본 옵션이다. 무차별 모드(promiscuous mode)를 사용하기 위해서 별다르게 설정할 부분은 없다. 우리가 보통 사용하는 프로그램처럼 메뉴에서 캡처 항목을 설정하고 OK만 누르면 된다. 단축기를 사용할때는 Ctrl +K를 사용하면 된다.
'무차별 모드로 일단은 패킷을 캡처해보자'
또 다른 패킷을 하나 캡처해 보자. 이번에는 스위치에 포트 미러링을 걸어놓고 잠깐 동안 패킷을 캡처 받아 보려고 했다. 구성은 (그림 2)와 같이 내부에 호스트들이 있고, 이 호스트들이 라우터를 거쳐서 외부로 나가는 구조이다. 이 구조에서는 외부로 향하는 패킷의 모든 흐름이 미러링된 포트를 통해 필자의 노트북으로 들어오게 된다. 무차별 모드로 잡아본 패킷은 (화면 8)과 같다.
(화면 8)의 패킷만 가지고는 별의미가 없어 보일지 모르겠지만 패킷 중에는 'Plain Text' 기반으로 데이터가 오고가는 텔넷(Telnet) 데이터가 있었다. 필자는 이더리얼의 기능 중 하나인 'TCP Follow Stream' 기능을 이용해서 이 패킷들을 조합해 보기로 하고, 별생각없이 위 사항들을 이더리얼에서 그대로 수행해 보았다. 그 결과는 (화면 9)와 같다.
아무런 생각없이 미러링된 포트를 통해 캡처 받은 패킷에서 암호화돼 있지 않은 텔넷 패킷을 발견했고, 이 패킷들은 어떤 정보를 가지고 있는지 살펴보고자 tcp follow stream 옵션을 이용해서 살펴본 결과는 너무나 위험스런 정보였다. 관리자가 백본 스위치에 텔넷을 이용해 접속하고, 해당 관리자의 로그인(login) ID와 비밀번호가 고스란히 필자의 노트북에 보인 것이다.
보안이라는 개념에 대한 의식이 미미했고, 인프라스트럭처가 가상 LAN의 개념 없이 10Mbps 허브로 구성된 네트워크라면 어디서나 가능했던 패킷스니핑(Packet Sniffing)이 바로 이 상황이다. 물론 이 사례에서 포트 미러링은 관리적인 목적을 위해서 적용했을 것이며, 그럴 경우라면 네트워크상의 문제를 찾아내기 위해서 순수하게 트래픽 모니터링용이었을 것이다. 적어도 필자는 그렇게 믿는다.
그러면 이더리얼은 이처럼 이더넷에 관련된 패킷들만 캡처할 수 있는 것일까. 그렇지는 않다. 필자가 개인적으로 이더리얼을 아끼고 좋아하는 이유 중 하나는 이더리얼이 거의 모든 프로토콜들을 캡처하고 분석할 수 있다는 점이다. 그런 의미에서 이번에는 (그림 3)과 같은 구성에서 패킷을 잡아 보았다.
(그림 3)에서 서버는 ATM LAN 카드를 장착하고 있으며, 백본 스위치에 ATM으로 연결돼 있는 환경이다. 이런 환경에서는 전용 장비없이 ATM 구간의 패킷들을 캡처하기 위해서는 유닉스 계열의 서버에 이더리얼을 설치하고, 해당 구간의 패킷을 캡처해야 한다. 그러나 이더리얼이 가진 가장 큰 장점중의 하나인 호환성을 생각할 때 그런 수고를 할 필요는 없다.
예를 들어 서버가 솔라리스 계열의 유닉스 서버라면 snoop 명령을 통해 패킷을 캡처하고(이 경우에는 명령어 값에 몇가지 옵션들이 필요하다), 이렇게 캡처된 패킷을 필자의 노트북으로 전송, 윈도우 2000 기반에 설치돼 있는 이더리얼에서 볼 수 있다. 그렇게 해서 본 패킷이 바로 (화면 10)이다.

이더리얼로 캡처된 패킷의 출발지와 목적지를 보면, DCE에서 DTE라고 돼 있으며, 프로토콜에는 ATM LANE이라고 적혀 있다. 이 패킷은 ATM LAN 에뮬레이션 프로토콜이며, ATM 환경에서 LAN과 같이 토폴로지를 가져가기 위해서 이뤄진 네트워크 구간의 패킷이라는 것을 알 수 있다. 여기에 관련된 자세한 로직은 ATM에 대한 보다 많은 지식을 필요로 하기 때문에 여기서는 더 이상 논의하지 않겠다. 단지 이더리얼이 얼마나 다양한 패킷을 캡처할 수 있는가를 보여주기 위한 사례 중 하나로 이해하면 될 것이다.
OSI 2∼7계층까지 광범위한 패킷 분석 수행
순서대로라면 이더리얼의 사용법부터 소개해야겠지만 거두절미하고 이처럼 첫회부터 사례부터 소개한 것은 이더리얼이 과연 무엇을 하는 프로그램인지 말하고 싶었기 때문이다. 앞서 예를 든 실제 사례를 보면 이더리얼을 통해 할 수 있는 것이 얼마나 많은지, 또 이더리얼이 얼마나 범용적인 툴인지 알 수 있다. 무턱대고 실행해 본 패킷의 캡처에서 발견된 이상패턴을 인지하는 부분이나, ATM과 같은 데이터링크층 프로토콜들에 대한 지식은 패킷을 캡처해서 분석해보기 위한 가장 기본적인 준비사항들이다.
OSI 7계층 이론에서의 구분으로 볼 때 2계층인 데이터링크 계층부터 시작해 7계층인 애플리케이션 계층의 대표적인 프로토콜에 이르기까지, 이더리얼은 광범위한 프로토콜 분석을 지원한다. 물론 각각에 맞는 패킷분석을 위해서는 해당 프로토콜에 대한 충분한 이해력이 선행돼야 할 것이다.
이더리얼은 스니퍼(Sniffer)나 이더피크(etherpeek)와 같은 상용 프로그램이 아니라, 오픈소스 프로젝트의 일환으로 개발자들의 개발환경을 돕기 위해 만들어진 공개 소프트웨어이다. 아직까지 그래픽적인 요소는 스니퍼를 따라가지 못하지만 사용하는 사람의 활용 능력에 따라서는 다른 어떤 상용 패킷 분석프로그램 보다도 훨씬 더 유용하게 활용할 수 있다.
물론 이더리얼을 다른 상용프로그램들과 비교한다면 수작업이 필요한 것은 사실이다. 하지만 무료라는 그 무엇과도 바꿀 수 없는 이점과 엄청난 호환성을 생각한다면 다소의 귀찮음은 충분히 감내할만한 일일 것이다.
첫회는 이더리얼이 어떤 프로그램인지 맛보기 수준으로 패킷 캡처 사례를 소개했다. 다소 순서가 바뀐 듯 하지만 다음 시간에는 다시 기본으로 돌아가서 이더리얼의 패킷 분석을 위한 기본 기술을 사례를 통해 살펴볼 것이다.
출처 : http://www.it-bank.or.kr/cisco/main_1.htm