서비스 거부 공격: Difference between revisions

From CS Wiki
No edit summary
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
[[분류 : 보안]][[분류 : 보안 공격]][[분류 : 정보보안기사]]
[[분류 : 보안]]
[[분류 : 보안 공격]]
[[분류 : 정보보안기사]]
 
;Denial of Service, DoS
;Denial of Service, DoS
; 대상 시스템이 정상적인 서비스를 할 수 없도록 가용성을 떨어뜨리는 공격
;대상 시스템이 정상적인 서비스를 할 수 없도록 가용성을 떨어뜨리는 공격


==DDoS와의 차이==
==DDoS와의 차이==
* DoS공격은 공격자가 단일 컴퓨터를 이용해 공격하는 경우
* [[분산 서비스 거부 공격|DDoS(Distributed Denial of Service)]] : 분산된 다수의 좀비 PC를 이용하여 공격하는 경우
* DDoS는 대량의 호스트가 일시에 정상적인 접근을 하는 것 만으로도 공격이 되므로 뚜렷한 취약점이 없어도 공격이 가능하나 DoS공격은 한 호스트가 비정상적인 접근을 통해 부하를 유발하는 것이므로 취약점에 의한 공격이다.


== 공격의 목표 ==
*DoS공격은 공격자가 단일 컴퓨터를 이용해 공격하는 경우
* 네트워크 자원 소진 : 네트워크 대역폭(Bandwidth)을 소진시키다.
*[[분산 서비스 거부 공격|DDoS(Distributed Denial of Service)]] : 분산된 다수의 좀비 PC를 이용하여 공격하는 경우
* 시스템 자원 소진 : CPU, 메모리, 디스크 등 자원에 과도한 부하를 발생시킨다.
*DDoS는 대량의 호스트가 일시에 정상적인 접근을 하는 것 만으로도 공격이 되므로 뚜렷한 취약점이 없어도 공격이 가능하나 DoS공격은 한 호스트가 비정상적인 접근을 통해 부하를 유발하는 것이므로 취약점에 의한 공격이다.
* 자원 파괴 : 디스크, 데이터, 시스템을 파괴한다.
 
==공격의 목표==
'''공격의 목표이자 서비스 거부의 원리라고 할 수 있다.'''
 
*네트워크 자원 소진 : 네트워크 대역폭(Bandwidth)을 소진시키다.
*시스템 자원 소진 : CPU, 메모리, 디스크 등 자원에 과도한 부하를 발생시킨다.
**가용 디스크 자원 고갈
**가용 메모리 자원 고갈
**가용 프로세스 자원 고갈
*자원 파괴 : 디스크, 데이터, 시스템을 파괴한다.
 
=== 가용 메모리 자원 고갈 예시 ===
<syntaxhighlight lang="c" line="1">
#include
void main()
{
  char c;
  while(1)
    c=malloc(1000);
}
</syntaxhighlight>
 
=== 가용 프로세스 자원 고갈 예시 ===
<syntaxhighlight lang="c" line="1">
#include
main() {
  while(1)
  fork();
  return(0);
}
</syntaxhighlight>
 
==공격의 종류==
===[[Ping of Death|Ping Of Death Attack]]===
 
*[[ICMP]] 패킷을 정상적인 크기보다 아주 크게 만들어 전송하면 IP 단편화(fragment)가 발생한다. 이를 재조합하는 과정에서 많은 부하가 발생하거나 버퍼 오버플로우가 발생하여 정상적인 서비스를 하지 못하게 한다.
*자세한 내용은 [[Ping of Death|Ping of Death 문서]] 참조
 
===[[Land Attack]]===
 
*출발지와 목적지가 같은 패킷을 만들어 공격 대상이 자기 자신에게 응답하도록 해 부하 유발
*현재는 대부분의 OS에서 해당 취약점이 해결되어 이론적으로만 존재
 
===[[스머프 공격|Smurf Attack]]===
 
*출발지를 공격 대상 IP로 위조한 ICMP 패킷을 브로드캐스트하여 공격 대상이 다수의 ICMP 응답 받게 만들어 부하 유발
 
