네트워크 패킷 잡기 / 패킷 복호화 하기 리눅스

네트워크에 흐르는 패킷을 잡아내는 방법이다. 방식이 tcpdump와 비슷한데
tshark를 통하여 ssl 암호화 패킷을 복호화할 수 있다.
사용 방법을 보자.

네트워크 br0의 udp 2222번 포트를 추출하여 저장한다.
# tshark -f "udp port 2222" -i br0 -w /tmp/capture.cap

files는 Kb단위이고, 최대 2GiB까지 설정 가능하다.
# tshark -f "udp port 2222" -i br0 -b filesize:1000 -b duration:10 -b files:5 -w /tmp/capture.cap

R옵션으로 조건을 설정할 수 있다.
# tshark -R "ip.addr == 192.168.0.10" -r /tmp/capture.cap

표현식도 사용할 수 있다.
# tshark  'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
         -R'http.request.method == "GET" || http.request.method == "HEAD"'


# tshark tcp port 80 or tcp port 443 -V -R "http.request"

결과에 대하여 '|'를 통하여 특정 구문을 사용할 수 있다. 
# tshark -V -R "tcp.port ==80 && (http.request || http.response)" | grep -v passwd

아래와 같이 다양한 옵션이 가능하며 -V를 사용하여 출력 결과를 print하고 $key_file을 통하여 복호화할 수 있다.
# tshark -n -o "ssl.desegment_ssl_records: TRUE" -o "ssl.desegment_ssl_application_data: FALSE" 
          -o ssl.keys_list: $ip,$port,http,$key_file"
          -R '(http || http.request.method == "GET" || http.request.method == "POST" || http.response) && 
               not http.content_type contains image && not http.request.uri matches ".gif$"
          -r $cap_file -V

자세한것은 요기 -> https://www.wireshark.org/docs/man-pages/tshark.html

덧글

댓글 입력 영역