티스토리 뷰


패킷의 흐름을 분석할 때 많이 사용하시는 프로그램 중 하나가 와이어샤크이기에 

와이어샤크의 역사, 무엇을 하는지, 사용법까지 간단하게 정리해본다.


먼저 와이어샤크의 역사를 알아보자.

와이어샤크는 처음 캔자스미주리 주의 미주리 대학교에서 "제럴드 콤즈"에 의해 만들어 졌다.

만들어진 콤즈의 첫 번째 버전의 이름은 이더리얼(Ethereal) 이다.


하지만 지금은 왜 와이어샤크일까.

그 이유는 콤즈가 직장을 옮겼는데 안타깝게도 그의 직장 동료가 이더리얼이라는 이름의 모든 권리를 가지고 있었다. 그러기에 더 이상 이더리얼을 사용할 수 없게 되어 와이어샤크라고 다시 지은 것이다.

그래서 와이어샤크의 본래 이름은 이더리얼이였었다.


두 번째로 와이어샤크가 무엇을 하는지 알아보자.

와이어샤크가 무엇을 하는지 알기위해서 먼저 스니핑과 패킷에 대해 알아야한다.

"스니핑"은 코를 킁킁거리다 라는 뜻으로 네트워크에서 패킷을 도청하여 보는 것을 뜻한다.

"패킷"은 컴퓨터가 주고 받는 데이터의 블록이다.

대충 이정도로만 알아두자.


수많은 스니핑 어플리케이션 중 하나이고, 패킷을 엿 볼 수 있는 프로그램이 와이어샤크이다.

pcap 이용하여 패킷을 포획하고 다양한 유닉스 계열 운영체제와 윈도우에서도 동작한다.

GUI가 없는 터미널 기반 버전인 티샤크도 있다.

와이어샤크는 tcpdump 와 매우 비슷하지만 필터링 옵션 등 몇 가지 추가된 점이 다르다. 


그럼 이제 사용법에 대해 알아보자.

사용할 때 사용 목적이 나뉠 수도 있다.

패킷을 분석하는 툴이기 때문에 해당 패킷을 보고 싶은 사람이 사용할 수도 있고 pcap 라이브러리를 이용해서 패킷 분석 프로그램을 개발할 수도 있다.

또 패킷 복호화를 통해 나쁜 짓도 해볼 수 있고, 보안을 배울 수도 있다.

하지만 필자 같은 경우 알아먹기 힘드니까 내 컴퓨터에서 데이터가 잘 나가고 들어오는지만 확인해 보자.


와이어 샤크를 설치부터 해보자. 사진은 파일 첨부를 하나씩 해야하기 때문에 귀찮아서 빼겠다.

두뇌에 이미지 트레이닝을 위해 그냥 해보자.


설치 할 때 설치할 메뉴에서 웬만한 것들은 설치한다.

여기서 pcap 을 이용해서 피킷을 캡쳐하기 때문에 반드시 WinPcap은 설치한다.

설치완료 후 실행하면 모니터링 할 이더넷 카드를 선택한 수 상단 왼쪽에 상어지느러미 모양을 누르자.

이제 보이는 것이 패킷을 실시간으로 잡아내는 화면 이다.

상단쪽에 컬러풀한 곳을 보면 해당 패킷이 어디서 보냈고 어디로 받았는지와 프로토콜의 정보등을 볼 수 있다.

No. : 패킷을 수집한 순서.

Time : 패킷이 수집된 시간.

Source : 패킷을 보낸 주소.

Destination : 패킷이 도착한 주소.

Protocol : 프로토콜 정보.

info : 패킷의 정보.


이 부분만 확인 해도 유익한 정보를 얻을 수 있다.

에러가 있을 때는 빨간색 혹은 검은색으로 패킷이 오고 가는 것을 확인 할 수 있다.

색도 변경 가능하다.


자 이렇게 패킷을 수집해 버리면 원하는 패킷을 보기가 어렵다.

그래서 필터링을 사용해 원하는 패킷을 봐보자.


일단 와이어샤크에는 필터링 방식이 두가지가 있다.

하나는 패킷 수집 자체에 필터를 걸어서 필터링에 적용된 패킷만 받는 "캡쳐 필터"가 있다.

이 캡쳐필터는 복잡한 Rule 을 사용하면 성능이 떨어진다.

Rule 에 일치하지 않는 패킷들은 아예수집 조차 하지 않는다.

두 번째 필터링 방식은 오가는 패킷 전체를 수집한 후, 내가 화면에서 볼 것만 필터링 하는 "디스플레이 필터" 가 있다. 이 디스플레이 필터는 복잡한 Rule 을 적용시켜도 아무런 부담이 가지 않는다.

대중적으로 가장 많이 사용하는 패킷 필터링 방식이다.


