Wireshark 및 Tshark 를 이용한 패킷 분석

WiresharkBeginner
지금 연습하기

소개

본 실습에서는 Wireshark 와 그 명령줄 버전인 Tshark 를 사용하여 네트워크 패킷 분석의 기본 사항을 배웁니다. 먼저 네트워크 인터페이스를 탐색한 다음 실시간 네트워크 트래픽 캡처로 넘어갑니다. 또한 Tshark 명령줄 도구와 Wireshark 그래픽 사용자 인터페이스를 모두 사용하여 기존 패킷 캡처 파일을 읽고, 필터링하고, 분석하는 방법을 배웁니다. 이 실습은 네트워크 문제 해결 및 사이버 보안에 필수적인 기술인 패킷 분석에 대한 기초적인 이해를 제공합니다.

설치 확인 및 네트워크 인터페이스 목록 확인

이 실습 환경에는 Tshark 와 Wireshark 가 미리 설치되어 있습니다. 첫 번째 단계는 설치를 확인하고 패킷 캡처에 사용할 수 있는 네트워크 인터페이스를 식별하는 것입니다. 네트워크 인터페이스는 컴퓨터가 네트워크에 연결할 수 있도록 해주는 하드웨어 또는 가상 장치입니다.

  1. 먼저 Tshark 버전을 확인하여 설치가 올바르게 되었는지 확인합니다. 이 명령은 해당 도구가 시스템 경로에서 사용 가능한지 확인합니다.

    tshark --version

    Tshark 및 Wireshark 버전 번호를 표시하는 출력이 표시되어야 합니다.

    TShark (Wireshark) 4.2.x (Git v4.2.x packaged as 4.2.x-1)
    ...
  2. 다음으로 패킷 캡처에 사용할 수 있는 네트워크 인터페이스를 알아야 합니다. -D 플래그를 사용하여 사용 가능한 모든 인터페이스를 나열합니다.

    tshark -D

    출력에는 인터페이스가 번호와 이름으로 나열됩니다.

    1. eth0
    2. any (모든 인터페이스에서 캡처하는 의사 장치)
    3. lo (루프백)
    4. ...
    • eth0은 일반적으로 가상 머신 및 서버에서 흔히 사용되는 기본 이더넷 인터페이스입니다. 실시간 캡처에 이 인터페이스를 사용할 것입니다.
    • lo는 루프백 인터페이스로, 동일한 머신 내의 네트워크 통신에 사용됩니다.
    • any는 모든 인터페이스의 트래픽을 한 번에 캡처할 수 있도록 해주는 특수 의사 장치입니다.

설치를 확인하고 eth0 인터페이스를 식별했으므로 이제 패킷 캡처를 시작할 준비가 되었습니다.

기본 패킷 캡처 수행

네트워크 인터페이스를 식별했으므로 이제 실시간 패킷 캡처를 수행할 수 있습니다. 이 연습을 위해 eth0 인터페이스에서 소량의 패킷을 캡처하여 Tshark 가 작동하는 모습을 확인합니다. 이는 실시간 네트워크 활동을 관찰하는 기본적인 기술입니다.

  1. 캡처를 시작하려면 -i 플래그로 인터페이스를 지정하고 -c(개수) 플래그로 캡처할 패킷 수를 지정해야 합니다. eth0 인터페이스에서 10 개의 패킷을 캡처하려면 다음 명령을 실행합니다.

    tshark -i eth0 -c 10
  2. Tshark 는 패킷 캡처를 시작하고 각 패킷에 대한 한 줄 요약을 실시간으로 표시합니다. 출력은 아래 예시와 유사하게 패킷 번호, 타임스탬프, 소스 및 대상 IP 주소, 프로토콜 및 간략한 요약과 같은 정보를 보여줍니다.

     1 0.000000000 172.17.0.2 -> 172.17.0.1 DNS 79 Standard query 0x1a34 AAAA metadata.google.internal
     2 0.000293393 172.17.0.1 -> 172.17.0.2 DNS 111 Standard query response 0x1a34 No such name
     3 0.000408893 172.17.0.2 -> 172.17.0.1 DNS 79 Standard query 0x2b1f A metadata.google.internal
     4 0.000564893 172.17.0.1 -> 172.17.0.2 DNS 111 Standard query response 0x2b1f No such name
     ...

10 개의 패킷을 캡처한 후 Tshark 는 자동으로 중지됩니다. 이제 명령줄에서 실시간 네트워크 트래픽을 성공적으로 캡처하고 확인했습니다.

Tshark 를 사용하여 캡처 파일 분석

