Tshark 를 이용한 TCP 대화 분석

WiresharkBeginner
지금 연습하기

소개

이 랩에서는 Wireshark 의 명령줄 도구인 tshark를 사용하여 TCP 대화를 분석하는 방법을 배우게 됩니다. 필터를 사용하여 TCP 트래픽을 캡처하고, 대화를 나열하며, HTTP (포트 80) 와 같은 특정 포트를 검사하고 자세한 패킷 정보를 해석하는 연습을 할 것입니다.

curl을 사용한 트래픽 생성 및 캡처 파일 분석을 포함한 실습을 통해 TCP 스트림을 격리하고 주요 대화 메트릭을 식별하는 방법을 익히게 됩니다. 이러한 기술은 Wireshark 를 사용하여 네트워크 문제 해결 및 트래픽 분석 능력을 향상시킬 것입니다.

-f "tcp"를 사용하여 TCP 트래픽 캡처

이 단계에서는 Wireshark 의 명령줄 도구인 tshark를 사용하여 TCP 네트워크 트래픽을 캡처하는 방법을 배우게 됩니다. TCP (Transmission Control Protocol, 전송 제어 프로토콜) 는 인터넷의 핵심 프로토콜 중 하나로, 애플리케이션 간의 안정적인 데이터 전송을 담당합니다. -f "tcp" 필터를 사용하면 웹 브라우징, 파일 전송 또는 이메일 통신을 분석할 때 도움이 되는 TCP 패킷에만 집중할 수 있습니다.

  1. 먼저 Xfce 데스크톱의 터미널 아이콘을 클릭하거나 단축키 Ctrl+Alt+T를 사용하여 LabEx VM 에서 터미널을 엽니다. 터미널은 이 네트워크 분석을 위해 모든 명령을 실행할 곳입니다.

  2. 캡처 파일을 저장할 기본 작업 디렉토리로 이동합니다.

    cd ~/project

    이렇게 하면 캡처된 모든 데이터가 나중에 쉽게 찾을 수 있는 일관된 위치에 저장됩니다.

  3. 다음 명령으로 TCP 트래픽 캡처를 시작합니다.

    sudo tshark -f "tcp" -w tcp_capture.pcap

    이 명령의 각 부분이 무엇을 하는지 자세히 살펴보겠습니다.

    • sudo는 패킷 캡처에 필요한 관리자 권한을 제공합니다.
    • tshark는 Wireshark 의 명령줄 버전입니다.
    • -f "tcp"는 캡처 필터 역할을 하며, tshark 에게 TCP 패킷만 기록하도록 지시합니다.
    • -w tcp_capture.pcap는 캡처된 패킷을 "tcp_capture.pcap"이라는 파일에 저장합니다.
  4. tshark 가 실행되는 동안 샘플 TCP 트래픽을 생성해야 합니다. 다른 터미널 창을 열고 다음을 실행합니다.

    curl https://www.example.com

    이 명령은 example.com 에 간단한 웹 요청을 보냅니다. 이 웹 요청은 통신에 TCP 를 사용합니다. curl 명령은 웹사이트에서 반환된 HTML 콘텐츠를 표시합니다.

  5. 충분한 데이터를 캡처하기 위해 몇 초 동안 기다린 후, tshark 가 실행 중인 첫 번째 터미널에서 Ctrl+C를 눌러 캡처를 중지합니다. 이렇게 하면 패킷 캡처 프로세스가 안전하게 종료됩니다.

  6. 이제 캡처 파일의 처음 몇 줄을 검사하여 캡처한 내용을 확인해 보겠습니다.

    tshark -r tcp_capture.pcap | head -n 5

    이 명령은 캡처 파일 (-r) 을 읽고 처음 5 개의 패킷을 표시합니다. 다음을 포함하는 TCP 핸드셰이크 프로세스를 보여주는 출력을 볼 수 있습니다.

    • 연결을 시작하는 SYN (synchronize, 동기화) 패킷
    • SYN-ACK (synchronize-acknowledge, 동기화 - 응답) 응답
    • 소스 및 대상 IP 주소
    • 통신에 사용되는 포트 번호

-z conv,tcp 를 사용하여 대화 목록 표시

