leejhstory

DoS & DDoS 본문

개인공부/용어

DoS & DDoS

LeeJHstory 2017. 5. 23. 19:34

DoS와 DDoS와 공격

 

DoS(Denial of Service) 공격이란 시스템이나 네트워크의 구조적 취약점을 공격하여 정상적인 서비스를 지연시키거나 마비시키는 해킹 공격을 말한다. 일반적인 악성코드자체를 말하는 것이 아니라 해킹 공격 유형의 한가지를 말하는 것으로 최근 이슈화되고 있는 좀비바이러스와는 다른 것이다.

 

DoS 공격은 다른 해킹에 비하여 비교적 간단하며, 공격대상의 수용능력 이상의 정보나 사용자 또는 네트워크의 용량을 초과시켜 정상작동이 불가능하게 하는 공격으로, 해커에겐 '못 먹는 떡 찔러나 보자'식의 공격이지만 관리자에게는 감당하기 힘든 재난이 될 수도 있다.

 

DDoS(Distributed Denial of Service) 공격은 DoS 공격의 업그레이드 판으로 DDoS 공격은 수많은 DoS 공격이 한 사람의 공격자에 의해 동시에 일어나게 하는 것이다. 쉽게 말해서 내가 친구와 얘기를 하려고 하는데 수많은 사람들이 친구에게 동시에 말을 걸거나 일을 시켜 친구와의 의사소통을 하지 못하도록 방해하는 것을 말한다.

 

초기에는 공격자가 공격 대상을 마비시킬 정도로 수많은 공격PC를 소유할 수 없기 때문에 이론적인 공격기법에 불과했지만, 불과 몇 년사이 IT환경이 급속도로 발전하고 악성코드를 이용해 다수의 사용자의 PC를 봇넷화 할 수 있는 기법 등이 개발되면서 천재지변에 버금가는 손실을 가져올 수 있는 최악의 공격기법이 되었다.

특히 DDoS 공격의 경우 공격의 근원지를 찾는 것이 거의 불가능하기 때문에 이후 처리에도 문제가 심각하다.

 

DoS 공격은 크게 세가지로 나뉜다.

(1) 파괴 공격 : 디스크나 데이터, 시스템의 파괴

(2) 시스템자원의 고갈 : CPU, 메모리, 디스크의 사용에 과다한 부하를 가중시킴

(3) 네트워크 자원의 고갈 : 쓰레기 데이터로 네트워크의 대역폭을 고갈시킴

 

이러한 DoS와 DDoS 공격의 특징은 매우 단순하나 공격자를 추적하기 어렵고 효과가 즉시 나타나며, 대책마련이 힘들다는 것이다. DoS와 DDoS 공격은 종류가 매우 다양하며, 보안 전문가나 해커는 방드시 알아둬야 할 공격 방법이다.

 

그렇다면 지금부터 DoS와 DDoS 공격의 종류를 한번 알아보자

 

1. DoS 공격 유형

 

(1) Ping of Death

"죽음의 핑 날리기"라고도 하는데 NetBIOS 해킹과 함께 시스템을 파괴하는 데 가장 흔하게 사용되었던 초기 DoS 공격 방법이다.

Ping을 이용하여 ICMP 패킷을 정상크기보다 훨씬 크게 만들면 네트워크를 통해 라이팅되어 공격 네트워크에 도달하는 동안 아주 작은 조각이 되는데 공격 대상 시스템은 이렇게 작게 조각화된 패킷을 모두 처리해야 하므로 통상적으로 정상적인 Ping보다 훨씬 많은 부하가 걸리게 하여 시스템을 과부하시키는 방법이다.

미사일 중에 발사하면 공중에서 3번쯤 몇개의 조각들로 나위어져 지상으로 광범위하게 떨어지는 것이 있는데 그런 개념이라고 생각하면 된다.

 

현재는 대부분의 시스템에서 Ping of Death 공격이 가해질때, 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시하도록 설정되어 있다.

 

(2) SYN Flooding

네트워크에서 각 서비스를 제공하는 시스템에는 동시 사용자 수에 대한 제한이 있다. 설정상의 차이는 있지만 무제한은 아니기 때문에 존재하지 않는 클라이언트가 접속한 것처럼 속여서 다른 정상적인 사용자가 접속이 불가능하게 하는 공격방법이다.

 

이런 SYN Flooding 공격을 막는 방법은 보안 패치로 대기시간을 줄이고 IDS를 설치하는 것이다. 일정 시간 내에 동시 접속자 수를 점유해야 하므로 짧은 시간 안에 똑같은 형태의 패킷을 보내기 때문에 쉽게 인지가 가능하고 그에 해당하는 IP주소 대역을 접속 금지 시키거나 확인 후 방화벽 또는 라우터에서 해당 접속을 금지시킴으로써 시스템의 서비스 중지를 막을 수 있다.

 

(3) Boink, Bonk 및 Teardrop

