24 TCP IP
이번 강의에서 TCP/IP의 공격 유형을 알기 위해 네트워크 계층, TCP 프로토콜, 3 Way Handshake 등,
HTTP의 핵심적인 내용을 간략히 살펴보았습니다.
스스로 이해가 조금 부족하다고 느끼는 부분이어서, 예전에 공부하던 서적을 함께 살펴보았습니다.
HTTP 완벽 가이드에서 TCP 내용을 추가로 학습하고 정리합니다.
네트워크 계층, 프로토콜, TCP/IP, HTTP(S) 등을 학습합니다.
이탤릭체, 코드 블락은 인용입니다.
OSI model 7 layers
OSI(Open Systems Interconnetion) 모델의 7 계층과 프롤토콜 데이터 단위(PDU), 프로토콜을 정리했습니다.
강의에서 다루었던 주요 공격 기법을 이해하기 위한 자료입니다.
| Layer(OSI) | Protocol Data Unit (PDU) | Protocols |
|------------------|--------------------------|--------------------------------------------------------------|
| L1. Physical | Bit | Ethernet, Wi-Fi |
| L2. Data Link | Frame | MAC |
| L3. Network | Packet | IP, ICMP, IGMP, Routing Protocols:RIP, OSPF, BGP, ARP, IPsec |
| L4. Transport | Segment | TCP, UDP |
| L5. Session | Message | PPTP, H.245, SIP |
| L6. Presentation | Message | TLS, SSL |
| L7. Application | Message | HTTP(S), (S)FTP, SMTP |
TCP/IP 프로토콜
TCP
Transmission Control Protocol
TCP에 대한 간략한 소개를 인용합니다.
전 세계 모든 HTTP 통신은, (...) *패킷 교환 네트워크 프로토콜의 계층화된 집합인 TCP/IP를 통해 이루어진다.
(...) 클라이언트 애플리케이션은 서버 애플리케이션으로 TCP/IP *커넥션*을 맺을 수 있다.
**일단 커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간에 주고받는 메시지들은 손실 혹은 손상되거나
순서가 바뀌지 않고 안전하게 전달된다.
- HTTP 완벽 가이드, 4.1 TCP 커넥션, 85p
HTTP, TCP는 메시지(데이터)의 순서, 기밀성, 무셜성을 위해 사용되는 것으로 이해했습니다.
면접에서 제대로 답변하지 못했던 질문이라 기억에 남습니다.
TCP의 주요 속성은 다음과 같습니다:
TCP 스트림은 세그먼트로 나뉘어IP 패킷을 통해 전송됨- 각
TCP세그먼트는 하나의IP주소에서 다른IP주소로IP패킷에 담겨 젼댤됨.HTTP와HTTPS의 계층을 데이터 링크 계층부터 앱 계층까지 순서로 나타내면 다음과 같습니다:HTTP: Network Interfaces -> IP -> TCP -> HTTP (앱 계층)HTTPS: Network Interfaces -> IP -> TCP -> TLS/SSL -> HTTPS
HTTP는 위의 "프로토콜 스택"에서 최상위 계층입니다.HTTPS는TCP와HTTP사이에 추가된 암호화Cryptographic encription계층입니다.- 보안 기능이 추가된 것으로 이해했습니다.
UDP ❓
User Datagram Protocol
비연결형 통신
TCP와 달리 신뢰성이 덜 중요하지만 빠른 통신이 필요한 경우 사용됩니다.
- 비연결형: 통신 전에 연결을 설정하지 않고 바로 데이터를 전송합니다.
- 속도 우선: 연결 설정 과정이 없어 데이터 전송이 빠르고, 데이터 전송 오버헤드가 적습니다.
- 낮은 신뢰성: 데이터가 손실되거나 순서가 뒤바뀌더라도 재전송을 요청하지 않습니다.
- 구조: 출발지 포트 번호, 목적지 포트 번호, 길이, 체크섬 등으로 구성된 간단한 헤더를 사용합니다.
- 용도: **실시간 서비스(ex: 온라인 게임, 비디오 스트리밍)**나 DNS 조회처럼 속도가 중요한 곳에서 주로 사용됩니다.
IP
Internet Protocol
장치 간의 안정적인 데이터 전송을 담당하는 **네트워크 계층(L3)**의 프로토콜입니다. 정보처리기사를 준비하면서 학습한 내용을 복습했습니다.
주요 특성은 다음과 같습니다:
- 데이터 패킷을 목적지로 라우팅하는 역할을 합니다.
- L3 스위치 : IP 주소를 보고 경로를 지정하는 라우터의 기능을 하는 장치입니다
- 비신뢰성 (Unreliability) / 최선형 서비스 (Best Effort)
- IP는 전송하는 데이터가 수신자에게 정확하게 전달되었는지 보장하지 않습니다.
- 데이터 전송을 시도하지만, 중간에 패킷이 유실되거나 손상될 수 있습니다.
- 오류 복구 기능이 없고,
TCP와 같은 다른 전송 계층 프로토콜에 의존합니다.
- 비연결성 (Connectionlessness): 데이터를 전송하기 전에 송신자와 수신자 간에 사전 연결을 설정하지 않습니다.
- 따라서 상위 계층에서 연결을 확인하는 것으로 이해했습니다.
- 각 패킷은 독립적으로 전송되며, 네트워크 상황에 따라 서로 다른 경로를 통해 전달될 수 있습니다.
- IP 주소를 사용하여 특정 네트워크에 속한 특정 호스트(컴퓨터)를 식별합니다.
- 출발지 IP 주소와 목적지 IP 주소를 통해 데이터 패킷이 올바른 대상에 도착하도록 합니다.
- 단편화 (Fragmentation): 전송하려는 데이터 패킷이 네트워크의 최대 전송 단위(MTU)보다 클 경우, 더 작은 조각(패킷)으로 나누어 전송합니다.
- 이렇게 나누어진 패킷들은 각각 독립적으로 전송되고, 목적지에서 재조립됩니다.
--
OSI L4 전송 계층(Transport Layer) 프로토콜
강의에서도 언급된 전송 계층의 대표적인 2개의 프로토콜 TCP와 UDP의 간략한 특징은 다음과 같습니다.
TCP/IP 3 Way Handshake
3 Way-Handshake는 TCPrk 데이터 전송의 순서를 보장하기 위한 메커니즘입니다.
이번 노트에서는 공격 유형을 파악하기 위해 간략한 개념만 학습합니다:
3 Way Handshake:
- Step 1) SYN=1, ACK=0
- Step 2) SYN=1, ACK=1
- Step 3) ACK=1
- 클라이언트(
Request, req)와 서버(Response, res)는SYN,ACK을 통해 연결을 확인합니다.SYN,ACK의 값의 흐름으로 연결 상태 순서를 확인할 수 있습니다.
- 정확한 전송을 위해 3가지 과정이 정상적으로 끝나야 그때부터 통신 시작합니다.
TCP는 Sequence Number(SN)을 사용하여 순서를 보장합니다.- 공격자가
SN을 예측 -> 임의의Packet을 삽입하여TCP연결(Connection)을 가로채거나 변조할 수 있습니다. - 이를 방지하기 위해
SSL/TLS암호화 계층의 보안 기능을 사용합니다.
- 공격자가
TCP/IP 공격 유형
앞서 살핀 TCP와 IP의 각각 특성을 활용한 3가지 공격 유형에 대해 학습했습니다.
네트워크를 조금 더 깊게 학습할 수 있어, 개인적으로 더 깊게 학습해 볼 예정입니다.
TCP Sequence Number Prediction
- TCP는 데이터 전송의 순서를 보장하기 위해 시퀀스 번호(Segment Number)를 사용
- 공격자가 SN을 예측해서 임의의 패킷을 삽입하여 TCP 연결을 가로채거나 변조할 수 있음
- TCP는 데이터 전송의 순서를 보장하기 위해 시퀀스 번호 (Sequence Number)를 사용
- 공격자가 SN을 예측해서 임의의 패킷을 삽입하여 TCP 연결을 가로채거나 변조할 수 있음
- 보안 방법:
- 랜덤화된 초기 시퀀스 번호 (ISN, Initial Sequence Number) 사용
- IPSec, TLS와 같은 보안 프로토콜 적용
- 네트워크 트래픽 암호화로 중간자 공격 (MITM) 방지
- Man in the Middle attack
IP Spoofing
- IP(Internet Protocol) 자체의 보안 취약성을 악용한 것으로 자신의 IP 주소를 접속하는 공격
- 신뢰 관계에 있는 두 시스템 사이에서 허가받지 않은 자가 자신의 IP 주소를 신뢰 관계에 있는 호스트의 IP 주소로 바꾸어 속이는 것으로 IP 주소로 인증하는 서비스를 무력화시킬 수 있음
- 즉 공격자가 마치 신뢰성 있는 자가 송신한 것처럼 패킷의 소스 IP 주소를 변조하여 접속을 시도하는 침입 형태를 말한다.
- 신뢰 관계에 있는 두 시스템 사이에서 허가받지 않은 자가 자신의 IP 주소를 신뢰 관계에 있는 호스트의 IP 주소로 바꾸어 속이는 것으로 IP 주소로 인증하는 서비스를 무력화시킬 수 있음
- 즉 공격자가 마치 신뢰성 있는 자가 송신한 것처럼 패킷의 소스 IP 주소를 변조하여 접속을 시도하는 침입 형태를 말함
SYN Flooding Attack
- TCP
3-way handshake의 취약점을 악용한 DoS 공격 - 대량의 가짜 SYN 요청을 보내 서버의 연결 자원을 소진시킴
SYN Flooding Attack 흐름
- 공격자는 서버에 SYN(Synchronize) 패킷을 대량으로 전송하여 연결 요청
- 서버는 이에 응답하여 SYN-ACK(Synchronize-Acknowledge) 패킷 전송
- 정상적인 클라이언트는 ACK(Acknowledge) 패킷을 보내야 하지만, 공격자는 이를 보내지 않고 대기 상태로 만듬
- 서버는 연결을 유지하려고 해서, 다수의 요청이 누적되어 과부하가 발생하여 정상적인 사용자 요청을 처리할 수 없게 됨