Wireshark을 이용한 네트워크 분석

WiresharkBeginner
지금 연습하기

소개

이 실습에서는 업계 표준 네트워크 프로토콜 분석기인 Wireshark를 사용하여 네트워크 분석 기술을 배웁니다. 이 강력한 도구를 사용하면 패킷 수준에서 네트워크 트래픽을 검사할 수 있으며, 문제 해결 및 보안 분석을 위한 귀중한 통찰력을 얻을 수 있습니다.

여러분은 네트워크 패킷을 캡처, 필터링 및 해석하는 실무 기술을 습득하게 됩니다. 실습을 통해 다양한 프로토콜이 어떻게 통신하는지 이해하고 잠재적인 네트워크 문제를 식별하는 방법을 배우게 될 것입니다.

Wireshark 설치

이번 단계에서는 Ubuntu 시스템에 Wireshark를 설치합니다. Wireshark는 네트워크 트래픽을 캡처하고 대화형으로 탐색할 수 있게 해주는 네트워크 프로토콜 분석기입니다. 기본 Ubuntu 저장소에서 제공되므로 초보자도 쉽게 설치할 수 있습니다.

  1. 먼저 터미널을 엽니다. 바탕 화면에서 Xfce 터미널을 찾아 실행하세요. 터미널은 Wireshark를 설치하고 구성하기 위한 모든 명령을 실행할 공간입니다.

Xfce 터미널 창 열기

참고: 무료 사용자는 인터넷에 연결할 수 없으므로, 실습 환경에 Wireshark가 이미 사전 설치되어 있습니다. 목록의 5번 항목(Wireshark 설치 확인)으로 바로 이동하세요. Pro 사용자로 업그레이드하면 Wireshark를 직접 설치하는 연습을 할 수 있습니다.

Pro 사용자 전용
  1. 소프트웨어를 설치하기 전에 패키지 목록을 업데이트하는 것이 좋습니다. 이를 통해 최신 버전의 Wireshark를 설치할 수 있습니다. 다음 명령을 실행하세요:
sudo apt update
  1. 이제 Wireshark를 설치합니다. -y 플래그는 설치 중 발생하는 모든 질문에 자동으로 "yes"라고 응답하여 과정을 원활하게 진행합니다:
sudo apt install wireshark -y
  1. 설치 중에 일반 사용자가 패킷을 캡처할 수 있도록 허용할지 묻는 중요한 보안 프롬프트가 나타납니다. 이는 중요한 구성 선택입니다. "Yes"를 선택하면 Wireshark를 실행할 때 루트 권한이 필요하지 않으므로 일상적인 사용에 더 안전합니다. 화살표 키를 사용하여 "Yes"를 선택하고 Enter를 누르세요.

Wireshark 설치 프롬프트

  1. 설치가 완료되면 Wireshark가 올바르게 설치되었는지 확인합니다. 버전 확인을 통해 설치 성공 여부와 현재 실행 중인 버전을 알 수 있습니다:
wireshark --version
  1. 네트워크 트래픽을 캡처하려면 적절한 권한을 구성해야 합니다. 여기에는 사용자를 wireshark 그룹에 추가하고 Dumpcap(Wireshark의 패킷 캡처 도구)에 올바른 권한을 설정하는 작업이 포함됩니다:

먼저 wireshark 그룹이 존재하는지 확인합니다(설치 중에 생성되었어야 합니다):

getent group wireshark

어떤 이유로든 그룹이 존재하지 않는 경우 다음 명령으로 생성하세요:

sudo groupadd wireshark

다음 명령들은 Wireshark 자체는 일반 사용자로 실행하면서 Dumpcap은 높은 권한으로 실행되도록 구성합니다. 이는 보안 모범 사례입니다:

sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod 4755 /usr/bin/dumpcap
sudo gpasswd -a $USER wireshark

이 명령들을 실행한 후에는 그룹 변경 사항을 적용하기 위해 로그아웃했다가 다시 로그인해야 합니다. 이제 Wireshark 설치 및 구성이 완료되었으며 네트워크 트래픽을 분석할 준비가 되었습니다!

네트워크 트래픽 캡처

Wireshark가 설치되었으니 이제 네트워크 트래픽을 캡처해 보겠습니다. 이는 네트워크에서 발생하는 모든 대화를 녹음하기 위해 마이크를 설치하는 것과 비슷합니다. 컴퓨터가 온라인에서 데이터를 주고받을 때마다 데이터는 패킷이라는 작은 조각으로 나뉩니다. Wireshark를 사용하면 이러한 패킷을 보고 분석할 수 있습니다.

  1. 터미널에 wireshark를 입력하고 Enter를 눌러 Wireshark를 엽니다. 패킷 캡처를 수행할 그래픽 인터페이스가 실행됩니다.

  2. Wireshark가 열리면 네트워크 인터페이스(컴퓨터가 네트워크와 통신하는 데 사용하는 연결) 목록이 표시됩니다. "eth0" 또는 "eth1"이라는 인터페이스를 찾으세요. 이는 일반적으로 유선 이더넷 연결입니다. WiFi를 사용하는 경우 "wlan0"이 보일 수 있습니다.

