Tshark 에서 HTTP 트래픽 필터링

WiresharkBeginner
지금 연습하기

소개

이 랩에서는 Wireshark 의 명령줄 도구인 Tshark 를 사용하여 HTTP 트래픽을 필터링하고 분석하는 방법을 배우게 됩니다. 포트 80 에서 웹 트래픽을 캡처하고 특정 필터링 기술을 사용하여 HTTP 요청을 격리하는 연습을 할 것입니다.

이 연습을 통해 HTTP 메서드 (GET/POST) 를 추출하고 구조화된 분석을 위해 JSON 형식으로 출력을 구성하는 방법을 익힐 수 있습니다. 이러한 기술은 네트워크 문제 해결 및 트래픽 검사 작업에 필수적입니다.

-f "tcp port 80"으로 HTTP 캡처

이 단계에서는 Wireshark 의 표시 필터 -f "tcp port 80"을 사용하여 HTTP 트래픽을 캡처하는 방법을 배우게 됩니다. HTTP (Hypertext Transfer Protocol, 하이퍼텍스트 전송 프로토콜) 는 월드 와이드 웹의 데이터 통신의 기반이며, 일반적으로 암호화되지 않은 웹 트래픽에 포트 80 을 사용합니다. 이 필터는 다른 네트워크 프로토콜에서 HTTP 트래픽을 격리하여 웹 통신을 더 쉽게 분석할 수 있도록 도와줍니다.

시작하기 전에 몇 가지 기본 사항을 이해해 봅시다.

  • 네트워크 포트는 특정 유형의 네트워크 트래픽이 들어오고 나가는 문과 같습니다.
  • 포트 80 은 HTTP 트래픽에 할당된 표준 포트입니다.
  • Wireshark 는 이러한 포트 번호를 기반으로 트래픽을 필터링할 수 있습니다.

먼저, LabEx VM 환경에서 Wireshark 를 열어 보겠습니다. 다음 단계를 주의 깊게 따르십시오.

  1. Xfce 데스크톱에서 터미널을 엽니다 (응용 프로그램 메뉴 > 시스템 > 터미널에서 찾을 수 있습니다).
  2. 캡처 파일을 저장할 기본 작업 디렉토리로 이동합니다.
cd ~/project
  1. HTTP 트래픽에 대한 표시 필터를 사용하여 Wireshark 를 시작합니다.
sudo wireshark -k -f "tcp port 80"

명령 옵션을 자세히 살펴보겠습니다.

  • -k: Wireshark 가 즉시 패킷 캡처를 시작하도록 지시합니다.
  • -f "tcp port 80": 이것은 Wireshark 에게 포트 80 으로 향하거나 포트 80 에서 오는 TCP 트래픽만 기록하도록 지시하는 캡처 필터입니다.

이제 분석할 HTTP 트래픽이 필요합니다. 다른 터미널 창을 열고 (데스크톱을 마우스 오른쪽 버튼으로 클릭하고 "Open Terminal"을 선택할 수 있습니다) 다음 명령으로 테스트 트래픽을 생성합니다.

curl http://example.com

Wireshark 창에서 캡처된 패킷이 표시됩니다.

  1. example.com 에 대한 컴퓨터의 HTTP 요청 (일반적으로 "GET / HTTP/1.1"로 시작)
  2. 웹 서버의 응답 (일반적으로 "HTTP/1.1 200 OK" 포함)

각 패킷은 다음과 같은 중요한 세부 정보를 보여줍니다.

  • 소스 및 대상 IP 주소
  • 프로토콜 (HTTP)
  • 패킷 크기
  • 타이밍 정보

초보자를 위해: Wireshark 는 네트워크 트래픽을 위한 현미경과 같습니다. 필터 tcp port 80은 다른 유형의 네트워크 통신을 무시하고 웹 트래픽만 표시하는 특수 렌즈와 같습니다. 이 집중된 보기를 통해 다른 네트워크 활동에 압도되지 않고 웹 브라우저와 서버가 어떻게 통신하는지 이해할 수 있습니다.

-Y "http.request"로 요청 필터링

이 단계에서는 Wireshark 의 표시 필터 -Y "http.request"를 사용하여 HTTP 요청을 필터링하는 방법을 배우게 됩니다. 이 필터는 응답 및 기타 네트워크 트래픽을 제외하고 HTTP 요청 패킷에만 집중할 수 있도록 도와줍니다. HTTP 요청은 클라이언트가 서버로 보내는 초기 메시지를 나타내므로 웹 트래픽 분석의 기본입니다.

