본문 바로가기
Development/Network

tshark 설치하고 사용하기

by 드로니뚜벅이 2023. 11. 23.

tshark는 cli 환경에서 wireshark를 이용하는 패키지로 tcp dump 대신 사용할 수도 있습니다.

wireshark 커맨드 라인 버전으로 네트워크 트래픽 분석 툴입니다.

설치방법:

$ sudo apt install tshark
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
  tshark
0개 업그레이드, 1개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
191 k바이트 아카이브를 받아야 합니다.
이 작업 후 444 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://ppa.launchpad.net/wireshark-dev/stable/ubuntu focal/main amd64 tshark amd64 4.0.6-1~exp1~ubuntu20.04.0~ppa1 [191 kB]
내려받기 191 k바이트, 소요시간 3초 (75.2 k바이트/초)
Selecting previously unselected package tshark.
(데이터베이스 읽는중 ...현재 396471개의 파일과 디렉터리가 설치
되어 있습니다.)
Preparing to unpack .../tshark_4.0.6-1~exp1~ubuntu20.04.0~ppa1_
amd64.deb ...
Unpacking tshark (4.0.6-1~exp1~ubuntu20.04.0~ppa1) ...
tshark (4.0.6-1~exp1~ubuntu20.04.0~ppa1) 설정하는 중입니다 ...
Processing triggers for man-db (2.9.1-1) ...

$

 

설치 후 -D 옵션을 사용해 시스템에서 이용 가능한 네트워크 인터페이스를 확인하려면 다음 명령어를 실행합니다.

$ sudo tshark -D
Running as user "root" and group "root". This could be dangerous.
1. eth0
2. lo (Loopback)
3. any
4. docker0
5. br-47417225a3b1
6. bluetooth-monitor
7. nflog
8. nfqueue
9. ciscodump (Cisco remote capture)
10. dpauxmon (DisplayPort AUX channel monitor capture)
11. randpkt (Random packet generator)
12. sdjournal (systemd Journal Export)
13. sshdump (SSH remote capture)
14. udpdump (UDP Listener remote capture)
15. wifidump (Wi-Fi remote capture)

$

 

나는 보통 다음과 같은 옵션으로 패킷을 필터링 하여 캡쳐한다.

$ sudo tshark -i any
Running as user "root" and group "root". This could be dangerous.
Capturing on 'any'
 ** (tshark:49144) 10:06:20.878077 [Main MESSAGE] -- Capture started.
 ** (tshark:49144) 10:06:20.878126 [Main MESSAGE] -- File: "/tmp/wireshark_anyU3WEE2.pcapng"
    1 0.000000000 192.168.6.196 → 192.168.7.255 UDP 188 58601 → 51007 Len=144
    2 0.399410763 192.168.6.161 → 211.62.105.166 TCP 56 58636 → 443 [ACK] Seq=1 Ack=1 Win=6506 Len=0
    3 0.400838086 211.62.105.166 → 192.168.6.161 TCP 62 [TCP ACKed unseen segment] 443 → 58636 [ACK] Seq=1 Ack=2 Win=512 Len=0
    4 0.488591845 192.168.6.105 → 192.168.6.255 UDP 251 51780 → 59870 Len=207
    5 0.488592262 192.168.6.105 → 192.168.6.255 UDP 228 51782 → 59870 Len=184
    6 0.942978640 192.168.6.128 → 192.168.7.255 BROWSER 245 Host Announcement DESKTOP-PJ1U714, Workstation, Server, NT Workstation
^Ctshark: 
6 packets captured

$ sudo tshark -i 1 -Y 'tcp.port == 80 && ip.addr == 192.168.1.10' -t a --color

각각의 아규먼츠를 설명 하자면

tshark -i 1 -Y 'tcp.port == 80 && ip.addr == 192.168.1.10' -t a --color

이 부분은 인터페이스를 선택하는 부분임..

아까 -D 옵션을 주고 명령행을 실행하면 설치된 NIC를 보여준다고 했다...

거기서 1번 NIC를 캡쳐하겠다는 의미이다.

tshark -i 1 -Y 'tcp.port == 80 && ip.addr == 192.168.1.10' -t a --color

-Y 옵션은 wireshark에서 사용하는 필터링 String 방식을 사용하겠다는 것임...
참고로 얼마전까지는 -R 옵션을 사용했었는데 deprecate 되었다....

-f로 바꿔쓰면 tcpdump와 같은 방식으로 사용가능

tshark -i 1 -Y 'tcp.port == 80 && ip.addr == 192.168.1.10' -t a --color

필터할 string을 적어준다.. && 연산자를 사용해 두가지 조건을 준것이다

tshark -i 1 -Y 'tcp.port == 80 && ip.addr == 192.168.1.10' -t a --color

시간을 표시한다.

tshark -i 1 -Y 'tcp.port == 80 && ip.addr == 192.168.1.10' -t a --color

색을 입혀준다..

 

사용 예:

$ tshark -i eth0 -c 1 -q
$ tshark -V tcp port 80 -R "http.request || http.response" &

# -i: 트래픽을 캡처할 리스닝 인터페이스를 지정 -> 수신된 패킷마다 기본 요약 정보 출력
$ tshark -i eth0 -c 2
$ tshark -f "tcp port 80" -i eth0

# -V: add output of packet tree (Packet Details)
# -R: display filter (이미 캡처된 패킷을 필터링하는데 사용)
$ tshark  -f "tcp port 80" -i eth0 -R "http.request || http.response" -V
$ tshark  -f "tcp port 80" -i eth0 -R "http.request || http.response" -V | grep "Hypertext Transfer Protocol" -A 21
$ tshark -G | cut -f3 | grep "^http\."

# 전체 IP 통신의 목록 구하기
$ tshark -r ~/tshark-log/temp.pcap -q -z "conv,ip,ip.addr==10.xxx.xxx.xxx" -w ~/tshark-log/write.pcap

# 저장된 write.pcap 파일 읽
$ capinfos ~/tshark-log/write.pcap

# 허용된 포트(HTTP, HTTPS)를 제외한 포트로의 외부 연결 파악하기
$ ./tshark -o column.format:'" Source","%s","Destination","%d", "dstport", "%uD", "Protocol", "%p"' -r ~/tshark-log/temp.pcap -R "ip.src == 10.xxx.xxx.xxx && ! dns && tcp.dstport != 80 && tcp.dstport != 443" | sort -u

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

HTTPie 설치하고 사용하기  (0) 2023.11.23
Wireshark 설치  (0) 2023.06.21
Ubuntu SSH 서버 접속 보안 설정  (0) 2022.12.22