와이어샤크 패킷분석 - waieosyakeu paekisbunseog

오늘의 회고

오늘은 WireShark 라는 Tool을 이용하여 패킷을 분석해보는 과정을 진행했습니다.
해킹 툴로 많이 이용 된다지만,, 저 같은 주니어에게는 그저 네트워크 프로그래밍 공부 중 하나일 뿐이죠.. ㅎㅎ..
요즘에는 재택근무를 주로 하는데, 답답합니다.. 정말 답답합니다... 그래서 웬만하면 출근하려고 하지만 요즘 늘어나는 서울 확진자가 너무 무섭네요.. 어쨌든 그래서 오늘은 WireShark를 이용하여 간단하게 패킷 분석하는 과정을 알아 보겠습니다.

오늘 학습한 것

  • WireShark를 이용한 간단 패킷 분석

WireShark

WireShark는 쉽게 말해 패킷을 캡쳐하고 분석하는 오픈소스 프로그램입니다.
강력하고 쉬운 사용법 덕분에 해킹뿐만 아니라 보안 취약점 분석, 보안 컨설팅, 개인정보 영향평가 등 여러 분야에서 폭 넓게 사용됩니다.
설치 방법 및 필터링 사용법은 여기에 잘 정리 되어있으니 참고하시면 좋을 것 같습니다.

Analyze Packets

와이어 샤크를 구동하면 정신없는 패킷들을 볼 수 있습니다. 이 패킷 중에 내가 원하는 페이지의 패킷을 보고싶다면 먼저 원하는 페이지의 IP주소를 알아야 합니다. 만약 www.google.com 으로 요청을 보내고 싶다면 터미널에 아래와 같이 입력합니다. (MAC OS 기준)

$ nslookup www.google.com

와이어샤크 패킷분석 - waieosyakeu paekisbunseog

이렇게 IP를 알아내었으니 WireShark 에 진입 해 봅시다.

와이어샤크 패킷분석 - waieosyakeu paekisbunseog

위와 같이 캡쳐할 대상을 선택할 수 있습니다. Wi-Fi로 통신하고 있으니 제일 상단 Wi-Fi: en0을 선택합니다.
와이어샤크 패킷분석 - waieosyakeu paekisbunseog

그러면 위와 같은 화면을 볼 수 있습니다...!
여기서 저는 알아낸 www.google.com 의 IP 172.217.26.132의 요청만 보고싶은 것이기 때문에 필터링을 해줘야 합니다.
상단 필터링 Form에 아래와 같이 입력합니다. (ip주소는 달라집니다 꼭 직접 nslookup을 통해 확인하고 진행하세요.)
와이어샤크 패킷분석 - waieosyakeu paekisbunseog

그러면 아래 처럼 해당 ip주소와 관련있는 패킷만 보여지게 됩니다.
와이어샤크 패킷분석 - waieosyakeu paekisbunseog

Three Way Hand Shake

와이어샤크 패킷분석 - waieosyakeu paekisbunseog

아래는 3 Way Hand Shake 과정입니다. 위 패킷에서 Three Way Hand Shake 과정에 해당하는 패킷을 찾아보시기 바랍니다.

  • 먼저 3-Way Hand Shake 과정을 수행합니다.
    • Client(Source Port) 에서 Server(Destination Port)로 통신을 원한다는 신호를 보냅니다. [SYN] Seq = 0
    • Server에서 SYN을 정상적으로 받았다는 신호를 보냅니다. [SYN, ACK] Seq=0 Ack=1
    • Client에서 SYN-ACK를 잘 받았다고 신호를 보냅니다. [ACK] Seq=1 Ack=1
  • Client 에서 HTTP 요청을 보냅니다. [GET / HTTP/1.1]
  • Server 측에서 확인 신호를 보냅니다.

TCP 패킷 정보

또한 패킷들을 클릭하면 패킷의 정보도 볼 수 있습니다.

와이어샤크 패킷분석 - waieosyakeu paekisbunseog

  • Source Port (발신지 포트 필드) : 발신지 포트 필드는 발신지에서 오픈된 포트입니다. 위 포트를 보면 50572 포트인 것을 확인할 수 있습니다.
  • Destination Port (목적지 포트 필드) : 목적지 포트 필드는 수신지에서 오픈된 포트입니다. 위의 패킷을 보면 51462 포트인 것을 확인할 수 있습니다.
  • Squence Number (순차 번호 필드) : 순차번호필드는 고유한 번호를 가지며, 이 값으로 TCP 세그먼트에 대한 식별값을 제공하며, 통신 스트림일부가 분실되면 확인을 위해 수신자를 사용가능하게 합니다. 이 순차번호는 패킷에 포함되어 있는 데이터 만큼 증가하게 됩니다.
  • Acknowledgement Number (확인 응답 번호 필드) : 확인 응답 번호 필드는 다음번에 기대되는 순차번호를 표시합니다. ack number에 관련하여 530의 값을 가지게 됩니다.
  • Header Length (데이터 오프셋 필드) : 데이터 오프셋필드는 TCP헤더의 길이를 정의합니다. 길이는 4byte씩 증가되고, 이 필드의 값이 20이면 80바이트 길이를 갖는다는 것입니다.

