Tshark 를 활용한 네트워크 트래픽 분석

WiresharkBeginner
지금 연습하기

소개

이 랩에서는 강력한 네트워크 프로토콜 분석기 Wireshark 의 명령줄 인터페이스인 tshark 사용법을 배우게 됩니다. tshark 를 숙달하면 네트워크 분석 워크플로우를 간소화하고, 작업을 자동화하며, 네트워크 트래픽에 대한 더 깊은 통찰력을 얻을 수 있습니다.

이 랩은 다양한 명령줄 옵션과 실제 시나리오를 안내합니다. 네트워크 캡처를 효율적으로 분석하고 네트워크 관련 문제를 해결하는 기술을 익힐 수 있습니다. 명령줄 방식은 특히 대용량 캡처 파일이나 자동화된 분석에 있어 그래픽 인터페이스보다 상당한 이점을 제공합니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 96%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Tshark 를 이용한 네트워크 트래픽 이해 및 캡처

이 단계에서는 Tshark 를 사용하여 네트워크 트래픽 분석의 세계로 뛰어들 것입니다. 먼저, Tshark 가 무엇이며 네트워크 분석에 왜 유용한 도구인지 배우게 됩니다. 그런 다음, 트래픽을 캡처할 위치를 알아야 하므로 시스템의 네트워크 인터페이스를 식별하는 방법을 알아낼 것입니다. 마지막으로, Wireshark 명령줄 인터페이스인 Tshark 를 사용하여 네트워크 트래픽을 캡처하는 방법을 살펴보겠습니다.

Tshark 란 무엇인가?

Tshark 는 기본적으로 Wireshark 의 명령줄 버전입니다. Wireshark 는 시각적 검사에 유용한 그래픽 인터페이스를 가지고 있지만, Tshark 는 그래픽 디스플레이 없이 동일한 핵심 기능을 제공합니다. Tshark 를 사용하면 네트워크에서 패킷을 캡처할 수 있습니다. 패킷은 네트워크를 통해 데이터를 전달하는 작은 봉투와 같습니다. 또한 패킷의 출처, 목적지, 전송하는 데이터 유형 등 이러한 패킷에 대한 자세한 정보를 표시할 수 있습니다. 캡처된 데이터를 나중에 분석할 수 있도록 파일에 저장할 수 있습니다. 이 도구는 다음과 같은 여러 시나리오에서 특히 유용합니다.

  • 자동화된 네트워크 모니터링: Tshark 를 정기적으로 실행하고 비정상적인 네트워크 활동을 확인하는 스크립트를 설정할 수 있습니다.
  • 대용량 캡처 파일 효율적으로 분석: 명령줄 도구이므로 일부 그래픽 대안보다 많은 양의 데이터를 더 빠르게 처리할 수 있습니다.
  • 그래픽 인터페이스가 없는 서버에서 실행: 서버는 종종 그래픽 디스플레이가 없으며 Tshark 는 명령줄에서 직접 실행할 수 있습니다.
  • 스크립트에 네트워크 분석 통합: 사용자 지정 네트워크 분석 작업을 수행하기 위해 자체 스크립트 내에서 Tshark 명령을 사용할 수 있습니다.

Tshark 설치

Tshark 를 사용하기 전에 시스템에 설치되어 있는지 확인해야 합니다. apt 패키지 관리자 (Ubuntu 와 같은) 를 사용하는 시스템에 Tshark 를 설치하려면 터미널에서 다음 명령을 실행합니다. sudo 부분은 관리자 권한을 부여하고, apt install은 패키지를 설치하는 데 사용되며, -y는 모든 프롬프트에 자동으로 예로 응답하고, tshark는 설치하려는 패키지입니다.

sudo apt install -y tshark

네트워크 인터페이스 식별

네트워크 트래픽 캡처를 시작하기 전에 모니터링할 네트워크 인터페이스를 알아야 합니다. 네트워크 인터페이스는 컴퓨터가 네트워크에 연결되는 문과 같습니다. 시스템에서 사용 가능한 모든 네트워크 인터페이스를 나열하려면 다음 명령을 실행합니다.

tshark -D

이 명령은 시스템의 모든 네트워크 인터페이스 목록을 표시합니다. 출력은 다음과 유사합니다.

1. eth0
2. eth1
3. lo (Loopback)
4. any (Pseudo - device that captures on all interfaces)

