Wireshark 설치하기
https://www.wireshark.org/download.html
Wireshark · Download
Wireshark: The world's most popular network protocol analyzer
www.wireshark.org

ㅡ> 사용하는 OS에 따라 설치해 주면 된다. (윈도우의 경우 Windows x64 Installer 설치)
Wireshark를 통해 패킷 분석을 하기 전에 먼저 Wireshark란 무엇이고 어떤 기능을 가지고 있는지부터 알아보자.
Wireshark란 무엇인가?
Wireshark는 네트워크 프로토콜 분석기로서 실시간으로 네트워크 트래픽을 캡처하고 분석하는 데 사용되는 아주 강력한 Tool이다.
Wireshark의 대표적인 기능들
1. 캡처 필터 기능
특정 조건에 맞는 패킷만을 캡처할 수 있는 기능이다.
예를 들어서 특정 IP 주소나 프로토콜 등을 대상으로 필터링을 걸 수 있다.
필터링을 거치게 되면 관심 있거나 주요하게 봐야 하는 트래픽을 집중적으로 볼 수 있게 된다.
2. 디스플레이 필터 기능
캡처 필터 기능과 유사하게 특정 조건에 맞는 패킷만 표시할 수 있는 기능이다.
캡처 필터 기능과의 차이점은 디스플레이 패킷은 이미 캡처한 패킷에 대한 필터링도 같이 수행할 수 있다는 것이다.
3. packet list 패널
캡처한 패킷이 시간 순서대로 나열되고 각 패킷에 대한 기본정보를 확인할 수 있는 기능이다.
또한 패킷을 클릭해서 세부정보도 볼 수 있다.
4. packet detail 패널
선택한 패킷의 세부정보를 계층별로 볼 수 있는 기능이다.
OSI 7 계층 각각의 계층에 있는 헤더와 payload를 분석해서 이 패킷의 구성 및 정보를 확인할 수 있다.
5. packet byte 패널
사용자가 선택한 패킷의 원시 byte 데이터를 16진수 및 ASCII 형식으로 확인할 수 있는 기능이다.
이를 통해 패킷 안에 어떤 내용이 담겨서 보내지는지 확인이 가능해진다.
6. 프로토콜 분석 기능
Wireshark는 수백 개의 네트워크 프로토콜을 지원해 주는데 패킷을 자동으로 해석하고 사용자가 이용하기 쉬운 형태로 정보를 제공한다. 그리고 특정 프로토콜을 사용하는 트래픽을 분석할 수 있도록 도와주는 기능을 제공한다.
7. 통계 및 그래프
다양한 통계와 그래프 기능을 제공해서 사용자에게 더 예쁘게 보여준다.
통계 기능에는 계층형 통계와 대화형 통계가 있다.
그래프에는 입출력 그래프와 flow 분석 등이 있다.
8. 패킷 추적 및 필터링
특정 패킷을 추적하거나 그와 관련된 패킷들을 필터링해서 특정 이벤트의 전체적인 패킷 교환 과정을 한꺼번에 볼 수 있다.
Wireshark를 이용한 패킷 분석
다운로드한 Wireshark 프로그램을 실행해 준다.

노트북과 같은 무선 WI-FI를 사용한다면 WI-FI를, 유선 데스크톱을 사용한다면 이더넷을 클릭해서 들어가 준다.

먼저 위에 사진의 헤더가 무엇을 의미하는지부터 알아보자.
No : 패킷을 수집하는 순서대로 쌓이는 번호이다.
Time : 패킷이 수집된 시간이다.
Source : 패킷을 보낸 주소이다.
Destination : 패킷의 도착 주소이다.
Protocol : 프로토콜 정보이다.
Length : 패킷의 길이이다.
Info : 패킷에 대한 정보이다.
다음으로는 컴퓨터로 8.8.8.8에 접속해서 이 패킷 정보들을 Wireshark에서 분석해보고자 한다.

win + r에 cmd를 쳐서 cmd 창을 실행시킨다.

ping 8.8.8.8(구글 공개 DNS 서버 주소)을 이용해서 8.8.8.8에 네트워크 요청을 보낸다.

요청을 보내고 Wireshark를 이용해서 확인해 보면 프로토콜 정보는 ICMP로 Echo request와 Echo reply가 오고 간 것을 실시간으로 확인할 수 있다.

이와 같이 ICMP 값을 보낼 때는 마지막에 일부러 쓰레기 값을 보낸다.
위와 같은 경우 전체 오고 간 패킷들이 다 떠서 관심 있거나 주요하게 봐야 하는 패킷들을 보기에 어려울 수 있다.
따라서 패킷 필터링을 걸어서 원하는 패킷만 뽑아내서 분석해 보겠다.
패킷 필터링
수식 자체에 필터를 걸어서 수집하거나 실시간으로 모든 패킷을 수집해서 내가 보고 싶은 패킷들만 걸러서 볼 수도 있다.

ip.addr == 8.8.8.8로 필터링을 걸어보면 IP 주소가 8.8.8.8인 부분만 필터링 돼서 보이게 된다.
대표적인 것들을 예를 들어보자면,
ip.addr == IP 주소
eth.addr == MAC 주소
tcp.port == 3306 ㅡ> 3306에 대해 포트 필터링해서 보여준다.
ip.src == IP 주소
ip.src != IP 주소 ㅡ> 출발지 주소가 해당 IP 주소가 아닌 것만 필터링해서 보여준다.
ip.dst == IP 주소
== 같을 경우
! = 포함을 하지 않는 것
< , > , >= , <= ttl 값이나 데이터 사이즈를 확인할 때 사용
tcp.window_size <1000
ip.ttl ≤ 100
http
tcp
https
&& and
|| or
^ xor
! not
위와 같이 사용할 수 있다.
패킷 필터링을 이용한 특정 패킷 상세정보 보기 실습
임의의 로그인 테스트 사이트에서 아이디/비밀번호로 로그인을 하고 이때 발생한 패킷을 분석해 보았다.

ㅡ> 어떤 테스트용 로그인 페이지를 이용해도 상관없다. 단, https와 같이 암호화가 되어있는 페이지의 경우 분석 결과가 암호화되어서 나올 수 있으니 이 실습에서는 http 페이지를 사용하는 것이 좋다.
Username : test
Password : 1234로 로그인을 요청한다.

그러고 cmd 창에서 nslookup [해당 test login url 주소] 명령어를 통해 해당 URL의 IP 주소를 알아낸다.

Wireshark로 돌아와서 ip.addr == [test login 사이트 URL 주소]로 패킷을 필터링한다.

ㅡ> HTTP Post 방식으로 보내진 패킷을 확인할 수 있고 이 패킷을 우클릭한 뒤, 따라가기 -> TCP 스트림을 클릭한다.

위와 같은 화면이 뜨게 된다.
이를 통해서 source까지 모두 확인이 가능하다.
또한, Username, Password가 무엇인지까지 노출되는 보안상의 취약점이 존재한다.