프로토콜은 목적의 차이는 있으나  기본적으로 데이터 전송에 있어 신뢰성 있는 연결을 제공하려 하기 때문에 신뢰성이 확인되지 않는 데이터 전송에 대하여 반복적인 재요구와 수정을 하게 되는데 Boink, Bonk 및 Teardrop은 모두 공격 대상이 이런 반복적인 재요구와 수정을 계속하게 하여 시스템이 자원을 고갈시키는 공격이다.

 

이 공격으로 최근에 나온 시스템을 파괴시킬 수 있는 경우는 거의 없다.

 

(4) Land

패킷을 전송할 때 출발지 IP와 목적지 IP 주소 값을 공격대상의 IP 주소와 똑같이 만들어서 공격 대상에게 보내는 것이다. 이러한 패킷은 마치 꼬리에 묶여 있는 뼈다귀를 쫓는 강아지처럼 뱅글뱅글 돌기때문에 시스템에 과부하가 걸려 정상작동을 못하게 하는 공격유형이다.

 

현재는 출발지와 목적지 주소를 확인하여 동일한 패킷은 인식하고 버리기 때문에 효과가 없으며, 라우터나 방화벽에서 내부 IP주소와 동일한 출발지 IP주소를 갖는 패킷은 처음부터 차단하도록 하는 것이 좋다.

 

(5) Win Nuke(OOB, Out of Band)

윈도우를 작동불능으로 만들기 위해 많이 쓰였던 것으로 일반적으로 Nuking이라고 하며, 윈도우의 파란화면이 아주 쉽게 뜨도록 하는 공격 방법이다.

상대방 시스템에 139번 포트를 스캔하여 열려 있는지 확인하고, 패킷에 URG(Urgent)를 on 상태(송수신 중간에 발생할 수 있는 비정상적인 상태)로 하여 패킷을 전송하는데 시스템 상에서 <Ctrl + Break> 또는 <Ctrl + C> 키를 누르는 것과 같은 역할을 해, 공격 대상은 수많은 Urgent 패킷을 인식하고 모든 시스템의 세션을 닫은 뒤 재연결을 요구하게 되면서 CPU에 과부하가 걸리게 하는 공격 방법이다.

 

윈도우 95나 98을 사용하지 않는 이상 걱정할 필요없다. 방화벽에서 139번 포트를 막아두는 것은 보안상 반드시 필요하다.

 

(6) Smurf와 Fraggle

Ping of Death처럼 ICMP 패킷을 이용한 것으로 공격자가 위조된 IP로 특정 네트워크에 거짓된 패킷을 보내고 ICMP Requset를 받은 네트워크는 ICMP Reauest 패킷의 위조된 시작 IP 주소로 ICMP Reply를 보내게 되어 공격대상은 수많은 ICMP Reply을 받게 되어 시스템이 과부하 되는 공격을 말한다.

 

Smurf는 DDoS의 한 방편으로 이용되기도 한다. 이 공격을 막는 방법은 Direct 브로드캐스트를 막는 것이다.

 

(7) Mail Bomb

메일 서버는 사용자에게 일정한 양의 디스크 공간을 할당하는데, 메일이 폭주하여 남은 용량이 없으면, 정작 받아야 할 메일을 받을 수 없게 된다. 이러한 방법으로 사용자간 커뮤니케이션을 방해하는 공격 방법이다.

 

특정한 곳에서 계속해서 스팸메일이 올 경우 메일 서버로부터의 SNMP Relay 기능을 정지시킴으로써 예방할 수 있다.

 

(8) 시스템 자원 고갈 공격

시스템 자원 고갈 공격에는 가용 디스크 자원의 고갈, 가용 메모리 자원의 고갈, 가용 프로세스 자원의 고갈이 있다. 이 세 공격 모두 공격자가 시스템에 침입한 후 아주 간단한 코딩의 프로그램만으로 시스템을 작동불능 상태로 만들수 있는데 이러한 공격은 실제로 일어나면 막상 공격의 진상을 인지하기가 쉽지 않다. 해커들은 소스를 컴파일하여 '해킹중'이라고 공언하듯 뻔히 알려주는 이름을 사용하지 않고 대부분 백도어와 같은 프로그램들은 쉽게 인지할 수 없는 이름으로 만들어져있다.

 

해커가 루트 권한을 얻지 못하도록 하는 것이 최선이며, 평소 자신의 시스템을 체크하고 'Tripwire'로 무결성 체크를 하는 것이 좋다.

 

 

2. DDoS 공격 유형

 

DDoS 공격은 대부분 자동화된 툴을 이용하고 있으며, 공격의 범위가 방대하며, 공격을 하려면 최종 공격 대상 이외에도 공격을 증폭시켜주는 중간자가 필요하다. 이번 7.7 DDoS 공격을 예로 들자면 자동화된 툴이란 좀비 바이러스라고 불리우는 악성코드가 되겠으며, 중간자란 실제 공격을 가하는 PC, 즉 악성코드에 감염된 각 사용자들의 좀비 PC가 되겠다.

 

