tcpdump
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등으로 메세지 내용 검색도 추천