이 단계에서는 Wireshark 의 -z conv,tcp 옵션을 사용하여 캡처된 트래픽에서 TCP 대화를 분석하는 방법을 배우게 됩니다. TCP 대화는 IP 주소와 포트 번호로 식별되는 두 엔드포인트 간의 완전한 통신 세션을 나타냅니다. 이 기능은 캡처에서 모든 TCP 대화의 요약을 제공하며, 네트워크 통신 패턴을 이해하는 데 필수적인 소스/대상 IP, 포트 및 패킷 통계를 보여줍니다.

  1. 먼저 캡처 파일이 저장된 올바른 디렉토리에 있는지 확인합니다. Tshark 가 패킷 캡처 파일을 어디에서 찾아야 하는지 알아야 하므로 중요합니다.

    cd ~/project
  2. TCP 대화를 나열하는 기본 명령은 캡처된 패킷을 분석하고 요약 테이블을 표시합니다. -r 플래그는 입력 파일을 지정하고, -z conv,tcp는 대화 통계 기능을 활성화합니다.

    tshark -r tcp_capture.pcap -z conv,tcp
  3. 출력은 이 예와 유사하게 모든 TCP 대화를 보여주는 테이블을 표시합니다. 각 행은 두 엔드포인트 간의 하나의 대화를 나타내며, 각 방향으로 전송된 프레임 (패킷) 및 바이트 수를 보여줍니다.

    =========================================================================
    TCP Conversations
    Filter:<No Filter>
                                                  |       <-      | |       ->      | |     Total     |
                                                  | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
    192.168.1.2:49152   <-> 93.184.216.34:80     |      3    180 | |      3    216 | |      6    396 |
    =========================================================================
  4. 각 대화가 발생한 시점을 보여주는 절대 타임스탬프와 함께 더 자세한 보기를 얻으려면 -t ad 옵션을 사용합니다. 이는 네트워크 이벤트의 타이밍과 순서를 이해하는 데 도움이 됩니다.

    tshark -r tcp_capture.pcap -z conv,tcp -t ad
  5. -Y 옵션을 사용하여 표시 필터를 사용하여 특정 기준에 따라 대화를 필터링할 수 있습니다. 이 예는 포트 80 (HTTP 트래픽) 과 관련된 대화를 필터링합니다. 이는 웹 트래픽만 분석하려는 경우에 유용합니다.

    tshark -r tcp_capture.pcap -z conv,tcp -Y "tcp.port==80"
  6. 나중에 분석하거나 보고하기 위해 대화 통계를 저장하려면 출력을 텍스트 파일로 리디렉션합니다. 이렇게 하면 검토하거나 다른 사람과 공유할 수 있는 분석의 영구적인 기록이 생성됩니다.

    tshark -r tcp_capture.pcap -z conv,tcp > tcp_conversations.txt

-Y "tcp.port==80"으로 특정 포트 필터링

이 단계에서는 Wireshark 의 표시 필터 구문을 -Y "tcp.port==80" 옵션과 함께 사용하여 특정 TCP 포트 (포트 80) 에 대한 네트워크 트래픽을 필터링하는 방법을 배우게 됩니다. 포트 80 은 HTTP 웹 트래픽의 표준 포트이므로 이 필터는 네트워크 캡처에서 웹 관련 통신을 격리하는 데 도움이 됩니다.

시작하기 전에 이 필터가 무엇을 하는지 이해해 보겠습니다. 이 필터는 소스 또는 대상 포트가 80 인 모든 TCP 패킷을 표시합니다. 이는 소스 또는 대상 포트를 특별히 필터링하는 것과는 다르며, 이는 나중에 다룰 것입니다.

  1. 먼저 캡처 파일이 저장된 올바른 디렉토리에 있는지 확인합니다.

    cd ~/project
  2. 이전에 캡처한 트래픽을 포트 80 (HTTP) 으로 필터링하려면 다음을 실행합니다.

    tshark -r tcp_capture.pcap -Y "tcp.port==80"

    -r 플래그는 입력 파일을 지정하고, -Y는 표시 필터를 적용합니다. 이 명령은 tcp_capture.pcap 에서 패킷을 읽지만 포트 80 과 관련된 패킷만 표시합니다.

  3. 출력은 소스 또는 대상으로 포트 80 과 관련된 패킷만 표시합니다.

     1 0.000000000    192.168.1.2 → 93.184.216.34 TCP 74 49152 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460
     2 0.028763000  93.184.216.34 → 192.168.1.2 TCP 74 80 → 49152 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
     3 0.028852000    192.168.1.2 → 93.184.216.34 TCP 66 49152 → 80 [ACK] Seq=1 Ack=1 Win=64240 Len=0

    이 출력은 클라이언트 (192.168.1.2) 와 웹 서버 (93.184.216.34) 간의 완전한 TCP 3 방향 핸드셰이크 (SYN, SYN-ACK, ACK) 를 보여줍니다.

  4. 웹 서버에 대한 요청을 표시하는 포트 80 (대상 포트) 으로 가는 트래픽을 특별히 필터링하려면 다음을 사용합니다.

    tshark -r tcp_capture.pcap -Y "tcp.dstport==80"
  5. 일반적으로 웹 서버 응답을 표시하는 포트 80 (소스 포트) 에서 오는 트래픽을 필터링하려면 다음을 사용합니다.

    tshark -r tcp_capture.pcap -Y "tcp.srcport==80"
  6. 보다 정확한 분석을 위해 다른 필터와 결합할 수 있습니다. 예를 들어, HTTP GET 요청 (가장 일반적인 유형의 웹 요청) 만 보려면 다음을 사용합니다.

    tshark -r tcp_capture.pcap -Y "tcp.port==80 && http.request.method==GET"

    이는 포트 필터와 HTTP 프로토콜 필터를 결합하여 웹 브라우저가 서버에서 페이지를 요청할 때를 특별히 표시합니다.

