tcpdump

1 분 소요

tcpdump

자주 사용하는 옵션

옵션 설명
-i 패킷 정보 수집할 NIC지정
-n dns resolv 금지, host address 를 name으로 바꾸지 않고 출력 -> ip주소 그대로 출력
-nn port resolv 금지, 출력 결과의 포트를 변환 없이 그대로 출력한다. 옵션을 적용하지 않으면 가장 대중적인 프로토콜로 보여준다. ex)적용하지 않을경우 80 -> http, 443 -> https
-v 상세한 정보 출력
-vv -v 보다 상세한 정보 출력
-vvv 패킷의 모든 정보 (TTL 등을 보여준다. 단, 데이터는 볼 수 없다. Request Body, Response Body 등)
-A 패킷의 내용을 ASCII 형태로 출력한다. 데이터가 암호화 되지 않았다면, 데이터도 보여준다. (Request Body, Response Body 등) -nn -A 등으로 사용할것
-G 패킷 정보를 저장하는 파일을 일정 주기로 갱신(s)
-C 패킷 정보를 저장하는 파일을 일정 크기로 갱신(MB)
-W 위 옵션(G, C)사용시 생성할 파일 갯수 지정
-c 패킷 갯수 지정(-c 20 시 패킷 20개만 캡처)
-w 패킷 정보를 저장할 파일 (.pcap)을 지정
-Z tcpdump를 실행시킬 권한을 설정해준다. 만약 패킷 저장을 위한 파일의 권한을 다른 사용자로 주고 싶다면 사용
host 출발지, 목적지 관계 없이 해당 호스트 정보를 가진 패킷만 수집
port 출발지, 목적지 관계 없이 해당 포트 정보를 가진 패킷만 수집
dst 출발지 지정
src 목적지 지정
-x 패킷을 헥사 코드로 출력
-X 패킷을 헥사, 아스키 모두 출력
-r 파일 읽기

사용 예

tcpdump -i [캡쳐할 NIC] host [IP] -w [filename]

$ex) tcpdump -n -i eth1 host 192.168.40.201 -w test.pcap

$ tcpdump -n -G 30 -W 2 -i eth1 -w test_%Y%m%d_%H%M%S.pcap
//30초간격으로 파일2개 까지 덤프

$ tcpdump -nn -vvv -A -G 3600 -w /home/ec2-user/dump_%Y%m%d-%H%M%S.pcap -Z ec2-user host github.com and port 443

타임스탬프 추가 하지 않을경우 파일 덮어씀

tcpdump -nn -vvv src 192.168.40.85
tcpdump -nn -vvv src host 192.168.40.85
tcpdump -nn -vvv src net 192.168.40.85 mask 255.255.255.0

loopback
tcpdump -i lo

read

flag

flag 설명
S SYN(SYncronize sequence Number) 연결요청 세션 시작 단계
ACK 패킷을 잘 받았다는 응답
F FIN 정상종료를 위하여 보내는 패킷 (보낸쪽에서 연결 종료)
R RST 비정상종료를 위해 강제 연결 해제(즉시종료)
P PSH(PUSH) 이미연결 되었고, 프로세스로 데이터 전달
Urg 긴급한 데이터에 우선순위 높게 할당
. 플래그가 설정되지 않음

3번째 라인까지 3way hands shaking 4번째 라인부터 전송 끝에서 3번째줄 부터 연결 해제 과정

연속해서 S가 나오는경우 방화벽등 특정한 이유로 통신이 안될경우 SYN패킷으로 상대 체크 계속 할 경우
비활성화 된 서비스로 접속할 경우 S flag 다음 R을 보내고 클라이언트에서 R받는 즉시 종료

10:28:18.714299 192.168.40.85 > 192.168.40.91: ICMP echo request, id 1, seq 34, length 40

-X로 아스키 출력후 vi등으로 메세지 내용 검색도 추천