이 랩에서는 any 인터페이스를 사용합니다. 이는 사용 가능한 모든 네트워크 인터페이스에서 트래픽을 한 번에 캡처할 수 있는 특수한 가상 장치입니다.

네트워크 트래픽 캡처

이제 사용할 인터페이스를 알았으므로 네트워크 트래픽 캡처를 시작해 보겠습니다. Tshark 를 사용하여 트래픽을 캡처하는 기본 구문은 다음과 같습니다.

tshark -i <interface> -w <output_file>

각 부분의 의미는 다음과 같습니다.

  • -i <interface>: 이 옵션은 트래픽을 캡처할 네트워크 인터페이스를 지정합니다. <interface>eth0 또는 any와 같은 실제 인터페이스 이름으로 바꿀 수 있습니다.
  • -w <output_file>: 이 옵션은 캡처된 패킷을 저장할 파일의 위치와 이름을 지정합니다.

먼저, 캡처된 파일을 저장할 디렉토리를 만듭니다. mkdir -p 명령은 디렉토리가 없으면 디렉토리를 만들고, /home/labex/project/captures에 디렉토리를 만들고 있습니다.

mkdir -p /home/labex/project/captures

이제 캡처를 시작해 보겠습니다. any 인터페이스를 사용하고 캡처된 패킷을 /home/labex/project 디렉토리의 capture.pcapng라는 파일에 저장합니다.

tshark -i any -w /home/labex/project/capture.pcapng

이 명령을 실행하면 Tshark 가 패킷 캡처를 시작했음을 나타내는 출력이 표시됩니다. 출력은 다음과 같습니다.

Capturing on 'any'

실제로 의미 있는 트래픽을 캡처하려면 트래픽을 생성해야 합니다. 새 터미널 탭을 열고 다음 명령을 실행합니다. curl 명령은 서버에서 데이터를 전송하는 데 사용됩니다. 여기서는 https://www.example.com 웹사이트에 액세스하려고 합니다.

curl https://www.example.com

트래픽을 생성한 후 Tshark 가 실행 중인 터미널로 돌아가 Ctrl + C를 눌러 캡처를 중지합니다. 캡처된 패킷 수를 나타내는 메시지가 표시됩니다. 다음과 같이 표시될 수 있습니다.

Capturing on 'any'
164 packets captured

캡처된 파일 검사

캡처 파일이 성공적으로 생성되었는지 확인하기 위해 ls -l 명령을 사용할 수 있습니다. 이 명령은 디렉토리의 파일을 나열하고 파일에 대한 자세한 정보를 표시합니다. 캡처 파일을 확인하려면 다음 명령을 실행합니다.

ls -l /home/labex/project/capture.pcapng

다음과 유사한 출력이 표시되어야 합니다.

-rw-r--r-- 1 labex labex 24680 Jan 27 12:34 /home/labex/project/capture.pcapng

이제 캡처한 내용을 간략하게 살펴보겠습니다. 이번에는 -r 옵션과 함께 Tshark 를 다시 사용합니다. -r 옵션은 캡처 파일을 읽는 데 사용됩니다. 출력을 head - 10 명령으로 파이프하여 파일의 처음 10 개 패킷을 표시합니다.

tshark -r /home/labex/project/capture.pcapng | head -10

이 명령은 타임스탬프 (패킷이 캡처된 시점), 소스 및 대상 주소 (패킷의 출처 및 목적지) 및 사용된 프로토콜을 포함한 자세한 패킷 정보를 표시합니다.

Tshark 를 이용한 네트워크 트래픽 필터링

이 단계에서는 네트워크 트래픽 캡처에 필터를 적용하는 방법을 살펴보겠습니다. 네트워크 트래픽을 다룰 때 캡처 파일은 매우 클 수 있으며 방대한 양의 데이터로 가득 차 있을 수 있습니다. 필터링은 우리가 관심 있는 특정 유형의 패킷에 집중할 수 있도록 도와줍니다. 이는 대용량 캡처 파일을 더 효율적으로 분석하고 관련 트래픽 패턴을 식별할 수 있게 해주므로 매우 중요합니다.

디스플레이 필터 (Display Filters) 이해하기

