Wireshark 를 활용한 네트워크 분석

WiresharkBeginner
지금 연습하기

소개

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

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

Wireshark 설치하기

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

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

Xfce 터미널 창 열기

참고: 무료 사용자는 인터넷 연결이 제한되므로, 실습 환경에 Wireshark 가 이미 사전 설치되어 있습니다. 목록의 5 번 항목 (Wireshark 설치 여부 확인) 으로 바로 넘어가셔도 됩니다. 직접 설치 과정을 실습해보고 싶다면 Pro 플랜으로 업그레이드하세요.

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

Wireshark 설치 프롬프트

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

먼저 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: 하드웨어 주소 지정 (MAC 주소)
    • IP: 인터넷 라우팅 정보
    • TCP/UDP: 전송 계층 상세 정보
    • Application data: 응용 프로그램 데이터 (예: 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 == 93.184.215.14를 입력하세요 (이는 example.com 의 IP 주소이며, 캡처 화면에 보이는 다른 IP 로 바꿔도 됩니다). 이중 등호 (==) 는 "정확히 일치함"을 의미합니다.

    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 는 네트워크 문제 해결, 트래픽 패턴 모니터링, 잠재적 보안 위협 식별을 위한 강력한 도구입니다. 앞으로도 꾸준히 연습하여 네트워크 분석 전문가로서의 역량을 키워나가시기 바랍니다.