캡쳐 필터링 식을 알아보자

"Protocol" "Direction" "Host(s)" "Value" "Logical Operations" "Other expression"

ex : tcp dst 10.2.2.2 3128


Protocol : ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp

프로토콜을 지정하지 않으면 모든 프로토콜을 사용한다.


Direction : src, dst, src and dst, src or dst

출발지나 목적지를 지정하지 않으면 src or dst 키워드 사용를 사용한다.

"host 10.2.2.2" 는 "src or dst host 10.2.2.2" 와 동일하다.


Host : net, port, host, portrange

호스트를 지정하지 않으면 "host" 키워드가 사용된다.

예를 들어, "src 10.1.1.1" 은 "src host 10.1.1.1"과 같은 의미이다.


Logical Operations : not, and, or

부정연산(not) 이 가장 높은 우선순위. 논리합(or)과 논리곱(and)은 같은 우선순위를 가지며 왼쪽에서 오른쪽으로 처리한다.

예를 들어, "not tcp port 3128 and tcp port 23"은 "(not tcp port 3128) and tcp port 23"과 동일하다.

"not tcp port 3128 and tcp port 23"은 "not (tcp port 3128 and tcp port 230)"과는 동일 하지 않는다.


사용 예를 들어서 알아보자. 이것만 알게 된다면 디스플레이 캡쳐 필터링식도 쉽게 이해할 수 있을 것이다.

tcp dst port 3000

목적지가 TCP 포트 3000인 패킷이다.

ip src host 1.1.1.1

출발지 IP 주소가 1.1.1.1인 패킷이다.

host 10.1.1.1

출발지와 목적지 IP 주소가 10.1.1.1인 패킷이다.

src portrange 2000-2500

출발지의 UDP,TCP 포트가 2000-2500 사이인 패킷이다.

not icmp

icmp 패킷을 제외한 모든 패킷이다.

src host 10.1.1.1 and not dst net 10.0.0.0/8

출발지 IP 주소가 10.1.1.1 이면서 목적지 IP 네트워크가 10.0.0.0/8 이 아닌 패킷이다.

(src host 10.1.1.1 or src net 192.168.100.0/24) and tcp dst portrange 200-10000 and dst net 172.16.0.0/16

출발지 IP 주소가 10.1.1.1 이거나 출발지 네트워크가 192.168.100.0/24 인 패킷중에서 목적지 TCP 포트 범위가 200-10000 이면서, 목적지 네트워크가 172.16.0.0/16인 패킷을 뜻한다.


자 이제는 디스플레이 필터링 식이다.

"protocol" "." "String 1" "." "String 2" "Comparison operator" "Value" "Logical Operations" "Other Expression"

ex : ip.passive.ip==1.2.3.4 and not icmp


사용 예시를 알아보자.

snmp || dns || icmp

SNMP 혹은 DNS 혹은 ICMP 트레픽


ip.addr == 10.1.1.1

출발지나 목적지의 IP 주소가 10.1.1.1인 패킷


ip.src != 10.1.1.1 or ip.dst != 1.1.1.1

출발지의 IP 주소가 10.1.1.1 이 아니거나 목적지의 IP 주소가 1.1.1.1이 아닌 패킷

다른 말로 화면에 보여지는 패킷은 다음과 같음

출발지 IP 주소 : 10.1.1.1이 아닌 모든 주소, 목적지 IP주소 : 1.1.1.1이 아닌 모든 주소

그리고 출발지 IP 주소 : 모든 주소, 목적지 IP 주소 : 1.1.1.1 이 아닌 모든 주소


tcp.port == 25 출발지와 목적지의 TCP 포트가 25인 패킷


tcp.dstport == 25 목적지 tcp 포트가 25인 패킷


tcp.flags TCP플레그를 가지고 있는 패킷


tcp.flags.syn == 0x02 TCP SYN 플래그를 가지고 있는 패킷



++추가로 실제로 많이 사용하는 식은 다음과 같다.


eth.addr == 00:3F:1E:00:00:23 

출발지나 목적지 MAC 주소로 검색

ip.addr == 192.168.0.2  

출발지나 목적지 IP 주소로 검색

tcp.port == 3306 

TCp 출발지나 목저지 포트 번호로 검색

ip.src != 10.1.2.3 

출발지 IP 주소가 해당 IP 주소가 아닌것을 검색

eth.dst == 00:3f:1e:00:00:23 

목적지 MAC 주소 검색


'self training > nw' 카테고리의 다른 글

L4 - SLB  (0) 2022.12.23
NAT  (0) 2022.12.23
VXLAN 에 대해서 -NetWork 구조  (0) 2016.05.31
VXLAN 에 대해서 -개념, 왜?  (0) 2016.05.27
QoS 정리  (0) 2016.05.24
댓글