Tshark 는 디스플레이 필터 (display filters) 를 사용하여 캡처 파일에서 표시하거나 처리할 패킷을 선택합니다. 이러한 필터를 Tshark 에게 어떤 패킷을 볼지 알려주는 방법이라고 생각할 수 있습니다. 이 필터들은 프로토콜 필드를 기반으로 일치 기준을 정의하는 특정 구문 (syntax) 을 사용합니다. 예를 들어, 특정 프로토콜에 속하거나 특정 IP 주소를 가진 패킷만 표시하도록 Tshark 에 지시할 수 있습니다. 디스플레이 필터를 적용하는 기본 구문은 다음과 같습니다:

tshark -r "<input_file>" -Y "<filter_expression>"

이 명령어의 구성 요소를 분석해 보겠습니다:

  • -r <input_file>: 명령어의 이 부분은 Tshark 가 읽어야 할 캡처 파일을 지정합니다. 이는 Tshark 에게 네트워크 트래픽 데이터가 어디에 있는지 알려주는 것과 같습니다.
  • -Y "<filter_expression>": 적용하려는 디스플레이 필터를 지정합니다. 필터 표현식 (filter expression) 은 선택되어야 할 패킷을 정의하는 규칙 집합입니다.

일반적인 디스플레이 필터 예시

다음은 사용할 수 있는 유용한 필터 표현식들입니다. 이 예시들은 프로토콜, IP 주소, 포트, HTTP 메서드, DNS 쿼리별 필터링 및 여러 필터 결합과 같은 패킷 필터링의 다양한 측면을 다룹니다.

  • 프로토콜별 필터링: tcp, udp, icmp, http, dns. 예를 들어, tcp를 사용하면 Tshark 는 TCP 프로토콜을 사용하는 패킷만 표시합니다.
  • IP 주소별 필터링: ip.addr == 192.168.1.1. 이 필터는 소스 또는 목적지 중 하나라도 IP 주소 192.168.1.1을 가진 패킷만 표시합니다.
  • 포트별 필터링: tcp.port == 80 또는 tcp.port == 443. 이 필터들은 TCP 포트 80 또는 443 을 사용하는 패킷을 표시합니다. 포트 80 은 일반적으로 HTTP 트래픽에 사용되며, 포트 443 은 HTTPS 트래픽에 사용됩니다.
  • HTTP 메서드별 필터링: http.request.method == "GET". 이 필터는 GET 메서드를 사용하는 HTTP 요청만 표시합니다.
  • DNS 쿼리별 필터링: dns.qry.name contains "example.com". 이 필터는 쿼리 이름에 문자열 "example.com"이 포함된 DNS 패킷을 표시합니다.
  • 필터 결합: tcp.port == 80 and http.request.method == "POST". 이 필터는 두 가지 조건을 결합합니다. TCP 포트 80 을 사용하고 HTTP POST 요청을 가진 패킷만 표시합니다.

캡처에 필터 적용하기

먼저 캡처 파일에서 HTTPS 트래픽 (TCP 포트 443) 을 필터링해 보겠습니다. 다음 명령어를 사용합니다:

tshark -r /home/labex/project/capture.pcapng -Y "tcp.port == 443"

이 명령어를 실행하면 Tshark 는 캡처 파일 /home/labex/project/capture.pcapng를 읽고 필터 tcp.port == 443을 적용합니다. 결과적으로, 일반적으로 HTTPS 트래픽에 사용되는 TCP 포트 443 을 사용하는 패킷만 보게 될 것입니다. 출력에는 소스 및 목적지 IP 주소, 포트 번호, 패킷 플래그와 같은 이러한 패킷에 대한 세부 정보가 포함됩니다. 출력의 예시는 다음과 같을 수 있습니다:

  1   0.000000 192.168.1.100 → 93.184.216.34 TCP 74 43210 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
  2   0.023456 93.184.216.34 → 192.168.1.100 TCP 74 443 → 43210 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=128 SACK_PERM=1
  3   0.023789 192.168.1.100 → 93.184.216.34 TCP 66 43210 → 443 [ACK] Seq=1 Ack=1 Win=64240 Len=0
  ...

DNS 트래픽을 찾기 위해 다른 필터를 시도해 보겠습니다. 다음 명령어를 사용합니다:

tshark -r /home/labex/project/capture.pcapng -Y "dns"

