티스토리 뷰

Study/Network

tshark 사용하기

pursh 2014. 2. 21. 11:39

참조 : Instant Traffic Analysis with Tshark How-to

 

캡쳐할 인터페이스 확인하기(-D)

 

# tshark -D 

 

윈도우에서도 동일하게 명령어가 적용된다.

캡처할 때 인터페이스 앞에 있는 번호를 사용해도 되고, 뒤에 인터페이스명을 사용해도 된다.

그런데 윈도오는 인터페이스가 길게 나오기 때문에 번호를 사용하는게 더 수월할 것 같다.

 

 

 

 

패킷 캡처 필터 사용하기(-f)

 

패킷 캡처 필터는 어떤 패킷을 캡처할 것인지 지정하는 것이다. 인터페이스에 들어오는 모든 패킷을 덤프하면 컨텍스트 전환 때문에 CPU에 부하를 주게 된다. 그래서 보고자 하는 패킷만 캡처하면 시스템에 부하를 줄여줄 수 있다.

캡처 필터는 BFP(Berkeley Packet Filter)를 사용한다. 즉, tcpdump에서 사용한 필터를 입력하면 된다.

 

# tshark -nni eth0 -f 'tcp port 80'  --> 80/tcp 패킷만 캡처한다.

 

# tshark -nni eth0 -f 'icmp'  --> ICMP 패킷만 캡처한다.

 

 

 

tshark(wireshark) 자체 필터 사용하기(-R)

 

위에서 사용한 패킷 캡처 필터와는 다른 것이다.

패킷필터는 dumpcap에서 처리할 패킷을 설정하는 것이고, tshark 필터는 dumpcap에서 처리된 패킷 중에서 보고자 하는 패킷만을 보고 싶을 때 쓰는 것이다.

즉, 캡처되고 있는 패킷 중에서 보고자 하는 것을 선별해서 보는 것이다.

 

# tshark -nni eth0 -R "tcp.port eq 80"  --> 80/tcp 패킷만 보여준다.

 

'tcp.port'는 tshark에서 지원하는 필터값이다. TCP 헤더 내 포트를 확인하는 필터이다.

원하는 필터는 -G 옵션을 사용해서 확인 할 수 있다.

 

# tshark -G | cut -f3 | grep '^tcp'

 

-G 옵션을 모든 필터를 다 보여준다.

cut을 사용해서 3번째 컬럼에 오는 것만 따로 볼 수 있다.(awk를 사용해서 볼 수도 있으나 cut이 간단해서 cut을 사용한다.

grep을 통해서 tcp로 시작(^)하는 값을 보여주게 한다.

 

tshark 필터는 위헤서 처럼 단순 포트를 구분해서 보기보다는 어플리케이션단에 들어있는 값을 필터값으로 사용할 때 많이 쓴다.

 

# tshark -nni eth0 -R "tcp.request.method eq GET" 

   -->웹페이지 요청할 때 GET method를 사용하는 패킷을 확인

 

이처럼 어플래케이션단을 확인할 때 유용하다.

 

'eq' 외에서 matches, contains 등도 사용가능하다.

'contains'는 옵션 없이 사용하는 grep 명령어라고 볼 수 있다.

'matches'는 정규표현식이 사용가능하다. 예를 들어 exploit을 시도하는 패킷을 확인하고자 할 때는 아래와 같이 사용할수 있다.

# tshark -nni eth0 -R 'tcp matches "([\x41-\x5A,\x90])\\1{200,}"' -q

  -->TCP 패킷 내에서 연속된 문자열과 Null 문자가 포함된 패킷을 확인할 수 있다.

 

앞으로도 계속 보겠지만 필터에서 값을 구분할 때는 우선 "(double quote)를 먼저 사용해보고 에러가 뜨는 '(single quote)를 사용하자. 윈도우에서 값 구분을 '(single quote)로 하면 syntax error가 뜬다.

몇 번해보면 그 때 상황에 맞추어서 사용할 수 있을 것이다.

 

추가로 필터를 여러가 사용하고자 하면 '&&(and)' 나 '||(or)'를 사용해서 여러개의 필터를 줄 수 있다.

 

 

출력하는 열의 이름과 형식 지정하기(-o)

 

 

 

 

출력 방식 지정하기(-T, -e, -E)

 

 

 

 

파일로 캡처하기(-w, -b)

 

실시간으로 캡처하면서 볼 수도 있지만 파일로 저장해서 봐야 할 때도 있다.

그 때는 -w <filename>을 사용해서 파일로 저장할 수 있다.

 

# tshark -nni eth0 -w test.pcap

 

위에서처럼 저장하면 test.pcap 파일 안에만 저장하게 된다.

오래 동안 캡처 후 저장하면 파일 사이즈가 커지게 되고 나중에 분석할 때 시간이 오래 걸리게 되기 때문에 저장할 때 파일사이즈나 시간을 주어서 여러 개 파일로 저장할 수 있다.

 

-b filesize:1024   --> 1024kbytes 단위로 파일을 생성한다.

-b files:5   ->ring buffer를 사용하는 것으로 파일 5개 안에서 가장 오래된 것을 삭제하면서 순환되어 저장된다.

-b duration:10  --> 10초 단위로 파일에 저장한다.

 

일반적으로는 파일 사이즈로 나누어서 저장할 것이다. 추가로 ring buffer도..

 

# tshark -nni eth0 -w test.pcap -b filesize:1024 

    -->1M(1024k) 단위로 파일을 생성해서 저장

# tshark -nni eth0 -w test.pcap -b duration:10  

    --> 10초 단위로 파일을 생성해서 저장

# tshark -nni eth0 -w test.pcap -b filesize:1024 -b files:5 

    --> 5개의 파일을 순환하면서 저장, 각 파일 사이즈는 1M

 

 

캡처한 파일 불러오기(-r)

 

# tshark -r test.pcap

 

파일을 불러올 때 tshark 필터를 같이 사용하면 보다 쉽게 패킷을 구분해서 볼 수 있다.

 

 

저장된 패킷 덤프에서 특정 패킷만 따로 저장하기

 

# tshark -r test.pcap -R "tcp.port eq 80" -w test_80.pcap

   --> test.pcap 에서 80/tcp 패킷만 test_80.pcap 파일에 저장

 

'Study > Network' 카테고리의 다른 글

mergecap으로 pcap 파일 결합하기  (0) 2014.04.16
PCAP File Signature  (0) 2014.04.09
대용량 패킷 분석 #3 - tshark 통계 생성  (0) 2014.02.10
tshark man page  (0) 2014.02.10
대용량 패킷 분석 #2 - capinfos  (0) 2014.02.10
댓글