Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions 2주차/kimahhh/IP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# IP
인터넷 프로토콜(Internet Protocol)의 약자로,

인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약

## 주요 기능
### 주소 지정
IP 주소를 사용하여 전 세계의 각 장치를 고유하게 식별
### 데이터 전달
패킷 단위로 데이터를 송수신하며, 라우터를 통해 데이터를 목적지까지 전달

## 데이터 패킷
**패킷** 또는 **데이터그램**이라고 불리는 단위로 전송

헤더와 데이터 부분으로 구성
### 헤더
소스 IP 주소, 목적지 IP 주소, 기타 제어 정보 포함

## 비연결성 및 비신뢰성
### 비연결성
패킷을 전송하기 전에 목적지와의 연결을 설정하지 않음
### 비신뢰성
패킷이 목적지에 도착할 것을 보장하지 않음

패킷의 전달, 순서, 오류 복구는 상위 계층 프로토콜(예: TCP)에 의존

## 프래그먼테이션
패킷을 여러 개의 작은 패킷으로 분할하는 것
### MTU(Maximum Transmission Unit)
데이터를 전송할 수 있는 최대 크기

큰 패킷이 작은 MTU를 가진 네트워크를 통과해야할 때, 프레그먼테이션 수행

## 버전
### IPv4
현재 가장 널리 사용되는 IP 버전

32비트 주소 체계 사용
### IPv6
보다 큰 주소 공간이 필요한 상황에서 등장한 새로운 버전

128비트 주소 체계 사용
### 변환 방법
1. Dual Stack
- 단일 장치에서 IPv4와 IPv6 주소를 동시에 실행하는 방법
- 두 프로토콜 스택을 동시에 지원
2. Tunneling
- IPv6 패킷을 IPv4 패킷 내에 캡슐화하여 IPv4 네트워크를 통해 전송하는 기술
- 종류: 6to4, Teredo, ISATAP
3. NAT64 / DNS64
- NAT64: IPv6 네트워크와 IPv4 네트워크 사이에서 주소 변환을 수행하여 통신을 가능하게 함
- DNS64: IPv6-only 네트워크에서 도메인 이름을 IPv4 주소로 해석하고, 해당 IPv4 주소를 NAT64 게이트웨이로 전송하여 변환 수행

## NAT (Network Address Translation)
### 장점
1. 주소 보존
- 공개 IP 주소 부족 문제를 완화
- 여러 개의 private IP 주소를 단일 public IP 주소 뒤로 숨길 수 있기 때문에 IP 주소 보존 가능

2. 보안
- 내부 네트워크의 private IP 주소를 외부에서 직접 볼 수 없도록 함

3. IP 주소 재구성 유연성
- 내부 네트워크 구성의 IP 주소 체계를 변경할 필요 없이 외부 IP 주소만 변경하여 통신 가능

### 단점
1. end-to-end 연결성 저하
- NAT는 중간에 주소를 변경하기 때문에, 순수한 end-to-end 통신 방해
2. 일부 애플리케이션 문제
- NAT는 IP 주소와 포트 정보를 변경하기 때문에, 이 정보를 사용하는 일부 애플리케이션에서 문제 발생 가능성

32 changes: 32 additions & 0 deletions 2주차/kimahhh/OSI 7 layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
### 물리 계층 (Physical Layer)
- 기능: 비트 단위의 데이터를 전송하고 받는 역할
- 주요 장비: 리피터, 허브 등
- 특징: 전송 매체(케이블)의 전기적, 물리적 성질을 다룸

### 데이터 링크 계층 (Data Link Layer)
- 기능: 물리 계층을 통해 전송되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 도와주는 역할
- 주요 장비: 브리지, 스위치 등
- 특징: MAC 주소를 사용하여 프레임을 전송, 오류 검출 및 오류 복구 기능 수행

### 네트워크 계층 (Network Layer)
- 기능: 데이터의 경로를 선택하고 주소를 정하며, 그 경로에 따라 패킷을 전달하는 역할
- 주요 장비: 라우터, L3 스위치 등
- 특징: IP 주소를 사용, 라우팅 · 패킷 포워딩 · 경로 선택 기능 담당

### 전송 계층 (Transport Layer)
- 기능: 데이터 흐름의 투명성을 제공하며, 장치 간의 데이터 전송을 관리하는 역할
- 주요 프로토콜: TCP, UDP 등
- 특징: 세션의 연결 및 종료, 흐름 제어, 오류 복구 등의 기능 제공

