Wirshark
네트워크 패킷을 캡처하고 분석하는 오픈소스 도구
와이어샤크는 다음과 같은 기능을 제공
- 네트워크 인터페이스에서 패킷을 캡처합니다.
- 패킷의 내용을 분석하고 디코드합니다.
- 패킷을 필터링하여 원하는 패킷만 분석합니다.
- 패킷을 저장하고 재생합니다.
- 패킷을 그래프나 차트로 시각화합니다.
와이어샤크를 사용하여 다음과 같은 작업을 수행
- 네트워크에서 발생하는 문제의 원인을 파악합니다.
- 네트워크를 통해 전송되는 데이터를 분석합니다.
- 네트워크 보안을 강화합니다.
- 새로운 네트워크 프로토콜을 개발합니다.
와이어샤크는 다음과 같은 경우에 유용
- 네트워크 관리자
- 보안 전문가
- 소프트웨어 개발자
- 네트워크 교육자
와이어샤크 사용 예:
같은 네트워크 구간의 Noel과 Susan은 이메일이나 메신저 등을 통해 대화를 주고받는다.
여기에서 Wireshark를 사용하는 제3자는 이 둘 사이의 네트워크로
돌아다니는 패킷( 네트워크상의 데이터 )을 수신하여 저장한다.
이때, PCAP이라는 파일 포맷으로 저장된다.
PCAP 은 Packet Capture의 약자로 네트워크 트래픽을 캡처하는 API구성이다.
Wireshark는 자체 프로그램으로 네트워크 트래픽을 캡처하는 것이 아니고,
운영체제에서 지원하는 캡처 라이브러리를 이용하여 수집한다.
유닉스 : libpcap
윈도우 : Winpcap
패킷(packet)
패킷은 네트워크를 통해 전송되는 데이터의 단위입니다.
패킷은 데이터와 헤더로 구성됩니다.
패킷은 OSI 7계층 모델의 2계층인 데이터 링크 계층에서 처리됩니다.
데이터 링크 계층은 패킷을 전송하기 전에 프레임으로 포장합니다. 프레임은 패킷의 헤더와 데이터를 포함합니다.
패킷은 다음과 같은 용도로 사용될 수 있습니다.
- 데이터 전송
- 네트워크 관리
- 보안
- 네트워크 분석
패킷은 네트워크의 기본 구성 요소입니다. 네트워크를 이해하려면 패킷에 대해 알아야 합니다.
- 헤더: 패킷에 대한 정보가 포함되어 있습니다.
- 프로토콜: 패킷의 종류를 나타냅니다.
- 소스 주소: 패킷의 원본 주소입니다.
- 대상 주소: 패킷의 목적지 주소입니다.
- 길이: 패킷의 크기입니다.
- 데이터: 패킷의 실제 내용입니다. ( 예를 들어, 웹 페이지, 이메일, 파일 등이 포함될 수 있습니다. )
와이어샤크 패킷을 분석하면 다음과 같은 정보를 얻을 수 있습니다.
- 패킷의 종류: 패킷이 어떤 프로토콜을 사용하여 전송되는지 확인할 수 있습니다.
- 패킷의 원본과 대상: 패킷이 어디에서 어디로 전송되는지 확인할 수 있습니다.
- 패킷의 크기: 패킷이 얼마나 큰지 확인할 수 있습니다.
- 패킷의 내용: 패킷의 실제 내용을 확인할 수 있습니다.
Wireshark 설치
와이어샤크 공식 홈페이지에 접속한 후 사용하는 운영체제에 맞는 파일을 다운로드
https://www.wireshark.org/#download
선택항목은 전부 체크하여 설치완료해준다.
Wireshark 사용법
가운데 빨간색 박스를 보면 자동으로 와이어샤크가 이더넷 인터페이스를 찾아놨다.
따라서 해당 부분을 클릭하면 왼쪽 상단에 상어지느러미 모양이 활성화되는데
이것을 누르면 해당 이더넷 인터페이스에서 오고 가는 패킷들을 찾아준다.
이더넷이란?
컴퓨터 네트워크에서 사용되는 표준 네트워크 프로토콜
이더넷은 다음과 같은 용도로 사용된다
- LAN(Local Area Network): 사무실, 학교, 가정 등에서 사용되는 근거리 통신망
- MAN(Metropolitan Area Network): 도시 규모의 통신망
- WAN(Wide Area Network): 국가나 대륙을 연결하는 광역 통신망
이더넷 구조
프레임: 데이터를 전송하는 단위
헤더: 프레임에 대한 정보가 포함되어 있습니다.
- 프레임 유형: 프레임의 종류를 나타냅니다.
- 소스 주소: 프레임의 원본 주소입니다.
- 대상 주소: 프레임의 목적지 주소입니다.
길이: 프레임의 크기입니다.데이터: 프레임의 실제 내용입니다.
이더넷 작동방식
1.데이터를 프레임으로 포장합니다.
2.프레임을 전송 매체를 통해 전송합니다.
3.수신하는 장치는 프레임의 헤더를 확인합니다.
4.프레임의 대상 주소가 자신의 주소와 일치하면 프레임의 데이터를 처리합니다.
5.프레임의 대상 주소가 자신의 주소와 일치하지 않으면 프레임을 버립니다.
이런식으로 오고가는 패킷을 실시간으로 잡아내는 것을 확인할 수 있다.
상단을 보면 해당 패킷이 어디서 보냈고 어디로 받았는지와 프로토콜의 정보등을 볼 수 있다.
- No. : 패킷을 수집한 순서
- Time : 패킷이 수집된 시간
- Source : 패킷을 보낸 주소
- Destination : 패킷 도착 주소
- Protocol : 프로토콜 정보
- Length : 패킷의 길이
- Info : 패킷 정보
예를 들어 "소켓을 이용해서 긴 메시지를 보낸다고 할 때 잘 가는지를 확인하려면"
TCP 프로토콜로 내 ip(Source)에서 도착지로 패킷이 얼마나(length) 갔는지를 확인할 수 있다.
뭔가 에러가 있을 때는 빨간색 혹은 검은색으로 패킷이 오고 가는 것을 확인할 수 있다. (색 변경가능)
데이터 한개 보냈을 때 패킷 수를 알고 있으면 데이터가 10만개가 잘 갔는지도 확인할 수 있다.
그리고 만약에 패킷 수집을 그만하고 싶으면 상어지느러미 옆에 중지버튼을 누르면 된다.
패킷 필터링
사실 위와 같이 그냥 start버튼으로 패킷을 수집해버리면 원하는 패킷만 보고 싶은데 다른 패킷들도 다 수집해버려서 보기 어렵다.
그래서 그런 문제를 해결하기 위해 필터링을 제공한다.
두 가지의 필터링 방식이 있는데 중요한 것은 아니므로 쉽게 설명하도록 한다.
1. 캡쳐필터 : 애초에 패킷 수집 자체에 필터를 걸어서 필터링에 적용된 패킷만 받는 방법(성능에 영향을 끼칠 수 있음)
2. 디스플레이 필터 : 오가는 패킷 전체를 수집한 후, 내가 화면에서 볼 것만 필터링하는 방법(권장, 다양한 연산이 사용가능함)
위에 상단바에 보면 "Apply a display filter" 라고 쓰여있는 검색바가 있다. (위 사진에서 ip라고 적힌 부분)
이 곳에다가 원하는 필터링 식을 적용하거나, 상단 메뉴에 Analyze > Display Filters... 에 들어가서 적용할 수 있다.
위 사진처럼 ip를 넣어 예를들어 "ip.addr == 192.0.2.1" 이라고 적용하면
source든 destination이든 아이피가 해당 아이피인 패킷만 볼 수 있다.
* 유용한 필터링 식
- eth.addr == 00:3f:1e:00:00:23 //출발지나 목적지 MAC 주소로 검색
- ip.addr == 192.168.0.2 // 출발지나 목적지 IP주소로 검색
- tcp.port == 3306 // TCP 출발지나 목적지 포트 번호로 검색
- ip.src != 10.1.2.3 // 출발지 IP주소가 해당 IP주소가 아닌것 검색
- eth.dst == 00:3f:1e:00:00:23 // 목적지 MAC주소 검색
기타 비교 연산자나 논리 표현도 가능해서 아주 다양하게 적용할 수도 있다.
출처: https://jeong-pro.tistory.com/155
'STUDY > for Developer' 카테고리의 다른 글
[IT] 진수 계산법 (0) | 2023.11.16 |
---|---|
[POSTMAN] 파일전송 테스트 하기 (0) | 2023.11.02 |
[Wireshark] failed to set hardware filter to promiscuous mode 에러 (0) | 2023.10.16 |
[POSTMAN] 포스트맨 SSL Error 해결방법 (0) | 2023.10.13 |
[IT] ASCII 개념과 아스키코드표 (0) | 2023.07.21 |