DASAN Networks DASAN Networks, Inc. 6F Fine Venture Building 345-1 Yatap-1Dong Bundang-gu, Seongnam, Gyeonggi-do, Korea TEL) 82-221-725-9500 http://www.dasannetworks.com Document System of DASAN Networks Tcpdump 사용설명서 Written by TS1 Team In Jun 2005
Tcpdump 란? Tcpdump 는주어진조건식을만족하는네트워크인터페이스를거치는패킷들의헤더들을출력해주는프로그램이다. Tcpdump의옵션들 -a : Network & Broadcast 주소들을이름들로바꾼다. -c Number : 제시된수의패킷을받은후종료한다. -d : comile된 packet-matching code를사람이읽을수있도록바꾸어표준출력으로출력하고, 종료한다. -dd : packet-matching code를 C program의일부로출력한다. -ddd : packet-matching code를숫자로출력한다. -e : 출력되는각각의행에대해서 link-level 헤더를출력한다. -f : 외부의 internet address를가급적심볼로출력한다 (Sun의 yp server와의사용은가급적피하자 ). -F file : filter 표현의입력으로파일을받아들인다. 커맨드라인에주어진추가의표현들은모두무시된다. -i device : 어느인터페이스를경유하는패킷들을잡을지지정한다. 지정되지않으면시스템의인터페이스리스트를뒤져서가장낮은번호를가진인터페이스를선택한다 ( 이때 loopback은제외된다 ). -l : 표준출력으로나가는데이터들을 line buffering한다. 다른프로그램에서 tcpdump로부터데이터를받고자할때, 유용하다. -n : 모든주소들을번역하지않는다 (port, host address 등등 ) -N : 호스트이름을출력할때, 도메인을찍지않는다. -O : packet-matching code optimizer를실행하지않는다. 이옵션은 optimizer에있는버그를찾을때나쓰인다. -p : 인터페이스를 promiscuous mode로두지않는다. -q : 프로토콜에대한정보를덜출력한다. 따라서출력되는라인이좀더짧아진다. -r file : 패킷들을 '-w' 옵션으로만들어진파일로부터읽어들인다. 파일에 "-" 가사용되면표준입력을통해서받아들인다. -s length: 패킷들로부터추출하는샘플을 default값인 68Byte외의값으로설정할때사용한다 (SunOS의 NIT에서는최소가 96Byte이다 ). 68Byte는 IP, ICMP, TCP, UDP등에적절한값이지만 Name Server나 NFS 패킷들의경우에는프로토콜의정보들을 Truncation할우려가있다. 이옵션을수정할때는신중해야만한다. 이유는샘플사이즈를크게잡으면곧패킷하나하나를처리하는데시간이더걸릴뿐만아니라패킷버퍼의사이즈도자연히작아지게되어손실되는패킷들이발생할수있기때문이다. 또, 작게잡으면그만큼의정보를잃게되는것이다. 따라서가급적캡춰하고자하는프로토콜의헤더사이즈에가깝게잡아주어야한다. -T type : 조건식에의해선택된패킷들을명시된형식으로표시한다. type에는다음과같은것들이올수있다. rpc(remote Procedure Call), rtp(real-time Applications protocol), rtcp(real-time Application control protocal), vat(visual Audio Tool), wb(distributed White Board) -S : TCP sequence번호를상대적인번호가아닌절대적인번호로출력한다. -t : 출력되는각각의라인에시간을출력하지않는다. -tt : 출력되는각각의라인에형식이없는시간들을출력한다. -v : 좀더많은정보들을출력한다. -vv : '-v' 보다좀더많은정보들을출력한다. -w : 캡춰한패킷들을분석해서출력하는대신에그대로파일에저장한다. -x : 각각의패킷을헥사코드로출력한다.
조건식 (expression) 옵션의제일마지막인조건식은어떤패킷들을출력할지를선택하는데쓰인다. 조건식이주어지지않는다면모든패킷들이그대상이될것이다. 일단주어지면, 아무리패킷들이많아도조건식에부합하는패킷만을출력한다. 조건식들은하나또는몇개의 primitive들로구성되어있다. primitive들은보통하나혹은몇개의 qualifier들다음에오는하나의값으로이루어진다. Qualifier들은모두 3 종류이며다음과같다. type : 주어진값의종류가무엇인지를나타낸다. 가능한 type들은 'host', 'net', 'port' 가있다. type이없는값들은 type을 host라가정한다. dir : id로부터의어떤특정한전송방향을나타낸다. 가능한방향은 'src', 'dst', 'src or dst', 'src and dst' 이다. 만약방향이정해지지않았다면, src or dst라가정한다. "For `null' link layers (i.e. point to point protocols such as slip) the inb ound and out bound qualifiers can be used to specify a desired direction." proto : 매칭을특정프로토콜에한해서수행한다. 가능한프로토콜들은 ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp, udp이다. 만약프로토콜이명시되지않았다면, 해당하는값의 type에관련된모든프로토콜들이그대상이된다. 이밖에도위의패턴을따르지않는 Primitive들이존재한다 (gateway, broadcst, less, greater, 산술식 ). 좀더정교한조건식들을사용하려면, 'and(&&)', 'or( )', 'not(!)' 들을사용하여여러 primitive들을연결하면된다. 같은표현들은생략될수있다. 사용가능한 Primitive 들 dst host HOST : packet의 IP destination 항목이 HOST일때참이된다. src host HOST : packet의 IP source 항목이 HOST일때참이된다. host HOST : IP source, IP destination 항목중어느하나라도 HOST이면참이다. ether dst ehost : ethernet destination 주소가 ehost일때참이다. ether src ehost : ethernet source 주소가 ehost일때참이다. ether host ehost : ethernet source, destination 항목들중어느하나라도 ehost이면참이다. gateway host : 패킷이 host를게이트웨이로사용하면참이다. 이말의의미는 ethernet sour ce나 destination 항목은 host이지만, IP source와 destination은 host가아닐때를말한다. dst net NET : 패킷의 IP destination 주소가 NET의 network number를가지고있을때참이다. src net NET : 패킷의 IP source 주소가 NET의 network number를가지고있을때참이다. net NET : 패킷의 IP source 주소혹은 destination 주소가 NET의 network number를가지고있을때참이다. net netmask mask : IP 어드레스가지정된 netmask를통해서 net과매칭되면참이다. net net/len : IP 어드레스가 netmask와 len 비트만큼매치되면참이다. dst port PORT : 패킷이 ip/tcp, ip/udp 프로토콜의패킷이고 destination port의값이 PORT일때참이다. port는 /etc/services에명시된이름일수도있고그냥숫자일수도있다. 만약이름이사용됐다면 port 번호와프로토콜이같이체크될것이다. 만약숫자나불확실한이름이사용됐을경우에는 port 번호만이체크될것이다. src port PORT : 패킷의 source port의값으로 PORT를가지면참이다. port PORT : 패킷의 source, destination port 중에하나라도 PORT이면참이다. less length : 패킷이 length보다짧거나같으면참이다.(len <= length) greater length : 패킷이 length보다짧거나같으면참이다.(len >= length) ip proto protocol : 패킷이지정된종류의프로토콜의 ip패킷이면참이다. Protocol은 icmp, igrp, udp, nd, tcp 중의하나혹은몇개가될수있다. 주의할점은 tcp, udp, icmp들은 '\' 로 escape되어야한다.
ehter broadcast : 패킷이 ethernet broadcast 패킷이라면참이다. ehter는생략가능하다. ip broadcast : 패킷이 IP broadcast 패킷이라면참이다. ether multicast : 패킷이 IP multicast 패킷이라면참이다. ether proto protocol : 패킷이 ether type의 protocol이라면참이다. protocol은 ip, arp, rarp 중에하나혹은몇개가될수있다. ip proto protocol에서와마찬가지로 ip, arp, rarp는 escape 되어야한다. decnet src host : 만약 DECNET의 source address가 host이면참이다. 이어드레스는 '10.123' 이나 DECNET의 host name일수있다. DECNET host name은 DECNET에서돌아가도록설정된 Ultrix 시스템에서만사용가능하다. decnet dst host : DECNET destination address가 host이면참이다. decnet host HOST : DECNET source, destination address중의하나라도 HOST이면참이다. ip, arp, rarp, decent : ether proto [ip arp rarp decnet] 의약어 lat, moprc, mop이 : ether proto [lat moprc mopdl] 의약어 tcp, udp, icmp : ip proto [tcp udp icmp] 의약어 expr relop expr : EXPR proto [expr:size] 의형식을띤다. proto, expr, size에올수있는것들은다음과같다. proto : ether, fddi, ip, arp, rarp, tcp, udp, icmp expr : indicate Byte offset of packet of proto size : optional. indicate the size of bytes in field of interest default is one, and can be two or four RELOP!=, =, <=, >=, etc. 이조건식을사용하기위해서는먼저해당하는 Protocol(proto) 의헤더에관련된것들을자세히알아야만한다. proto에는대상이될프로토콜을지정한다. expr에는프로토콜헤더의처음부터의 Byte Offset을지정하는식이들어가게된다. Size는 Option이며지정이안되어있을경우에는자동으로 1byte를지칭한다. 따라서이조건식을사용하게되면헤더에포함된정보를 Bitmask를사용하여직접원하는패킷인지를가려낼수있기때문에, 보다정밀한사용이가능하게된다.
Tcpdump 의사용예제들 br1 interface에서 10.1.1.1의호스트로부터 Input, Output 패킷들을출력 # tcpdump i br1 host 10.1.1.1 br1 interface에서 10.1.1.1에서 100.1.1.1을제외한모든호스트로날아다니는 IP 패킷들을출력 # tcpdump i br1 ip host 10.1.1.1 and not 100.1.1.1 br1 interface 거치는 ftp에관련된패킷들을출력 # tcpdump i br1 port 21 or 20 System에 Telnet 접속후 25번 Uplink Port에서 TCP 23번을제외하고 ICMP Packet을출력 # tcpdump i eth25 not port 23 and icmp 가입자 1번 Port에서들어오는 Packet중 Ether Broadcast만출력 # tcpdump i eth01 ether broadcast 가입자 1번 Port에서들어오는 Packet중 IP Broadcast만출력 # tcpdump i eth01 ip broadcast br1 interface 에서들어오는모든 Packet을출력 # tcpdump i br1
3방향핸드쉐이크는다음과같이진행 클라이언트는서버에 TCP연결요구신호로 SYN 보냄 새로운 SYN에의해신호화된연결요구, 요청에대한 ACK보냄 ( 서버 ) SYN과ACK를받고계속연결유지시, 마지막하나의 ACK를서버에보냄 예제 )TCPdump를사용한 3방향핸드쉐이크 tclient.net.39904 >telnet.com.23: S 733381829(0) win 8760 <mss 1460>(DF) telnet.com.23 >tclient.net.39904: S 1192930639:1192930639(0) ack 733381830 win -> 1024 <mss 1460>(DF) tclient.net.39904>telnet.com.23:. ack 1 win 8760 세션을종료방법 1. 정상적인방법 TCP세션을종료하구싶을경우, FIN신호를보냄 수신호스트는 ACK로다시신호를보냄 (half close) 2. 정상적인방법의예 클라이언트는 FIN으로종료하고, 서버가ACK를실행 tclient.net.39904 > telnet.com.23: F 14:14(0) ack win 8760(DF) telnet.com.23 > tclient.net.39904:. Ack 15 win 1024(DF) 서버는 FIN으로종료하고, 클라이언트가 ACK를다음과같이실행 telnet.com.23 > tclient.net.39904: F 186:186(0) ack win 1024(DF) tclient.net.39904 > telnet.com.23:. Ack 187 8760 (DF) 3. 비정상적인종료방법 갑작스럽고, 예기치못한비정상적인종료 하나의호스트가다른쪽에 RESET을보냄으로종료됨 4. 비정상적인종료방법예 tclient.net.39904 > telnet.com.telnet: R 28:28(0) ack 1 win 8760(DF) 데이터전송 TCP 가연결을시작하는이유는어떠한데이터를전송하기위해연결 3방향핸드쉐이크후와종료전에, tclient.net과 telnet.com 사이의예 tclient.net.39904 > telnet.com.23 : P 1:28(27) ack 1 win 8760 telnet.com.23 > tclient.net.39904: P 1:14(13) ack 1 win 1024 telnet.com.23 > tclient.net.39904: P 14:23(9) ack 28 win 1024
TCP Flag 정상적인 TCP 연결은하나혹은그이상의플래그를가짐 ( 연결구분 ) Tcp 플래그 플래그표현 플래그의미 SYN S tcp 연결의l 첫번째부분인세션연결요청 ACK ack 송신자로부터데이터영수증으로받음을알림다른플래그와함께결합하여사용, 부가적가능 FIN F 수신호스트로의연결을정상적으로마칠때사용 RESET R 수신호스트와의연결을즉시종료하기위해사용 PUSH P 응용소프트웨어데이터를송신호스토로 전송 데이터수신시에버퍼가채워지기를기다리지않고, 어플리케이션으로전달 (telnet) 대역폭의효율보다는응답성에초점 URGENT urg 긴급한 데이터가다른데이터에우선함 ftp 다운로드시멈출때 (Ctrl +C) Placeholder. 연결과정이 SYN,FIN,RESET이나 PUSH 플래그를가지고있지않다면, 마침표 (.) 가목적지포트후에표시 Tcpdump 의일반적인포맷 09:32:43:910000 nmap.edu.1173 > dns.net.21: S 62697789:62697789(0) win 512 TCPdump 결과는유일하게구별, 플래그필드와시퀀스숫자가 TCP의특징을보여줌 > 는방향을나타낸다. 현상태는왼쪽은 source 오른쪽은 destination이다. Nmap.edu : 출발지호스트명 1173 : 출발지포트번호거나포트서비스 dns.net : 목적지호스트번호 21 : 목적지포트번호 S : TCP 플래그. S는 TCP연결을시작하기위해요청하는 SYN 플래그를나타냄 F(finish) : connection을끊을때 S(synch) : 통신전후에 Synch을맞출때 P(push) : data를이동시킬때 R(reset) : connection을 reset시킬때사용한다.. (no flag) 62697789:62697789(0) TCP 시작시퀀스번호 : TCP 종료시퀀스번호
src > dst: flags data-seqno ack window urgent options Data-seqno : 패킷이쪼개진데이터에서의패킷의 sequence number Ack : 다음받길희망하는 sequence number Window : 이 connection에서다른방향으로의받을수있는 window byte의남는 space Urg : tcp에서의 urgent flag Options : option 사항기술