Tshark 에서 캡처 필터 적용하기

WiresharkBeginner
지금 연습하기

소개

이 랩에서는 Tshark 의 캡처 필터를 사용하여 네트워크 패킷을 선택적으로 캡처하는 방법을 배우게 됩니다. Wireshark 필터 구문을 살펴보고 tshark -f "tcp"와 같은 명령을 사용하여 특정 인터페이스에서 TCP 트래픽을 캡처하는 연습을 할 것입니다.

실습을 통해 eth1에서 TCP 패킷을 필터링하고, 패킷 세부 정보를 분석하며, 결과를 tcp.pcap에 저장할 것입니다. 이 랩은 캡처 필터를 적용하여 대상 네트워크 트래픽을 효율적으로 격리하고 검사하는 실질적인 경험을 제공합니다.

수동 참조를 통해 구문 학습

이 단계에서는 매뉴얼 페이지를 참조하여 Wireshark 캡처 필터의 기본 구문을 배우게 됩니다. 필터를 사용하면 관심 있는 네트워크 트래픽만 선택적으로 캡처할 수 있으므로, 실제 패킷 캡처를 수행하기 전에 이러한 기본 사항을 이해하는 것이 중요합니다.

  1. 먼저, LabEx VM 에서 터미널을 엽니다 (아직 열려 있지 않은 경우). 기본 작업 디렉토리는 ~/project입니다. 여기서 모든 명령을 실행합니다.

  2. 포괄적인 Wireshark 필터 문서에 액세스하려면 터미널에서 다음 명령을 실행합니다.

man wireshark-filter

이 매뉴얼 페이지에는 캡처 필터 구문 및 기능에 대한 모든 공식 문서가 포함되어 있습니다. 효과적인 필터를 구축하기 위한 치트 시트라고 생각하십시오.

  1. 매뉴얼을 스크롤하면서 (탐색하려면 Enter 키를 누르십시오) 캡처 필터의 기초를 형성하는 다음 주요 섹션에 집중하십시오.

    • 기본 필터 구문 구조: 필터 표현식을 올바르게 형식화하는 방법
    • 일반적인 프로토콜 필터: TCP, UDP, HTTP 와 같은 프로토콜에 대한 미리 정의된 필터
    • 비교 연산자: 필터에서 값을 비교하는 방법
    • 논리 연산자: and, or, not 을 사용하여 조건을 결합
  2. 이제 실용적인 예제를 통해 배운 내용을 적용해 보겠습니다. 간단한 TCP 필터를 테스트하려면 다음 명령을 실행하십시오.

tshark -f "tcp" -c 5

이 명령은 세 가지 작업을 수행합니다.

  • -f "tcp"는 TCP 패킷만 캡처하도록 필터를 적용합니다.
  • -c 5는 캡처를 5 개의 패킷으로 제한합니다.
  • 결과는 터미널에 직접 표시됩니다.
  1. 네트워크 트래픽이 있는 경우, 캡처된 각 TCP 패킷의 세부 정보를 보여주는 다음과 유사한 출력을 볼 수 있습니다.
1 0.000000 192.168.1.1 → 192.168.1.2 TCP 74 443 → 49234 [SYN] Seq=0 Win=64240 Len=0

각 줄은 하나의 패킷을 나타내며, 패킷 번호, 타임스탬프, 소스 및 대상 IP 주소, 포트 및 TCP 플래그를 표시합니다.

  1. 출력을 검토한 후 q를 눌러 매뉴얼 페이지 (아직 열려 있는 경우) 와 실행 중인 tshark 캡처를 모두 종료합니다. 그러면 다음 단계로 진행할 준비가 된 명령 프롬프트로 돌아갑니다.

-f "tcp"를 사용하여 TCP 트래픽 필터링

이 단계에서는 Wireshark 의 필터 구문을 사용하여 TCP(Transmission Control Protocol) 네트워크 트래픽 캡처를 연습합니다. TCP 는 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나로, 애플리케이션 간에 안정적이고 순서가 지정되며 오류 검사가 수행되는 데이터 전송을 제공합니다. 이 실습은 이전에 학습한 기본 패킷 캡처 기술을 기반으로 합니다.

  1. 먼저 캡처 파일을 저장할 기본 작업 디렉토리에 있는지 확인합니다.
cd ~/project
  1. 네트워크 인터페이스에서 실시간 TCP 트래픽을 캡처하려면 다음 명령을 실행합니다.
sudo tshark -i eth1 -f "tcp" -c 10

