본문 바로가기

Network Hacking

11일차] Macke Ip Header Class, Checksum Function, ICMP

1. Ip Header Class

 

1) class 만들기

Class를 만들 때 다른 헤더와 달리 ver과 len 그리고 flag와 offset은 비트단위로 값을 나눠 갖는다. 따라서 이 것을 처리해주는 것이 가장 큰 중요 포인트가 된다.

 

 

2) Class test

객체에 생성자를 넣고 값을 출력해본다. --- > 다시 객체를 만들고 setter를 통해 값을 넣어보고 get_header를 통해 나온 바이너리를 확인해 보자. 최초 생성자에 넣은 바이너리와 같으면 잘 되는 것이다. !  

 

 

 


2. Checksum Function 

Checksum을 구하는 방법은 다음과 같은 과정을 거친다.

  1). Checksum 부분을 제외한 모든 헤더의 값을 더해준다. 

  2). Checksum은 2바이트를 넘어가면 안되기 때문에 2바이트를 넘어간부분의 비트는 떼어 낸후 2바이트 해당하는 부분에 더해준다

  예를들면, 11 0000 0000 0000 0001 의 값이 나왔다고 치면 앞에 2바이트를 넘은 11을 2바이트에 해당되는 1에 더해준다 결과는 4가 될 것이다.

  3). 2번의 결과를 보수를 취해주면 그 값이 Checksum이 된다.

 

[Checksum 함수]

# while문을 사용하는 이유는 2바이트를 넘어가는 부분을 더하고 다시 2바이트틀 넘어 갈 수 있기 때문에 예문에 나온 chksum이 0이 아닐때 까지 반복시켜 주는 것이다.

 

 

[Checksum 함수 확인] 

# Ip Header Class를 만들때 예시로 들던 Ip Header이다. 예문과 같이 chksum부분을 0 으로 입력해주고, checksum함수를 적용시킨 결과로 checksum이 정상적으로 나온 것을 확인 할 수 있다.

 

 


3. ICMP 

Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜의 약자로 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는데 주로 쓰이며 인터넷 프로토콜의 주요 구성원 중 하나로 인터넷 프로토콜에 의존하여 작업을 수행한다. [위키백과]

다시말해서, Ip에는 오로지 패킷을 목적지에 도달시키기 위한 내용만을 담고 있을 뿐 패킷이 잘 간 경우 통신이 성공하고 종료된다. 하지만 패킷을 전달할 호스트가 꺼져있거나, 다양한 이유로 전달이안된 경우 Ip는 이러한 에러에 대한 처리 방법이 전혀 없다. 이러한 Ip의 부족한 점을 메꾸기 위해 사용하는 것이 바로 ICMP이다. 우리가 리눅스에서 흔히 해보는 ping이 ICMP이다. ICMP는 호스트에게 에러가 있다면 에러에 대한 상황을 알려주는 것!

 

 

 

직접 raw socket을 만들어보자 !

1). ping을 보내는 패킷을 만들어 보낸다.

 

 

2). ping을 돌려받는 sniffer 만든다. sniffer를 킨 채로 ping을 실행시킨다.

 

 

3). 다음과 같이 회신이 온것을 확인할 수 있다.

 

 

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

www.yahoo.com 야후와 핑퐁을 하려면 어떻게 해야할까 ? ? 우리는 답을 알고있다. 사설 ip가 외부로 빠져나가기 위해서는 라우터를 거치게되는데 이때 ip주소를 확인하며 라우터로 빠져나가는 문이 게이트웨이가 된다. 게이트웨이는 cmd ipconfig를 통해 확인할 수 있다.

 

1). 다음과 같이 게이트웨이의 MAC주소와 야후의 IP주소를 구한다.!

 

2). 맥주소를 GATEWAY의 맥주소를 입력하고 IP dst를 야후로 !

 

3). 야후에서 응답을 해주는 것을 확인.

 

 

'Network Hacking' 카테고리의 다른 글

15일차] UDP 공격 기법, TCP Header  (1) 2018.03.30
13일차, 14일차] UDP Header Class  (0) 2018.03.28
9,10 일차] Spoofing  (0) 2018.03.23
8일차] ARP Module + Sniffing  (0) 2018.03.23
7일차] ARP개념 + ARP Python Module  (2) 2018.03.22