이 명령어는 캡처에서 DNS 패킷만 표시합니다. 출력에는 쿼리 이름 및 응답 IP 주소와 같은 세부 정보를 포함하여 DNS 쿼리 및 응답이 표시됩니다. 출력의 예시는 다음과 같을 수 있습니다:

  8   0.034567 192.168.1.100 → 8.8.8.8 DNS 82 Standard query 0x1234 A example.com
  9   0.056789 8.8.8.8 → 192.168.1.100 DNS 98 Standard query response 0x1234 A example.com A 93.184.216.34

유형별 패킷 수 계산하기

필터를 사용하여 특정 유형의 패킷 수를 계산할 수도 있습니다. 이는 캡처 파일의 트래픽 개요를 파악하는 데 유용할 수 있습니다. 예를 들어, TCP 패킷 수를 계산하려면 다음 명령어를 사용할 수 있습니다:

tshark -r /home/labex/project/capture.pcapng -Y "tcp" | wc -l

이 명령어에서 tshark는 캡처 파일을 읽고 필터 tcp를 적용합니다. tshark의 출력은 파이프 (|) 를 통해 wc -l 명령어로 전달되며, 이는 출력의 줄 수를 셉니다. 각 줄이 패킷 하나를 나타내므로, 이는 캡처 파일에 있는 TCP 패킷의 수를 제공합니다.

HTTPS 패킷 수를 계산하고 그 결과를 파일에 저장해 보겠습니다. 다음 명령어를 사용합니다:

tshark -r /home/labex/project/capture.pcapng -Y "tcp.port == 443" | wc -l > /home/labex/project/filtered_packet_count.txt

이 명령어는 이전 명령어와 유사하지만, 단순히 개수를 표시하는 대신 출력을 filtered_packet_count.txt라는 파일로 리디렉션 (>) 합니다. 다음 명령어를 사용하여 결과를 확인할 수 있습니다:

cat /home/labex/project/filtered_packet_count.txt

출력에는 필터와 일치하는 패킷 수가 표시됩니다. 예를 들면 다음과 같습니다:

42

특정 필드 추출하기

Tshark 는 -T fields-e 옵션을 사용하여 패킷에서 특정 필드를 추출할 수 있습니다. 이는 HTTP 요청의 호스트, 메서드 및 URI 와 같이 패킷에서 특정 정보에만 관심이 있을 때 유용합니다. 다음은 예시 명령어입니다:

tshark -r /home/labex/project/capture.pcapng -Y "http" -T fields -e http.host -e http.request.method -e http.request.uri

이 명령어에서 tshark는 캡처 파일을 읽고, 필터 http를 적용하여 HTTP 패킷만 선택한 다음, -T fields 옵션을 사용하여 필드를 추출할 것임을 지정합니다. -e 옵션은 추출할 필드를 지정하는 데 사용됩니다. 이 경우 http.host, http.request.method, http.request.uri 필드를 추출하고 있습니다. 출력은 다음과 같을 수 있습니다:

example.com GET /index.html
example.com GET /images/logo.png

Tshark 를 이용한 네트워크 트래픽 분석 및 내보내기

이 단계에서는 다양한 형식으로 네트워크 트래픽을 내보내고 tshark 를 사용하여 기본적인 트래픽 분석을 수행하는 방법에 중점을 둡니다. 이러한 기술은 캡처된 데이터를 동료와 공유하거나 다른 도구에서 사용할 수 있으므로 매우 중요합니다. 이 섹션이 끝나면 다양한 파일 형식을 처리하고 네트워크 트래픽에서 귀중한 정보를 추출할 수 있습니다.

캡처 파일 형식 이해

잘 알려진 네트워크 프로토콜 분석기인 Wireshark 는 여러 캡처 파일 형식을 지원합니다. 각 형식에는 고유한 특성이 있으며, 이는 나중에 데이터를 사용하는 방법을 결정하므로 이해하는 것이 중요합니다.

  • pcapng: Wireshark 에서 사용하는 기본 형식입니다. 여러 인터페이스를 지원하고 고급 기능이 있습니다. 복잡한 네트워크 시나리오를 캡처해야 할 때 좋은 선택입니다.
  • pcap: 클래식 형식입니다. 이전 도구와 호환되지만 pcapng 에 비해 기능이 적습니다. 레거시 시스템으로 작업해야 하는 경우 이 형식이 적합할 수 있습니다.
  • csv: 쉼표로 구분된 값. 이 형식은 추가 분석을 위해 데이터를 스프레드시트로 가져오려는 경우 매우 유용합니다.
  • json: JavaScript Object Notation. 프로그래밍 언어로 쉽게 구문 분석할 수 있으므로 프로그래밍 방식의 분석에 이상적입니다.
  • text: 사람이 읽을 수 있는 일반 텍스트 형식입니다. 특별한 도구 없이 데이터를 빠르게 보려는 경우 유용합니다.