실시간 트래픽 캡처 외에도 일반적인 작업은 이전에 저장된 패킷 캡처 파일을 분석하는 것입니다. 일반적으로 .pcap 확장자를 가진 이 파일들은 오프라인 분석을 가능하게 합니다. capture.pcap이라는 샘플 파일이 프로젝트 디렉토리에 제공됩니다.

  1. 먼저 ls 명령을 사용하여 capture.pcap 파일이 현재 디렉토리 (/home/labex/project) 에 있는지 확인합니다.

    ls -l capture.pcap
  2. 이 파일에서 패킷을 읽으려면 -r(읽기) 플래그를 사용합니다. 파일에서 처음 10 개 패킷을 살펴보겠습니다.

    tshark -r capture.pcap -c 10
  3. 모든 패킷을 수동으로 검사하는 것은 비효율적입니다. Tshark 는 **표시 필터 (display filters)**를 사용하여 특정 기준과 일치하는 패킷만 표시할 수 있도록 합니다. 표시 필터를 적용하려면 -Y 플래그를 사용합니다. TCP 트래픽만 필터링해 보겠습니다.

    tshark -r capture.pcap -Y "tcp" -c 5

    이 명령은 capture.pcap에서 읽고, 표시 필터 tcp를 적용하며, 일치하는 처음 5 개의 패킷만 표시합니다.

  4. 이제 UDP 와 같은 다른 프로토콜을 필터링해 봅니다.

    tshark -r capture.pcap -Y "udp" -c 5

    이제 캡처 파일에서 UDP 패킷만 보게 됩니다. 표시 필터는 분석 대상을 특정 프로토콜, 주소 또는 포트로 집중시키는 강력한 기능입니다.

실시간 캡처 필터링 및 저장

이 단계에서는 캡처, 필터링 및 저장을 결합합니다. 모든 트래픽을 저장하는 대신 관심 있는 패킷만 저장하도록 **캡처 필터 (capture filter)**를 적용할 수 있습니다. 이는 대상 데이터 세트를 만드는 데 효율적입니다. DNS 트래픽만 캡처하여 새 파일에 저장하겠습니다.

  1. 캡처를 저장하려면 -w(쓰기) 플래그를 사용합니다. 캡처 필터를 적용하려면 -f 플래그를 사용합니다. DNS 는 일반적으로 UDP 포트 53 을 사용하므로 캡처 필터로 "port 53"을 사용하겠습니다.

    다음 명령을 실행하여 10 개의 DNS 패킷을 캡처하고 dns_traffic.pcap이라는 파일에 저장합니다.

    tshark -i eth0 -c 10 -f "port 53" -w dns_traffic.pcap

    일반 캡처와 달리 이 명령은 화면에 패킷을 출력하지 않습니다. 대신 10 개에 도달할 때까지 캡처된 패킷 수를 계속 표시합니다.

  2. 캡처가 완료되면 새 파일이 생성되었는지 확인합니다.

    ls -l dns_traffic.pcap
  3. 이제 새로 필터링된 캡처 파일을 검사하여 원하는 트래픽만 포함되어 있는지 확인할 수 있습니다.

    tshark -r dns_traffic.pcap

    출력에는 DNS 패킷 (또는 포트 53 의 다른 트래픽) 만 표시되어 캡처 필터가 올바르게 작동했음을 확인해야 합니다.

Wireshark GUI 를 사용하여 패킷 분석

Tshark 는 명령줄 작업에 탁월하지만, Wireshark 그래픽 사용자 인터페이스 (GUI) 는 심층적인 패킷 분석을 위한 강력한 시각적 환경을 제공합니다. 이 단계에서는 Wireshark GUI 를 사용하여 capture.pcap 파일을 검사합니다.

  1. 다음 명령을 사용하여 Wireshark 를 실행하고 capture.pcap 파일을 엽니다. 끝에 있는 &는 애플리케이션을 백그라운드에서 실행하여 터미널을 확보합니다.

    wireshark capture.pcap &
  2. Wireshark 창이 열립니다. 주요 레이아웃에 익숙해지는 데 잠시 시간을 할애하십시오.

    • 패킷 목록 창 (상단): 캡처에 있는 모든 패킷 목록입니다.
    • 패킷 세부 정보 창 (중앙): 선택한 패킷의 프로토콜 계층에 대한 상세하고 확장 가능한 보기입니다.
    • 패킷 바이트 창 (하단): 선택한 패킷의 원시 데이터로, 16 진수 및 ASCII 로 표시됩니다.
  3. GUI 를 사용하면 필터링이 쉽습니다. 창 상단에 있는 표시 필터 막대를 찾습니다 (자리 표시자 텍스트로 "Apply a display filter..."가 표시될 수 있음). 이 막대에 http를 입력하고 Enter 키를 누릅니다.

    http
  4. 이제 패킷 목록 창이 업데이트되어 캡처 파일의 HTTP 패킷만 표시됩니다. 중앙 창에서 세부 정보를 탐색하려면 아무 패킷이나 클릭할 수 있습니다.

  5. 탐색을 마쳤으면 Wireshark 창을 닫습니다.

요약

본 실습에서는 Wireshark 제품군에 대한 실습 경험을 쌓았습니다. Tshark 설치를 확인하고 사용 가능한 네트워크 인터페이스를 식별하는 방법을 배웠습니다. tshark를 사용하여 실시간 네트워크 트래픽을 캡처하고, 기존 .pcap 파일에서 읽어오고, 캡처 필터와 표시 필터를 모두 적용하여 특정 프로토콜을 격리하는 연습을 했습니다. 또한 필터링된 캡처를 새 파일에 저장하는 방법도 배웠습니다. 마지막으로, 보다 시각적인 패킷 분석 접근 방식을 위해 Wireshark 그래픽 사용자 인터페이스를 소개받았습니다. 이러한 기술은 네트워크 관리, 문제 해결 또는 보안에 관련된 모든 사람에게 필수적입니다.