Wireshark Part 2 1
Index 1. Wireshark 의 Packet Capture 1. 1 Wishark 의 Packet Capture 1. 2 Trace File 열기 2. Capture Filter 2. 1 Capture Filter 의목적 2. 2 Wireshark 의기본 Capture Filter 2. 3 식별자와한정자 2. 4 기본식 2. 5 Capture Filter 생성 2. 6 Capture Filter 조합을위한연산자사용 2. 7 Capture Filter 실행 3. Display Filter 3. 1 Display Filter 의목적 3. 2 Display Filter 의기본사용 3. 3 자동완성기능을이용한 Display Filter 생성 3. 4 저장된 Display Filter 적용 3. 5 Filter 지원을위한표현식사용 3. 6 오른쪽클릭 Filtering 을사용하여 Display Filter 생성 3. 7 Display Filter 구문 3. 8 비교연산자를이용한 Display Filter 결합 3. 9 Display Filter 실수피하기 2
1. Wirshark 의 Packet Capture 1. 1 Wireshark 의 Packet Capture - Wireshark 가유선이나무선네트워크에연결되어있다면 Traffic 은 WinPcap, AirPcap, LibPcap 링크계층인터페이스중하나의인터페이스에의해처리된다. LibPcap : libpcap Library 는 *NIX(UNIX 계열 ) 호스트에서 Traffic 을 Capture 하기위한산업 표준링크계층인터페이스이다. WinPcap : libpcap 링크계층인터페이스의윈도우포트이다. WinPcap 은낮은레벨의 네트워크엑세스와 libpcap API 의윈도우버젂을제공하는드라이버로구성되어 있다. AirPcap : 윈도우운영체제에서 802.11 Traffic 을 Capture 하기위한링크계층 인터페이스와네트워크어댑터이다. AirPcap 어댑터는 WLAN(Wireless LAN) Data 를 Capture 하기위해수동모드로동작하여 Frame 을관리하고제어한다. 3
1. 2 Trace File 열기 - 추적파일 (Trace File) 을열때 WinPcap, LibPcap, AirPcap 인터페이스는 사용되지않으며, Wireshark wiretap Library 를통해처리된다. 1. 3 Wireshark 의 Packet Handling - WinPcap, AirPcap, LibPcap 에의해처리되거나 Wiretap Library 에의해 Open 되는 Trace File 은 Core Engine 에서처리한다. 4
2. Capture Filter 2. 1 Capture Filter 의목적 - Trace File 을저장할때 Packet 을 Capture 하는동안 \temp( 임시폴더 ) 나다른디렉터리에저장되지않게한다. - 기존의 Trace File( 이미저장한파일 ) 에적용할수없으며실시간으로 Capture 하는작업에서만적용된다. - 동작중인네트워크나특정유형의 Traffic 에초점을맞춰 Capture 하는 Packet 을제한하는데매우유용하며, Capture Filter 조건을통과한 Packet 은 Wireshark 의 Capture Engine 에젂달된다. - tcpdump 와동일한필터구문을사용한다. - Display Filter 처럼융통성이있거나세부적이지않으며, 자동완성기능이나오류검사컬러링기능이없다. 5
2. 2 Wireshark 의기본 Capture Filter - 따로설정을하지않아도기본적으로 Wireshark 에설정되어있는 Capture Filter 이다. - 아래의 Properties 에 filter name 과 filter string 을넣은후, 왼쪽위에 new 를눌러 Capture Filter 를추가할수도있다. filter name 에는 Capture Filter 의이름을넣고 Filter string 에는구문을넣으면된다. 6
2. 3 식별자와한정자 - Capture Filter 는식별자와한정자로구성되어있다. 식별자 (identifier) : Filtering 하려는요소이다. 예를들어, 53 번포트로부터송싞트래픽이나수싞트래픽에대한 Capture Filter 에서식별자는 53 이다. : 숫자나이름이될수있다. 한정자 (qualifier) - Capture Filter 에서는 3 가지한정자가사용된다. ㄱ. 유형한정자 (type) : 식별자가참조하는이름이나번호의유형을가리킨다. 예를들어, 53 번포트로부터송싞트래픽이나수싞트래픽에대한 Capture Filter 에서유형한정자는 포트 이다 : 유형한정자는 Host, Network, Port 3 가지이다. ㄴ. 방향한정자 (dir, direction) : 관심있는 Traffic 의흐름을표시하기위해사용한다. 일반적으로사용하는두방향한정자는 dst( 목적지 ) 와 src( 출발지 ) 이다. : 방향한정자가제공되지않으면 dst 나 src 가요구되는것으로가정한다. ㄷ. 프로토콜한정자 (proto, protocol) : tcp 나 udp 와같이특별한프로토콜에 Capture 된 Traffic 을제한하기위해사용한다. 예를들어 udp net 192.168.0 에서 udp 는프로토콜한정자이고, net 은유형한정자, 192.168.0 은식별자이다. 7
2. 4 기본식 (primitive) - Capture Filter 에서사용할수있는기본식의목록은아래와같다. dst host [host] src host [host] host [host] ether dst [ehost] ether src [ehost] ether host [ehost] gateway [host] dst net [net] src net [net] net [net] dst port [port] src port [port] less [length] greater [length] ip proto [protocol] ip6 proto [protocol] ip6 protochain ip protochain ip [broadcast] ether [multicast] [protocol] [protocol] decnet src [host] decnet dst [host] decnet host [host] vlan [vlan_id] iso proto [protocol] proto[expr:size] net [net] mask ip [netmask] ip6 arp rarp atalk aarp decnet iso stp ipx netbeui tcp udp icmp clnp esis isis 2. 5 Capture Filter 생성 - 특정네트워크장비로부터송 / 수싞되는 Traffic 을 Capture 하려면 MAC Address, IP Address, Host name 중하나의 Capture Filter 를기반으로해야한다. - 아래의표는몇가지 Capture Filter 구문의예를보여준다. Capture Filter 구문 Capture Filter 사용예설명 dst host [host] dst host www.google.com www.google.com 과연관된 IP 주소로 가는 Traffic Capture dst host [host] dst host 1.27.190.3 1.27.190.3 으로가는 Traffic Catprue ether dst [ehost] ether dst 00:01:eb:31:fb:32 ethernet 주소 00:01:eb:31:fb:32 로가는 Traffic Capture ether host [host] ether host 00:01:eb:31:fb:32 ethernet 주소 00:01:eb:31:fb:32 로부터송 / 수싞되는 Traffic Capture src net [net] src net 192.168 192.168 로시작하는모든 IP 주소 송싞되는 Traffic Capture net [net] net 1.100 1.100 으로시작하는주소로 net [net] mask [netmask] net 172.16 mask 255.240.0.0 송 / 수싞되는 Traffic Capture 172.16~172.31 로시작하는 IP 주소로 송 / 수싞되는 Traffic Capture net [net/len] net 172/12 172.16~172.31 로시작하는 IP 주소로 송 / 수싞되는 Traffic Capture 8
- 주소에대한 Capture Filter 를생성할때 host 는번호와이름으로정의할수 있다. 예를들어 www.test.com 이 1.1.1.1 의 IP 주소라면 host 1.1.1.1 과 host www.test.com 은동일한 Traffic 을 Capture 할것이다. 2. 6 Capture Filter 조합을위한연산자사용 - 좀더구체적인 Capture Filter 를만들기위해 3 개의주연산자를사용할수있다.! or not : 부정연산자 ( not tcp, tcp Packet 을제외 ) and : 연결연산자 ( tcp and udp, tcp 와 udp Packet 모두 ) or : 교대연산자 ( tcp or udp, tcp Packet 이나 udp Packet) 9
2. 7 Capture Filter 실행 - 실제 Capture Filter 를사용하여 Packet 을 Capture 해본다. - Test 를위해 dst host www.naver.com 을넣고 Capture Filter 시작 - Capture 된 Traffic 을보면 dst 가 202.131.30.11 (www.naver.com) 인 Packet 만 Capture 가되는것을볼수있다. 10
3. Display Filter 3. 1 Display Filter 의목적 - Display Filter 는사용자가정의한기준을바탕으로특정 Packet 에초점을맞출수있게해준다. 보기를원하는 Traffic 을 Filtering 하거나원하지않는 Traffic 을 Filtering 할수있다. - Capture Filter 가 BPF(berkeley packet filtering) 를사용하는반면에 Display Filter 는젂문적인 Wireshark Filter 형식을사용하며이둘은서로호환되지않는다. BPF Filter 형식은 tcpdump 에의해사용된다. 이두필터메커니즘이동일한필터구문을지원하기때문에동일한것을찾는 Capture Filter 와 Display Filter 가있을수도있다. 3. 2 Display Filter 의기본사용 - Display Filter 는상대적으로간편하며, Filter field 와 Protocol 은대부분소문자로 정의해야한다. - 기본적인 Display Filter 의사용예는아래의표와같다. tcp ip udp icmp bootp arp dns nbns * bootp : Wireshark 는오체를 Display Filter 로인식하지않는다. 오체는 bootp 의 기반이며, Wireshark 는 bootp 를, 모든 DHCP Traffic Display Filter 로인식한다. - 원하는경우에따라 Packet 의특성 ( 실제필드가기준이아닌 ) 을기반으로생성될수있다. 예를들어다음아래의 Filter 는 TCP 분석플래그 Packet 과잘못된 IP Header Checksum 을갖는 Packet 중하나를포함하는 Packet 들을표시한다. 이것은 TCP Packet 에실제 Field 가아니다. *tcp.analysis.flags *ip.checksum_bad 11
3. 3 자동완성기능을이용한 Display Filter 생성 - 사용하려는 Display Filter 구문을알고있다면 Display Filter 영역에직접입력할 수있으며, Wireshark 는 Filter 생성에도움을주는자동완성기능을제공한다. - tcp.( 점. 을포함해야한다 ) 을입력하는 Wireshark 의자동완성기능은 tcp 로시작해생성할수있는가능한 Display Filter 값을나열한다. - 배경이녹색은올바른 Display Filter 이며, 배경이빨간색인것은올바르지않은 Display Filter 이며점 (. ) 을제거해완성시키거나 Drop down List 에나타난바와같이 Display Filter 를완성시켜야한다. 12
3. 4 저장된 Display Filter 적용 - Display Filter 입력칸왼쪽에있는 Filter 버튺을눌러새로운 Display Filter 을 만들거나, 삭제또는이미저장되어있는 Display Filter 를사용할수있다. 13
3. 5 Filter 지원을위한표현식사용 - 좀더복잡한 Filter 를생성하려고하지만구문을모를때가있으며, 또한특정유형의통싞을위해사용가능한 Field 를모를수도있다. - Display Filter 입력칸오른쪽에있는 Expression 버튺을눌러표현식을사용할수있다. - 표현식은 Field name, 관계, 값, 미리정의된값과범위로구성되어있다. - 식을완성하고 OK 를누르면, Display Filter 입력칸에자동으로표현식이 입력된다. 14
3. 6 오른쪽클릭 Filtering 을사용하여 Display Filter 생성 - Packet 목록에서 Filtering 하려는 Packet 을선택한후오른쪽마우스클릭을함으로써 Filtering 할수가있다. - 사용할수있는 Filtering 의옵션을아래와같다. 옵션 Not Selected and Selected 설명 선택을기반으로배제필터를생성 기존의필터 와 선택된필터가일치하는 Packet 을 Filtering or Selected 기존의필터 또는 선택된필터가일치하는 Packet 을 and Not Selected or Not Selected Filtering 기존의필터 와 선택된필터가 일치하지않는 Packet 을 Filtering 기존의필터 또는 선택된필터가 일치하지않는 Packet 을 Filtering ㄱ. Filter 즉시적용 - Apply as Filter 를사용하여 Filter 를즉시적용할수있다. 15
ㄴ. Filter 준비적용 - 다수의연산자와복잡한 Filter 를만들때유용하다. - 즉시적용과는달리, Display Filter 입력칸에입력된다. - Display Filter 칸에입력되는것을볼수있다. 16
3. 7 Display Filter 구문 - Display Filter 구문은 Display Filter 와컬러링규칙을만드는데사용한다. Packet 상세창에표시된모든 Field 는 Filter 를생성하기위해사용될수있다. Pakcet 상세정보창에서 Field 를선택하면 Display Filter 의값이상태영역에표시된다. - Internet Protocol 의 Header length 의 Display Filter 구문은 ip.hdr_len 인것을알 수있다. 17
3. 8 비교연산자를이용한 Display Filter 결합 - 비교연산자와녺리연산자는관심있는 Traffic 을정의하기위한다수의 Filter 를결합하고, 원하지않은 Traffic( 배제필터 ) 을 Filtering 하기위한부정피연산자를제공한다. 부호텍스트설명 == eq equal to or or && and and > gt greater than < lt less than >= ge greater than or equal to <= le less than or equal to! not not!= ne not equal to contains contains matches matches *!= (ne, Not equal to) 연산자를사용하는경우 Display Filter 를노란색으로 표시한다. 이것은 Filter 가작동하지않을것이라는뜻이아니라작동하지않을 수도있다는것을경고하는것이다. * contains 연산자의의사용예 tcp contains test TCP 세그먼트에 ASCII 문자열 test 를갖는 Packet 만을 Filtering 18
3. 9 Display Filter 실수피하기 - 일반적인 Filter 의실수중하나는! 연산자나 not 피연산자를사용하는것이다. 예를들어, 1.1.1.1 주소를제외한모든 Packet 을보기위해 ip.addr!= 1.1.1.1 을입력한다. 실제 ip.addr!= 1.1.1.1 Filter 의의미는 1.1.1.1 이아닌다른값을포함하는 ip.addr 필드를갖는 Packet 을검색하는위한것이다. Packet 에두개의 IP Address 필드가있고, 두필드중하나에서 1.1.1.1 주소를갖는경우 Packet 의표시를허용한다. 첫째, Wireshark 는 Filter 가일치하는경우를보기위해 Sender IP Address field 를검색한다. 그리고 Destination IP Address Field 를검색한다. 아래의표를보며 Packet 이어떻게검사되는지확인해본다. * Display Filter 구문 -> ip.addr!= 1.1.1.1 Sender IP Address Destination IP Address Packet 의표시여부 1.1.1.1(no match) 255.255.255.255(match) Packet 이표시된다 10.9.9.9(match) 1.1.1.1(no match) Packet 이표시된다 1.1.1.1(no match) 10.9.9.9(match) Packet 이표시된다 - 정확한 Filter 구문은! ip.addr==1.1.1.1 이며,! 연산자가 ip.addr 앞에와야한다. 19