다양한 파일 형식으로 내보내기

캡처 파일의 형식을 변경하려면 tshark 에서 -F 옵션을 사용할 수 있습니다. 일반적인 명령 구조는 다음과 같습니다.

tshark -r <input_file> -F <format> -w <output_file>

여기서 -r은 입력 파일을 지정하고, -F는 출력 형식을 설정하고, -w는 출력 파일을 정의합니다.

예를 들어 캡처를 pcap 형식으로 내보내 보겠습니다.

tshark -r /home/labex/project/capture.pcapng -F pcap -w /home/labex/project/export.pcap

이 명령이 성공적으로 실행되면 화면에 아무런 출력도 표시되지 않습니다. 내보내기가 성공했는지 확인하려면 ls 명령을 사용하여 내보낸 파일의 세부 정보를 나열할 수 있습니다.

ls -l /home/labex/project/export.pcap

다음과 유사한 출력이 표시되어야 합니다.

-rw-r--r-- 1 labex labex 22468 Jan 27 12:45 /home/labex/project/export.pcap

프로토콜 통계 분석

Tshark 는 파일을 내보내는 데 유용할 뿐만 아니라 캡처된 트래픽에 대한 다양한 통계를 생성하는 데에도 유용합니다. 이러한 통계 분석 옵션 중 일부를 살펴보겠습니다.

프로토콜 계층 구조 통계

캡처에서 다양한 프로토콜이 어떻게 분산되어 있는지 확인하려면 다음 명령을 사용할 수 있습니다.

tshark -r /home/labex/project/capture.pcapng -z io,phs

-z 옵션은 통계 유형을 지정하는 데 사용됩니다. 이 경우 io,phs는 프로토콜 계층 구조 통계를 나타냅니다. 출력에는 프로토콜 계층 구조와 각 프로토콜의 패킷 비율이 표시됩니다.

Protocol Hierarchy Statistics
|
+ Ethernet
  + Internet Protocol Version 4
    + Transmission Control Protocol
      + Transport Layer Security
        + Hypertext Transfer Protocol Secure
    + User Datagram Protocol
      + Domain Name System

대화 통계

네트워크의 엔드포인트 간의 대화를 분석하려면 다음 명령을 사용할 수 있습니다.

tshark -r /home/labex/project/capture.pcapng -z conv,tcp

이 명령은 TCP 대화에 중점을 둡니다. 관련된 엔드포인트, 교환된 패킷 수 및 전송된 총 바이트와 같은 통계를 표시합니다.

TCP Conversations
                                               |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                               | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |
192.168.1.100:43210 <-> 93.184.216.34:443          24   18765      18    4532      42    23297       0.000000000        8.2345

HTTP 요청 통계

캡처에 HTTP 트래픽이 포함된 경우 다음 명령을 사용하여 HTTP 요청을 분석할 수 있습니다.

tshark -r /home/labex/project/capture.pcapng -z http,tree

이 명령은 URI 별로 HTTP 요청을 구성하고 각 URI 에 대한 요청 수를 표시합니다.

HTTP/Requests:
 /index.html                                    1 requests
 /images/logo.png                               2 requests

다양한 텍스트 형식으로 내보내기

이진 형식 외에도 tshark 는 분석하기 쉬운 텍스트 형식으로 데이터를 내보낼 수도 있습니다.

CSV 로 내보내기

캡처에서 특정 필드를 CSV 파일로 내보내려면 다음 명령을 사용할 수 있습니다.

tshark -r /home/labex/project/capture.pcapng -T fields -e frame.number -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport -E header=y -E separator=, > /home/labex/project/tcp_summary.csv

