sitelink1 https://jihoon6078.tistory.com/20 
sitelink2  
sitelink3  
extra_vars6  

1. 홈페이지의 패킷을 캡처하기

 

먼저 와이어샤크를 실행 후, 상어 지느러미를 누른다. 

그리고 웹브라우저를 실행하고 네이버를 표시한다. 

툴바의 정지 버튼을 클릭한 다음에 Filter 부분에 http를 입력한다. 

그러면 HTTP 프로토콜을 포함하는 패킷만이 패킷 리스트 영역에 표시된다.

 

홈페이지 내용에 따라 다르지만, 패킷 리스트 영역에 여러 개의 패킷이 표시되어 있다. 

패킷 리스트 영역의 Info열에서 GET /n?u=http%3A%2F%2Fwww.naver.com..... 과 HTTP/1.1 200 OK (text/html)이라고 표시되어 있는 것을 찾아본다. 

 

두 패킷을 찾았으면 우선 GET /n?u=http%3A%2F%2Fwww.naver.com..... 패킷을 선택하고 메뉴에서 Edit - Mark/Unmark Packet 을 선택한다.  

HTTP/1.1 200 OK (text/html)이 패킷 역시 동일한 과정을 거치면 아래와 같은 화면이 나온다.  

 

00.JPG

 

강조 표시한 패킷 중에 Info 열에 GET /n?u=http%3A%2F%2Fwww.naver.com..... 로 표시되어 있는 패킷을 분석해보자. 

패킷을 더블클릭하면 아래와 같은 화면이 뜬다.

 

01.JPG

 

 

 

2. 헤더 확인 

 

위 화면에서 Frame 부분을 펼치면 아래와 같은 화면이 나오는데, 항목 하나하나 살펴 보자. 위에서 부터 번호1이 붙기 시작한다.

 

02.JPG

 

1) Interface id : 패킷을 캡처한 인터페이스 번호

 

2) Encapculation type : 패킷의 캡슐화 종류. 위 그림에서는 Ethernet (1)이라고 되어 있으므로 Ethernet 2 패킷으로 캡슐화되어 있음을 알 수 있다.

 

3) Arrival Time : 패킷을 캡처한 시간

 

4) Time shift for this packet : 패킷 표시 시간을 이동시키는 타임 시프트 기능을 이용하고 있으며 해당 시간이 표시된다. 일반적으로 0이 된다.

 

5) Epoch Time : 유닉스 시각 형식의 시리얼 값 (1970년 1월 1일 0시 0분을 기준으로 한 초 수)

 

6) Time delta from previous captured frame : 직전에 캡처된 프레임으로부터의 간격을 '초'로 나타낸다.

 

7) Time delta from previous displayed frame : 직전에 표시된 프레임으로부터의 간격을 '초'로 나타낸다.

 

8) Time since reference or first frame : 최초 패킷을 캡처한 시점부터 현재 선택되어 있는 패킷을 캡처한 시점까지의 경과 시간을 '초'로 나타낸다.

 

9) Frame Number : 최초의 캡처한 패킷의 번호를 '1'로 하고 그 뒤에 캡처한 패킷의 버호가 연번으로 나타난다.

 

10) Frame Length : 패킷 크기

 

11) Capture Length :캡처했을 때의 프레임 크기. 일반적으로 10과 11은 동일한 값이며 단위는 바이트 이다.

 

12) Frame is marked : 와이어샤크에 의해 해당 프레임이 마크되었는지 여부를 참 또는 거짓으로 나타난다.

 

13) Frame is ignored : 와이어샤크에 의해 해당 프레임이 무시되었는지 여부를 참 또는 거짓으로 나타낸다.

 

14) Protocols in frame : 패킷에 포함되어 있는 헤더

 

15) Number of per-protocol-data : 프로토콜별로 포함된 데이터의 개수를 나타낸다.

 

16) Hypertext Transfer Protocol : HTTP 프로토콜 정보를 나타낸다.

 

17) Coloring Rule Name : 와이어샤크가 컬러링에 사용한 규칙 이름이다.

 

18) Coloring Rule String : 와이어샤크가 컬러링에 사용한 규칙의 표시 필터다.

 

 

1 ~ 18 의 정보는 캡처했을 때의 정보를 바탕으로 와이어샤크가 생성한 것이다. 선택한 패킷에 따라 표시되지 않는 정보도 있다.

 

 

 

3. Ethernet 2 헤더

 

이번에는 Ethernet 2부분을 펼쳐 본다.

 

03.JPG

 

1) Destination : 목적지 랜카드가 표시된다. 

                     LAN카드를 지정하기 위해 각각의 랜카드마다 미리 부여되어 있는 MAC 주소를 이용한다. 

 

 