Reference

Wireshark(와이어샤크) 설치 및 사용법 + 필터링 사용법

보안이 하고싶은 joseph

패킷분석

와이어샤크를 이용해 IP패킷 분석하기

joseph94 2020. 7. 31. 14:32

오늘은 와이어샤크를 이용해 IP패킷을 분석해 보도록 하겠습니다.

분석 전 먼저 헤더 구조를 알아야 하니 IP 헤더구조에 대해 설명하겠습니다.

와이어샤크 패킷분석 - waieosyakeu paekisbunseog
IP 패킷구조

버전 : 사용중인 IP패킷의 버전 (IPv4 또는 IPv6)

헤더길이 : IP 헤더의 길이

서비스 타입 :  라우터가 트래픽의 우선순위를 지정하는데 사용하는 플래그유형

총 길이 : IP패킷의 총길이(헤더+페이로드)

식별자 : 패킷의 순서를 식별하는데 사용되는 고유 번호

플래그 : 패킷이 단편화되었을때 단편화가 끝났는지, 더 남았는지 확인 가능한 필드

단편 오프셋 : 패킷이 단편화 되었으면 해당 필드 값을 이용해 올바른 순서로 재구성 하는 필드

생존시간 : IP 패킷의 생존시간을 지정하는 필드 (즉 얼마나 많은 라우터를 경우 할 수있는지 확인 하는 필드)

프로토콜 : 상위 프로토콜을 식별하기 위한 프로토콜 번호를 저장하는 필드 (프로토콜 별 고유 번호가 존재)

헤더 체크썸 : IP헤더가 손상됐는지 검사하는 필드

출발지 IP 주소 : 패킷을 보낸 host ip주소

목적지 IP 주소 : 패킷의 목적지 ip주소

데이터 : 실제 데이터가 담겨있는 필드

----------------------------------------------------------------------------------------------------------------------------------

와이어샤크 패킷분석 - waieosyakeu paekisbunseog
와이어샤크에서 캡쳐한 사진

위 사진에 나와있는 패킷들을 하나씩 클릭하여 분석해보도록 하겠습니다.

와이어샤크 패킷분석 - waieosyakeu paekisbunseog
첫 번째 패킷

우선 첫번째 패킷입니다

버전은 v4인것을 확인 할 수있습니다.

헤더 길이는 20바이트입니다.

헤더 + 데이터의 길이는 1500바이트입니다. (※ 이더넷 MTU는 1500byte 입니다)

패킷의 고유 식별자는 16진수로 0x61d1이고 2진수로 25041 인것을 알 수 있습니다.

flags에 More fragments가 1로 표기된 것이 보이며 이는 단편화가 진행중이라는 것을 나타냅니다

오프셋 값은 0으로 이는 해당 패킷은 단편화중에서 첫 번째를 나타냅니다.

TTL 값은 128로 목적지 장치의 OS 는 windows라는 것을 알 수 있습니다

해당 패킷의 상위프로토콜은 ICMP (1) 인것을 알 수있습니다. ※ (1)은 고유 프로토콜 번호를 나타냄

출발지 IP와 목적지 IP는 각각 192.168.0.114 / 192.168.0.193 이며

마지막으로 데이터가 1480 byte 크기 임을 확인 가능합니다.

※ 데이터 크기가 1500이 아닌 이유는 IP헤더 크기 20byte를 뺀 나머지 값을 나타내서 1480byte입니다

와이어샤크 패킷분석 - waieosyakeu paekisbunseog
두번째 패킷

이번엔 첫번째 패킷의 차이점 위주로 적어보도록 하겠습니다.

Total Length (패킷 총길이) 는 위와 동일하게 1500byte입니다

Identification(식별자) 25041 을 통해 같은(?)패킷인 것을 확인 할수 있습니다

Fragment offset이 1480인 이유는 첫번째 패킷의 데이터가 1480byte였으므로 1480부터 시작임을 나타냅니다

와이어샤크 패킷분석 - waieosyakeu paekisbunseog

마지막인 세 번째 패킷입니다

Total Length(패킷의 총길이) 는 140byte인 것을 확인할수 있습니다

Identification(식별자) 또한 같은 패킷입니다

Flags를 보면 More fragments 가 0입니다. 이는 더이상 단편화한 패킷이없다는 뜻 즉 마지막 패킷이라는 뜻입니다

offset값을 보면 2960으로 1480+1480해서 2960이라는 값이 나왔습니다

ICMP 프토토콜을 보면 type 8번 요청패킷입니다

마지막 데이터부가 3072byte인 이유는 첫번째패킷

ⓐ (총길이 1500byte- 헤더20 byte = 1480byte) ⓑ (총길이 1500byte- 헤더20 byte = 1480byte)

ⓒ (총길이 140byte - 헤더 20byte = 120byte) 

= ⓐ+ⓑ+ⓒ - ICMP패킷(8byte) = 3072byt가 나왔습니다.

★☆피드백은 언제나 환영입니다☆★