참고: 무료 VM 에는 eth1 인터페이스가 없을 수 있습니다. eth0, eth2 등 다른 인터페이스를 사용할 수 있습니다.

이 명령의 각 부분이 수행하는 작업을 분석해 보겠습니다.

  • sudo는 패킷 캡처에 필요한 관리자 권한을 부여합니다.
  • -i eth1은 이더넷 인터페이스 (eth1) 에서 캡처하고 있음을 지정합니다.
  • -f "tcp"는 TCP 패킷만 수집하도록 캡처 필터를 적용합니다.
  • -c 10은 이 시연을 위해 캡처를 10 개 패킷으로 제한합니다.
  1. 출력에는 다음과 같은 형식으로 필수 정보가 포함된 TCP 패킷이 표시됩니다.
1 0.000000 192.168.1.1 → 192.168.1.2 TCP 74 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
2 0.000123 192.168.1.2 → 192.168.1.1 TCP 74 49234 → 443 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0

각 줄은 다음을 보여주는 TCP 패킷을 나타냅니다.

  • 패킷 번호 및 타임스탬프
  • 소스 및 대상 IP 주소
  • 소스 및 대상 포트
  • TCP 플래그 (예: SYN, ACK)
  • 시퀀스 번호 및 윈도우 크기
  1. 시퀀스 번호, 승인 번호, 플래그, 윈도우 크기, 체크섬 및 옵션과 같은 모든 헤더 필드를 포함하여 전체 TCP 패킷 구조를 검사하려면 상세 모드 (verbose mode) 를 사용합니다.
sudo tshark -i eth1 -f "tcp" -c 5 -V

-V 플래그는 시퀀스 번호, 승인 번호, 플래그, 윈도우 크기, 체크섬 및 옵션과 같은 모든 필드를 포함하는 전체 TCP 헤더를 보여주는 상세한 출력을 제공합니다.

  1. 실행 중인 캡처를 언제든지 중단해야 하는 경우, 단순히 Ctrl+C를 눌러 프로세스를 중지하면 됩니다. 이는 장시간 실행되는 캡처를 종료하고 싶거나 분석에 필요한 패킷을 충분히 확인했을 때 유용합니다.

eth1 에서 필터링된 트래픽 캡처

이 단계에서는 이전 단계의 TCP 필터링을 기반으로 특정 필터를 사용하여 eth1 인터페이스에서 네트워크 트래픽을 캡처하는 방법을 배웁니다. eth1 인터페이스는 일반적으로 기본 유선 네트워크 연결을 나타내며, 실제 패킷 캡처 시나리오를 시연하는 데 사용합니다.

  1. 먼저, 다음을 실행하여 네트워크 인터페이스를 확인합니다.
ip addr show eth1

이 명령은 eth1 인터페이스에 대한 자세한 정보를 표시합니다. eth1 인터페이스가 활성화 (상태 UP) 되어 있고 할당된 IP 주소가 있는 출력을 볼 수 있습니다. 이 확인은 중요합니다. 존재하지 않거나 활성화되지 않은 인터페이스에서는 트래픽을 캡처할 수 없기 때문입니다.

  1. eth1 에서 HTTP 트래픽을 구체적으로 캡처하려면 다음을 사용합니다.
sudo tshark -i eth1 -f "tcp port 80" -c 15

이 명령이 수행하는 작업을 자세히 살펴보겠습니다.

  • -i eth1은 모니터링할 네트워크 인터페이스를 지정합니다.
  • -f "tcp port 80"은 HTTP 트래픽 (포트 80 은 표준 HTTP 포트) 에 대한 캡처 필터를 생성합니다.
  • -c 15는 캡처를 15 개의 패킷으로 제한합니다. 이는 데이터를 압도하지 않으면서 데모에 충분합니다.
  1. 특정 IP 간의 트래픽을 캡처하려면 다음을 시도하십시오.
sudo tshark -i eth1 -f "host 8.8.8.8" -c 10

여기서는 Google 의 DNS 서버 (8.8.8.8) 로/에서 트래픽을 필터링하고 있습니다. "host" 필터는 이 특정 IP 주소로의 수신 및 발신 트래픽을 모두 일치시킵니다. 이는 특정 서버와의 통신을 모니터링하려는 경우에 유용합니다.

  1. 더 복잡한 필터링을 위해 조건을 결합하십시오.
sudo tshark -i eth1 -f "tcp port 443 and host 8.8.8.8" -c 5