2) Source : 출발지 랜카드가 MAC 주소로 표시된다 Destination, Source MAC 주소 중에 2진수로 8번째 위치에 'IG bit'라고 되어 있다. 

               이것으로 멀티캐스트 통신( 특정 그룹을 대상으로 한 1대 다 통신)인지, 유니캐스트 통신 ( 특정 랜카드로의 1 대 1 통신) 인지를 알 수 있다. 

               여기서는 '0'으로 되어 있고 Individual address (unicast)로 표시되어 있다. 즉 유니캐스트 통신임을 나타낸다.

 

               7번째 위치에 LG bit라고 되어 있는데 이를 통해 원래 부여된 주소와는 다른 로컬 관리 주소인지 여부를 확인할 수 있다. 

               여기서는 0으로 되어 있고, Globally unique address (factory default)라 표시되어 있다. 

               이는 랜카드의 MAC 주소가 공장 출하 시의 주소, 즉 원래 부여된 주소를 사용하고 있음을 나타낸다.

 

3) Type : 이더 타입이라고 하며, Ethernet2 뒤에 이어지는 헤더 형식을 지정한다. 

             앞서 그림에서는 IP (0x0800)이라 표시되어 있는데 이는 IP 헤더가 다음에 이어진다는 것을 의미한다.

 

 

 

4. IPv4 헤더

 

여기서는 IP 헤더를 펼처본다.

 

04.JPG

 

1) Version : IP 버전을 나타낸다. IP 버전이 4임을 알 수 있다.

 

2) Header length : IP 헤더의 크기를 나타낸다. 화면에서 20바이트라고 표시되어 있다. IP 헤더는 가변길이 인데 일반적인 통신에서 사용되는 IP 헤더는 옵션이 붙지 않아 20바이트이다.

 

3) Differentiated Services Field

    패킷의 중요도를 나타낸다.

    여기서는 통신할 때의 서비스 종류와 우선도를 나타낸다.

    화면에서는 모두 0으로 되어 있는데 이는 중요하지 않은 패킷은 없애라 와 같은 특별한 대역제어나 QoS를 하지 않고, 즉 표준 우선도를 나타내고 있다.

 

4) Total Length : 패킷의 전체 길이를 바이트로 나타낸다.

 

5) Identification : 패킷의 식별 정보가 표시된다.

 

6) Flags

    패킷을 작게 분할하기 위해 이용된다.

    Reserved bit 이부분은 미래에 IP 프로토콜 확장을 위해 예약되어 있는 부분이다.

    Don't Framgment 는 패킷의 분할을 금지하기 위한 비트로, DF비트로한다. 여기가 1이면 패킷 분할이 금지되고 0이면 패킷 분할이 가능하다.

    More Fragments 는 분활된 패킷이 이후에 계속된다는 것을 나타내기 위한 비트로 MF 비트라고 한다.

    여기가 0이면 연이은 패킷이 없음을 나타내고 1이면 분할되어 계속 이어지는 패킷이 있음을 의미한다.

 

7) Fragment offset

    분할된 패킷 내에서 현재 패킷의 위치가 바이트로 나타낸다.

    화면에서는 0으로 되어 있는데, 이는 첫 번째 패킷임을 의미한다.

 

8) Time to live

    생존시간이라고 하며 패킷의 수명을 나타낸다.

    이 생존시간은 패킷이 라우터를 지나가면서 네트워크로 송신될 때 값이 1씩 감소하는 구조로 되어 있다.

    값이 0이 되면 패킷은 더 이상 존재할 수 없는 것으로 패킷이 라우터나 계층3의 스위치에서 없어진다.

 

9) Protocol

    프로토콜 필트라 하며, IP 다음에 이어질 헤더 형식을 지정한다.

    화면에서는 TCP 헤더가 이어진다는 것을 알 수 있다.

 

10) Header checksum : 헤더 체크섬이라고 하며, IP 헤더의 내용을 계산식에 넣어 산출한 값과 헤더 체크섬 값을 비교해서 패킷의 IP 헤더가 깨지거나 잘못되지 않았는지를 확인하다.

 

11) Source : 출발지 컴퓨터를 IP 주소로 나타낸다.

 

12) Destination : 목적지 컴퓨터를 IP 주소로 나타낸다.

 

13) Source GeoIP : 출발지 IP 주소로부터 GeoIP 데이터베이스를 참조해서 IP  주소가 연결된 위치를 나타낸다,

 

14) Destination GeoIP : 목적지 IP 주소로부터 GeoIP 데이터베이스를 참조해서 IP 주소가 연결된 위치를 나타낸다.

 

 

 

5. TCP 헤더

 

이번에는 TCP 헤더를 펼쳐보자.

 

05.JPG

 

1) Source port : 출발지의 프로세스가 포트 번호로 나타난다. 프로세스란 프로그램을 구성하는 단위다.

 

