티스토리 뷰

네트워크/관련유틸

Ethereal

프링글 2008. 6. 22. 16:48

[네트워크 트래픽 분석기 Ethereal ]

프로토콜에 대해서 공부하려면 네트워크 트래픽 분석기는 하나쯤 사용할 줄 알아야 한다.

네트워크 트래픽 분석기란 네트워크에 흐르는 모든 패킷을 잡아서 네트워크 관리자가 패킷을 분석할 수 있는 툴이다. 네트워크 트래픽을 분석하기 위해서 유닉스, 리눅스에서는 전통적으로 tcpdump와 같은 콘솔 전용 프로그램을 사용했으나 요즈음에는

ethereal 과 같은 그래픽 유저 인터페이스를 가진 네트워크 트래픽 분석기를 사용한다. 이 프로그램은 http://www.ethereal.com 에서 RPM 버전 또는 소스 버전으로 다운로드 받을 수 있다. 상용 제품도 많지만 이 네트워크 트래픽 분석기는 상용 제품에 떨어지지 않는 성능을 가지고 있다.


필자가 생각하기에는 상용 제품보다 훨씬 뛰어난 기능을 가지고 있다고 생각하면 된다. 현재 버전이 1.0 버전도 아닌 0.9대의 버전이기 때문에 1.0 버전이 나오면 해킹툴이 되지 않을까 생각이 들 정도로 훌륭한 툴이다.
설치하기 전에 ethereal은 libcrypto.so.0이라는 암호화 라이브러리를 필요로 하기 때문에 /usr/lib에 링크 파일을 하나 만들어 준다.

배포판에 따라서 libcrypto의 버전이 다를 수 있으므로 적절하게 링크를 만들기 바란다.


 


사용자 삽입 이미지


설치할 때 한 가지 유의할 점은 -nodeps 옵션을 주어서 libcrypto.so.0에 의존 관계를 체크하지 않도록 해준다.



사용자 삽입 이미지


설치를 하고 나서 콘솔에서 ethereal을 입력하면 트래픽 분석기가 뜬다. 패킷을 캡쳐하도록 설정해 놓으면 네트워크 상에 흐르는 모든 패킷을 가로채기 하여 수집한 트래픽 정보를 파일로 저장하거나 저장된 파일을 다음에 다시 꺼내 볼 수도 있다.

또한 자신이 관심이 있는 특정 프로토콜의 패킷만을 캡쳐할 수도 있고 이미 캡쳐된 패킷 정보를 필터링해서 분석하고자 하는 패킷을 쉽게 찾을 수도 있다.

'startx' 명령을 내려서 X 윈도우를 띄운 다음, 아래와 같이 명령을 내리면 ethereal 트래픽 분석기가 뜬다.

항상 RPM 버전은 소스보다 낮기 마련이다. 최신 버전의 ethereal 을 설치하고자 하는 독자는 소스를 다운로드 받아서 직접 컴파일해서 설치해도 된다. 소스 설치가 그리 어렵지 않고 옛날 버전에 비해서 편리해진 기능이 많기 때문에 소스로 설치하기를 권장한다. 컴파일 하는데는 약간의 시간이 필요하다.



 


사용자 삽입 이미지



 

사용자 삽입 이미지




사용자 삽입 이미지


메뉴에서 [Capture], [Start]를 누르면 아래와 같이 캡쳐할 패킷을 설정하는 다이얼로그가 뜨고 [OK] 버튼을 누르면 패킷이 수집된다. 일정 시간이 지난 후에 [Stop] 버튼을 누리면 지금까지 수집한 패킷에 대한 정보가 출력된다.


사용자 삽입 이미지





간단하게 위 캡쳐 옵션 다이얼로그에 대해서 알아보도록 하자. 처음 [Interface]는 한 컴퓨터에 여러 개의 네트워크 카드가 있을 때 캡쳐하고자 하는 네트워크 카드를 지정하는 곳이다.

