보안이 하고싶은 joseph

와이어샤크를 이용해 HTTP 프로토콜 분석하기 본문

패킷분석

와이어샤크를 이용해 HTTP 프로토콜 분석하기

joseph94 2020. 8. 11. 16:30
반응형

먼저  HTTP의 의미와 특징을 모르시는분은 아래 링크에있는 내용을 보고 해당 내용을 보시는게 이해하기 쉬울 것같습니다

https://securitymanjoseph94.tistory.com/9

 

HTTP 프로토콜의 특징

오늘은 HTTP프토로콜의 의미와 특징에 대해 간단하게 설명하겠습니다. HTTP란 (Hyper Text Transfer Protocol)의 약자이며 OSI 계층 중 어플케이션 계층에 속하는 프로토콜입니다. HTTP 프로토콜의 특징은 크

securitymanjoseph94.tistory.com

 

 

HTTP프로토콜 특징에 이어 오늘은 와이어샤크를 이용한 HTTP패킷 분석입니다.

 

분석하기전에 먼저 헤더에 대해 알아보죠.

HTTP 프로토콜은 응답/요청메시지 두가지가 있습니다.

 

요청메시지(왼쪽) / 응답메시지(오른쪽)

● HTTP 요청메시지 구조
  • 요청라인 : 버전 정보를 담고있는 행으로 (요청메소드 / 요청URI / HTTP버전) 로 이뤄져 있습니다  
  • 요청헤더 : 여러 헤더들로 구성되며 각각 정보는 개행(공백)으로 구분됩니다. (헤더명 : 헤더값<개행> ........헤더명 : 헤더값<개행>)
  • 공백라인 : 헤더의 끝을 의미하는 개행입니다. (이를 악용한 공격은 Slow HTTP Header Dos 공격입니다)
  • 본문 : 직접적인 데이터가 담겨있는 곳입니다
● HTTP 응답메시지 구조
  • 상태라인 : 요청메시지와 마찬가지로 버전 정보를 담고있는 행입니다 (HTTP버전 / 상태코드 /응답구문)으로 이뤄져 있습니다.
  • 응답헤더 : 여러 헤더들로 구성되며 각 정보는 개행으로 구분됩니다
  • 빈 라인 : 헤더의 끝을 의미하는 개행입니다
  • 본문 : 서버에서 클라이언트로 전송된 데이터가 담겨져 있는 곳입니다.

자 그럼 이제 본격적으로 와이어샤크를 통해 분석을 해보도록 하겠습니다~

google.com 사이트에 접속하는 패킷을 떠왔습니다 한눈에 보이도록 필터를 걸었습니다

google페이지 접속패킷

 

전체적으로 보면 NO. 16,28,29 라인은 클라이언트 와 서버 간에 3wayhandshake가 정상적으로 맺음이 확인됩니다

 

No 30라인은 192.168.0.10(클라이언트)가 172.217.24.196(서버)에게 HTTP 요청 메시지를 보냅니다.

No 32라인은 30라인에 대한 메시지 응답이 온것입니다.

No 31라인은 서버가 클라이언트의 GET 요청에 대한 응답으로 보낸 ACK 입니다.

No 33라인은 31라인에 대한 클라이언트의 응답 패킷입니다.

 

TCP Stream으로 보면 한눈에 쉽게 볼수있습니다

빨간색글씨는 클라이언트가 서버에게요청

파란색 글씨는 서버가 클라이언트에게 응답한 메시지입니다.

 

이제 하나씩 클릭하여 자세히 보도록 하겠습니다.

 

HTTP 요청메시지

No.30라인의 클라이언트에서 서버로의 HTTP요청 메시지이며 몇가지 중요항목만 알아보도록 하겠습니다.

 

 

메소드는 GET방식이며 HTTP버전은 1.1임을 알 수 있습니다.

User-Agent 는 요청 클라이언트의 어플리케이션 OS정보입니다.

Host 는 요청한 서버의 도메인 명 / 호스트명 포트정보가 담겨있습니다.

 

0d0a는 개행

Connection 라인 밑에 \r\n은 개행을 나타내며 헤더의 끝을 의미합니다

 

Full request URI 이부분부터는 메시지 바디부로 실직적인 데이터가 들어있습니다

 

 

 

 

HTTP응답 메시지

 

No. 32라인의 서버로부터 온 요청응답 메시지이며 몇가지 중요항목만 보도록 하겠습니다.

 

HTTP 버전과(1.1) / 상태코드(302) 를 나타냅니다. 

 

※ HTTP 상태코드 -  1xx : 정보 /  2xx : 성공 / 3xx : 재지정 / 4xx : 클라이언트 오류 / 5xx : 서버오류

 

 

여기선 3xx (재지정) 중 Found(요청 자원의 위치가 임시적으로 변경) 을 나타내고 있으며

Location 라인에선 변경된 URL로 가라고 주소를 새로 알려줍니다.

 

응답헤더의 주요 정보는 Content-Type 와 Lenght 이며 각각 메시지 데이터형식과 크기를 나타냅니다

 

여기선 231Byte의 크기와 text html과 문자형식은 UTF-8방식을 나타냅니다

 

나머지는

 

\r\n(개행)  과 메시지바디로 나뉘어져있습니다.

 

 

 

 

 

 

 

HTTP프로토콜은 복잡합니다.. 기본적으로 알아야할 지식이있어야하며 여기선 거기까지 깊게 설명하진 않았습니다.

ex) 메시지 요청방식 (GET / POST / HEAD) , 상태코드 등등... 

 

 

 

 

 

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

 

 

반응형
Comments