2013년 12월 3일 화요일

tcpdump를 이용한 네트워크 패킷 분석

tcpdump는 주어진 조건을 만족하는 네트워크 인터페이스를 거치는 패킷의 헤더를 출력하는 프로그램이다. 프로그램의 특성상 네트워크 인터페이스를 매우 심도있게 사용하기 때문에 실행하는 사람은 반드시 네트워크 인터페이스에 대한 읽기 권한이 있어야 한다.

해당 애플리케이션을 루트 권한으로 실행하거나 프로그램에 SETUID 비트가 설정되어 있어야 하는 것이다. tcpdump는 Libpcap(Protocol Capture Library)를 사용한다. Libpcap 라이브러리는 플랫폼에 상관없이 동일한 방법으로 사용자 레벨에서 패킷을 캡쳐할 수 있도록 한다.

tcpdump를 아무 인자없이 실행하면 엄청나게 많은 정보가 쏟아진다. 실제 사용시에는 여러가지 조건을 주어 필요한 정보만 뽑아내야 하므로 tcpdump의 주요 옵션을 살펴보는 것이 필요하다.

조건식을 주어서 출력할 패킷을 지정할 수도 있고, Type을 이용하여 host, net, port 등을 지정할 수도 있으며, dir을 이용하여 특정한 전송 방향을 지정할 수 있다. 또한 ip, arp, tcp, udp 등의 프로토콜을 지정할 수 있다. 이외에도 and(&&), or(||), not(!) 등을 사용하여 보다 자세히 제한할 수도 있다. 

1. tcpdump 설치
- network packet capture tool
- www.sunfreeware.com에서 tcpdump-3.7.1.tar.gz 와 libpcap-0.7.1-sol7-sparc-local.gz
를 다운 받는다.( 운영체체에 맞는 것을 다운로드 한다 )

1.1 libpcap 설치
# gzip -d libpcap-0.7.1-sol7-sparc-local.gz
# pkgadd -d libpcap-0.7.1-sol7-sparc-local

1.2 tcpdump 설치
# gzip -d tcpdump-3.7.1.tar.gz
# tar xvf tcpdump-3.7.1.tar
# cd tcpdump-3.7.1
# ./configure
# make
# make install

위와 같이 설치하면 /usr/local/sbin에 tcpdump 실행 파일이 생성된다.


2. 간단한 사용법 예제
# tcpdump host www --> hostname 대신 ip 사용가능
# tcpdump host 192.168.0.150
# tcpdump net 211.11.3.11
# tcpdump -w tcpdump.txt host www  --> 출력결과를 파일로 저장
# tcpdump -r tcpdump.txt  --> 파일로 저장된 내용을 읽는다
# tcpdump -v --> 자세히
# tcpdump tcp port 23 and 21
# tcpdump arp host www

# tcpdump ip host TEST01 and not TEST02  --> TEST01에서 TEST02를 제외한 모든 호스트로 옮겨다니는 ip 패킷 출력


3. tcpdump를 이용하여 필요한 패킷의 헤더만 추출하기 위한 옵션
-a
네트워크와 브로드캐스트 주소를 이름으로 바꾼다.

-c n
지정된 n 개수 만큼 패킷을 캡쳐한 후 종료한다.

-i device
해당 device의 패킷만 캡쳐한다. 지정하지 않으면 시스템의 인터페이스 리스트를 뒤져서 가장 낮은 번호의 인터페이스를 선택한다. 이때 loopback은 제외한다.

-f 파일
필터 표현의 입력으로 파일을 받아들인다.

-q
간략한 정보만 출력한다.

-w
캡쳐한 패킷을 파일로 저장한다. '-r' 옵션을 이용하여 이후에 분석할 수 있다.

-r file
'-w' 옵션으로 만들어진 파일에서 패킷을 읽어들인다.

-s length
패킷에서 추출할 길이를 지정한다. 기본값은 68바이트이며 프로토콜에 따라 신중하게 수정해야 한다.

-v
자세한 정보를 보여준다.

댓글 없음:

댓글 쓰기