여기서 -T fields는 특정 필드를 내보내려는 것을 지정합니다. -e 옵션은 프레임 번호, 소스 및 대상 IP, 소스 및 대상 TCP 포트와 같이 내보내려는 필드를 정의하는 데 사용됩니다. -E header=y는 CSV 파일에 헤더를 추가하고 -E separator=,는 구분 기호를 쉼표로 설정합니다.

CSV 내보내기 검사

데이터를 CSV 파일로 내보낸 후 head 명령을 사용하여 파일의 처음 몇 줄을 빠르게 볼 수 있습니다.

head -5 /home/labex/project/tcp_summary.csv

출력은 다음과 같습니다.

frame.number,ip.src,ip.dst,tcp.srcport,tcp.dstport
1,192.168.1.100,93.184.216.34,43210,443
2,93.184.216.34,192.168.1.100,443,43210
3,192.168.1.100,93.184.216.34,43210,443
...

Tshark 고급 기술 및 파이핑

이 단계에서는 고급 tshark 기술을 배우게 됩니다. 이러한 기술은 네트워크 트래픽 데이터에 대한 복잡한 작업을 수행할 수 있으므로 네트워크 분석에 매우 중요합니다. 특히, 표준 입력 (stdin) 에서 네트워크 트래픽을 읽는 방법과 파이프를 사용하여 tshark 를 다른 명령줄 도구와 결합하는 방법을 배우게 됩니다. 이러한 기술을 마스터하면 대량의 네트워크 데이터를 처리할 때 시간과 노력을 절약할 수 있는 강력한 네트워크 분석 워크플로우를 만들 수 있습니다.

Linux 파이프 및 표준 입력 이해

Linux 운영 체제에서 파이프 (|) 는 매우 유용한 기능입니다. 두 명령 간의 다리 역할을 하여 한 명령의 출력을 다른 명령의 입력으로 보낼 수 있습니다. 이러한 방식으로 여러 명령을 함께 연결하여 더 복잡한 작업을 수행할 수 있습니다. 표준 입력 (stdin) 은 프로그램이 입력을 위해 읽는 데이터 스트림입니다. 많은 명령줄 도구에서 - 기호를 사용하면 입력이 파일이 아닌 stdin 에서 와야 함을 도구에 알리는 신호입니다. 이를 통해 데이터를 처리하는 방식에 더 많은 유연성을 얻을 수 있습니다.

표준 입력에서 네트워크 트래픽 읽기

Tshark 는 -r - 옵션을 사용하여 표준 입력에서 캡처 데이터를 읽는 기능을 가지고 있습니다. 이 기능은 다른 명령에서 데이터를 처리하거나 캡처를 즉시 필터링해야 하는 시나리오에서 매우 유용합니다. 파일에서 직접 읽는 대신 데이터를 tshark 로 파이프할 수 있습니다.

표준 입력에서 네트워크 트래픽을 읽는 기본 구문은 다음과 같습니다.

cat <input_file> | tshark -r -

캡처 파일로 이 작업을 시도해 보겠습니다. 다음 명령은 캡처 파일을 읽고 모든 패킷을 표시하며, 이는 tshark -r capture.pcapng를 실행하는 것과 유사합니다.

cat /home/labex/project/capture.pcapng | tshark -r -

출력에는 다음과 같이 캡처의 모든 패킷이 표시됩니다.

  1   0.000000 192.168.1.100 → 93.184.216.34 TCP 74 43210 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
  2   0.023456 93.184.216.34 → 192.168.1.100 TCP 74 443 → 43210 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=128 SACK_PERM=1
  ...

표준 입력에서 필터링

stdin 에서 읽을 때 필터를 적용할 수도 있습니다. 이를 통해 특정 유형의 네트워크 트래픽에 집중할 수 있습니다.

cat /home/labex/project/capture.pcapng | tshark -r - -Y "tcp.port == 80"

이 명령은 캡처에서 HTTP 트래픽 (TCP 포트 80) 만 표시합니다. 필터를 사용하면 관심 있는 데이터를 빠르게 격리할 수 있습니다.

네트워크 분석을 위한 파이프라인 만들기

네트워크 캡처 데이터에 대해 여러 작업을 수행하는 더 복잡한 파이프라인을 만들어 보겠습니다. 이 파이프라인은 다음을 수행합니다.

  1. 캡처 파일 읽기
  2. DNS 트래픽 필터링
  3. DNS 쿼리 이름만 추출
  4. 알파벳순으로 정렬
  5. 중복 제거
  6. 결과를 파일에 저장