Wireshark 인터페이스 선택

  1. 활성 인터페이스(패킷 수가 증가하는 인터페이스)를 더블 클릭하여 캡처를 시작합니다. 이제 메인 창에 실시간 패킷 스트림이 표시됩니다. 각 줄은 현재 발생하고 있는 서로 다른 네트워크 대화를 나타냅니다.

Wireshark 패킷 캡처 창

  1. 캡처할 간단한 네트워크 활동을 만들어 보겠습니다. 새 터미널 창을 열고 다음을 입력하세요:

    curl http://example.com
    

    이 명령은 example.com의 홈페이지를 가져오며, Wireshark가 캡처할 수 있는 HTTP 패킷(웹 트래픽)을 생성합니다. 이 명령을 실행한 직후 Wireshark에 새로운 패킷이 나타나는 것을 볼 수 있습니다.

  2. 패킷이 여러 개 보이면(약 5~10초 정도면 충분합니다) 상단의 빨간색 "Stop" 버튼을 클릭합니다. 캡처가 중지되어 새로운 패킷이 계속 들어오지 않는 상태에서 패킷을 검사할 수 있습니다.

  3. 축하합니다! 첫 번째 네트워크 트래픽을 캡처했습니다. 각 줄은 출발지/도착지 주소, 프로토콜 유형, 시간 등의 세부 정보가 포함된 패킷을 나타냅니다. 세 개의 주요 패널은 패킷 목록(요약), 패킷 세부 정보(기술적 분석), 원시 패킷 데이터(16진수 보기)를 보여줍니다.

  4. 작업을 저장하려면 File > Save로 이동하여 /home/labex 경로에 myfirstcapture.pcapng라는 이름으로 파일을 저장하세요. .pcapng 형식은 향후 분석을 위해 모든 패킷 세부 정보를 보존합니다.

네트워크 캡처 파일 저장

이 기본적인 캡처 과정은 네트워크 분석의 기초입니다. 다음 단계에서는 네트워크 동작을 이해하고 문제를 해결하기 위해 이러한 패킷을 필터링하고 해석하는 방법을 배웁니다.

패킷 데이터 분석

네트워크 트래픽을 캡처했으니 이제 단계별로 검사해 보겠습니다. 이는 디지털 대화를 읽는 것과 비슷합니다. 컴퓨터가 통신에 사용하는 "언어"를 해석하는 방법을 배울 것입니다.

  1. 캡처 파일 열기:
    Wireshark를 시작하고 File > Open을 사용하거나 파일을 더블 클릭하여 저장된 캡처 파일(myfirstcapture.pcapng)을 엽니다. 이 파일에는 이전에 기록한 모든 네트워크 트래픽이 포함되어 있습니다.

  2. 패킷 목록 이해하기:
    상단 창에는 캡처된 모든 패킷이 시간순으로 표시됩니다. 각 줄은 하나의 네트워크 메시지를 나타내며 다음 정보를 보여줍니다:

    • 보낸 사람 (Source IP)
    • 받는 사람 (Destination IP)
    • 통신 유형 (Protocol)
    • 간단한 요약 (Info)
  3. 패킷 세부 정보 검사:
    패킷을 클릭하면 중간 창에서 프로토콜 계층을 통해 내부 구조가 드러납니다:

    • Frame: 물리적 네트워크 세부 정보
    • Ethernet: 하드웨어 주소 지정
    • IP: 인터넷 라우팅 정보
    • TCP/UDP: 전송 세부 정보
    • 애플리케이션 데이터 (예: HTTP)
  4. HTTP 트래픽 필터링:
    필터 막대(상단)에 http를 입력하고 Enter를 누릅니다. 이렇게 하면 웹 트래픽만 분리됩니다. HTTP는 웹 브라우저가 서버와 통신하는 데 사용하는 프로토콜입니다.

Wireshark HTTP 패킷 필터

  1. 웹 요청 식별:
    Info 열에 "GET"이 포함된 패킷을 찾으세요. 이는 브라우저가 웹 페이지를 요청하는 것을 나타냅니다. 하나를 클릭하면 다음을 볼 수 있습니다:
    • 요청된 정확한 URL
    • 접속한 웹사이트
    • 요청에 대한 기술적 세부 정보

HTTP GET 패킷 세부 정보

  1. HTTP 헤더 분석:
    "Hypertext Transfer Protocol" 섹션을 확장하여 다음을 확인하세요:

    • 요청 메서드 (GET/POST)
    • 요청된 리소스 (/index.html)
    • 브라우저 정보
    • 쿠키 및 기타 메타데이터
  2. 서버 응답 찾기:
    "HTTP/1.1 200 OK" 패킷을 검색합니다. 이는 성공적인 웹 페이지 전달을 보여줍니다. 다음을 확인하세요:

    • 응답 코드 (200=성공, 404=찾을 수 없음)
    • 서버 유형 (Apache/Nginx)
    • 콘텐츠 유형 (HTML, 이미지 등)

