Tshark 에서 TCP 스트림 따라가기

WiresharkBeginner
지금 연습하기

소개

이 랩에서는 Wireshark 의 명령줄 도구인 tshark를 사용하여 TCP 스트림을 분석하는 방법을 배우게 됩니다. 패킷 캡처를 읽고, TCP 대화를 식별하며, 자세한 검사를 위해 특정 스트림 데이터를 추출하는 데 필요한 명령을 연습할 것입니다.

이 연습을 통해 캡처 파일 확인, 프로토콜 세부 정보 검사, 스트림 내용 저장 등을 수행하는 방법을 익히게 됩니다. 이 랩을 완료하면 tshark의 강력한 필터링 및 통계 기능을 사용하여 네트워크 트래픽 분석에 대한 실질적인 기술을 습득할 수 있습니다.

-r tcp.pcap 을 사용하여 TCP 캡처 읽기

이 단계에서는 Wireshark 의 명령줄 도구인 tshark를 사용하여 TCP 패킷 캡처 파일을 읽는 방법을 배우게 됩니다. 이는 저장된 캡처 파일에서 네트워크 트래픽을 분석하는 첫 번째 단계입니다. 패킷 캡처를 읽는 방법을 이해하는 것은 네트워크 문제 해결 및 분석의 기본입니다.

tshark-r 옵션을 사용하면 이전에 저장된 캡처 파일에서 패킷을 읽을 수 있습니다. 문서를 여는 것과 비슷하다고 생각하면 됩니다. -r 플래그는 tshark에게 어떤 "문서"(캡처 파일) 를 열어야 하는지 알려줍니다. ~/project 디렉토리에 있는 tcp.pcap이라는 샘플 파일을 사용합니다.

  1. 먼저, 캡처 파일이 예상 위치에 있는지 확인해 보겠습니다. 이는 파일을 분석하기 전에 좋은 습관입니다.
ls ~/project/tcp.pcap
  1. 이제 tshark를 사용하여 캡처 파일을 읽어보겠습니다. 필터 없이 기본 명령을 사용하면 파일의 모든 네트워크 트래픽에 대한 개요가 표시됩니다.
tshark -r ~/project/tcp.pcap

이 명령은 다음과 같은 중요한 열이 있는 요약 보기를 표시합니다.

  • 패킷 번호 (캡처된 패킷의 순서 표시)
  • 타임스탬프 (각 패킷이 캡처된 시간)
  • 소스 및 대상 IP 주소
  • 사용된 프로토콜 (TCP, UDP 등)
  • 패킷 내용에 대한 간략한 정보
  1. 패킷 내용을 더 자세히 살펴보려면 -V 플래그 (verbose 모드) 를 추가할 수 있습니다. 이렇게 하면 각 패킷의 전체 프로토콜 분석이 계층별로 표시됩니다.
tshark -r ~/project/tcp.pcap -V

verbose 출력은 다음 세부 정보를 보여줍니다.

  • 이더넷 계층 (MAC 주소)
  • IP 계층 (소스/대상 IP, TTL 등)
  • TCP 계층 (포트, 시퀀스 번호, 플래그)
  • 애플리케이션 계층 데이터 (있는 경우)

이 자세한 보기를 통해 통신 중에 각 네트워크 계층에서 정확히 어떤 일이 발생하는지 이해할 수 있습니다.

-z conv,tcp 를 사용하여 스트림 인덱스 식별

이 단계에서는 Wireshark 의 tshark-z conv,tcp 옵션을 사용하여 패킷 캡처에서 TCP 대화 스트림을 식별하는 방법을 배우게 됩니다. 이는 호스트 간의 통신 패턴을 분석하는 데 도움이 됩니다.

시작하기 전에 TCP 스트림이 두 엔드포인트 간의 완전한 대화를 나타낸다는 것을 이해하는 것이 중요합니다. 각 스트림에는 고유한 인덱스 번호가 있으며, 이를 통해 여러 동시 연결을 포함할 수 있는 네트워크 캡처에서 특정 통신을 격리하고 분석할 수 있습니다.

-z conv,tcp 옵션은 캡처의 모든 TCP 대화 테이블을 표시하며, 스트림 인덱스, 소스/대상 주소, 포트 및 패킷 수를 보여줍니다. 이를 통해 캡처 파일의 모든 TCP 활동에 대한 개략적인 개요를 얻을 수 있습니다.

  1. 먼저, 캡처 파일의 모든 TCP 대화를 나열해 보겠습니다.
tshark -r ~/project/tcp.pcap -z conv,tcp

이 명령을 실행하면 tshark 가 패킷 캡처 파일을 처리하고 모든 TCP 대화의 요약을 생성합니다. 이 명령은 지정된 pcap 파일을 읽고 (-r) 대화 통계 옵션 (-z conv,tcp) 을 적용합니다.

  1. 출력은 다음과 같은 열이 있는 테이블을 표시합니다.

    • 스트림 인덱스 (각 TCP 스트림의 고유 식별자)
    • 소스 주소:포트 (연결을 시작한 장치 표시)
    • 대상 주소:포트 (수신 장치 표시)
    • 각 방향의 패킷 (트래픽 흐름 식별에 도움)
    • 총 패킷 (대화 크기 제공)
  2. 대화 통계만 필터링하여 보려면 (패킷 세부 정보 없이) -q (quiet 모드) 를 추가합니다.

tshark -r ~/project/tcp.pcap -z conv,tcp -q