우선 DDoS 공격의 과정을 살펴보면 다음과 같다.

(1) 많은 사용자가 사용하며, 대역폭(bandwidth)이 큰 네트워크를 찾는다. 관리자가 모든 시스템을 세세하게 관리할 수 없는 곳에 계정을 획득하여 스니핑이나 버퍼 오버플로우 등의 공격으로 설치 권한이나 루트 권한을 획득한다.

(2) 잠재적인 공격 대상을 파악하기 위해 네트워크 블록별로 스캔을 실시하여, 원격지에서 버퍼 오버플로우를 일으킬 수 있는 취약한 서비스를 제공하는 서버를 파악한다.

(3) 취약한 시스템의 리스트를 확인한 뒤, 실제 공격을 위한 Exploit를 작성한다.

(4) 권한을 획득한 시스템에 침투하여 Exploit를 컴파일하여 설치한다.

(5) 설치한 Exploit로 공격을 시작한다.

 

하지만 현재는 악성코드를 웹상에 배포함으로써 각 사용자들이 웹상에서 감염되는 빈도가 높아졌기 때문에 중간자의 역할을 하고 있는 PC의 획득 또한 쉬워졌다. 또한 이럴경우 중간자가 불특정 다수가 되어 버리고 또 공격자의 추적 또한 어렵기 때문에 해커의 검거는 물론 대비책을 마련하기도 힘들어졌다.

 

그렇다면 그에따른 대응책에 대해서 알아보자

 

3. DoS와 DDoS 공격에 대한 대응책

 

(1) 방화벽 설치와 운영

방화벽은 통상 내부 네트워크와 외부 네트워크의 경계에 우선적으로 설치한다. 일부에선 방화벽만 있으면 모든 보안이 다 되는 것으로 착각하고 있는데 방화벽으로 막을수 있는 건 전체의 30% 정도밖에 안 된다. 단순히 1차적 방어막이라고 생각하길 바란다.

 

(2) 침입탐지 시스템 설치와 운영

침입탐지 시스템은 외부 공격에 대한 일차적인 차단이 실패한 경우 네트워크에 침입해 들어온 공격을 탐지하기 위한 시스템으로 DoS와 DDoS 공격이 일정한 패턴으로 되어 있고, 각 구성 요소간에도 특정한 형식의 통신이 지속적으로 이루어 지고 있기 때문에 공격시나 공격 전에 그 양상을 탐지할 수 있으므로 설치 후 업그레이드를 꾸준히 해야한다.

 

(3) 안정적인 네트워크의 설계

일정량 이상의 패킷이 라우터로 들어올 경우, 그 이상의 패킷은 통과시키지 않도록 하거나 각 장비간 로드 밸런싱을 성정하는 방법 등이 있다.

 

(4) 홈페이지 보안 관리

현재 악성코드 분포 유형을 보면 인터넷을 이용한 웹페이지상의 취약점 때문에 해킹당한 사이트에서 사용자들도 모르게 다운 받는 경우가 제일 많다.

홈페이지 관리자들의 경우 편하다는 이유로 혹은 귀찮다는 이유로 주민등록번호나 주요 사항을 체크할 때 자바스크립트나 html소스를 가지고 하는 경우가 있는데 이는 매우 취약한 부분이며 반드시 시스템소스상에서 설정해야 한다. 또한 관리의 편의성을 위해 임의로 보안을 풀어놓는 경우가 있는데 이 또한 바람직하지 않으며 관리자 계정 또한 ID와 패스워드를 분실 혹은 유추하지 못하도록 주기적으로 변경해 주어야 한다.

 

(5) 시스템 패치

시스템에 대한 지속적인 서비스 팩 설치와 팟픽스를 하는 것 역시 빼놓을 수 없다. 바이러스와 악성코드의 경우 일단 발견되면 대첵을 세워 패치를 하게 되는데 제공되는 패치를 단지 귀찮다는 이유로 사용자들이 무시해 버릴경우 취약성을 띈 시스템을 그대로 유지하는 것이기 때문에 반드시 보안패시를 하는 것이 좋다.

 

(6) 스캔 및 서비스별 대역폭 제한

 

 

 

지난번 7.7 DDoS 공격으로 전 국민의 보안 의식이 높아진 가운데 이를 교훈으로 삼아 실무 관리자 뿐만 아니라 개개의 사용자들까지도 보안에 조금만 더 신경써서 이런 일이 다시는 없어야겠다.

 

 

출처 : [기타] 참고서적 : 정보보안 개론과 실습 네트워크 해킹과 보안, 양대일 이승재 공저.

http://blog.daum.net/hacker21/218


'개인공부 > 용어' 카테고리의 다른 글

OWASP top 10 2017  (0) 2017.08.10
Comments