- 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 | 31 |
- 리눅스
- docker
- nginx
- 프로젝트
- Android
- GPIO
- LEVIATHAN
- 쉘 스크립트 기초
- 자바
- 클라우드
- System
- 안드로이드
- 메소드
- centos docker
- Shell script
- RaspberryPi
- Python
- GUI
- JSP
- Linux
- 그라파나
- 쉘 스크립트 if문
- 쉘 스크립트
- ACL
- synology
- Java
- API
- 라즈베리파이
- Tkinter
- 네트워크
- Today
- Total
IT창고
Network Scanning Program 본문
이전 과정에서 SOCK_STREAM(tcp통신)과 SOCK_DGRAM(udp통신) 소켓을 사용해보았습니다. 이번에는 SOCK_RAW를 사용해보도록 하겠습니다.
RAW소켓을 사용하여 특정장치의 패킷을 검사하는 sniffer를 만들어보겠습니다.
스니핑이란 패킷를 가로채거나 네트워크 통신내용을 도청 하는 행위를 말합니다. 위의 프로그램으로 네트워크 통신정보를 확인해보겠습니다.
네트워크 통신내용입니다. 실시간으로 계속 확인이되며 그냥 분석하려면 복잡해서 분석하기가 힘듭니다.
좀더 확실하게 분석해보기 위하여 mycat이란 텍스트를 다른 리눅스서버로 UDP통신해서 패킷을 확인해보겠습니다.
네트워크 통신내용을 로그파일로 남겨서 저장해두었습니다. UDP통신으로 전송한 패킷을 확인할수있습니다.
위의 패킷은 UDP통신으로 했으므로 UDP헤더에 대해 알아보겠습니다.
헤더(Header)란 보내려는 데이터의 정보를 표현한 것 입니다.
UDP헤더에는 아주 기본적인 정보만을 담고있습니다. 전체크기는 8byte로 고정이며 출발지(src)(2), 목적지(dst)(2), size(길이)(2), checksum(2) 정도의 정보만을 가지고 있습니다. UDP는 이러한 정보만으로 통신을 하게됩니다. 담겨있는 정보가 부족하므로 신뢰성은 떨어지지만 그만큼 빠른 통신을 할수있습니다.
위의 패킷을 확인해보면 UDP의 헤더는 \xe8\x88\xb8\x00\r\xeb\xf5rk 가 됩니다.
네트워크로 데이터를 보내기 위해서는 반드시 bytes, bytearray로 형변환을 해줘야만 합니다.
UDP헤더정보를 보면 상대가 어떤 포트가 열려져있지도 확인해볼수있습니다.
실제로 다른PC의 리눅스에서 35000번 포트를 열어두고 UDP통신을 했는데 어떤 포트를 사용했는지 UDP헤더에서도 포트정보를 찾아볼수있습니다.
또한 패킷정보를 보면 IP헤더, Ethernet 헤더 정보가 있습니다.
위의 사진이 IP헤더로서 보통 20byte의 크기를 가지며 고정크기가 아닌 가변크기를 가집니다. UDP헤더 바로앞의 20byte가 IP헤더에 해당됩니다.
b'\x00\x0c)\xcc\xaaq\x00PV2\xc2\xbf\x08\x00E\x00\x00!\x00\x00@\x00@\x11\xb7j\xc0\xa8\x01\t\xc0\xa8\x01\x08\xc2\xe8\x88\xb8\x00\r\xeb\xf5mycat'
노란색이 Ethernet헤더, 파란색이 IP(Internet protocol)헤더, 빨간색이 UDP/TCP헤더입니다.
Tip
- IPv4
Layer 3에 대해 알아보겠습니다.
3계층은 네트워크계층으로서 중간 라우터를 통한 라우팅을 포함하여 패킷 포워딩을 담당합니다.(서로 다른 네트워크와 연결)
PDU(protocol Data Unit)는 패킷(packet)이고 주소체계는 IPv4 , IPv6이며 프로토콜은 IP(Internet protocol), 라우팅프로토콜, IPSEC, .... 입니다.
네트워크 IP의 관한 자세한 내용은 2017/11/18 - [서버운영/Network] - 네트워크 IP 주소 여기를 참고합니다.
마지막으로 Ethernet헤더에 대해 알아보겠습니다.
위에서 캡쳐한 패킷을 보면 \x00\x0c)\xcc\xaaq\x00PV2\xc2\xbf\x08\x00 여기가 이더넷헤더에 해당합니다.
이더넷 헤더는 Layer 2의 데이터링크계층으로서 PDU는 프레임(frame)이고 주소체계는 MAC(Media Access Control)주소이며 프로토콜은 VPN(PPTP,L2TP,...), ARP 를 사용합니다.
이더넷 헤더는 14바이트의 고정크기를 가집니다.
이더넷헤더를 확인해보면 도착지MAC주소, 출발지MAC주소와 이더넷 타입을 알수있습니다.
도착지(6), 출발지(6), 이더넷타입(2)로 총 14byte의 크기를 가진걸 알수있습니다.
마지막의 이더넷타입의 0800은 IPv4를 의미합니다.
https://en.wikipedia.org/wiki/EtherType 이더넷 타입의 정보는 여기서 참고합니다.
Tip
- Layer 4(전송계층) 정리
4계층은 전송계층으로서 데이터의 전송을 담당합니다. 어떤 통신방식을 사용하는지 어디로 데이터가 전달되는지 어떤 프로토콜을 사용하는지의 정보가 있습니다. PDU는 세그먼트(segment)이고 주소체계는 포트(port)이며 프로토콜은 UDP, TCP, ...입니다.
- Layer 1(물리계층)은 모든 물리적인 전기신호로서 만약 1계층에서 분석이 하고 싶다면 오실로스코프를 이용하여 아날로그 신호를 분석해야합니다.
'보안 > Network' 카테고리의 다른 글
Network APR(Address Resolution Protocol) (0) | 2018.03.21 |
---|---|
Network 각 계층별 헤더 파이썬모듈 정리 (0) | 2018.03.20 |
Network TCP 클라이언트/서버 프로그램 (0) | 2018.03.16 |
Network UDP 클라이언트/서버 프로그램 (0) | 2018.03.15 |
네트워크 실습환경구성 및 OSI 7 Layer (0) | 2018.03.13 |