===[[티어드롭 공격|Teardrop Attack]]===


== 공격의 종류 ==
*하나의 IP 패킷이 분할된 IP 단편의 offset값을 서로 중첩되도록 조작하여 이를 재조합하는 공격 대상 시스템에 에러와 부하 유발
=== Ping Of Death Attack ===
*유사한 공격으로 Bonk, Boink
* [[ICMP]] 패킷을 정상적인 크기보다 아주 크게 만들어 전송하면 IP 단편화(fragment)가 발생한다. 이를 재조합하는 과정에서 많은 부하가 발생하거나 버퍼 오버플로우가 발생하여 정상적인 서비스를 하지 못하게 한다.
**Bonk는 순서번호가 1번인 단편을 계속 보냄
* 자세한 내용은 [[Ping of Death|Ping of Death 문서]] 참조
**Boink는 처음에는 정상적인 순서의 단편을 보내다가 점점 순서번호가 어긋난 패킷을 보내는 방법으로, Bonk보다 개선된 방식
*이러한 공격들을 Inconsistent Fragmentation 공격 이라 한다.


=== [[Land Attack]] ===
===[[Syn Flooding|SYN Flooding]]===
* 출발지와 목적지가 같은 패킷을 만들어 공격 대상이 자기 자신에게 응답하도록 해 부하 유발
* 현재는 대부분의 OS에서 해당 취약점이 해결되어 이론적으로만 존재


=== [[스머프 공격|Smurf Attack]] ===
*다량의 TCP SYN 패킷을 전송하여 공격대상 시스템을 마비시키는 공격
* 출발지를 공격 대상 IP로 위조한 ICMP 패킷을 브로드캐스트하여 공격 대상이 다수의 ICMP 응답 받게 만들어 부하 유발
*자세한 내용은 [[Syn Flooding|SYN Flooding]] 참조


=== Teardrop Attack ===
===[[UDP 플러딩|UDP Flooding]]===
* 하나의 IP 패킷이 분할된 IP 단편의 offset값을 서로 중첩되도록 조작하여 이를 재조합하는 공격 대상 시스템에 에러와 부하 유발
* 유사한 공격으로 Bonk, Boink
** Bonk는 순서번호가 1번인 단편을 계속 보냄
** Boink는 처음에는 정상적인 순서의 단편을 보내다가 점점 순서번호가 어긋난 패킷을 보내는 방법으로, Bonk보다 개선된 방식
* 이러한 공격들을 Inconsistent Fragmentation 공격 이라 한다.


=== [[Syn Flooding|SYN Flooding]] ===
*다량의 UDP 패킷을 전송하여 네트워크 자원을 고갈시키는 공격
* 다량의 TCP SYN 패킷을 전송하여 공격대상 시스템을 마비시키는 공격
* 자세한 내용은 [[Syn Flooding|SYN Flooding]] 참조


=== UDP Flooding ===
==대응 절차==
* 다량의 UDP 패킷을 전송하여 네트워크 자원을 고갈시키는 공격


== 대응 절차 ==
#'''모니터링''': 서비스 거부 공격을 탐지할 수 있는 시스템을 갖추고 모니터링을 수행한다.
# '''모니터링''': 서비스 거부 공격을 탐지할 수 있는 시스템을 갖추고 모니터링을 수행한다.
#'''침입탐지''': 서비스 거부 공격으로 추정되는 공격을 탐지한다.
# '''침입탐지''': 서비스 거부 공격으로 추정되는 공격을 탐지한다.
#'''초동조치''': 신속하게 할 수 있는 조치로 공격의 피해를 완화한다.
# '''초동조치''': 신속하게 할 수 있는 조치로 공격의 피해를 완화한다.
#'''상세분석''': 서비스 거부 공격이 맞는지, 어떤식으로 차단해야 정상 이용자에게 피해가 없을지 분석한다.
# '''상세분석''': 서비스 거부 공격이 맞는지, 어떤식으로 차단해야 정상 이용자에게 피해가 없을지 분석한다.
#'''차단조치''': 차단 조치를 수행한다.
# '''차단조치''': 차단 조치를 수행한다.

