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 FloodPing 패킷 폭탄 (Ping of Death)ICMP 프로토콜
Amplification Attack소량 요청으로 대량 응답 유발DNS/NTP Amplification

2. 프로토콜 공격

공격자 → 프로토콜 약점 공략 → 타겟 시스템
               (리소스 고갈)
공격설명타겟
SYN FloodTCP 3-way 핸드셰이크 악용TCP 포트 80/443
ACK FloodACK 패킷 폭탄ACK 처리
Fraggle AttackUDP 브로드캐스트포트 7

3. 애플리케이션 계층 공격

공격자 → 애플리케이션 취약점 → 타겟 서버
               (서버 리소스 고갈)
공격설명타겟
HTTP Flood대량의 HTTP 요청웹 서버
Slowloris느린 HTTP 요청Apache/Nginx
SSL DoSSSL 핸드셰이크 악용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 CookiesSYN 패킷 쿠키화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 REJECT

2. 중간자 공격 (MITM)

정의

공격자가 통신 사이에 위치하여 정보를 가로챕거나 조작합니다.

공격 유형

1. ARP 스푸핑 (ARP Spoofing)

정상 상태:
[PC] ←───────→ [라우터]

ARP 스푸핑 후:
[PC] ←───────→ [공격자] ←───────→ [라우터]
(공격자가 PC의 MAC으로 라우터를 속임)

공격 원리:

  1. 공격자 → PC: “라우터의 IP는 내 MAC입니다” (가짐 ARP 응답)
  2. 공격자 → 라우터: “PC의 IP는 내 MAC입니다” (가짐 ARP 응답)
  3. 모든 트래픽이 공격자를 거쳐감

방어:

  • 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)

정의

네트워크 패킷을 수집하여 정보 유출합니다.

스니핑 도구

도구설명기능
WiresharkGUI 기반 패킷 분석프로토콜 디코딩
tcpdumpCLI 기반 패킷 캡처필터링
EttercapMITM 및 스니핑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 ScanFIN 패킷 전송 (방화벽 우회)어려움
NULL Scan플래그 없는 패킷 전송어려움
XMAS ScanFIN, 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웹 서버 스캐너웹 취약점
SQLMapSQL 인젝션 자동화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.1

3. Wireshark 패킷 분석

# DNS 스쿼리 필터
dns.qry.name == "google.com"

# HTTP POST 필터
http.request.method == "POST"

✅ 학습 체크리스트

  • DoS/DDoS 공격 유형 식별
  • SYN Flood 원리 이해
  • MITM 공격 방식 이해
  • ARP/DNS 스푸핑 방어 방법 알기
  • 스니핑 도구 사용
  • 포트 스캔 기법 이해
  • SQLi/XSS 공격 원리 이해
  • 취약점 스캔 도구 사용

🔗 관련 노트

📚 참고 자료


다음 학습: 보안 정책과 거버넌스