- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 클라우드
- Java
- Linux
- 네트워크
- nginx
- API
- System
- Shell script
- LEVIATHAN
- Python
- 리눅스
- 쉘 스크립트 기초
- docker
- 자바
- 쉘 스크립트 if문
- RaspberryPi
- 프로젝트
- GUI
- GPIO
- Android
- Tkinter
- synology
- 그라파나
- ACL
- 안드로이드
- JSP
- 쉘 스크립트
- centos docker
- 라즈베리파이
- 메소드
- Today
- Total
IT창고
Network ICMP(Internet Contorl Message Protocol) 본문
ICMP에 대해 알아보겠습니다.
ICMP는 인터넷 제어 메세지 프로토콜로 네트워크가 연결된 컴퓨터간에 오류메세지를 전송받는데 주로 사용되며 네트워크 계층 중 3계층(Layer 3)에 해당됩니다.
네트워크 3계층은 서로 다른 네트워크와 네트워크 간의 연결구간으로 프로토콜은 IP, ICMP, IPSEC, routing 프로토콜이 있으며 PDU는 packet 입니다.
ICMP는 보안취약점이 많아 요즘엔 대부분 막아두며 ICMP대신에 SNMP를 사용합니다.
ICMP는 공통헤더와 타입별 헤더로 나눠집니다.
내용이 많기 때문에 https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol 여기를 참고합니다.
Tip. ip header 체크섬계산
1. 2byte를 넘지않기때문에 2byte씩 잘라서 모두 합을 합니다.
2. 만약 (45173) 1011 0000 0111 0101값이 있다면 여기에 <<16으로 쉬프트 연산을 하고 &and를 해줘서 될때까지 합니다.
3. 나온값에 1의 보수를 합니다.
바이트형태의 입력을 받아서 정수형태의 체크섬을 돌려주는 함수를 만들어보겠습니다.
==============================================
==============================================
ICMP 프로토콜은 request를 주면 반드시 reply를 받게 되어있습니다. icmp packet을 직접만들어 확인해보겠습니다.
==============================================
==============================================
icmp는 헤더를 만들지않고 바로 구성하였습니다.
sniffer.py로 정상적으로 작동이 되는지 확인해보겠습니다.
type 8은 echo request번호입니다. 0은 reply번호로 정상적으로 동작했음을 알수있습니다.
sniffer의 소스는 아래의 내용을 기존의 소스에 추가했습니다.
==============================================
==============================================
이번에는 외부네트워크와 ICMP통신을 해보도록 하겠습니다.
야후 DNS서버와 ICMP통신을 해보겠습니다.
packet의 내용을 조금만 변경하면 됩니다. ip헤더는 서로 다른 네트워크간의 통신을 위한 헤더로 Layer2계층에서 이루어지는 근거리통신은 별로 필요가 없지만 다른 네트워크와 ICMP통신을 해야하는 지금같은 경우 필요하게 됩니다.
이더넷 구간에서는 쉽게 상대의 MAC주소를 알아볼수있지만 서로 다른 네트워크라면 상대의 MAC주소를 알아낼수가 없습니다.
이럴때는 서로 다른 네트워크의 입구인 라우터의 MAC주소를 지정하고 상대의 IP를 IP헤더에 지정해주면 됩니다.
106.10.250.11은 www.yahoo.com의 IP주소입니다. 정상적으로 ICMP통신이 된걸 확인해볼수있습니다.
'보안 > Network' 카테고리의 다른 글
Network UDP(User Datagram Protocol) (0) | 2018.03.29 |
---|---|
Network IP Fragment(단편화) (0) | 2018.03.28 |
Network ARP Cache Poisoning (0) | 2018.03.23 |
Network APR(Address Resolution Protocol) (0) | 2018.03.21 |
Network 각 계층별 헤더 파이썬모듈 정리 (0) | 2018.03.20 |