-q 옵션은 tshark 에게 요청한 통계만 출력하도록 지시하여 대화 요약에만 관심이 있을 때 출력을 더 깔끔하고 읽기 쉽게 만듭니다.

  1. 다음 단계에서 특정 스트림을 따라갈 때 필요하므로 스트림 인덱스 (첫 번째 열) 를 기록해 두십시오. 이러한 인덱스는 매우 바쁜 네트워크 캡처 내에서 개별 대화에 집중할 수 있도록 해주기 때문에 매우 중요합니다.

-z follow,tcp,stream,0 으로 스트림 따라가기

이 단계에서는 Wireshark 의 tshark-z follow,tcp 옵션을 사용하여 패킷 캡처에서 특정 TCP 스트림을 따라가고 분석하는 방법을 배우게 됩니다. 이를 통해 두 엔드포인트 간의 대화의 실제 데이터 흐름을 재구성하여 애플리케이션 계층 통신을 더 쉽게 이해할 수 있습니다.

-z follow,tcp,stream,0 옵션을 사용하면 개별 패킷이 아닌 연속적인 데이터 흐름으로 스트림 0 (0 을 이전 단계에서 원하는 스트림 인덱스로 바꿉니다) 을 검사할 수 있습니다. 이는 단일 웹 페이지 로드에 여러 패킷이 포함될 수 있는 HTTP 와 같은 프로토콜을 분석할 때 특히 유용합니다.

  1. 먼저, 캡처에서 스트림 0 (첫 번째 TCP 대화) 을 따라가 보겠습니다. 이 명령은 pcap 파일을 읽고 전체 대화를 재구성합니다.
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,0
  1. 출력은 세 가지 중요한 정보를 표시합니다.

    • 클라이언트와 서버 간의 완전한 데이터 교환, 순서대로 재구성됨
    • 애플리케이션 계층 데이터의 ASCII 표현 (애플리케이션이 실제로 보낸 내용)
    • 방향 표시기 (">"는 클라이언트에서 서버로, "<"는 서버에서 클라이언트로) 는 대화의 각 부분을 시작한 사람을 추적하는 데 도움이 됩니다.
  2. 다른 스트림을 따라가려면 "0"을 원하는 스트림 인덱스 (2 단계의 출력에서) 로 바꿉니다. 예를 들어, 캡처의 두 번째 대화를 보려면 다음을 수행합니다.

tshark -r ~/project/tcp.pcap -z follow,tcp,stream,1
  1. 데이터만 표시하는 더 깔끔한 출력을 위해 (패킷 헤더 없이) -q (quiet 모드) 를 추가합니다. 이는 애플리케이션 데이터에만 관심이 있을 때 유용합니다.
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,0 -q

리다이렉션을 사용하여 스트림 텍스트 저장

이 단계에서는 출력 리다이렉션 (output redirection) 을 사용하여 TCP 스트림의 내용을 파일에 저장하는 방법을 배우게 됩니다. 이 기술은 네트워크 통신 패턴을 분석하거나 캡처된 데이터를 동료와 공유해야 할 때 특히 유용합니다. 이 프로세스에는 패킷 캡처 파일에서 특정 TCP 스트림 데이터를 추출하여 나중에 검사할 텍스트 파일에 저장하는 작업이 포함됩니다.

  1. 먼저, 스트림 0 을 stream0.txt라는 파일에 저장해 보겠습니다. 이 명령은 패킷 캡처 파일 (tcp.pcap) 을 읽고 TCP 스트림 인덱스 0 의 내용만 추출한 다음 출력을 새 텍스트 파일로 리다이렉션합니다.
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,0 -q > ~/project/stream0.txt
  1. 명령을 실행한 후 파일이 성공적으로 생성되었는지 확인합니다. ls -l 명령은 파일 크기 및 생성 시간을 포함한 파일에 대한 자세한 정보를 표시합니다.
ls -l ~/project/stream0.txt
  1. 저장한 실제 내용을 보려면 cat 명령을 사용합니다. 이렇게 하면 클라이언트와 서버 메시지를 모두 포함하여 TCP 스트림의 전체 대화가 표시됩니다.
cat ~/project/stream0.txt
  1. 동일한 기술이 캡처 파일의 모든 TCP 스트림에 적용됩니다. 명령에서 스트림 인덱스만 변경하여 스트림 1 을 저장하는 방법은 다음과 같습니다. 이전 파일을 덮어쓰지 않도록 새 파일 (stream1.txt) 을 만들고 있습니다.
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,1 -q > ~/project/stream1.txt
  1. 더 긴 스트림을 검사할 때 줄 번호를 추가하면 분석이 더 쉬워질 수 있습니다. cat과 함께 -n 플래그를 사용하면 각 줄이 해당 번호와 함께 표시되어 대화의 특정 부분을 참조하는 데 도움이 됩니다.
cat -n ~/project/stream0.txt

요약

이 랩에서는 Wireshark 의 명령줄 도구 tshark를 사용하여 TCP 네트워크 트래픽을 분석하는 방법을 배웠습니다. 연습에서는 -r을 사용하여 패킷 캡처를 읽고, -V를 통해 자세한 프로토콜 정보를 표시하고, 스트림 분석을 위해 -z conv,tcp를 사용하여 TCP 대화를 식별하는 방법을 다루었습니다.

인덱스를 통해 특정 TCP 스트림을 따라가고 출력 리다이렉션을 통해 스트림 내용을 저장하는 연습을 했습니다. 이러한 기술은 tshark를 사용하여 초기 캡처부터 집중적인 데이터 검사까지 네트워크 트래픽을 검사하기 위한 실용적인 워크플로우를 제공합니다.