만약 'any' 라고 설정하면 모든 네트워크 카드에 있는 네트워크 트래픽을 수집한다. [Limit each pachet to]는 한 패킷의 최대 크기를 지정하는 것이다.


[Capture pACKets in pormiscuous mode]는 네트워크 카드의 모드를 바꿔주는 것으로 promiscuous 모드로 바꾸어 주면 네트워크에 흐르는 모든 패킷을 수집하고 이 체크를 풀어주면 이 컴퓨터에 흐르는 트래픽만을 수집한다. 마지막으로 중요한 옵션이 [Filter] 옵션이다. 이 옵션은 사용자가 관심 있는 트래픽만을 집중적으로 수집할 수 있도록 설정할 수 있다.

Capture file]에서 트래픽을 수집한 후 저장할 파일을 입력할 수 있다.


[Display options]에서는 네트워크 트래픽을 수집을 하면서 메인 창에 보여줄 것인지 아니면 사용자가 트래픽 수집을 중지하면 보여줄 것인지를 선택한다.


[Capture limits] 에서는 몇 개의 패킷을 잡을지 또는 수집한 전체 패킷의 크기를 얼마로 할지 또는 얼마 후에 수집을 중지할 지를 결정하는 곳이다.


마지막으로 [Name resolution]에서는 세 가지 옵션이 있다. 첫 번째로 [Enable MAC name resolution] 옵션은 MAC 어드레스의 세 개의 옥텍(Octet)을 네트워크 카드 제조사의 이름으로 바꿀지를 결정한다.

MAC 어드레스의 세 개의 옥텍은 네트워크 카드 제조사의 고유한 번호이다. 두 번째로 [Enable network name resolution]은 IP 주소를 DNS 도메인 이름으로 바꿀지를 결정한다. 하지만 DNS 역질의가 일어나기 때문에 되도록이면 사용하지 않는 것이 좋다. 마지막으로 [Enable transport name resolution]는 포트 번호를 서비스 이름으로 바꿀지를 결정한다.


예를 들어 21번 포트에 접속한다면 이 프로토콜을 TCP 프로토콜이지만 Ethereal의 항목에 나타날 때에는 Application 레벨의 정보인 FTP로 나온다.

다음은 ethereal이 지금까지 수집한 패킷에 대한 정보를 보여주는 창이다.


 


사용자 삽입 이미지


Ethereal은 메인 윈도우와 조각창으로 이루어져 있다.

o 1번 메인 윈도우 - 수집된 패킷의 리스트를 보여준다. 이 창에 있는 리스트를 클릭하면 2번, 3번 창이 바뀐다.
o 2번 메인 윈도우 - 1번 메인 윈도우에서 패킷 항목을 클릭하면 해당 패킷에 대해서 자세한 정보를 트리 형태로 보여준다.
o 3번 메인 윈도우 - 실제 패킷의 데이터를 보여준다.
o A 버튼 - [Filter]를 클릭하면 필터를 설정할 수 있는 창이 뜬다.
o B 텍스트 박스 - 이 텍스트 박스에는 필터링 문자열이 들어간다.
o C 버튼 - 이 버튼을 누르면 현재 필터링 문자열을 지운다.
o D 버튼 - 디스플레이 필터를 리스트에 적용시킨다.
o E 텍스트 박스 - 상태 메시지를 보여준다.


실제 데이터를 분석하기 전에 필터링에 대해서 알아보도록 하자. 필터를 공부하지 않으면 네트워크에 흐르는 엄청난 양의 데이터 중에 자신이 원하는 정보가 어떤 것인지 찾기가 대단히 힘들다.

패킷 필터링에 사용하는 구문은 다음과 같다. 패킷을 수집할 때 ethereal 이 사용하는 라이브러리는 tcpdump가 사용하는 pcap 라이브러리를 함께 사용하기 때문에 두 프로그램은 pcap 라이브러리의 구문을 그대로 따른다. 구문에 대해서 자세히 알고 싶은 독자는 '시스템 관리' 편의 tcpdump를 읽어 보기 바란다.



 


