728x90
반응형
서비스 거부 공격(DoS : Denial of Service)
- 컴퓨터 자원을 고갈시키기 위한 공격으로 특정 서비스를 계속적으로 호출하여 CPU, Memory, Network 등의 자원을 고갈시킨다.
- DoS 공격은 소프트웨어 취약점을 이용하는 공격과 IP Header를 변조하여 공격하는 로직 공격, 무작위로 패킷을 발생시키는 플러딩 공격(Flooding Attack)으로 구분된다.
- DDos(Distributed Deial of Service) 공격은 여러 대의 공격자 서버가 분산되어 있고 특정 시스템을 집중적으로 공격하는 방법을 의미한다.
▶ DoS 및 DDoS 공격 도구
도구 | Trinoo | TFN | Stacheldraht |
공격 방법 | UDP Flood | UDP, ICMP, SYN Flood, Smurf | UDP, ICMP, SYN Flood, Smurf |
암호가능 | 없음 | 없음 | 없음 |
Attacker ↔Master | 27665/tcp | Telnet 등 방법(별도의 연결 없음) | 1660/tcp(암호화) |
Master ↔ Agent | 27444/udp | ICMP echo Reply | ICMP echo Reply |
Agent ↔ Master | 31335/udp | ICMP echo Reply | ICMP echo Reply |
반응형
분산 서비스 거부 공격(DDoS) 종류
① TCP SYN Flooding
- TCP 패킷의 SYN 비트를 이용한 공격 방법으로 너무 많은 연결 요청을 전송해서 대상 시스템이 Flooding하게 만들어 대상 시스템의 서비스를 중단시키는 공격이다.
- 다른 사용자가 서비스를 받지 못하도록 하는 공격이다.
- TCP 초기 연결 과정 이용, SYN 패킷을 요청하여 서버가 ACK 및 SYN 패킷을 보내게 한다.
- 전송하는 주소가 무의미한 주소이며 서버는 대기 상태이고 대량의 요청 패킷 전송으로 서버의 대기큐가 가득 차서 DoS 상태가 된다.
▶ TCP SYN Flooding 대응 방법
대응책 | 내용 |
방화벽에서 대응 | IP당 SYN 요청에 대한 PPS(Packet Per Second) 임계치를 단계적으로 조정 |
First SYN Drop (Spoofed) 설정 |
|
TCP 세션 연결 차단 | 트래픽 유형별 임계치를 조정하여 TCP 세션 연결에 대한 차단 |
Back queue 증가 |
|
▶ 라우터에서 대응 방법
구분 | 내용 |
Watch Mode | SYN 패킷을 통과시키고 일정 시간 동안 연결이 이루어지지 않으면 라우터가 SYN 패킷을 차단함 |
Intercept Mode | 라우터에 유입되는 SYN 패킷 요청을 서버로 전송하지 않고, 라우터에서 가로채어 SYN 패킷을 요청한 클라이언트와 서버를 대신 연결하는 것 |
② ICMP Flooding
- IP 특정(Broadcast 주소 방식)과 ICMP 패킷을 이용한 공격 방법이다.
- 통신을 위해서 서비스 및 포트가 필요없는 유일한 프로토콜이다.
- Smurfing Attack이라고도 한다.
- 다수의 호스트가 존재하는 서브 네트워크에 ICMP Echo 패킷을 Broadcast로 전송(Source Address는 공격 대상 서버로 위조)한다. 이에 대한 다량의 응답 패킷이 공격 대상 서버로 집중되게 하여 마비시키는 공격이다.
▶ ICMP 공격에 사용되는 메시지
메시지 | 내용 |
Sourch Quench(Type-4) | 사용 중 전송자에게 패킷 전송 속도를 줄여 줄 것을 요구하는 메시지로 전송 속도의 지연 발생 |
Time to live exceeded in Transit (Type-11, Code-0) |
시간 초과로 패킷이 폐기되었기 때문에 재전송함 |
Destination unreachable (Type-3, Code-0, 1, 2, 3) |
ICMP 트래픽 처리에 자원을 사용하게 되므로 시스템이 조금씩 느려지는 현상 발생 |
▶ ICMP 및 UDP Flooding 대응 방법
대응 방법 | 내용 |
ACL을 이용한 차단 | 웹 서버 혹은 운영 장비에 대한 접근 제어 목록을 차단 |
Inbound 패킷 임계치 설정 |
|
③ Tear Drop : IP Fragmentation(Ping of Death)
- 네트워크 패킷은 MTU보다 큰 패킷이 오면 분할하고 분할된 정보를 flasg와 offset이 가지고 있다. 이때 offset을 임의로 조작하여 다시 조립될 수 없도록 하는 공격이다.
- Fragment를 조작하여 패킷 필터링 장비나 IDS을 우회하여 서비스 거부를 유발한다.
▶ Tear drop 공격 종류
종류 | 설명 |
Tiny Fragment | 최초의 Fragment를 아주 작게 만들어서 네트워크 침입탐지 시스템이나 패킷 필터링 장비를 우회하는 공격 |
Fragment Overlap |
|
IP Fragmentation을 이용한 서비스 거부공격 |
|
▶ Ping of Death의 공격 방법
- Ping of Death는 하나의 큰 패킷을 전송하면 패킷은 MTU의 크기를 넘을 수 없기 때문에 분할되어서 응답받게 된다.
④ Land Attack
- IP Header를 변조하여 인위적으로 송신자 IP 주소 및 Port 주소를 수신자의 IP 주소와 Port 주소로 설정하여 트래픽을 설정하여 트래픽을 전송하는 공격 기법이다.
- 송신자와 수신자의 IP 주소와 Port 주소가 동일하기 때문에 네트워크 장비에 부하를 유발한다.
▶ Land Attack 대응 방법
- 송신자와 수신자의 IP 주소가 동일한 패킷을 삭제한다.
⑤ HTTP Get Flooding
- 정상적인 TCP 연결 이후에 정상적으로 보이는 HTTP Transaction 과정을 수행하는 방식으로 DoS/DDoS 공격 방법이다.
- HTTP Get을 지속적으로 요청하여서 HTTP 연결 및 HTTP 처리 로직까지 과부하를 유발한다.
- TCP의 3-way Handshaking 이후 공격을 수행하기 때문에 IP를 변조하지 않는다.
- HTTP Get Flooding은 아주 간단한 공격이다. HTTP Requset를 계속적으로 호출하게 만드는 방법으로 가장 단순하게는 사용자가 메뉴를 계속 클릭해도 된다. 하지만 사용자가 직접 클릭하는 속도로는 웹 서버에 부하를 유발하기 어렵다.
- 다수의 HTTP Get Request를 요청하여 부하를 유발한다. 그래서 공격자는 공격도구를 사용해서 HTTP Request를 계속 호출하게 되고 시스템의 부하를 유발하는 것이다.
- POST 방식을 계속 요청하는 공격을 하면 그것을 HTTP POST Flooding이라고 부른다.
▶ HTTP Get Flooding 대응 방법
대응 방법 | 내용 |
선별적 IP 차단 |
|
콘텐츠 요청횟수에 의한 임계치 설정 | 특정 콘텐츠를 다량으로 요청하는 것이므로 IP마다 콘텐츠 요청 회수의 임계치를 설정 |
시간대별 웹 페이지 URL 접속 임계치 설정 | 시간대별 임계치를 설정하여 임의의 시간 안에 설정한 임계치 이상의 요청이 들어온 경우 해당 IP를 탐지하여 방화벽 차단 목록에 등록 |
Web Scraping 기법을 이용한 차단 | L7 스위치를 운영하는 경우 웹 스크랩핑 기능을 사용하여 요청 패킷에 대한 쿠키 값이나 자바 스크립트를 보내어 클라이언트로부터 원하는 값에 재요청 패킷이 없는 경우 해당 패킷을 차단 |
⑥ Cache Control
- HTTP RFC 2616에 규정되어 있는 Cache-Control Header 옵션 값을 사용한다.
- 이 옵션은 자주 변경되는 데이터에 대해서 새롭게 HTTP 요청과 응답을 요구하는 옵션으로 no-cache가 설정되면 항상 최신의 페이지를 요청하여 부하를 발생시킨다.
- Cache-Control을 no-cache로 설정하고 웹 서버를 호출하면 항상 최신 페이지를 전송해 주어야하기 때문에 웹 서버는 더 많은 부하가 발생한다. Cace Control Attack이라는 것이 바로 이러한 공격이다.
▶ Cache Control 대응 방법
- HTTP Get Attack 공격과 마찬가지로 임계치 기반 대응을 실시한다.
- 단, Cache-Control 사용 여부에 따른 임계치를 설정하는 것이 더 효과적이다.
⑦ Slow HTTP Get/Post Attack
▶ Slow HTTP Get 방식
- TCP 및 UDP 기반 공격 : 변조 IP가 아닌 정상 IP 기반 공격이며, 탐지가 어렵다.
- 소량의 트래픽을 사용한 공격 : 소량의 트래픽과 세션 연결을 통해서 공격한다.
- 애플리케이션 대상 : 서비스의 취약점을 이용한 공격이다.
▶ Slow HTTP Post 방식
- HTTP의 Post 지시자를 사용하여 서버에게 전달할 데이터를 장시간에 걸쳐 분할 전송한다.
- Post 데이터가 모두 수신되지 않으면 연결을 장시간 유지하게 된다.
- HTTP Post Method를 사용하여 HTTP Header의 Content-Length 필드에 임의의 큰 값을 입력하여 웹 서버가 클라이언트에서 해당 크기의 메시지를 전송할 때까지 Connection을 유지하게 되며 공격자는 소량의 데이터를 느린 속도로 전송하여 장기간 동안 세션을 유지하게 됨
▶ Slow HTTP Read DoS
- 공격자가 웹 서버와 TCP 연결 시 TCP 윈도우 크기 및 데이터 처리율을 감소시킨 후 HTTP 데이터를 송신하여 웹 서버가 정상적으로 응답하지 못하도록 하는 DoS/DDoS 기법이다.
- TCP 윈도우 크기 및 데이터 처리율을 감소시키면 서버는 정상상태로 회복될 때까지 대기상태에 빠지게 되어 부하를 유발한다.
- 공격자는 자신의 TCP 윈도우 크기를 0byte로 만든후 서버로 전달
- 서버는 윈도우 크기가 0Byte인 것을 확인하고 데이터를 전송하지 않고 Pending 상태로 빠지게 됨
- 공격자는 윈도우 크기를 점검하는 Probe 패킷을 ACK로 전송하면 서버는 대기 상태로 빠지게 됨
▶ Slow HTTP Header DoS(Slowloris)
- HTTP Header를 비정상적으로 조작해서 웹 서버가 헤더 정보를 구분할 수 없도록 하는 방법이다.
- 웹 서버에 HTTP Header 정보가 모두 전달되지 않은 것으로 판단하여 연결을 장시간 유지한다.
- 웹 서버는 클라이언트로부터 요청이 끝나지 않은 것으로 판단되기 때문에 웹 로그에 기록하지 않는다.
- HTTP Header와 Body는 개행 문자(\r\n\r\n)로 구분된다.
- Slow HTTP Header DoS는 \r\n만 전송하여 불완전한 Header를 전송한다.
▶ Slow HTTP Get/Post 대응 방법
대응 방법 | 내용 |
접속 임계치 설정 | 특정 발신지에서 IP로 연결할 수 있는 최대 값 설정 |
방화벽 설정 도구인 iptables로 차단 |
|
Connection Timeout과 Keepalivetime 설정 |
|
RequestReadTimeout 설정으로 차단 |
|
- POST 메시지의 크기를 제한(POST_MAX_SIZE)한다.
- 최저 데이터 전송 속도를 제한한다.
- TCP 상태를 모니터링한다.
⑧ Hash DoS
- 클라이언트에서 전달되는 각종 파라미터 값을 관리하는 해시 테이블의 인덱스 정보가 중복되도록 유도하여 사전에 저장된 정보 조회 시 많은 CPU 자원을 소모하도록 하는 공격이다.
- HTTP Request 요청 시 Get, Post 방식으로 전송되는 변수를 Hash 구조로 관리한다.
- 많은 수의 매개변수를 전달하면 매개변수를 저장하는 해시 테이블에서 해시 충돌이 발생하여 해시테이블에 접근하는 시간이 증가한다.
- 해시테이블 : 해시함수가 서로 다른 두 개의 입력 값에 대해 동일한 출력 값을 도출한다.
▶ 해시 충돌(Hash Collision)
- 서로 다른 키 값이 같은 인덱스 값으로 매핑되는 현상이다.
▶ Hash DoS 대응 방안
대응 방법 | 내용 |
HTTP Post 파라미터 수 제한 | TOMCAT, PHP, Ruby 등의 최신 버전은 파라미터의 수를 제한할 수 있음. 즉, 개수 제한을 적용 |
Post 메시지 크기 제한 | POST 메시지의 사이즈를 제한하는 서비스 설정 |
PHP에서 Hash DoS 차단 | php.ini 파일에서 max_input_var로 최대 HTTP POST Parameter 개수 설정 |
⑨ Hulk DoS
- 웹 서버의 가용량을 모두 사용하여 정상적인 서비스가 불가능하도록 하는 Get Flooding 공격 유형이다.
- 공격 대상 URL을 지속적으로 변경하여 DDoS 차단 정책을 우회하는 특징을 가진다.
- 특정 URL이 계속 변경되면 임계치 설정 기반 방어가 불가능하게 된다. 즉, 임계치는 고정된 URL에만 설정이 가능한 특성을 우회한다.
▶ Hulk DoS 대응 방안
대응 방안 | 내용 |
접속 임계치 설정을 통한 차단 |
|
HTTP Request HOST 필드 값에 대한 임계치 설정을 통한 차단 | Hulk DoS는 URL을 계속 변경하기 때문에 URL이 아닌 HTTP Request에 포함된 HOST필드 값을 카운트하여 임계치 이상인 경우 차단함 |
302-Redirect를 이용한 차단 |
|
- 발신 IP에서 연결할 수 잇는 동시 접속 수에 대한 최대 값을 설정하여 한 개의 IP에서 대량의 연결 시도를 차단
- iptables -A INPUT -p tcp -dport 80 -m connlimit -above 30 -j DROP
- # 30개 이상의 Concurrent Connection에 대한 차단
728x90
반응형
'자격증 > 정보보안기사' 카테고리의 다른 글
정보보안 - 블록 암호화 기법의 종류와 특징 : ESB, CBC, CFB, OFB, CTR (0) | 2022.10.06 |
---|---|
전자상거래 보안 - SET(Secure Electronic Transaction) (0) | 2022.10.05 |
시스템 보안 - APT(Advanced Persistent Threat) 공격 (0) | 2022.10.03 |
시스템 보안 - 버퍼 오버플로우 공격(Buffer Overflow Attack) 방지하는 방법 (0) | 2022.10.03 |
[정보보안기사 필기] 한번에 합격하는 공부법 (0) | 2022.09.21 |