-V 옵션으로 결과 표시

이 단계에서는 Wireshark 의 -V (verbose, 상세) 옵션을 사용하여 포괄적인 패킷 세부 정보를 보는 방법을 살펴보겠습니다. 네트워크 문제를 해결할 때 전체 프로토콜 분석을 확인하는 것이 중요합니다. -V 플래그는 이더넷 프레임에서 애플리케이션 계층 프로토콜까지 네트워크 스택의 각 계층을 표시하여 네트워크 트래픽에서 정확히 어떤 일이 일어나고 있는지 이해하는 데 도움이 됩니다.

  1. 먼저 캡처 파일이 저장된 올바른 디렉토리에 있는지 확인합니다. Tshark 가 분석하려는 파일에 액세스해야 하므로 중요합니다.

    cd ~/project
  2. 모든 패킷 세부 정보를 표시하는 기본 명령은 Tshark 가 디코딩할 수 있는 모든 것을 보여줍니다. 이는 네트워크 통신의 전체 구조를 검사해야 할 때 유용합니다.

    tshark -r tcp_capture.pcap -V
  3. 상세 출력은 기술 세부 정보를 구조화된 형식으로 표시합니다. 각 부분의 의미는 다음과 같습니다.

    • Frame (프레임): 패킷 크기에 대한 물리 계층 정보
    • Ethernet II (이더넷 II): 데이터 링크 계층 MAC 주소
    • IP: 네트워크 계층 주소 지정
    • TCP: 전송 계층 포트 및 시퀀스 번호
    Frame 1: 74 bytes on wire (592 bits), 74 bytes captured (592 bits)
    Ethernet II, Src: 00:11:22:33:44:55, Dst: 66:77:88:99:aa:bb
    Internet Protocol Version 4, Src: 192.168.1.2, Dst: 93.184.216.34
    Transmission Control Protocol, Src Port: 49152, Dst Port: 80, Seq: 0, Ack: 0, Len: 0
  4. 대규모 캡처를 사용할 때 필터를 상세 출력과 결합하면 관련 트래픽에 집중하는 데 도움이 됩니다. 이 예는 HTTP 트래픽 (포트 80) 만 표시하고 출력을 처음 20 줄로 제한합니다.

    tshark -r tcp_capture.pcap -Y "tcp.port==80" -V | head -n 20
  5. 문서화 또는 나중 분석을 위해 상세 출력을 텍스트 파일에 저장할 수 있습니다. 이렇게 하면 패킷 검사의 영구적인 기록이 생성됩니다.

    tshark -r tcp_capture.pcap -V > verbose_output.txt
  6. HTTP 헤더와 같은 특정 프로토콜 요소를 검사하려면 프로토콜 필터를 상세 모드와 결합합니다. 이는 웹 애플리케이션을 디버깅하거나 HTTP 트랜잭션을 분석할 때 도움이 됩니다.

    tshark -r tcp_capture.pcap -Y "http" -V

요약

이 랩에서는 Wireshark 의 tshark 명령줄 도구를 사용하여 TCP 대화를 분석하는 방법을 배웠습니다. 특정 필터를 사용하여 TCP 트래픽을 캡처하고, TCP 핸드셰이크 세부 정보를 검사하고, 분석을 위한 샘플 트래픽을 생성했습니다.

또한 엔드포인트 간의 TCP 대화를 나열하고 특정 포트 트래픽을 필터링하는 기술을 탐구했습니다. 이 랩에서는 상세 출력 및 대화 통계를 사용하여 효과적인 네트워크 분석을 위한 패킷 검사에 대한 실습 경험을 제공했습니다.