본문 바로가기

ComputerScience/Network

Wireshark : Sniff HTTP traffic

728x90

wireshark는 packet sniffer sofware이다.

packet capture library(pcap)가 운영체제 단에서 왔다갔다 하는 모든 패킷의 내용을 볼수 있게 해준다.

pcap이 운영체제단으로 들어오고 나가는 모든 패킷을 복사해놓기 때문이다.

pcap이 복사해놓은 패킷을 packet analyzer가 우리에게 보여주는 것이다.

application단에 있는 우리는 패킷이 왔다갔다할 때, Message를 제외한 내용을 보도록 의도된 것이 아니기 때문에 pcap의 도움이 필요하다.

패킷을 훔쳐보는 건 사실 해커가 하는 동작과 다르지 않다.

0. wireshark실습 준비

실습에 앞서 기본적인 사항 몇 가지를 알고 가자.

1. ip를 확인하려면 macOS에서는 ifconfig 명령어를 사용한다.

 

2. 디바이스가 가지고 있는 network interface마다 ip가 존재한다. 와이파이의 경우, 셀룰러를 사용하는 경우 이더넷 케이블을 꽂은 경우 각기 다른 ip주소를 할당받을 수 있다. Mac주소도 마찬가지로 network interface마다 존재한다.

3. SKT, LGU+같은 통신사로부터 public ip를 하나 할당받으면 집 안에서는 여러개의 private ip들로 쪼개서 온가족이 사용한다. (NAT)

외부로 나가는/들어오는 모든 패킷은 public ip를 타고 나가고/들어온다.

 

패킷 분석 단계는 다음과 같다.

1. 실험외의 프로세스들은 최대한 종료한다.

2. 웹브라우저를 연다.

3. 와이어 샤크 실행, start capture

4. 브라우저를 통해 웹사이트 접속

5. stop capture

6. filter를 통해 http만 걸러서 볼 수 있다. 그 외에도 다양한 조건으로 필터를 건다.

7. 각 layer의 패킷 내용들을 잘 살펴본다. (프로토콜, 목적지, 출발지 등)

8. save/restore capture result

1. Install Wireshark and Run

2. Check my own IP address and network interface

맥 환경이기 때문에 ifconfig 명령어로 내 ip주소와 network interface가 무엇인지 확인해보자.

3. The Basic HTTP GET/response interaction 

Is your browser running HTTP version 1.0 or 1.1? What version of HTTP is the server running?  Both are 1.1

What is the IP address of the web server? server : 128.119.245.12

What is the status code returned from the server to your browser? 200 

When was the HTML file that you are retrieving last modified at the server? Thu, 17 Mar 2022 05:59:02 GMT

How many bytes of content are being returned to your browser? 128bytes

4. The HTTP CONDITIONAL GET/response interaction 

이번에는 동일한 웹사이트를 두번 접속해볼 것이다.

cache가 없는 상태에서 실험을 수행해야 하기 때문에 구글 시크릿 브라우저를 연다.

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html 에 첫번째로 접속한다.

그 다음 새로고침으로 한번 더 접속한다.

그럼 이렇게 총 4개의 패킷이 capture되었을 것이다.

 

1. Inspect the contents of the first HTTP GET request from your browser to the server. Do you see an “IF- MODIFIED-SINCE” line in the HTTP GET?  No  

2. Inspect the contents of the server response. Did the server explicitly return the contents of the file? Yes (status 200, content-length 371bytes)

3. Now inspect the contents of the second HTTP GET request from your browser to the server. Do you see an “IF-MODIFIED-SINCE:” line in the HTTP GET? If so, what information follows the “IF-MODIFIED-SINCE:” 
header?
Yes,  the date and time I last visited the webpage.

4. What is the HTTP status code and phrase returned from the server in response to this second HTTP GET? Did the server explicitly return the contents of the file? Explain. 304, Not Modified, No because since “If-Modified-Since” time,  the resource hasn’t been changed at the server, browser gets the contents from the cached memory.

5. Retrieving Long Documents 

이번엔 전송량이 많은 요청을 해보자.

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html 에 접속한다.

처음 세개의 TCP 패킷은 연결을 위한 패킷이고 마지막 네개의 TCP 패킷은 연결종료 를 위한 패킷들이다.

http get 요청과 응답 사이의 4개의 TCP패킷이 데이터를 전송하고 있는 패킷이다.

6. HTML Documents with Embedded Object

이번에는 여러 이미지를 포함하고 있는 웹사이트에 get요청을 해보자.

html 파일에는 이미지가 없다. 이미지는 html에 있는 이미지 url을 통해 다른 서버에서 가져온다. 

사진 뿐만아니라 여러 object들도 다른 곳에서 요청한다.

실제로 get 요청은 7번이나 있었고 165.194.1.2 / 165.194.35.201/ 104.18.16.13 / 23.213.13.41 / 104.20.228.67 로 요청하는 주소도 각기 다르다.

첫번째 이미지 get요청,download 완료 이후 두번째 이미지 get요청,download가 수행된다.

728x90
반응형