2) Destination port : 목적지의 프로세스가 포트 번호로 나타난다. TCP는 프로세스 지정에 포트 번호를 사용한다. TCP는 포트 번호로 애플리케이션을 지정하는 것이다.

 

3) Stream index : 21  : 와이어샤크에는 TCP 연결을 추적하거나 분석하기 쉽게 하기 위해 TCP 연결 시작부터 종료까지를 하나의 TCP 스트림으로 해서 패킷에 등장한 순번으로 스트림의 번호를 붙여 분석한다. 여기서는 두 번째 TCP 스트림이므로 인덱스 번호 2가 붙어 있다.

 

4) TCP stream Len : 53 : TCP 스트림의 길이가 53이라는 것을 의미한다.

 

5) Sequence number : 시퀀스 번호라고 하며, 현재 송신하고 있는 TCP 세그먼트의 위치가 숫자로 나타안다. 여기서는 1461로 표시되어 있다.

 

6) Next Sequence number : 다음 시퀀스 번호가 나타난다. 실제로는 현재 시퀀스 번호에 송신할 TCP 데이터의 크기를 더한 수치가 된다.

 

7) Acknowledgement number : 확인응답 번호라고 하며, 수신한 TCP 세그먼트의 위치가 번호로 나타난다. 실제로는 수신한 바이트 수가 확인응답 번호가 된다. 확인응답 번호는 연결시에 초기 시퀀스 번호 + 1 로 설정되며 수신 세그먼트의 바이트 수가 더해져 간다.

 

8) Header length : TCP 헤더의 크기가 표시된다. TCP 헤더는 가변길이지만 IP 와 마찬가지로 옵션이 덧붙여지지 않은 헤더의 길이는 20바이트이다.

 

9) Flags : 통신을 제어한다. 펼처 보면 Reserved 는 TCP 프로토콜이 미래에 확장될 것을 대비해 예약되어 있는 부분이다. Nonce 값은 ECN-nonce라는 구조로 이용되는 것으로, 뒤에 나오는 ECN-Echo 와 함께 패킷의 혼잡 제어에 이용된다. Congestion Window Reduced 은 네트워크가 혼잡할 때, 한번 보낸 데이터의 크기를 작게 하기 위해 사용된다. Urgent 는 긴급 포인터 플래그라고도 하며, 일반적인 통신에 긴급 데이터를 끼워 넣을 때 IP 옵션과 함께 이용된다. 단, 최근에는 보안상의 이유로 거의 사용되는 일이 없다. Acknowledgement는 ACK 플래그라고도 하며, On이 되면 확인응답 번호가 유효화된다. Push는 PSH 플래그라고도 하며, On이 되면 그때까지 수신 버퍼에 쌓여 있던 데이터를 모아서 프로그램에 넘기는 푸시 기능이 유효화된다. 정보를 모아서 프로그램에 넘김으로써 효율이 좋은 통신을 할 수 있다.

 

Reset은 RST 플래그라고도 하며, On이 되면 TCP 통신이 강제 종료된다. 방화벽 등에서 바이러스 공격을 막기 위해 상대로부터 전송되어 오는 패킷에 RST플래그를 추가해서 퍀시을 전송해서 전송을 차단하는 일이 있다. Syn은 SYN 플래그라고도 하며, 통신을 시작할 때 이용된다. 반면 Fin은 FIN 플래그라고 하며 통신 종료 수단으로 이용된다.

 

10) Window Size : RWIN이라고도 하며, 연속해서 TCP 패킷을 수신하기 위한 수신 버퍼를 나타낸다. 

 

11) Checksum : TCP 헤더와 세그먼트의 내용 체크를 한다.

 

12) SEQ/ACK analysis : 전문가 기능 등에 의해 와이어샤크가 추가한 헤더는 []에 표시된다. 

 

 

 

6. HTTP 헤더

 

여기서는 Hypertext Transfer Protocol 헤더를 펼처보자. 

 

HTTP 헤더 분석은 지금까지 본 Ethernet2, IP, TCP와 약간 다르다. HTTP 헤더의 종류나 수는 웹브라우저나 OS에 따라 다르다. HTTP라는 프로토콜은 홈페이지를 가져오기 위한 과정으로, 실제로는 알파벳으로 된 명령으로 나타난다. 패킷 데이터 영역을 보면 GET /n?u=http%3A%2F%2Fwww.naver.com..... 와 같이 알파벳이 표시되어 있다. 이와 같은 문자를 사용한 1바이트 단위 명령이나 응답 부분을 바이트 스트림이라고 한다.

 

06.JPG

 