cat /home/labex/project/capture.pcapng | tshark -r - -Y "dns" -T fields -e dns.qry.name | sort | uniq > /home/labex/project/dns_queries.txt

다음 명령을 실행하여 결과를 검토해 보겠습니다.

cat /home/labex/project/dns_queries.txt

출력에는 다음과 같이 캡처에서 고유한 DNS 쿼리 이름의 정렬된 목록이 표시됩니다.

example.com
www.example.com

Tshark 를 다른 도구와 결합

Tshark 는 더 강력한 분석을 위해 다른 명령줄 도구와 결합할 수 있습니다.

grep 을 사용하여 패킷 유형 계산

cat /home/labex/project/capture.pcapng | tshark -r - | grep TCP | wc -l > /home/labex/project/tcp_count.txt

이 파이프라인은 캡처에서 TCP 패킷 수를 계산합니다. grep을 사용하여 TCP 패킷을 찾고 wc -l을 사용하여 계산하면 캡처의 TCP 트래픽 양을 빠르게 파악할 수 있습니다.

sed 를 사용하여 HTTP 사용자 에이전트 추출

cat /home/labex/project/capture.pcapng | tshark -r - -Y "http.user_agent" -T fields -e http.user_agent | sed 's/,/\n/g' > /home/labex/project/user_agents.txt

이는 모든 HTTP 사용자 에이전트 문자열을 추출하여 쉼표를 줄 바꿈으로 바꿉니다. 이렇게 하면 출력을 더 읽기 쉽고 분석하기 쉬워집니다.

Stdin 에서 파일로 출력 저장

stdin tshark 분석의 전체 출력을 파일에 저장해 보겠습니다. 이렇게 하면 나중에 데이터를 검토할 수 있습니다.

cat /home/labex/project/capture.pcapng | tshark -r - > /home/labex/project/stdin_output.txt

다음 명령을 실행하여 내용을 확인해 보겠습니다.

head -5 /home/labex/project/stdin_output.txt

다음과 유사하게 분석의 처음 5 줄이 표시되어야 합니다.

  1   0.000000 192.168.1.100 → 93.184.216.34 TCP 74 43210 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
  2   0.023456 93.184.216.34 → 192.168.1.100 TCP 74 443 → 43210 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=128 SACK_PERM=1
  3   0.023789 192.168.1.100 → 93.184.216.34 TCP 66 43210 → 443 [ACK] Seq=1 Ack=1 Win=64240 Len=0
  4   0.024012 192.168.1.100 → 93.184.216.34 TLSv1.2 192 Client Hello
  5   0.045678 93.184.216.34 → 192.168.1.100 TLSv1.2 1023 Server Hello, Certificate, Server Key Exchange, Server Hello Done

요약

이 랩에서는 네트워크 트래픽 분석을 위해 Wireshark 명령줄 인터페이스 (tshark) 를 효과적으로 사용하는 방법을 배웠습니다. 먼저, tshark 의 기본 개념을 이해하고 네트워크 인터페이스에서 네트워크 트래픽을 캡처하는 방법을 배웠습니다. 그런 다음, 대용량 캡처 파일을 처리할 때 중요한 특정 트래픽 유형에 집중하기 위해 필터를 적용하는 방법을 탐구했습니다.

또한 공유 또는 추가 분석을 위해 다양한 형식으로 네트워크 트래픽을 내보내는 방법을 배웠습니다. 또한 네트워크 트래픽 구성을 이해하기 위해 tshark 의 통계 분석 기능을 탐구했습니다. 마지막으로, 표준 입력에서 트래픽을 읽고 tshark 를 다른 명령줄 도구와 결합하여 분석 파이프라인을 만드는 것과 같은 더 복잡한 기술로 발전했습니다. 이러한 기술은 대용량 파일 처리, 자동화된 분석 수행, 원격 서버 분석, 반복 가능한 워크플로우 생성과 같은 시나리오에서 그래픽 Wireshark 인터페이스보다 유리합니다. 이러한 기술을 마스터함으로써 다양한 네트워킹 컨텍스트에서 보다 효율적인 작업을 위해 네트워크 문제 해결 및 보안 분석 기능을 향상시켰습니다.