1. tcpdump (유닉스용) / windump (윈도우즈용)
ㅇ CLI 기반의 패킷 캡쳐 모니터링을 위한 유틸리티 프로그램
ㅇ (특징)
- `실시간 모니터링` 및 `미리 캡쳐된 파일의 모니터링` 모두 가능
- tcpdump 라는 명칭 그 이상으로, 계층 1 ~ 계층 7까지 `모든 계층` 대부분의 패킷을 볼 수 있음
- 각 패킷별로, 송수신 IP주소,타임스탬프 등 `프로토콜 세부사항`을 출력함
ㅇ (기본 출력 형식)
- src > dst: flags data-seqno ack window urg
ㅇ (참고)
- 패킷별 보다 자세한 분석은 다른 툴(tcppreplay,tcpopera 등) 사용이 필요함
- GUI 기반의 패킷 캡쳐,분석용 프로그램 例)로는, 와이어샤크(WireShark) 등 참조
ㅇ (작성)
- 1987년 로렌스 버클리 연구소의 밴 제이콥슨,크레이그 레레스,스티브 맥캔에 의해 작성됨
2. tcpdump/windump 활용 例
ㅇ 네트워크 상의 패킷 캡쳐용 API 기동
* (tcpdump 사용 전에 관리자 권한으로 반드시 수행 필요 ☞ Promiscuous Mode)
- (유닉스 계열) libpcap
- (윈도우즈 계열) WinPcap ☞ www.winpcap.org
. 윈도우즈 명령창(관리자 권한)에서, net start npf 를 입력하여 실행
. (NPF : NetGroup Packet Filter Driver)
ㅇ 인터페이스 선택 (여러 인터페이스가 있을 경우 해당되는 것을 선택 필요)
- tcpdump -i 인터페이스번호
ㅇ 필터 사용 (너무 빨리 스크롤되므로, 화면 출력량을 줄여주어, 매우 유용)
- IP 주소 또는 호스트명 지정
. tcpdump host 192.168.0.2 또는 tcpdump host www.ktword.co.kr
- 수신지 또는 발신지 지정
. (송신지 만) tcpdump src 192.168.0.1
. (수신지 만) tcpdump dst 192.168.0.2
. (송수 모두) tcpdump 'src 192.168.0.1 and dst 192.168.0.2'
- 서브네트워크 지정 (CIDR 표기 방식)
. tcpdump net 192.168.0.0/24
* 여러 필터 동시 사용 例
. tcpdump 'tcp and src port 80 and net 192.168.1.0/24'
.. 프로토콜 tcp, 송신지 포트번호 80, 서브네트워크 192.168.1.0/24에 관련된 패킷 만
ㅇ 캡쳐 내용을 파일로 저장 및 읽기
- (쓰기) tcpdump -w 파일명 ...
- (읽기) tcpdump -r 파일명 ...
3. 옵션 사용 예시
ㅇ tcpdump
tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX#] [ -B size ] [ -c count ] [ -C file_size ]
[ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ]
[ -j tstamptype ] [ -M secret ] [ --number ] [ -Q in|out|inout ]
[ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
[ --immediate-mode ] [ -T type ] [ --version ] [ -V file ] [ -w file ]
[ -W filecount ] [ -y datalinktype ] [ -z command ]
[ -Z user ]
[ expression ]
ㅇ windump
windump [-aAdDefhlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ]
[ -E algo:secret ] [ -F file ] [ -i interface ] [ -M secret ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ] [ -y datalinktype ] [ -Z user ]
[ expression ]
※ (파라미터 설명)
- 주요 명령/지시자
. -D : 현재 유효한 네트워크 인터페이스 리스트 출력 (ifconfig -a와 유사)
. -f : 로컬이 아닌 모든 원격 IP 주소를 출력
. -n : tcpdump가 DNS lookup을 통해 IP 주소를 호스트명으로 해석 변환하지 않게 함
. -S : TCP에서 상대 순서번호가 아닌 절대 순서번호를 출력
. -vv : 부가적인 설명문을 포함시켜 보여줌
. -x : 패킷 내용을 16 진수로 출력
. -X : 패킷 내용을 16 진수 및 아스키 형태로 출력
. -c 패킷수 : 특정 갯수의 패킷 만을 캡처 함
. -i 인터페이스명 : 캡처할 네트워크 인터페이스
.. -i : 뒤에 명칭 지정 않으면, 모든 네트워크 인터페이스를 대상으로 함
. -s 크기 : 캡처할 크기 (스냅샷 크기)
. -r 파일명 : 특정 파일에서 읽기
. -w 파일명 : 특정 파일로 쓰기 저장
- [expression]은 BPF(Berkely Packet Filter)라는 저수준 패킷 필터링 구문 ☞ BPF 구문 참조