### 세션 계층 (Session Layer)
- 기능: 응용 프로그램 간의 세션을 설정, 관리 및 종료하는 역할
- 특징: 대화 제어 및 동기화 수행

### 표현 계층 (Presentation Layer)
- 기능: 데이터의 변환, 암호화, 압축을 관리하는 역할
- 특징: 응용 프로그램 형식과 네트워크 형식 간의 변환 수행, 데이터를 표준화함

### 응용 계층 (Application Layer)
- 기능: 사용자와 가장 가까운 계층으로, 응용 프로그램 및 네트워크 서비스가 이 계층에서 동작
- 주요 프로토콜: HTTP, FTP, SMTP 등
- 특징: 사용자 인터페이스, 이메일, 데이터베이스 관리, 파일 전송 등의 서비스를 제공
31 changes: 31 additions & 0 deletions 2주차/kimahhh/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
## 질문 리스트
- 네트워크 장비
- 라우터와 리피터
- 리피터와 허브
- OSI 7계층
- 전송 계층
- 데이터 링크 계층
- 패킷 교환 방식
- 가상 회선 방식
- 데이터그램 방식
- TCP/IP
- TCP의 순서 제어, 흐름 제어
- TCP, IP의 패킷 교환 방식
- 흐름 제어
- stop and wait
- sliding window

## TODO
- [x] OSI 7계층
- [x] IP
- [x] IPv4, IPv6
- [x] NAT
- [x] TCP
- [x] UDP와의 비교
- [x] 흐름제어, 혼잡 제어
- [x] 공격 기법
- [x] 디도스
- [x] 스니핑
- [x] HTTP, HTTPS 차이점
- [x] SSL/TLS
- [x] CSRF
90 changes: 90 additions & 0 deletions 2주차/kimahhh/TCP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# TCP

Transmission Control Protocol

## 특징

### 연결 지향적

통신을 시작하기 전에 송신자와 수신자 간의 연결을 설정

**3-way handshake**

1. **SYN (Synchronize Sequence Numbers)**
- 클라이언트는 서버에 연결을 요청하기 위해 SYN 패킷을 전송
- 이 패킷은 초기 시퀀스 번호(예: x)를 포함
2. **SYN-ACK (Synchronize-Acknowledgment)**
- 서버는 SYN 패킷을 받고, 클라이언트에게 연결 요청을 수락한다는 의미로 SyYN-ACK 패킷을 보냄
- 이 패킷은 자신의 초기 시퀀스 번호(예: y)와 클라이언트의 시퀀스 번호에 1을 더한 값(x+1)을 ACK 번호로 사용하여 전송
3. **ACK(Acknowledgment)**
- 클라이언트는 서버의 SYN-ACK 패킷을 받아들이고, 서버에세 ACK 패킷을 보냄
- 이 패킷의 ACK 번호는 서버의 시퀀스 번호에 1을 더한 값 (y+1)으로 설정
- 이 단계가 완료되면 연결이 공식적으로 설정되고, 데이터 전송이 시작

### 신뢰성 있는 전송

패킷의 손실, 중복, 지연 또는 순서 변경을 감지하고 이러한 오류를 복구하기 위한 메커니즘 제공

### 흐름 제어 (Flow Control)

송신자와 수신자 사이의 데이터 전송 속도를 조절하여 네트워크의 혼잡도나 수신자의 처리 능력 초과를 방지

**Sliding Window Protocol**

### 혼잡 제어 (Congestion Control)

네트워크 내의 혼잡을 감지하고 전송 속도를 조절하여 혼잡 붕괴를 방지

**Slow Start**

**Congestion Avoidance**

**Fast Retransmit**

**Fast Recovery**

**RTO(Retransmission Timeout)과 Backoff**

### 순서 보장

데이터가 올바른 순서로 도착하도록 보장

패킷이 순서대로 도착하지 않으면 재정렬

**Sequence Number**

### 오류 검출

TCP 헤더에 체크섬이 포함되어 있어 데이터 전송 중 발생할 수 있는 오류 감지

## UDP (User Datagram Protocol)

### 공통점

1. 전송 계층 프로토콜
- 둘 다 OSI 모델의 전송 계층에서 작동
2. IP와 함께 사용
- 둘 다 IP(Internet Protocol)와 결합하여 인터넷을 통해 데이터를 전송하는 데 사용
3. 포트 번호 사용
- 송신자와 수신자의 응용 프로그램을 식별하기 위해 포트 번호 사용