HTTP 트래픽을 캡처했던 이전 단계를 기반으로, 이제 HTTP 요청만 필터링해 보겠습니다.

  1. 먼저, 캡처 파일로 작업할 기본 작업 디렉토리에 있는지 확인합니다.
cd ~/project
  1. HTTP 요청에 대한 표시 필터를 사용하여 Wireshark 를 실행합니다.
sudo wireshark -k -Y "http.request"

-Y 옵션은 표시 필터를 적용합니다 (1 단계에서 사용된 캡처 필터 -f와 다름). 캡처 필터는 기록되는 내용을 제한하는 반면, 표시 필터는 이미 캡처된 데이터를 분석하는 데 도움이 됩니다. 이 특정 필터는 HTTP 요청을 포함하는 패킷만 표시합니다.

  1. 분석할 테스트 트래픽을 생성하기 위해 다른 터미널을 열고 다음 일반적인 HTTP 클라이언트 명령을 실행합니다.
curl http://example.com
wget http://example.com

초보자를 위해: 표시 필터 http.request는 특히 HTTP 요청 패킷과 일치합니다. 이는 서버로 전송되는 요청만 분석하고 서버 응답은 무시하려는 경우에 유용합니다. 필터 구문은 프로토콜별 기준에 따라 표시할 패킷을 정확하게 선택할 수 있는 Wireshark 의 강력한 표시 필터 언어의 일부입니다.

Wireshark 창에서 이제 curl 및 wget 명령의 HTTP 요청 패킷만 표시되어야 합니다. 각 패킷은 다음을 포함한 중요한 HTTP 프로토콜 정보를 표시합니다.

  • 요청 유형을 나타내는 HTTP 메서드 (GET, POST 등)
  • 액세스 중인 특정 리소스를 보여주는 요청된 URI
  • 프로토콜 버전을 보여주는 HTTP 버전 (예: HTTP/1.1)
  • 대상 서버를 식별하는 호스트 정보

-e http.request.method 로 메서드 추출

이 단계에서는 Wireshark 의 명령줄 도구인 tshark 를 사용하여 네트워크 트래픽에서 HTTP 요청 메서드를 추출하는 데 중점을 둡니다. HTTP 메서드는 데이터를 검색하기 위한 GET 또는 데이터를 제출하기 위한 POST 와 같이 리소스에 대해 수행할 원하는 작업을 나타내는 동사입니다.

시작하기 전에, 우리가 무엇을 하고 있는지 이해해 봅시다.

  • HTTP 메서드는 웹 통신의 기본 구성 요소입니다.
  • Tshark 를 사용하면 캡처된 네트워크 패킷에서 이러한 메서드를 직접 검사할 수 있습니다.
  • -e 플래그를 사용하면 패킷 데이터에서 특정 필드를 추출할 수 있습니다.

단계별로 과정을 살펴보겠습니다.

  1. 먼저, 캡처 파일이 저장된 올바른 작업 디렉토리에 위치해야 합니다.
cd ~/project
  1. 이제 tshark 명령을 실행하여 실시간 트래픽에서 HTTP 메서드를 추출합니다.
sudo tshark -Y "http.request" -T fields -e http.request.method

이 명령을 분석해 보겠습니다.

  • sudo: 네트워크 트래픽을 캡처하는 데 필요한 권한을 제공합니다.
  • tshark: Wireshark 의 명령줄 버전입니다.
  • -Y "http.request": HTTP 요청만 표시하도록 표시 필터를 적용합니다.
  • -T fields: 전체 패킷이 아닌 필드 기반 출력을 원한다고 지정합니다.
  • -e http.request.method: tshark 에게 HTTP 메서드 필드만 추출하도록 지시합니다.
  1. 이를 실제로 확인하기 위해 다른 터미널 창에서 테스트 트래픽을 생성합니다.
curl -X GET http://example.com
curl -X POST http://example.com
curl -X DELETE http://example.com

이러한 각 curl 명령은 서로 다른 HTTP 메서드를 example.com 으로 보내며, tshark 는 이를 캡처하여 표시합니다. curl 의 -X 플래그를 사용하면 사용할 HTTP 메서드를 지정할 수 있습니다.

