Tshark 에서 캡처 필터 적용하기

WiresharkBeginner
지금 연습하기

소개

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

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

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

수동 참조를 통해 구문 학습

이 단계에서는 매뉴얼 페이지를 참조하여 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 트래픽을 캡처하는 연습을 했습니다.

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