Latest revision as of 20:23, 29 January 2022


Denial of Service, DoS
대상 시스템이 정상적인 서비스를 할 수 없도록 가용성을 떨어뜨리는 공격

DDoS와의 차이[edit | edit source]

  • DoS공격은 공격자가 단일 컴퓨터를 이용해 공격하는 경우
  • DDoS(Distributed Denial of Service) : 분산된 다수의 좀비 PC를 이용하여 공격하는 경우
  • DDoS는 대량의 호스트가 일시에 정상적인 접근을 하는 것 만으로도 공격이 되므로 뚜렷한 취약점이 없어도 공격이 가능하나 DoS공격은 한 호스트가 비정상적인 접근을 통해 부하를 유발하는 것이므로 취약점에 의한 공격이다.

공격의 목표[edit | edit source]

공격의 목표이자 서비스 거부의 원리라고 할 수 있다.

  • 네트워크 자원 소진 : 네트워크 대역폭(Bandwidth)을 소진시키다.
  • 시스템 자원 소진 : CPU, 메모리, 디스크 등 자원에 과도한 부하를 발생시킨다.
    • 가용 디스크 자원 고갈
    • 가용 메모리 자원 고갈
    • 가용 프로세스 자원 고갈
  • 자원 파괴 : 디스크, 데이터, 시스템을 파괴한다.

가용 메모리 자원 고갈 예시[edit | edit source]

#include 
void main()
{
  char c;
  while(1)
     c=malloc(1000);
}

가용 프로세스 자원 고갈 예시[edit | edit source]

#include 
main() {
  while(1)
  fork();
  return(0);
}

공격의 종류[edit | edit source]

Ping Of Death Attack[edit | edit source]

  • ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송하면 IP 단편화(fragment)가 발생한다. 이를 재조합하는 과정에서 많은 부하가 발생하거나 버퍼 오버플로우가 발생하여 정상적인 서비스를 하지 못하게 한다.
  • 자세한 내용은 Ping of Death 문서 참조

Land Attack[edit | edit source]

  • 출발지와 목적지가 같은 패킷을 만들어 공격 대상이 자기 자신에게 응답하도록 해 부하 유발
  • 현재는 대부분의 OS에서 해당 취약점이 해결되어 이론적으로만 존재

Smurf Attack[edit | edit source]

  • 출발지를 공격 대상 IP로 위조한 ICMP 패킷을 브로드캐스트하여 공격 대상이 다수의 ICMP 응답 받게 만들어 부하 유발

Teardrop Attack[edit | edit source]

  • 하나의 IP 패킷이 분할된 IP 단편의 offset값을 서로 중첩되도록 조작하여 이를 재조합하는 공격 대상 시스템에 에러와 부하 유발
  • 유사한 공격으로 Bonk, Boink
    • Bonk는 순서번호가 1번인 단편을 계속 보냄
    • Boink는 처음에는 정상적인 순서의 단편을 보내다가 점점 순서번호가 어긋난 패킷을 보내는 방법으로, Bonk보다 개선된 방식
  • 이러한 공격들을 Inconsistent Fragmentation 공격 이라 한다.

SYN Flooding[edit | edit source]

  • 다량의 TCP SYN 패킷을 전송하여 공격대상 시스템을 마비시키는 공격
  • 자세한 내용은 SYN Flooding 참조

UDP Flooding[edit | edit source]

  • 다량의 UDP 패킷을 전송하여 네트워크 자원을 고갈시키는 공격

대응 절차[edit | edit source]

  1. 모니터링: 서비스 거부 공격을 탐지할 수 있는 시스템을 갖추고 모니터링을 수행한다.
  2. 침입탐지: 서비스 거부 공격으로 추정되는 공격을 탐지한다.
  3. 초동조치: 신속하게 할 수 있는 조치로 공격의 피해를 완화한다.
  4. 상세분석: 서비스 거부 공격이 맞는지, 어떤식으로 차단해야 정상 이용자에게 피해가 없을지 분석한다.
  5. 차단조치: 차단 조치를 수행한다.