이러한 명령을 실행한 후 다음과 유사한 출력을 볼 수 있습니다.

GET
POST
DELETE

이 출력은 캡처된 트래픽에서 어떤 HTTP 메서드가 사용되었는지 정확하게 보여주므로 웹 요청 패턴을 쉽게 분석할 수 있습니다. 메서드 이름은 tshark 에 의해 캡처된 순서대로 나타납니다.

-T json 으로 JSON 형식 표시

이 단계에서는 Wireshark 의 Tshark 유틸리티를 사용하여 캡처된 HTTP 트래픽 데이터를 JSON 형식으로 지정하는 방법을 살펴보겠습니다. JSON (JavaScript Object Notation) 은 사람이 읽기 쉽고 기계가 구문 분석하기 쉬운 가벼운 데이터 형식입니다. 이는 네트워크 트래픽을 프로그래밍 방식으로 분석하는 데 이상적입니다.

시작하기 전에, JSON 출력이 왜 가치 있는지 이해해 봅시다.

  • 구조화된 데이터 구성
  • 다른 도구 및 스크립트와의 쉬운 통합
  • 데이터 교환을 위한 표준화된 형식
  1. 먼저, 명령을 실행할 기본 작업 디렉토리에 있는지 확인합니다.
cd ~/project
  1. 이제 Tshark 를 실행하여 HTTP 요청을 캡처하고 JSON 형식으로 출력해 보겠습니다. 이 명령은 필터링과 JSON 형식을 결합합니다.
sudo tshark -Y "http.request" -T json -e http.request.method -e http.host -e http.request.uri

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

  • -Y "http.request": 이 필터는 Tshark 에게 HTTP 요청 패킷만 표시하도록 지시합니다.
  • -T json: 출력을 JSON 형식으로 원한다고 지정합니다.
  • -e 필드: 각 HTTP 요청에서 특정 정보를 추출합니다.
    • http.request.method: 사용된 HTTP 메서드 (GET, POST 등)
    • http.host: 액세스 중인 웹사이트 도메인
    • http.request.uri: 요청된 특정 경로 또는 리소스
  1. 캡처할 테스트 트래픽을 생성하기 위해 두 번째 터미널 창을 열고 다음 curl 명령을 실행합니다.
curl http://example.com
curl http://example.org/sample

이 테스트 트래픽이 생성되는 동안 Tshark 명령을 실행하면 다음과 같은 구조의 출력을 볼 수 있습니다.

[
  {
    "_index": "packets-1",
    "_source": {
      "layers": {
        "http.request.method": ["GET"],
        "http.host": ["example.com"],
        "http.request.uri": ["/"]
      }
    }
  },
  {
    "_index": "packets-2",
    "_source": {
      "layers": {
        "http.request.method": ["GET"],
        "http.host": ["example.org"],
        "http.request.uri": ["/sample"]
      }
    }
  }
]

각 HTTP 요청이 명확하게 레이블이 지정된 필드가 있는 별도의 JSON 객체가 되는 방식을 확인하십시오. 이 구조는 다음을 쉽게 식별할 수 있도록 합니다.

  • 어떤 웹사이트에 액세스했는지
  • 어떤 유형의 요청이 이루어졌는지
  • 어떤 특정 페이지 또는 리소스가 요청되었는지

JSON 형식은 나중에 분석하기 위해 이 데이터를 저장하거나 JSON 데이터를 자동으로 처리할 수 있는 다른 도구에 공급하려는 경우 특히 유용합니다.

요약

이 랩에서는 Wireshark 의 Tshark 명령줄 도구를 사용하여 HTTP 트래픽을 필터링하고 분석하는 방법을 배웠습니다. 실질적인 분석을 위해 -f "tcp port 80"으로 HTTP 트래픽을 캡처하고 curl을 사용하여 테스트 트래픽을 생성하는 연습을 했습니다.

또한 -Y "http.request"로 HTTP 요청을 필터링하고 -e http.request.method를 사용하여 HTTP 메서드와 같은 특정 데이터를 추출하는 연습도 했습니다. 이 랩에서는 -T json을 사용한 JSON 형식의 출력을 시연하여 효율적인 네트워크 트래픽 검사를 위한 핵심 기술을 익혔습니다.