HTTP Request에서는 홈페이지를 열람하려 한다는 명령이나 어떤 홈페이지를 열람할 것인지를 나타내는 대상 위치를 지정하게 된다. 위 사진에서는 Request 행은 GET /n?u=http%3A%2F%2Fwww.naver.com..... 이라고 표시되어 있는 부분이다. 이 부분을 펼쳐보면 Request Method에는 홈페이지를 가져오기 위한 방법이 표시된다. 여기서는 GET 메소드가 지정되어 있다.

 

Request 행 내의 Request URI 는 가져오려는 홈페이지의 파일 위치를 지정하는 것이다. 파일의 위치는 URI라 한다. 

 

행의 마지막에 있는 Request Version은 HTTP 버전을 지정하는 것으로 여기서는 1.1로 되어 있다. 

 

HTTP Request Header에 대해 설명하겠다.

 

1) Accept : 웹브라우저가 받아들이는 데이터의 형식을 지정한다. 

 

2) Accept-Language : 웹브라우저에서 처리하고자 하는 언어를 지정한다.

 

3) Accept-Encoding : 웹브라우저에서 받아들이는 데이터의 부호화를 지정한다.

 

4) User-Agent : 클라이언트가 이용하고 있는 OS / 웹브라우저의 종류를 나타내며, UA라고도 한다.

 

5) HOST : 접속하려는 웹서버의 주소를 FQND으로 지정한다. HTTP 1.1에서 필수값이며 서버 분기에도 이용되고 있다.

 

6) Connection : HTTP 1.1의 접속처리에 대해 웹서버에 통지하는 헤더다. 이번 패킷과 같이 Keep-Alive로 지정해서 접속을 끊지 않고 다음 요청을 계속 처리하도록 하거나 Close로 지정해서 접속을 끊을 수도 있다.

 

7) DNT ( Do Not Track ) : 최근 새롭게 책정된 HTTP 요청 헤더 중 하나로 개인의 프라이버시를 보호하려는 의미로 쿠키 등을 이용한 정보 추적을 금지한다는 의미를 웹서버에 전달한다.

 

8) Cache-Control : 웹브라우저가 처리하는 캐시 제어 방식에 대해 웹서버에 알리는 헤더다. 

 
 
 
 
 
 
 
 
<출처 :  와이어샤크를 이용한 패킷 캡처 철저 입문 ; 저자 : 타케시타 메구미>
 
 
 
 
 
 
 
 
 
 
 
 
 
번호 제목 글쓴이 날짜 조회 수
24 모바일 앱(안드로이드) 패킷 캡쳐하고 와이어샤크로 확인하기 file 황제낙엽 2023.08.05 297
23 NTLMv1 황제낙엽 2021.08.31 266
22 WireShark 패킷 로그에서 발견되는 메세지들의 의미 황제낙엽 2021.07.05 5460
21 How to Flush DNS Cache Locally in Windows, macOS, & Linux file 황제낙엽 2021.07.01 37
20 DNS 관리 - TTL (Time To Live) 황제낙엽 2021.07.01 26
19 특정 포트가 오픈되어 있는지 확인하는 커맨드 명령어 황제낙엽 2021.06.11 30
18 Fiddler 프록시(Proxy) 설정하기 - 모바일 패킷 추적 (packet trace) file 황제낙엽 2021.03.26 71
» wireshark로 패킷 헤더 확인하기 file 황제낙엽 2021.01.04 351
16 Stream index 란? 황제낙엽 2021.01.04 411
15 WireShark를 이용한 TCP/UDP 패킷 분석 secret 황제낙엽 2021.01.03 0
14 WireShark, 네트워크마이너(Networkminer) 를 이용하여 PCAP에 포함된 악성코드 여부를 판단하는 절차 알아보기 secret 황제낙엽 2021.01.03 0
13 WireShark를 이용한 ARP, ICMP, TCP, DHCP 캡처 및 분석하기 secret 황제낙엽 2021.01.02 1
12 repeater, hub, bridges, switches, router, VLAN(Virtual LAN) file 황제낙엽 2021.01.02 38
11 TCP Control Flag (TCP 제어 플래그 - FIN,ACK,SYN,URG,PSH,RST) file 황제낙엽 2020.12.31 131
10 TCP (Transmission Control Protocol, 전송 제어 프로토콜) file 황제낙엽 2020.12.31 25
9 L2, L3, L4, L7 스위치 file 황제낙엽 2020.12.24 471
8 피들러(Fiddler) AutoResponder file 황제낙엽 2020.11.04 126
7 L4 Sticky Session & Sticky Time 황제낙엽 2020.07.31 410
6 [ngrok] localhost 개발서버를 외부에 잠시 오픈 file 황제낙엽 2020.07.20 281
5 피들러(Fiddler) 활용 - binary Response 의 decode capture (응답데이터를 text string으로 저장) file 황제낙엽 2020.03.24 62