강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

리눅스마스터1급: DoS(Denial of Service) 공격의 유형-외부에서의 공격

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: DoS(Denial of Service) 공격의 유형-외부에서의 공격

 

 

 

DoS공격 - 외부에서의 공격

 

 

외부에서 시도되는 DoS 공격은 내부에서의 공격과는 달리 사용자의 실수에 의해서 발생될 수도 있는 여지를 가지고 있지 않다.

 

 

 

이 경우에는 거의 대부분이 실제 목표로 하는 시스템을 공격할 목적으로 행해지게 된다.

 

 

 

 

 

대부분의 외부에서의 공격은 운영체제에서 제공하는 네트워크 기능을 이용하여 이루어지게 되는데 거의 모든 경우가 특정 포트를 관찰(Listen)하고 있는 프로세스를 마비시키거나 오동작하게 하여 시스템의 전체적인 네트워크 기능을 마비시키는 것이다.

 

 

 

 

 

외부에서의 공격을 접근 방법에 의해서 임의로 분류해 보았다.

 

 

 

크게 세 가지로 나누어 보았는데 서로가 겹치는 부분이 있기 때문에 이 분류가 반드시 옳다고 볼 수는 없다.

 

 

 

 

 

응용 프로그램 수준

 

 

응용 프로그램 수준이라면 sendmail, talkd, initd, httpd 등의 응용 프로그램의 정상적인 동작을 하지 못하게 함으로써 시스템의 네트워크 기능을 마비시키는 것이다.

 

 

 

 

 

Mail Storm(Sendmail)

 

 

이 경우는 한 호스트에 계속 메일을 보내어 그 호스트의 메일 시스템을 마비시키는 것이다.

 

 

 

한 호스트에 집중적으로 메일을 보내면 시스템이 메일을 처리하기도 전에 계속 메일이 오기 때문에 /var/spool/mqueue에 쌓여서 시스템의 부하를 가중시키게 된다.

 

 

 

결국 이로 인해서 시스템의 기능을 마비시키게 되는 것이다.

 

 

 

 

 

메일 폭풍이 발생하였을 경우에 이를 위한 해결 방안으로는 메일을 보내는 곳과 그 사용자 아이디를 알아내어서(오고 있는 메일의 Head 부분을 보면 이 메일이 어디서 오고 있는지를 알 수 있다) 작업을 중단시키게 하거나 현재 시스템의 메일 서비스를 중단하게 하는 방법뿐이다.

 

 

 

이는 현재 실행중인 Sendmail 데몬의 실행을 중단시킴으로써 가능하다.

 

 

 

 

 

Java Applet

 

 

Java Applet의 경우에는 실제로 Applet 자체가 클라이언트로 전송되어 동작하게 되므로 실제로 클라이언트의 CPU나 메모리를 사용하게 된다.

 

 

 

그러므로 침입자가 CPU나 메모리 리소스를 고갈시키는 Applet을 만들어 놓았을 때 이 Applet이 클라이언트로 전송되어 동작하게 되면 순식간에 클라이언트는 시스템 마비 상태에 이르게 된다.

 

 

 

그래도 이 공격 방법은 침입자가 직접 원하는 호스트를 고르는 것이 아니라 덫을 치고 기다리는 입장이므로 클라이언트가 접속을 할 경우에만 이루어 질 수 있다.

 

 

 

실제로 인터넷에 이러한 Applet이 많이 존재하고 있으므로 Java Applet을 받아온 후 시스템이 이상한 동작을 하게 되면 한 번쯤 의심을 해 보는 것이 좋다.

 

 

 

 

 

이 방법에 대해서는 뾰족한 대안이 없다고 말할 수 있다.

 

 

 

추가로 Java AppletDoS 말고도 다른 많은 보안 문제점을 가지고 있는 것으로 알려져 있다.

 

 

 

 

 

패킷 수준

 

 

응용프로그램 수준보다는 조금 더 낮은 수준에서 이루어지는 공격 방법이 될 수 있겠는데 실제로 TCP/IP, 이더넷 층에서 이루어지는 공격 방법으로 분류할 수가 있겠다.

 

 

 

이 경우는 실제로 이 층에서 돌아다니는 패킷들을 임의로 조작하여서 목표로 하는 시스템의 네트워크 기능을 마비시키게 하는 것이다.

 

 

 

이는 대부분의 운영체제의 TCP/IP 모듈을 거쳐서 정상적으로 데이터가 패킷 형태로 만들어져 전송되는 것이 아니라 SOCK_RAW(raw socket)를 이용하여 공격자가 직접 임의의 패킷을 조작하여 만들어 보내는 식으로 구현되고 있는데 여기에 대해서는 뚜렷한 대응책이 없다.

 

 

 

 

 

이때는 프로토콜과 네트워크 층에 심도있는 이해가 필요하므로 뛰어난 침입자의 경우에 가능한 공격법이지만 이를 위해 소스들을 인터넷에서 쉽게 구할 수 있으므로 요즘에는 초보자들에 의해서도 많이 이루어지고 있다.

 

 

 

이 공격의 대표적인 예로는 SYN Flooding 공격을 들 수 있다.

 

 

 

 

 

네트워크 트래픽(Traffic) 증가

 

 

네트워크 트래픽을 증가시켜 실제로 시스템의 사용에는 문제가 없지만 이 시스템이 네트워크 서비스를 제대로 수행하지 못하게 하는 것이다.

 

 

 

이 방법은 사실 위의 두 가지 방법과 확연히 구별된다고 볼 수는 없지만 접근 방법에 있어서 관점이 다른 면이 있기 때문에 세 번째 분류로 넣어 보았다.

 

 

 

 

 

이 경우에는 대역폭(Bandwidth)이 낮은 네트워크에서 사용될 수 있는 방법이다.

 

 

 

쉬운 예로는 계속적으로 finger를 서브넷에 보냄으로써 그 서브넷의 트래픽 양을 증가시켜 그 네트워크를 마비시킬 수도 있다고 많은 사람들이 경고하고 있다

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,038 명
  • 현재 강좌수 :  35,813 개
  • 현재 접속자 :  125 명