사용자 삽입 이미지


다음은 10.0.0.5번 컴퓨터로부터 텔넷 포트 23번에 대한 패킷을 잡는 예이다.



사용자 삽입 이미지


(여기서 잠깐 말씀을 드릴 것이 있습니다...tetheral과 ethereal은 명칭만 다를 뿐 같은 기능을 하고 있습니다...)


다음은 10.0.0.5번 컴퓨터를 제외한 컴퓨터로부터 텔넷 포트 23번에 대한 패킷을 잡는 예이다.



사용자 삽입 이미지


패킷을 수집한 다음에 사용하는 디스플레이 필터는 왼쪽 하단에 있는 [Filter] 버튼을 눌러서 원하는 정보만을 볼 수 있다.
또 직접 텍스트 박스에 입력을 한 후 [Apply] 버튼을 눌러도 상관이 없다. 다시 원래의 항목을 모두 보고 싶다면 [Reset] 버튼을 누르면 된다.

[TIP]

[ Ethereal 을 이용한 sniffing 해킹 ]


'당신도 해킹 당할 수가 있다'라는 말을 첩보 영화에서 보았지만 네트워크에 흐르는 모든 패킷을 가로채서 분석할 수 있다면 이 말은 영화에서만 일어나는 일은 아닐 것이다. 혹시 이 책의 내용을 읽고 독자들이 해킹할까 두렵지만 얼마나 우리가 해킹에 노출되어 있는지 보여주기 위해서 간단한 해킹을 해 보도록 하겠다.

보통 웹싸이트나 FTP 사이트에 처음 들어가면 로그인을 하게 된다. 웹싸이트에 로그인을 한다면 보통 HTTP의 POST 방법을 사용해서 아이디와 비밀번호를 특정 서버에 전송하게 되고 FTP라면 정말 아무런 보안 장치 없이 아이디, 비밀번호가 네트워크를 타고 날라가게 된다.

SSL이나 SSH와 같은 보안 도구가 없다면 마음만 먹으면 특정 서버 사용자의 아이디와 비밀번호를 알아내는 것은 문제도 아니다. 물론 인내의 시간은 약간 필요하다.

보다 리얼한 실습을 위해서 국내 모 사이트로 가는 아이디와 비밀번호를 가로채는 예제를 보여주고 싶으나 필자가 담이 크지 않는 관계로 필자가 운영하는 FTP 서버에 접속하는 패킷을 수집해서 아이디와 비밀번호를 알아내는 실습을 보여 주도록 하겠다.


Ethereal의 [Capture] 메뉴에서 [Start]를 클릭하면 [Capture options] 다이얼로그가 뜬다. 이 다이얼로그에서 필터 텍스트 박스에 'tcp port 21'이라고 입력한 다음 트래픽 수집을 시작하자. 그리고 나서 운영 중인 FTP 서버에 로그인을 하였다. 다시 ethereal 로 돌아가서 패킷 수집을 중지시키자.



 


사용자 삽입 이미지


패킷 수집을 중지하면 위와 같이 FTP에 관련된 모든 패킷을 잡을 수 있다. 필자의 비밀번호는 'secretpasswd' 였다는 것을 알 수 있다. 위 항목을 선택한 후 [Tool] 메뉴에서 [TCP stream] 메뉴를 클릭하면 당므과 같이 연관된 TCP 스트림을 한 눈에 볼 수 있다.




사용자 삽입 이미지


비단 비밀번호만 다른  사람이 안다고 해서 해킹이 아니다. 내가 어떤 웹사이트를 방문을 했는지, 또 사이트에서 내가 어디 어디를 방문했는지 등을 다른 사람이 안다는 것도 대단히 불쾌한 일이다.


Ethereal은 앞의 기능 이외에도 통계 그래프를 만들어 주는 기능, 디코딩하는 기능을 포함해서 다양한 기능을 가지고 있는 툴이다. 더 많은 기능에 대해서 알고 싶은 독자는 해당 웹 사이트를 참조하기 바란다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크