12. tcpdump
1) Tcpdump는 네트워크 인터페이스를 거치는 패킷의 헤더를 출력해 주는 프로그램이다.
- command line으로 바로 실행해서 볼 수 잇고, txt 파일로 저장 가능
- tcpdump로 패킷 캡처 후, whireshark에서 분석가능.
2) 보안관점으로 보면, 스니핑 도구의 일종으로 볼수 있다. 왜냐하면 자신의 컴퓨터로 들어오는 모든 패킷의 내용을 도청이 가능하며, 공격자를 추적 및 공격 유형 분석을 위한 패킷 분석 시에 활용할 수 있는 도구이다.
3) tcpdump는 유닉스/리눅스 계열의 명령어이다.
명령어 사용법
tcpdump [options] [expression] [host]
[옵션]
[ -AdDefIKlLnNOpqRStuUvxX ][ -B buffer_size ][ -c count ][ -C file_size ][ -G rotate_seconds ][ -F file ][ -i interface ][ -m module ][ -M secret ][ -r file ][ -s snaplen ][ -T type ][ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ][ -z postrotate-command ][ -Z user ]
명령어 사용 예시 :
*우선, and(&&), or(||), not(!) 조합 및 (괄호)로 묶는게 가능하다.
▶ tcpdump : tcp/udp + port 번호, host src/dst + 주소
# tcpdump host 192.168.0.1 // host ip는 ip로 들어가거나, 나가는 양방향 패킷을 모여줌.
# tcpdump udp # tcpdump tcp port 80
# tcpdump port http
# tcpdump src 192.168.0.1 //출발지가 192.168.0.1인것 지정
# tcpdump dst 192.168.0.2 //목적지가 192.168.0.1인것 지정
# tcpdump net 192.168.0.1/24 //CIDR 포멧
# tcpdump tcp and src port 80 // tcp패킷중에 src포트가 80인 것
# tcpdump 'tcp port 80 and (dst 192.168.0.2 and 192.168.0.3)' //''가 반드시 있어야 명령어가 먹는다.
▶ tcpdump -c 숫자 : 지정한 숫자만큼 패킷을 수신
# tcpdump -c 5 // 5개의 패킷만 보여준다.
▶ tcpdump - n : 주소를 번역하지 않음.
▶ tcpdump -i 인테페이스
(인터페이스를 정하지 않으면, tcpdump는 시스템 인터페이스 목록에서 가장 낮은 숫자를 고름.)
# tcpdump -i eth0 // 인터페이스 eth0 정보를 보여줌.
# tcpdump -i eth0 src 172.0.0.1
# tcpdump -i eth0 dst 172.0.0.1
# tcpdump -i eht0 src 192.168.0.1 and tcp port 80
▶ tcpdump -w 쓰기(write), -r 읽기(read) 파일명
# tcpdump -w tcpdump.log //결과를 파일로 저장(bin 파일 형식) (w:write)
# tcpdump -r tcpdump.log //저장한 파일을 읽음(r : read)