이 명령은 필터를 결합하는 방법을 보여줍니다. HTTPS 트래픽 (포트 443) 을 8.8.8.8 로/에서 구체적으로 캡처합니다. "and" 연산자를 사용하면 여러 조건을 동시에 일치시키는 정밀한 필터를 만들 수 있습니다.

  1. 다음과 같은 세부 정보와 함께 필터링된 패킷을 표시하는 출력을 관찰하십시오.
1 0.000000 192.168.1.100 → 8.8.8.8 TCP 74 49234 → 443 [SYN] Seq=0 Win=64240 Len=0

이 샘플 출력은 로컬 머신 (192.168.1.100) 에서 Google 서버로의 TCP SYN 패킷 (TCP 연결의 첫 번째 패킷) 을 보여줍니다. 숫자는 네트워크 동작을 분석하는 데 도움이 되는 타이밍, 포트 및 TCP 시퀀스 정보를 나타냅니다.

-w tcp.pcap 로 결과 저장

이 단계에서는 캡처된 네트워크 트래픽을 나중에 분석할 수 있도록 파일에 저장하는 방법을 배웁니다. 이는 다른 시간에 네트워크 패킷을 검사하거나 동료와 공유해야 할 때 특히 유용합니다. 캡처를 저장하기 위해 Wireshark 의 명령줄 도구 Tshark 를 -w 옵션과 함께 사용합니다.

  1. 먼저, 올바른 작업 디렉토리에 있는지 확인합니다. ~/project 디렉토리는 캡처 파일을 저장하여 정돈된 상태를 유지할 곳입니다.
cd ~/project
  1. 이제 실제 TCP 트래픽을 캡처합니다. 다음 명령은 여러 가지 중요한 작업을 한 번에 수행합니다. TCP 패킷만 기록하고 이를 파일에 저장하는 네트워크 카메라를 설정하는 것과 같습니다.
sudo tshark -i eth1 -f "tcp" -w tcp.pcap -c 20

이 명령의 각 부분이 의미하는 바를 자세히 살펴보겠습니다.

  • -i eth1은 Tshark 에게 eth1 네트워크 인터페이스를 모니터링하도록 지시합니다.
  • -f "tcp"는 TCP 패킷만 기록하도록 캡처 필터를 적용합니다.
  • -w tcp.pcap은 캡처된 패킷을 tcp.pcap 이라는 파일에 저장합니다.
  • -c 20은 캡처를 20 개의 패킷으로 제한하여 너무 많은 데이터를 수집하지 않도록 합니다.
  1. 캡처를 실행한 후, 파일이 제대로 생성되었는지 확인해야 합니다. -lh 옵션이 있는 ls 명령은 파일 크기를 사람이 읽을 수 있는 형식으로 표시합니다.
ls -lh tcp.pcap

파일이 존재하고 크기 (일반적으로 20 개의 패킷에 대해 몇 KB) 를 보여주는 출력을 볼 수 있습니다.

  1. 이제 캡처된 패킷을 검사해 보겠습니다. 이 명령은 저장된 파일에서 처음 5 개의 패킷을 읽습니다.
tshark -r tcp.pcap -c 5

-r 옵션은 Tshark 에게 실시간 트래픽을 캡처하는 대신 파일에서 읽도록 지시하고, -c 5는 출력을 5 개의 패킷으로 제한합니다.

  1. 캡처한 내용에 대한 보다 기술적인 보기를 위해 자세한 모드를 사용할 수 있습니다. 이는 모든 프로토콜 세부 정보와 패킷 내용을 보여주지만, 출력을 관리하기 위해 처음 20 줄로 제한합니다.
tshark -r tcp.pcap -V | head -20

-V는 자세한 출력을 활성화하고, head -20은 해당 출력의 시작 부분만 표시하여 정보에 압도되지 않도록 합니다.

요약

이 랩에서는 실습을 통해 tshark 에서 캡처 필터를 적용하는 방법을 배웠습니다. 프로토콜 필터 및 논리 표현식을 포함한 필터 구문 기본 사항을 탐구한 다음, 기본 명령을 사용하여 TCP 트래픽을 캡처하는 연습을 했습니다.

이 랩에서는 라이브 인터페이스 모니터링, 자세한 모드를 사용한 출력 사용자 지정, 필터링된 캡처를 파일에 저장하는 것과 같은 고급 기술을 안내했습니다. 이러한 기술을 통해 인터페이스 선택, 필터링 및 출력 관리를 간소화된 워크플로우로 결합하여 효율적인 네트워크 트래픽 분석이 가능합니다.