### 차이점

1. 신뢰성
- TCP: 신뢰성 있는 데이터 전송을 보장 / 패킷 손실, 순서 변경, 중복 등의 문제를 자동으로 처리
- UDP: 신뢰성 있는 전송 보장 X / 패킷 손실이나 순서 변경이 발생하면 응용 프로그램이 처리해야 함
2. 연결 설정
- TCP: 연결 지향적 / 데이터 전송 전에 송신자와 수신자 간의 연결 설정 과정(3-way handshake)이 필요
- UDP: 연결이 설정되지 않는 연결 없는 프로토콜 / 송신자는 수신자에게 데이터를 직접 전송
3. 속도
- TCP: 흐름 제어, 혼잡 제어, 오류 복구 기능으로 인해 상대적으로 느림
- UDP: 오버헤드가 덜 발생하므로 상대적으로 빠름
4. 헤더 크기
- TCP: 더 큰 헤더를 가지며, 신뢰성과 흐름 제어 관련 정보가 포함
- UDP: 헤더가 간단하고 작으며, 최소한의 정보만 포함
5. 오류 검출 및 복구
1. TCP: 체크섬 및 순서 정보를 사용하여 오류를 검출하고 복구
2. UDP: 기본 체크섬만 제공하므로 오류 복구 기능 제한적
6. 사용 사례
- TCP: 웹 브라우징, 이메일, 파일 전송 등 신뢰성 있는 데이터 전송이 필요한 응용 프로그램
- UDP: 스트리밍 미디어, VoIP, 온라인 게임 등 신속하고 연속적인 데이터 전송이 중요한 응용 프로그램
162 changes: 162 additions & 0 deletions 2주차/kimahhh/공격 기법.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
# DDos

분산 서비스 거부 공격 (Distributed Denial of Service)

여러 대의 컴퓨터를 사용하여 특정 서버나 네트워크에 대량의 트래픽을 발생시켜서 정상적인 서비스 요청을 처리하지 못하게 하는 공격

- 분산된 공격
- 여러 컴퓨터(봇넷)를 사용하여 통합된 공격 수행
- 공격의 근원을 추적하기 어렵게 함
- 대량의 트래픽
- 예상치 못한 규모의 트래픽이 유입 → 정상적인 서비스 요청 처리 불가

### Volume Based Attacks

대상에게 많은 데이터를 보내서 대역폭을 고갈시키는 공격

ICMO, UDP flood

### Protocol Attacks

서버의 자원을 고갈시키거나 네트워크 장비에 과부하를 주는 공격

SYN flood, Ping of Death, Smurf 공격

### Application Layer Attacks

특정 응용 프로그램 또는 서비스에 대한 요청을 통해 서버의 자원을 고갈시키는 공격

HTTP flood

# 스니핑

네트워크 상에서 데이터 패킷을 가로채는 행위 or 기술

공격자가 민감한 정보를 도청하거나 습득하는 데 사용

## 스니퍼 도구

### 패시브 스니핑

스니퍼가 네트워크 트래픽을 수동적으로 모니터링

트래픽에 직접적으로 영향 X

### 액티브 스니핑

스니퍼가 네트워크 환경에서 패킷을 도청하기 위해 네트워크의 동작에 개입

ex) 스위치된 환경에서 ARP 스푸핑과 같은 방법을 사용하여 패킷을 가로챌 수 있음

## 보호 방법

### 암호화된 통신

HTTPS, VPN

### 정적 ARP 항목

ARP 스푸핑 방지

### 보안 솔루션

스니핑을 감지하거나 방지하는 IDS(침입 탐지 시스템) 구축

## HTTPS

### HTTP

- HyperText Transfer Protocol
- 웹 브라우저와 웹 서버 간에 정보를 교환하는 데 사용되는 애플리케이션 계층의 프로토콜
- 평문(암호화되지 않은 텍스트)로 데이터 전송
- 중간의 공격자(ex. 스니퍼)가 트래픽을 가로채면 내용을 쉽게 읽을 수 있음
- 데이터의 무결성 및 인증 메커니즘 X → 중간자 공격(man-in-the-middle attack)에 취약
- 기본적으로 포트 80 사용

### HTTPS

