IT Knowledge/Security/images/23-네트워크-공격-유형-diagram.svg
네트워크 공격 유형 (Network Attack Types)
다양한 네트워크 공격 방식과 방어 기법을 이해합니다.
📌 학습 목표
- DoS/DDoS 공격 이해 및 방어
- MITM (중간자) 공격 이해
- 스니핑과 스푸핑 공격 이해
- 포트 스캐닝과 인젝션 공격 이해
- 네트워크 공격 탐지 및 대응
1. 서비스 거부 공격 (DoS/DDoS)
DoS (Denial of Service)
단일 공격자가 시스템을 마비시키는 공격입니다.
DDoS (Distributed DoS)
다수의 공격자(봇넷)가 시스템을 마비시키는 공격입니다.
공격 유형
1. 볼륨 기반 공격
공격자 → 대량의 트래픽 → 타겟 시스템
(대역폭 포화)
| 공격 | 설명 | 대상 |
|---|---|---|
| UDP Flood | 대량의 UDP 패킷 전송 | 포트 7/17/19 |
| ICMP Flood | Ping 패킷 폭탄 (Ping of Death) | ICMP 프로토콜 |
| Amplification Attack | 소량 요청으로 대량 응답 유발 | DNS/NTP Amplification |
2. 프로토콜 공격
공격자 → 프로토콜 약점 공략 → 타겟 시스템
(리소스 고갈)
| 공격 | 설명 | 타겟 |
|---|---|---|
| SYN Flood | TCP 3-way 핸드셰이크 악용 | TCP 포트 80/443 |
| ACK Flood | ACK 패킷 폭탄 | ACK 처리 |
| Fraggle Attack | UDP 브로드캐스트 | 포트 7 |
3. 애플리케이션 계층 공격
공격자 → 애플리케이션 취약점 → 타겟 서버
(서버 리소스 고갈)
| 공격 | 설명 | 타겟 |
|---|---|---|
| HTTP Flood | 대량의 HTTP 요청 | 웹 서버 |
| Slowloris | 느린 HTTP 요청 | Apache/Nginx |
| SSL DoS | SSL 핸드셰이크 악용 | HTTPS 서버 |
SYN Flood 상세
공격 원리:
1. 공격자 → 서버: SYN (가짐 IP 주소)
2. 서버 → 가짜 IP: SYN-ACK (대기 상태)
3. 가짐 IP → 응답 없음 (공격자가 스푸핑)
결과: 서버 리소스 고갈 (SYN RECV)
3-way 핸드셰이크 정상:
1. 클라이언트 → 서버: SYN
2. 서버 → 클라이언트: SYN-ACK
3. 클라이언트 → 서버: ACK → 연결 성립
방어 기법
| 방어 | 설명 | 구현 |
|---|---|---|
| Rate Limiting | 트래픽 속도 제한 | iptables -m limit |
| SYN Cookies | SYN 패킷 쿠키화 | sysctl -w net.ipv4.tcp_syncookies=1 |
| Blackholing | 악성 트래픽 블로킹 | 라우터 ACL |
| Anti-DDoS 서비스 | Cloudflare, AWS Shield | 클라우드 서비스 |
| Connection Timeout | 연결 타임아웃 단축 | TCP keepalive |
방어 설정 예시
# SYN Cookies 활성화 (Linux)
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# Rate Limiting (iptables)
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
# Connection Limiting
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT2. 중간자 공격 (MITM)
정의
공격자가 통신 사이에 위치하여 정보를 가로챕거나 조작합니다.
공격 유형
1. ARP 스푸핑 (ARP Spoofing)
정상 상태:
[PC] ←───────→ [라우터]
ARP 스푸핑 후:
[PC] ←───────→ [공격자] ←───────→ [라우터]
(공격자가 PC의 MAC으로 라우터를 속임)
공격 원리:
- 공격자 → PC: “라우터의 IP는 내 MAC입니다” (가짐 ARP 응답)
- 공격자 → 라우터: “PC의 IP는 내 MAC입니다” (가짐 ARP 응답)
- 모든 트래픽이 공격자를 거쳐감
방어:
- Static ARP: 정적 ARP 테이블 사용
arp -s 192.168.1.1 aa:bb:cc:dd:ee:ff - Dynamic ARP Inspection (DAI): 스위치에서 ARP 패킷 검증
2. DNS 스푸핑 (DNS Spoofing)
클라이언트: "google.com IP는?"
DNS 캐시 오염: "google.com은 1.2.3.4 (악성 사이트)"
클라이언트: 1.2.3.4 접속 → 피싱 사이트
방어:
- DNSSEC: DNS 응답 디지털 서명 검증
- DNS Cache Poisoning 방지: 랜덤 소스 포트 사용
3. SSL Stripping
클라이언트: https://bank.com
↓ 공격자 변환
HTTPS → HTTP (암호화 해제)
↓ 악성 서버
공격자가 평문으로 패스워드 수집
방어:
- HSTS (HTTP Strict Transport Security): HTTPS 강제
- SSL/TLS 항상 사용
3. 스니핑 (Sniffing)
정의
네트워크 패킷을 수집하여 정보 유출합니다.
스니핑 도구
| 도구 | 설명 | 기능 |
|---|---|---|
| Wireshark | GUI 기반 패킷 분석 | 프로토콜 디코딩 |
| tcpdump | CLI 기반 패킷 캡처 | 필터링 |
| Ettercap | MITM 및 스니핑 | ARP 스푸핑 |
| Dsniff | 암호화되지 않은 프로토콜 캡처 | FTP, Telnet, HTTP |
스니핑 예시
# tcpdump로 HTTP 패킷 캡처
tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
# Wireshark 필터
http.request.method == "POST" && http.file_data방어
- 암호화: SSL/TLS, SSH
- Switched Network: 스위치 사용 (허브 대신)
- Port Security: 포트당 MAC 주소 제한
4. 포트 스캐닝 (Port Scanning)
정의
열려 있는 포트와 서비스를 식별합니다.
스캔 유형
| 스캔 | 설명 | 탐지 난이도 |
|---|---|---|
| TCP Connect | 전체 3-way 핸드셰이크 | 쉬움 (로그 남음) |
| SYN Scan (Half-open) | SYN만 전송, SYN-ACK 수신 후 RST | 중간 |
| FIN Scan | FIN 패킷 전송 (방화벽 우회) | 어려움 |
| NULL Scan | 플래그 없는 패킷 전송 | 어려움 |
| XMAS Scan | FIN, PSH, URG 플래그 설정 | 어려움 |
Nmap 예시
# TCP Connect 스캔
nmap -sT 192.168.1.1
# SYN 스캔 (기본)
nmap -sS 192.168.1.1
# 서비스 버전 탐지
nmap -sV 192.168.1.1
# UDP 스캔
nmap -sU 192.168.1.1
# OS 탐지
nmap -O 192.168.1.1
# 스크립트 스캔
nmap --script vuln 192.168.1.1방어
- 방화벽: 불필요한 포트 차단
- IDS/IPS: 스캔 탐지
- Honeypot: 가짐 서버로 공격자 유인
5. 인젝션 공격 (Injection Attacks)
SQL 인젝션 (SQL Injection)
공격 원리:
-- 정상 쿼리
SELECT * FROM users WHERE username = '$username' AND password = '$password';
-- 악성 입력
username: admin' OR '1'='1
password: anything
-- 실행되는 쿼리
SELECT * FROM users WHERE username = 'admin' OR '1'='1' AND password = 'anything';
-- 결과: 모든 유저 정보 노출방어:
- Prepared Statements: 파라미터화된 쿼리 사용
// 안전한 방법 $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ? AND password = ?"); $stmt->execute([$username, $password]); - Input Validation: 입력 검증
- 최소 권한 원칙: DB 계정 권한 제한
XSS (Cross-Site Scripting)
공격 원리:
<!-- 악성 코드 주입 -->
<script>alert('XSS')</script>
<img src=x onerror="alert('XSS')">방어:
- Output Encoding: HTML 특수 문자 이스케이프
htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8'); - CSP (Content Security Policy): 스크립트 실행 제한
- HTTPOnly Cookies: XSS에서 쿠키 탈취 방지
6. 취약점 스캐닝 (Vulnerability Scanning)
스캐닝 도구
| 도구 | 설명 | 기능 |
|---|---|---|
| Nessus | 상용 취약점 스캐너 | 50,000+ CVE |
| OpenVAS | 오픈소스 스캐너 | Nessus 대안 |
| Nikto | 웹 서버 스캐너 | 웹 취약점 |
| SQLMap | SQL 인젝션 자동화 | SQLi 탐지 |
취약점 스캔 과정
1. 스캔 준비
- 대상 범위 설정
- 스캔 프로파일 선택
2. 스캔 수행
- 포트 스캔
- 서비스 버전 탐지
- CVE 매칭
3. 결과 분석
- 심각도 평가 (Critical/High/Medium/Low)
- 수정 방안 확인
4. 취약점 수정
- 패치 적용
- 구성 변경
취약점 심각도
| 등급 | 설명 | 수정 우선순위 |
|---|---|---|
| Critical | 원격 코드 실행 가능 | 즉시 |
| High | 권한 상승 가능 | 48시간 내 |
| Medium | 정보 노출 가능 | 1주 내 |
| Low | 마이너한 문제 | 정기 업데이트 |
🎯 실습 과제
1. SYN Flood 공격 시뮬레이션
# hping3로 SYN Flood (자신의 랩에서만)
sudo hping3 -S -p 80 -i u1000 --flood <target_ip>
# 모니터링
watch -n 1 'netstat -an | grep SYN_RECV'2. Nmap 포트 스캔
# 전체 포트 스캔
nmap -p- 192.168.1.1
# 서비스 버전 탐지
nmap -sV -A 192.168.1.1
# 스크립트 스캔
nmap --script=vuln 192.168.1.13. Wireshark 패킷 분석
# DNS 스쿼리 필터
dns.qry.name == "google.com"
# HTTP POST 필터
http.request.method == "POST"
✅ 학습 체크리스트
- DoS/DDoS 공격 유형 식별
- SYN Flood 원리 이해
- MITM 공격 방식 이해
- ARP/DNS 스푸핑 방어 방법 알기
- 스니핑 도구 사용
- 포트 스캔 기법 이해
- SQLi/XSS 공격 원리 이해
- 취약점 스캔 도구 사용
🔗 관련 노트
📚 참고 자료
다음 학습: 보안 정책과 거버넌스