서비스 거부 공격
서비스 거부 공격(-拒否 攻擊, ) 또는 디오에스/도스(DoS)는 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격이다. 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나, 서버의 TCP 연결을 바닥내는 등의 공격이 이 범위에 포함된다. 수단, 동기, 표적은 다양할 수 있지만, 보통 인터넷 사이트 또는 서비스의 기능을 일시적 또는 무기한으로 방해 또는 중단을 초래한다. 통상적으로 DoS는 유명한 사이트, 즉 은행, 신용카드 지불 게이트웨이, 또는 심지어 루트 네임 서버()를 상대로 이루어진다. 2002년 10월 22일과 2007년 2월 6일의 DNS 루트 서버에 대한 DNS 백본 DDoS 공격은 인터넷 URL 주소 체계를 무력화시켜 인터넷 전체에 대한 공격이었다.
분산 서비스 거부 공격(Distributed DoS) 또는 디디오에스/디도스(DDoS)는 여러 대의 공격자를 분산적으로 배치해 동시에 서비스 거부 공격을 하는 방법이다. 이는 IAB의 정당한 인터넷 사용 정책에 반하는 것으로 여겨지며 거의 모든 인터넷 서비스 공급자의 허용할 수 있는 사용 정책도 위반한다. 또한 개별 국가의 법률에도 저촉된다.
미 컴퓨터 비상 대응 팀에서는 DoS 공격으로 의심할 수 있는 증상을 다음과 같이 설명했다.DoS 공격은 공격을 받고 있는 컴퓨터 주위의 다른 컴퓨터에도 문제를 일으킬 수 있다. 예를 들어 인터넷과 지역망을 연결하는 라우터의 대역폭이 공격으로 소진되면 전체 네트워크에 문제를 일으킬 수 있다.
공격이 충분히 큰 규모로 이루어지면 전체 지역의 인터넷 접속이 영향을 받을 수도 있다.
서비스 거부 공격은 라우터, 웹, 전자 우편, DNS 서버 등 모든 네트워크 장비를 대상으로 이루어질 수 있다.
DoS 공격은 몇가지 방법으로 침투할 수 있다. 다섯 가지 기본 공격 유형은 다음과 같다.
DoS 공격에는 다음과 같은 악성 코드 사용이 포함될 수 있다.
ICMP는 인터넷 제어 메시지 프로토콜(Internet Control Message Protocol)의 약자이다. 스머프 공격(Smurf attack)이라고도 부르는 이 공격은 공공 인터넷 상에서의 Flood DoS 공격의 한 변종이다. 네트워크 장치 설정이 잘못되었을 경우, 어떤 특정 전산망의 방송 주소로 전달된 패킷이 망 상의 어떤 특정 컴퓨터가 아니라 망의 모든 컴퓨터에 전달될 수 있다는 점을 이용한다. 전산망은 이 경우 스머프 증폭기의 역할을 한다. 이러한 공격에서 가해자는 대량의 IP 패킷을 보내면서 그 발신 주소를 표적 주소로 한다. 전산망의 대역폭이 신속히 소진되어 정상 패킷이 목적지에 도달하지 못하게 된다. 인터넷 상의 DoS 공격에 대항하기 위해 스머프 증폭기 등록처와 같은 서비스에서 이용될 소지가 있는 잘못 설정된 전산망을 기록, 대응할 수 있도록 하고 있다.
Ping Flood는 표적에 압도적인 수의 핑 패킷을 보낸다. 보통 유닉스 계열의 호스트에서 ping 명령을 이용한다. 표적 보다 더 큰 대역폭만 있으면 되기 때문에 쉬운 공격수단이다.
SYN Flood는 TCP/SYN 패킷의 Flood를 보내면서 대개 송신자 주소를 위조한다. (SYN은 SYnchronize Sequence Numbers의 약자로 TCP 패킷 머리 부분의 한 bit) 각각의 패킷은 접속 요청으로 취급된다. 서버는 한쪽만 열린 접속 부 프로세스를 만들고 TCP/SYN-ACK 패킷을 보낸 후 송신자 주소로부터의 패킷을 기다리게 된다. (ACK도 TCP 패킷 머리 부분의 한 bit) 그러나 송신자 주소가 위조된 것이므로 응답은 돌아오지 않는다. 이러한 한쪽만 열린 접속으로 서버에서 사용 가능한 접속의 수가 차면 공격이 지속되는 동안 정당한 요청에 답을 할 수 없게 된다.
눈물방울 공격은 내용물이 겹치거나, 내용물의 크기가 과대한 망가진 IP 조각을 보낸다. 이로 다양한 운영체제가 깨어질 수 있는데, 까닭은 TCP/IP 조각 재조립 코드에 버그가 있기 때문이다. 윈도 3.1x, 윈도 95, 윈도 NT 운영체제와 리눅스 2.0.32, 2.1.63 이전 버전은 이 공격에 취약하다.
분산 DDoS 공격을 위해 다수의 P2P 서버의 버그가 이용된 적이 있다. 가장 공격적인 분산 DoS 공격은 DC++를 이용한 것이다. P2P 공격은 일반 봇넷 공격과 달리 봇넷이 존재하지 않고 공격자가 그 클라이언트와 통신할 필요가 없다. 대신 공격자는 인형사 처럼 행동하여 큰 P2P 파일 공유 허브의 클라이언트들이 P2P 망과 접속을 끊고 표적의 웹사이트에 대신 연결하도록 시킨다. 결과로 몇천개의 컴퓨터가 표적 웹사이트에 공격적으로 접속하려고 할 수 있다. 전형적인 웹 서버는 초당 수백 건의 접속을 다룰 수 있지만, 대부분의 웹서버는 초당 5000~6000건의 접속 하에서는 거의 즉시 기능이 중단된다. 적당히 큰 P2P 공격은 짧은 시간에 75만 접속을 당할 수 있다. P2P 공격은 서명 signature로 쉽게 알아차릴 수 있지만 대량의 IP 주소(대규모 공격의 경우 25만개)를 봉쇄해야 하기 때문에 이런 종류의 공격이 방어를 압도할 수 있다. 완화 장치가 계속 IP 주소를 봉쇄할 수 있지만 다른 문제도 고려해야 한다. 예를 들어 짧은 순간이지만 서명을 알아차리기 전에 뚫고 들어올 수 있다.
이 공격은 P2P 규약에 어떤 포트가 허용되는지를 명세함으로써 방지할 수 있다. 80번 포트가 허용되지 않으면 웹사이트에 관한 공격의 가능성은 매우 낮다.
플래슁이라고도 알려져 있는 영구 서비스 거부 PDoS 공격은 어떤 시스템을 손상시켜 하드웨어를 교체 또는 재설치 하게끔 만든다. 분산 DDoS 공격과는 달리 PDoS 공격은 라우터건, 프린터건, 또는 다른 종류의 전산망 연결 하드웨어가 되었건 목표 하드웨어의 원격 관리 인터페이스 보안 결함을 이용한다. 이러한 결함으로 공격자가 원격으로 장치 펌웨어를 개정하여 조작, 오염 또는 결함이 있는 펌웨어로 바꾸게 만든다. 따라서 영구히 그 원래 목적으로 사용할 수 없게 만든다. PDoS 공격은 순수하게 하드웨어를 표적으로한 공격으로 분산 DDoS 공격의 봇넷 동원에 비해 훨씬 적은 자원을 필요로 한다. 이러한 특성 때문에 그리고 전산망 접속 가능 장치의 보안 이용에 관한 잠재적 가능성때문에 다양한 해커 공동체의 주의를 끌게 되었다.
플래쉬댄스는 휴렛 팩커드 직원이 개발한 툴로 2008 런던에서 열린 EU보안 관련 학회에서 PDoS 취약점을 검출하고 시연하는데 사용되었다.
인터넷 릴레이 챗에서는 인터넷 릴레이 챗 홍수가 일반적인 전자전 무기이다.
버퍼 오버플로와 같은 다양한 서비스 거부 유발 공격이 서버가 실행시키고 있는 소프트웨어를 혼란시켜 디스크 공간을 채우거나 가용 메모리 또는 CPU를 소모시킬 수 있다.
다른 종류의 서비스 거부는 주로 짐승같이 힘으로 밀어붙이는 식으로 표적을 압도적인 패킷 유량에 잠기게 하고 그 접속 대역폭을 포화시키거나 표적의 시스템 자원을 탕진시키는 것이다. 대역폭 포화 홍수는 공격자가 표적 보다 가용 대역폭이 커야 한다. 오늘날 이를 달성하는 일반적인 방법은 분산 서비스 거부로 봇넷을 동원한다. 다른 홍수 공격은 유한한 자원을 포화시키기 위하여 특정 패킷 유형 또는 접속 요청을 사용한다. 예를 들어 최대 접속 수를 차지하거나 표적의 디스크 공간을 기록으로 채우는 것이다.
"바나나 공격"은 다른 특정 형태의 DoS 공격이다. 나가는 메시지의 방향을 되돌려 외부와 접속하지 못하게 하고 클라이언트를 보냈던 패킷에 잠기게 하는 것이다.
표적 컴퓨터에 접속할 수 있는 공격자는 사용 못하게 될 때 까지 느리게 만들거나 포크 폭탄으로 깨뜨릴 수 있다.
핵 Nuke은 전산망 대상의 오래된 DoS 공격으로 조각난 또는 다른 형태의 무효 ICMP 패킷을 표적에 보낸다.
분산 서비스 거부 공격(, 디도스)은 다수의 시스템을 통해 공격을 시도하며 다양한 방법을 통해 동시에 공격하기도 한다.
악성코드나 바이러스 등의 악의적인 프로그램들을 통해서 일반 사용자의 PC를 감염시켜 좀비PC로 만든 다음 C&C 서버를 통해 DDoS 공격이 수행된다. (가장 유명한 예는 MyDoom 공격이다.) DDoS 공격은 악의적인 프로그램에서 정한 특정 시간대에 시작된다. 대표적 피해사례로 2009년 7월 7일에 있었던 DDoS 공격이 있다.
분산 반사 서비스 거부 공격()은 DDoS가 한 단계 더 진화한 형태의 공격 방식이다.
IP 주소를 스푸핑한 ICMP Echo request 패킷을 브로드캐스트 주소로 보내 공격 대상에게 수많은 Echo reply 패킷을 전송함으로써 다운시키거나(Smurf 공격), TCP/IP 네트워크의 취약점을 이용하여 공격 대상에게 SYN/ACK 홍수를 일으켜 대상을 다운시키는 공격 방법이 대표적이다.
누크(Nuke) 또는 누킹은 파편적인 또는 유효하지 않은 ICMP 패킷을 대량으로 보냄으로써 이루어지는 컴퓨터 네트워크에 대한 고전적인 DoS 공격이다. 수정된 핑 유틸리티를 사용하여 반복적으로 이러한 손상된 데이터를 송신하며 영향을 받은 컴퓨터를 완전히 멈출 때까지 느리게 만든다.
크게 유선 무선의 두가지 주요 공격 방법이 있다. 유선망 공격은 대량의 계산 용량이 필요하며 때로 분산 컴퓨팅이 동원된다. 유선망 공격에는 외부 안테나 등은 필요하지 않으나 인터넷에의 광대역 접속은 필요하다.
무선망 공격은 고출력(300mW 수준 이상) 카드와 고 이득 (지향성) 외부 안테나를 사용한다.
DoS 공격이 시작되면 즉시 조치를 시작해야 한다.
공격에 가장 쉽게 대처하는 방법은 물론 대안을 수립해 놓는 것이다. 핵심 서버들에 비상시의 IP를 준비하고 분산시켜 놓는 것이 매우 중요하다. 공격이 일어났을 때 우회할 수 있는 방법과 대체할 수 있는 시스템에 대해 투자하는 것에도 소홀해서는 안 된다.
스위치처럼 라우터도 트래픽 제한 방법을 제공한다. 물론 수동으로 설정하여야 한다. 대부분의 라우터는 DoS 공격에 취약하다. DoS 공격이 일어나면 라우터에 트래픽 정책을 변경하여 DoS 공격자들을 제한한다면 수월하게 대처할 수 있다. 대부분의 네트워크 장비 회사들은 DoS 공격을 예방할 수 있는 최소한의 라우팅 설정에 대한 안내서를 제공한다.