1970년대 후반 ISO(국제 표준화 기구)에 의해 표준화된 것이 OSI 7 모델
초기에는 시스템끼리의 호환성이 없었음
모든 시스템들의 상호 연결에 있어 문제없도록 표준을 정한 것이 OSI 7 계층
TCP/IP는 OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화한 것
작동 원리
전송 시 : 7 계층에서 각각의 층마다 인식할 수 있는 header를 붙임 (캡슐화)
수신 시 : header를 떼어냄 >>> 분석하는 것 (디캡슐화)
물리 계층 (Physical Layer)
물리 계층은 실제 장치들을 연결하기 위해 필요한 전기적, 물리적 세부 사항들을 정의
- 통신 케이블로 data를 전송하는 물리적인 장비
- 장비 : 통신 케이블, 리피터, 허브 등
- 단지 data의 전기적인 신호(0,1)로 변환해서 주고받는 기능만 함
- 통신 단위 : bit
- 1 : 0n
- 0 : Off
데이터링크 계층 (DataLink Layer)
Point to Point 간 신뢰성 있는 전송을 보장하기 위한 계층 >>> CRC기반의 오류제어와 흐름제어를 요구
*** CRC (Cyclic Redundancy Check) : 네트워크 등을 통하여 data를 전송할 때 전송된 data에 오류가 있는지 확인하기 위한 check값을 결정하는 방식
- 물리 계층을 통해 송수신 되는 정보의 오류와 흐름을 관리
- 장비 : 스위치, 이더넷 등
- Frame에 물리적 주소(MAC address)를 부여하고 에러검출, 재전송, 흐름제어를 수행
- Frame은 데이터링크 계층에서 전송되는 단위
- MAC address를 통해 데이터링크 계층에서 통신 가능
- MAC address는 데이터링크 계층에서 사용되는 네트워크 카드의 48bit 하드웨어 주소
- OUI (제조사의 고유식별 번호 - 앞의 24bit) + Vender (제조사에서 자체 할당하는 번호 - 뒤의 24bit)
Ethernet의 구조
데이터 링크 계층에서 가장 잘 알려진 Ethernet은 Ethernet Frame이라고도 불리며, 다수의 PC를 연결한 환경인 LAN상에서 동작된다.
CSMA/CD 방식 : Ethernet에 접속되어 있는 장치들은 언제라도 data를 보낼 수 있지만, 회선이 사용되지 않는 경우에만 data를 전송할 수 있다. 만약 충돌이 발생하게 된다면 일정시간 기다린 후에 다시 data를 전송한다.
- Preamble : Frame의 첫 번째 필드. 0과 1을 반복하는 7byte를 포함하고, 수신 시스템에게 Frame이 도착하는 것을 알려주며, 입력 타이밍에 수신 시스템이 동기화할 수 있도록 함
- SFD(Start of Frame Delimeter) : 정상적인 Frame의 시작을 표시하는 Frame 동기 마지막 2bit는 수신사에게 목적지 주소임을 알려주는 역할
- DA(Destination Address) : Packet을 수신하는 목적지의 물리(MAC) 주소
- SA(Source Address) : Packet 송신자의 물리(MAC) 주소
- Length or Type : 0x600 이하이면 Length로 해석 (수납되는 LLC Frame의 길이) / 0x600 이상이면 Type으로 해석 (Data에 담겨 있는 상위 Protocol의 종류, Ethertype)
- Data : 상위 계층의 Protocol로부터 캡슐화된 data가 들어있다. 상위계층의 Packet길이가 최소길이 (46 bytes) 보다 작을 때는 끝에 padding(0)으로 채워짐
- CRC(Cycle Redundancy Check) / FCS(Frame Check Sequence) : 수납된 data의 error 검출을 위한 부분. 송신 측에서 CRC를 붙여 보내고, 수신 측은 CRC를 체크하여 Error Frame인 경우 버림
ARP Protocol
- 네트워크 상에서 IP 주소를 물리적 Network 주소(Mac Address)로 대응시키기 위해 사용되는 Protocol
- TCP / IP 3계층(Network 계층)의 IP Address를 2계층(data link 계층)의 MAC address로 대응시킬 때 사용되는 Protocol
책 예시) 사내의 서버에 Telnet 서비스를 위해 Telnet 192.168.100.100을 요청한 경우, 내부적으로는 192.168.100.100의 MAC 주소를 반드시 알아야 통신할 수 있다. 하지만 만약 서버의 MAC 주소를 알지 못하는 경우는? ARP Protocol을 구동하여 서버의 MAC 주소를 얻어야 한다.
ARP protocol은 Ethernet header 다음에 바로 붙는 형태이다.
- Hardware Type : 네트워크 유형을 정의
- Protocol Type : protocol을 정의
- Hardware Length : MAC 주소의 길이를 정의
- Protocol Length : Protocol 길이를 정의
- Operation : Packet 유형
- Sender Hardware Address : 발신자 MAC 주소 세팅
- Sender IP Address : 발신자 IP 주소 세팅
- Target Hardware Address : 목적지 MAC 주소이나, ARP Request의 경우 알 수 없기 때문에 0을 세팅
- Target IP Address : 목적지 IP 주소가 세팅
broadcasting : 동기 신호를 제외한 Ethernet Header(ff:ff:ff:ff:ff:ff ~ 0x0806)에서 모든 시스템에 ARP Request protocol을 전달하기 위해 목적지 MAC 주소를 ff:ff:ff:ff:ff:ff로 세팅하여 전송하는 것
이러한 broadcating을 받은 시스템은 자신의 MAC 주소를 채워 보낸다. >>> ARP Reply
이런 방식으로 상대방의 MAC 주소를 확인하여 자신의 ARP table에 해당 정보를 기록하여 다음 통신에 사용한다. 이러한 방식으로 1번 이상 통신한 대상은 ARP 과정 없이 IP 통신을 직접 수행할 수 있다.
ARP table은 윈도 cmd 창에서 arp -a 명령으로 확인 가능
>>> IP와 MAC 주소가 한 쌍으로 등록, type(유형)에서 Dynamic(동적)은 언제든지 외부요청에 의해 변경될 수 있음을 의미
+) ARP Spoofing : 공격자의 MAC 주소를 다른 컴퓨터의 MAC 주소인 것 처럼 속여 전송하여 원래 사용자에게 보내져야 할 data가 공격자에게 전송되는 해킹 기법
cf ) Unicasting : broadcating과는 달리 Frame에 자신의 MAC 주소와 목적지의 MAC 주소를 첨부하여 전송하는 방식 (one-to-one)
네트워크 계층 - IPV4
IP 주소 : 네트워크 계층에 운영되는 IP Protocol에 목적지 위치를 알려주는 고유한 32bit 주소 값
IP 주소는 네트워크 부분과 호스트로 구분된다. 지역을 대표하는 부분을 네트워크, 지역별 사용자 PC에 할당하는 것을 호스트라고 한다.
만약 서울에 본사, 부산에 지사가 있다고 하면 3개의 네트워크가 존재한다.
>>> 서울 네트워크 1개 + 부산 네트워크 1개 + 서울과 부산사이에 존재하는 라우터에 1개
IP 주소를 w.x.y.z라고 표현할 경우 IP 주소 범위별 네트워크 및 호스트를 구분하는 방법
클래스 | 범위 | 네트워크 | 호스트 |
A | 0.0.0.0 ~ 127.255.255.255 | w | x.y.z |
B | 128.0.0.0 ~ 192.255.255.255 | w.x | y.z |
C | 192.0.0.0 ~ 223.255.255.255 | w.x.y | z |
D | 224.0.0.0 ~ 239.255.255.255 | 멀티캐스트를 위해 예약 | - |
E | 240.0.0.0 ~ 255.255.255.255 | 실험용으로 예약 | - |
사설 IP는 내부 IP 노출을 차단하거나 부족한 공인 IP를 대신하기 위해 사용
IP Protocol - IPV4
IP header는 Ethernet header (목적지 MAC 주소 + 발신지 MAC 주소 + Packet 유형) 다음에 따라붙는 형태이다.
- Ver(Version) : IP 버전이 저장. 일반적으로는 현재 사용 중인 버전 4가 사용됨
- IHL : Header 길이 정보를 담고 있음
- Type of Service : 서비스 종류
- Total Length : header와 data의 길이를 합한 값
- Identification : 전송할 최대 사이즈를 초과하여 분할된 경우, 분할되기 전, 어떤 packet에 속할 것인지를 구분하기 위한 고유번호를 할당 >>> 동일한 Packet에서 분할된 Packet은 동일한 ID값을 가짐
- Flags(0 DF MF) : 분할된 추가 Packet이 있다는 것을 알려주며, 해당 정보를 바탕으로 수신 측에서 재조합을 통해 원래의 Packet으로 구성
- Fragment Offset : 수신지에서 재배열하는 과정 중 각 조각의 순서파악에 사용
- Time to Live : 패킷 수명을 제한하기 위해 datagram이 통과할 수 있는 최대 hope 수를 지정. Packet이 전달 시 통과되는 hope마다 TTL 값은 감소됨
- Protocol : IP header를 따라올 상위 Protocol을 지정
- Header Checksum : header의 오류를 검증하기 위해 사용
- Source IP Address : 송신자의 IP 주소 값이 세팅
- Destination IP Address : 수신자 IP 주소 값이 세팅
- Options : 새로운 실험 혹은 header 정보에 추가 정보를 표시하기 위해 설계
트랜스포트 계층
전송 계층은 양 끝단 (End to End)의 사용자들이 신뢰성 있는 data를 주고받을 수 있도록 해 주는 역할
상위 계층들이 data 전달의 유효성이나 효율성을 보장
특정 연결의 유효성을 제어하기 때문에 packet들의 내용이 유효한지 확인
전송 실패한 packet들은 재전송
TCP, UDP Protocol은 Port라고 하는 서비스의 출입구가 존재. 고유번호를 할당하여 어떤 서비스를 이용할 것인지 결정
ex.80(HTTP), 23(TELNET), 53(DNS) ...
임의의 port번호를 사용할 수 있음. 하지만 통신을 원하는 상대방과의 사전 약속이 되어있기 때문에 범용적 사용은 불가
TCP
TCP Protocol의 가장 중요한 특징은 상대방에게 정확하게 data를 전달할 수 있다는 점
UDP Protocol과는 다르게 상대방이 수신이 준비된 상태(3 Way HandShaking)에서 data를 전달하는 session 연결 과정을 거침
session을 맺은 이후에 data 전송, data 전송 중에 발생되는 data 훼손 문제는 재전송 기능을 통해 보완
>>> data 통신의 신뢰성이 요구되는 인터넷 뱅킹, 메일 등과 같은 서비스에 활용
TCP header는 Ethernet header와 IP header 다음에 붙는다.
- Source Port Number (16bit) : 송신자의 Port 번호 할당
- Destination Port Number (16bit) : 접속하고자 하는 목적지 대상 서버 Port 번호 할당
- Sequence Number (32bit) : data의 순서를 나타내는 번호가 할당
- Acknowledge Number (32bit) : 다음에 수신할 data 번호
- Offset(=Header Length) : TCP header의 길이
- Reversed : 예약된 필드로 사용되지 않는 경우 0으로 세팅
- Control Flags : 6개 bit로 구성, 해당 bit 조합을 통해 통신시작(세션연결) , data 전송, 통신 해제 등의 통신상태(3 Way HandShaking) 제공 / bit 종류 : URG(긴급요청), ACK(응답 메시지), PSH(수신한 data를 어플리케이션 계층으로 즉시 전달), RTS(강제 세션 종료), SYN(연결 요청), FIN(정상 세션 종료)
- Windows Size : 한 번에 받을 수 있는 Packet Size, 두 PC 간에 window size가 다른 경우 작은 size에 맞추어 data를 송신
- TCP Checksum : header 값의 에러 발생여부를 검사하기 위해 사용
UDP
TCP Protocol에 비해 header 정보도 단순하고, 속도 또한 빠르다는 특징.
그러나 TCP Protocol이 가지고 있는 신뢰성은 보장되지 않음
data의 전달에만 목적이 있음. 상대방의 준비 상태에는 관심이 없고 또한 상대방의 정상 수신 여부에도 관심이 없음
>>> 인터넷 전화, 영상 전송과 같이 일부가 손상되어도 크케 지장 받지 않는 서비스에 활용
어플리케이션 계층
어플리케이션 계층은 다른 계층의 서비스를 위한 다양한 어플리케이션을 제공하고, 어플리케이션 상호 간 data를 교환하기 위한 Protocol을 정의
어플리케이션 계층 Protocol 종류
- HTTP(HyperText transfer Protocol) : WWW 서비스를 제공하기 위해 사용
- FTP(File transfer Protocol) : 상호 파일 전송을 위해 사용
- SMTP(Simple Mail Transfer Protocol) : 메일 메시지와 그에 추가된 첨부 파일을 전송하기 위해 사용
- Telnet(Terminal emulation protocol) : 네트워크 호스트에 원격 접속하기 위해 사용
- DNS(Domain Name System) : 호스트 이름을 IP 주소로 변환하기 위해 사용
- RIP(Routing Information Protocol) : IP 네트워크 상에서 routing 정보를 교환하기 위해 router 사용
- SNMP(Simple Network Management Protocol) : 네트워크 관리 콘솔과 네트워크 장비 간에 네트워크 관리 정보를 수집 및 교환하기 위해 사용
최경철, "SECURITY 네트워크 패킷 포렌식", secu BOOk(2015)
위 책을 참고하여 공부한 내용을 정리한 글입니다.
'그 외 > 네트워크 포렌식' 카테고리의 다른 글
[제 2 장] 와이어샤크 및 PCAP 포맷 (0) | 2023.04.23 |
---|