HTTP 서버 성공 응답 패킷

  1. 웹 콘텐츠 보기:
    성공적인 응답에서 "Line-based text data" 섹션을 확인하여 실제 웹 페이지 콘텐츠를 확인하세요. 서버가 브라우저로 보낸 HTML 코드가 표시됩니다.

이 분석을 통해 네트워크 전반에서 발생하는 숨겨진 대화를 확인할 수 있습니다. 이러한 패턴을 이해하면 문제를 해결하고, 의심스러운 활동을 식별하며, 애플리케이션이 어떻게 통신하는지 파악할 수 있습니다.

필터 사용하기

Wireshark의 진정한 힘은 대량의 네트워크 데이터를 빠르게 필터링하고 분석하는 능력에서 나옵니다. 이번 단계에서는 필터를 사용하여 특정 유형의 트래픽에 집중하는 방법을 배웁니다. 필터는 네트워크 패킷의 바다에서 원하는 것을 정확히 찾도록 도와주는 검색어라고 생각하세요.

  1. Wireshark에서 캡처 파일을 연 상태로 간단한 디스플레이 필터를 사용해 보겠습니다. 필터 막대는 메인 도구 모음 바로 아래에 있습니다:

    • TCP 트래픽(가장 일반적인 전송 프로토콜)만 표시하려면 필터 막대에 tcp를 입력하고 Enter를 누릅니다. TCP가 아닌 모든 패킷은 숨겨집니다.
    • 특정 IP 주소로 오가는 트래픽을 표시하려면 ip.addr == x.x.x.x를 입력하세요. x.x.x.x는 캡처 파일의 주소나 DNS 조회 결과로 바꿉니다. example.com의 현재 주소를 확인하려면 터미널에서 dig example.com +short를 실행하고 출력된 IP 중 하나를 사용하세요. 93.184.215.14는 이 실습 텍스트의 예시일 뿐이며 실제 주소는 시간이 지남에 따라 변경됩니다. 등호 두 개(==)는 "정확히 일치"를 의미합니다.

    Wireshark TCP 필터 예시

    • 모든 HTTP GET 요청(가장 일반적인 웹 요청 유형)을 표시하려면 http.request.method == "GET"을 입력합니다. 어떤 웹 페이지가 요청되고 있는지 확인하는 데 도움이 됩니다.
  2. 이제 조건을 결합하여 더 복잡한 필터를 만들어 보겠습니다. example.com으로 향하는 모든 HTTP GET 요청을 찾아보겠습니다:

    • 필터 막대에 http.request.method == "GET" && http.host contains "example.com"을 입력합니다.
    • &&는 "AND"를 의미하므로 두 조건이 모두 참이어야 합니다.
    • contains 연산자를 사용하면 "example.com"이 포함된 모든 도메인을 일치시킬 수 있습니다.

    Wireshark HTTP GET 필터

    • 이 필터는 "example.com"이 포함된 도메인으로의 모든 GET 요청을 보여주며, 특정 웹사이트로의 트래픽을 모니터링하는 데 유용합니다.
  3. 특정 필터를 반복해서 사용할 가능성이 높으므로 Wireshark에서는 필터를 저장할 수 있습니다. HTTP GET 필터를 저장해 보겠습니다:

    • 필터 막대 옆의 더하기 기호("+")를 클릭합니다. 필터 관리 창이 열립니다.
    • 필터 이름을 "HTTP GETs"로 지정하고 Save를 클릭합니다. 기억하기 쉬운 이름을 선택하세요.
    • 이제 저장된 필터 목록(필터 막대 옆의 책갈피 아이콘)에서 선택하여 언제든지 이 필터를 빠르게 적용할 수 있습니다.
  4. 마지막으로 문서화나 추가 분석을 위해 결과를 내보내 보겠습니다:

    • Statistics > HTTP > Requests로 이동하여 모든 HTTP 요청 요약을 확인합니다.
    • "Save as"를 클릭하여 목록을 파일로 내보냅니다.
    • 위치를 /home/labex로 선택하고 파일 이름을 http_requests.txt로 저장합니다.

    HTTP 요청 목록 내보내기

이러한 방식으로 필터를 사용하면 대량의 네트워크 데이터를 빠르게 훑어보고 중요한 내용에 집중할 수 있습니다. 이는 특정 유형의 네트워크 트래픽을 즉시 보여주는 초강력 돋보기를 가진 것과 같습니다. 필터를 마스터하면 네트워크 문제를 해결하거나 보안 이벤트를 분석할 때 시간을 크게 절약할 수 있습니다.

요약

이번 실습에서는 Wireshark를 사용한 네트워크 분석의 기초를 배웠습니다. Wireshark 설치, 네트워크 트래픽 캡처, 패킷 데이터 분석, 특정 트래픽 유형을 분리하기 위한 필터 적용 등 필수 기술을 익혔습니다.

이러한 핵심 역량은 사이버 보안 및 네트워크 관리의 탄탄한 기반이 됩니다. Wireshark는 네트워크 문제 해결, 트래픽 패턴 모니터링, 잠재적인 보안 위협 식별을 위한 강력한 도구입니다. 네트워크 분석 전문성을 더욱 발전시키기 위해 계속 연습해 보세요.