- HyperText Transfer Protocol Secure
- HTTP의 보안 버전
- 데이터 전송을 암호화하기 위해 SSL(Secure Sockets Layer) 또는 그 후속인 TLS(Transport Layer Security) 사용
- 암호화된 통신을 통해 데이터의 기밀성 보장
- SSL/TLS 인증서를 사용하여 웹 서버의 신원 인증 → 사용자는 자신이 접속하려는 사이트가 정당한 사이트임을 확신
- 데이터의 무결성을 보장하여 중간의 공격자가 데이터를 수정하는 것을 방지
- 기본적으로 포트 443 사용

### SSL/TLS

- 기능
- **암호화**: 데이터를 암호화하여 통신 내용을 도청하는 공격자로부터 보호
- **인증**: 통신하는 양측이 서로의 신원을 확인하게 하여 사용자가 통신하고자 하는 서버가 정당한지 확인 가능
- **무결성**: 전송되는 데이터가 중간에 변경되거나 손상되지 않았음을 확인
- 동작 방식
- **핸드쉐이크**: 연결 초기에 클라이언트와 서버는 `핸드쉐이크` 과정을 통해 통신할 암호화 방식을 협상 & 서로의 신원 인증
- **인증서**: 디지털 인증서를 사용하여 서버(때로는 클라이언트도)의 신원을 인증
- 대부분의 경우, 이 인증서는 신뢰할 수 있는 제3자 기관(`CA`, Certificate Authority)에 의해 서명됨
- **키 교환**: 핸드쉐이크 과정에서 클라이언트와 서버는 안전하게 공유된 `세션 키`를 생성 → 이후의 암호화된 통신에 사용

## VPN

Virtual Private Network

### 특징

- **보안**: 사용자의 인터넷 연결을 암호화하여 중간에 데이터를 가로채거나 조작하는 것을 방지
- **프라이버시**: 사용자의 실제 IP 주소를 숨기며, 그에 따라 온라인 활동의 추적을 어렵게 함
- **지리적 제한 우회**: 특정 지역에서만 사용할 수 있는 서비스나 콘텐츠에 접근 가능
- **원격 접속**: 기업은 직원이 외부에서 안전하게 회사 네트워크에 접근할 수 있도록 VPN 사용

### 동작 방식

1. **터널링**: `터널`이라는 안전한 연결 통로를 생성 → 이 터널을 통해 데이터가 암호화되어 전송
2. **암호화**: 데이터를 암호화하여 중간의 공격자로부터 보호
3. **인증**: 서버와 클라이언트는 서로의 신원을 확인하기 위해 인증 과정을 거침

### 주요 유형

- PPTP(Point-to-Point Tunneling Protocol)
- L2TP(Layer 2 Tunneling Protocol)
- OpenVPN
- IPSec(Internet Protocol Security)
- SSTP(Secure Socket Tunneling Protocol)

## ARP 스푸핑

### 동작 방식

1. LAN 상에서 호스트는 IP 주소를 통해 다른 장치와 통신함. 그러나 실제 데이터는 MAC 주소를 기반으로 전송됨. ARP는 IP 주소를 해당 MAC 주소로 변환하는 데 사용
2. 공격자는 속이는 ARP 응답을 통해 특정 IP 주소가 자신의 MAC 주소와 연결되어 있다고 잘못 알림. 이로 인해 트래픽은 원래의 목적지 대신 공격자에게 전송됨.
3. 공격자는 이 트래픽을 검사, 수정 또는 변조한 후 원래의 목적지로 전송

### 목표

- 데이터 도청
- 세션 하이재킹
- 데이터 변조
- 서비스 거부 공격 (DoS)

### 방어 방법

- 정적 ARP 항목
- ARP 스푸핑 탐지 도구
- 포트 보안
- VLAN 사용
- VPN 및 암호화

# CSRF

Cross-Site Request Forgery(크로스 사이트 요청 위조)

### 동작 방식

1. 피해자가 취약한 웹 사이트에 로그인하며 세션 쿠키를 생성
2. 피해자가 악성 웹페이지 또는 이메일에 포함된 악성 코드를 클릭하거나 방문
3. 악성 코드는 피해자의 브라우저를 통해, 피해자가 로그인한 상태에서만 수행할 수 있는 행동(ex. 비밀번호 변경, 계정 설정 변경 등)을 자동으로 취약한 웹 사이트에 요청
4. 피해자의 세션 쿠키를 사용하여 웹 사이트는 요청을 합법적인 것으로 간주하고 수행

### 방어 방법

- Anti-CSRF 토큰
- SameSite 쿠키 속성
- 검증에 Referer 헤더 사용
- 요청에 대한 사용자 확인