[이더리얼 강좌 5] 이더리얼 강자되기 위한 필수 문법 II

Posted by 잿빛푸우 greypoooh@daum.net
2007.06.12 10:21 IT 정보&리뷰
패킷 분석기인 이더리얼은 두가지 필터링 언어가 있다. 지난 시간 소개한 것처럼 필터를 통해 패킷을 직접적으로 걸러서 캡처하는 필터링 언어와 이미 캡처한 패킷 중에서 우리가 보고자 하는 패킷만을 골라낼 수 있는 필터언어가 있다. 이 기능에 사용되는 명령구문도 있는데, 이 문법은 앞서 살펴본 필터문법 보다는 길고 복잡하다. 이번 시간에는 바로 이 두 번째 필터링 언어부분을 살펴보기로 하자.

네트워크에 발생한 문제를 해결하기 위해 관리자가 봐야 패킷은 경우에 따라서 천차만별일 것이다. 웜을 분석하기 위해서는 "&" 구문 등의 복잡한 연산 문구를 사용해야 하는데, 이런 복잡한 패턴 형식을 사용해야만 효율적으로 트래픽을 분석할 있기 때문이다. 갑자기 발생한 네트워크 속도저하나 특정 통신의 두절 등과 같은 경우에도 해당하는 IP들의 특정 정보만을 사용해야 한다. 이런 부분들은 단순히 패킷을 보는 것보다 훨씬 복잡하기 때문에 보다 세분화된 필터링이 필요하다.

 캡처한 패킷 중에서 필요한 것만 골라본다
이더리얼에서 캡처한 패킷과 솔라리스(Solaris) snoop, 스니퍼, tcpdump 등으로 캡처한 패킷들을 이더리얼에서 다시 불러들여서 보면, 무수히 많은 패킷들이 캡처된 시간순서별로 나열돼 있다. 이런 패킷들 중에서 정작 살펴볼 필요가 있는 패킷들은 많아야 수십개 정도밖에 되지 않는 경우가 많다. 무차별 모드(Promicious) 캡처한 패킷은 두번째 필터 문법으로 다시 한번 거르는 작업이 반드시 필요하다.
(
화면 1) LAN 상에 물려 있는 필자의 호스트를 제외한 나머지 호스트에서 발생하는 패킷들을 캡처, 저장해둔 파일을 불러온 것이다. 캡처된 파일을 보면 현재 해당 네트워크의 기본 상태를 파악할 있다.

 

사용자 삽입 이미지
 

(화면 1) 무차별모드로 캡처된 패킷들을 불러오기한 화면

 

(화면 1) 보면, 먼저 시스코 계열의 스위치가 다른 스위치들과 스패닝트리 프로토콜(STP) 정보를 주고받고 있고, LAN 상에 IPX NetBIOS 관련 패킷들이 돌아다니는 것을 볼수 있다. 그리고 arp 통신을 위해 특정 호스트가 기본 게이트웨이의 arp 요청하는 arp 브로드캐스트 등도 있다. 참고로 이더리얼에서는 등록된 벤더코드에 대해서는 해당 MAC 어드레스 부분을 벤더 이름으로 명시한다. (화면 2) 출발지 어드레스에 Cisco 시작되는 MAC 있는 패킷을 '새창에서보기' 것이다.

 

사용자 삽입 이미지
 (화면 2) 벤더 코드 보기

 

우리가 익히 알고있는 시스코의 벤더코드는 00:0d:bd 등록돼 있기 때문에 (화면 2) 같이 해당 벤더의 코드가 바로 해석돼 보여지는 것이다. 물론 시스코뿐만 아니라 전세계적으로 널리 알려진 벤더들의 MAC 대부분 이런 식으로 보여질 것이다.

다음으로 필드의 유형까지 구분할 있는 구문을 살펴보자. 필드 유형으로 구분할 때는 이더넷 주소(6Byte) IPv4/6, IPX 네트워크 번호, String 등과 TCP UDP 플래그(flag) 값을 사용한 구문을 있다. 예들 들어 TCP 플래그 등이 있는 영역을 Boolean 영역이라고 하는데 영역에 설정된 값이 조건식과 정확하게 일치하는 것들만을 필터로 수가 있다. 캡처한 패킷 중에 tcp 플래그 값이 'ack' 세팅된 패킷들만을 살펴보고자 할때는 (화면 6) 같이 하면 된다.

 

 

사용자 삽입 이미지

(화면 6) TCP 플래그 값에 ack 세팅된 패킷들만 필터링해서 보여주는 구문

 

마지막으로 논리연산자를 사용한 필터 구문을 살펴보자( 2).

 

사용자 삽입 이미지
여기서 논리 AND 사용한 필터구문의 예를 들어보면 (화면 7) 같다. IP 어드레스가 192.168.1.156이고(출발지든 목적지든 간에) TCP 플래그 값이 fin이며, 프로토콜이 HTTP 패킷을 필터링해서 보는 것이 (화면 7)이다.

 

사용자 삽입 이미지
 

(화면 7) 복잡한 필터구문(IP+Flag +프로토콜)

 

이런 복잡한 필터문구를 이용할 경우 syn 플러딩 공격과 같은 유형을 판별할 수도 있다. 이는 앞서 첫번째 필터구문에 비해 보다 상세화된 필터링 방법이며, 캡처된 파일을 바탕으로 분석하기 때문에 보다 확실한 방법이 있다.
마지막으로 이더넷의 출발지 또는 목적지 MAC 어드레스를 매칭시키는 방법이 있다. 간단한 예로 어떤 호스트가 가진 NIC MAC 어드레스가 오프셋 0에서 시작하고, 길이가 3일때까지의 주소만 비교해 같은 패킷을 보여줄 있다. 여기서 길이라고 언급한 숫자의 의미는 11 : 22 : 33 : 44 : 55 : 66처럼 있는 이더넷 어드레스 영역에서 1133까지를 의미한다. 또한 0이라는 것은 '가장 처음부터' 의미한다.

 

사용자 삽입 이미지

 

(화면 8) 이더넷 어드레스의 특정범위 매칭을 통한 필터링

 

지금까지 필터문구를 이용해 캡처해 패킷을 보다 자세하게 구분해내는 문법에 대해 살펴봤다. 정도면 이더리얼을 사용하는데 필요한 필수요소는 대부분 살펴본 것이다. 이제부터는 이런 요소들을 잊지 않고 필요할 사용할 있도록 기능을 숙달하는 것이 남았다. 네트워크/보안 엔지니어라면 패킷의 흐름을 읽을 있어야 한다. 패킷의 흐름을 좀더 직관적이며 효율적으로 알아보는데 이번 강좌의 의의가 있는 것이다.
필자가 최근 IPS 관련된 일을 하면서 자료를 살펴보다 보니 외국계 IPS 업체의 솔루션에 이더리얼이 탑재돼 있는 것을 보게 됐다. 이는 지금껏 스니퍼에 비해 엔지니어들에게 아직은 낯설은 이더리얼의 위상이 어느 정도는 올라갔음을 반영한 것으로, 앞으로 수많은 개발자들의 지원으로 이더리얼이 보다 발전해 나갈 있으리라 기대한다. 다음 시간에는 이더리얼이 갖고 있는 부가적인 기능을 사용하는 방법에 대해 소개하겠다.

 

출처 : www.ionthenet.co.kr

이 댓글을 비밀 댓글로