DoS

2019. 10. 7. 21:19정보보안

1. DoS 공격원리와 대처 방법

 * 서비스 방해 공격(Denial of Service)이란 시스템에 불법적인 권한으로 접속하거나 정보를 획득하는 등의 공격과는 달리 특정 시스템이 정상적으로 동작하는 것을 방해하는 공격형태를 말한다. 네트워크 서비스를 비롯하여 로컬 호스트에서 지원되는 모든 서비스까지도 비정상적으로 동작하게 한다. 서저에서 서비스하고자 하는 서비스를 정상적으로 하지 못하여 일반적으로 서버가 다운되는 형태를 말한다. 이는 기밀성, 무결성, 가용성 중에서 가용성과 가장 관련이 깊다.

 * 현재 많이 사용되는 DoS 공격방법 중에는 여러 가지가 있으나 TCP/IP 프로토콜이 가지는 취약성을 이용하는 것이 많다. 이것은 프로토콜이 가지는 취약성이 되므로 TCP/IP 프로토콜을 사용하는 모든 장비가 이러한 취약성에 노출되어 있다. 아마도 TCP/IP 프로토콜이 존재하는 이상 DoS 공격은 불가피하게 될 것이다.

 * 대표적인 DoS에는 버퍼 오버플로우를 이용한 공격, PING을 이용한 공격, syn flooding, smurf공격 등이 있다.

 (1) DoS : 공격자의 컴퓨터로부터 표적 시스템과 그 시스템에 속한 네트워크에 과다한 데이터를 보냄으로써 대역폭, 프로세스, 처리능력, 기타 시스템 자원을 고갈시켜 정상적인 서비스를 할 수 없도록 하는 행위를 말한다.

 * DoS 공격형태

 시스템 과부하 공격 : 프로세스, 네트워크 고갈 공격, 디스크 채우기 공격

 네트워크 서비스 방해 공격 : Syn, TCP/UDP Flooding, Smurf, land 공격

 * DoS 공격의 특징

 루트권한을 획득하는 공격이 아니다. 데이터를 파괴하거나 변조하거나 훔쳐가는 것을 목적으로 하는 공격이 아니다. 공격의 원인이나 공격자를 추적하기 힘들다. 공격 방법이 매우 다양하다.

2. DoS 공격 유형

 (1) TCP SYN Flooding : 서비스 방해공격의 한 방법으로 서버가 정상적인 서비스를 지연 또는 불능상태로 만들기 위하여 사용하는 공격이다. 이는 TCP 프로토콜을 이용하여 클라이언트가 서버에 접속을 시도할 때 TCP 헤더에 SYN Flag를 보내면 서버는 이에 대한 답변으로 SYN/ACK를 보내고 클라이언트는 ACK를 받는다. 전형적인 3way 핸드쉐이킹인데 공격자가 임의로 자신의 IP주소를 속여서 다량으로 서버에 보내면 서버는 클라이언트에 SYN/ACK를 보내고 이에 대한 클라이언트 응답 ACK를 받기 위해 대기상태에 놓이게 된다. 이런 대기상태에 섭의 자원을 모두 할당하다 보니 정작 하는 정상적인 서비스는 불가능하게 되는데, 가장 직관적으로 눈에 보이는 것이 웹서비스가 불가하게 되는 것이다. 

 * 탐지방법 : 공격자가 보낸 패킷에서 IP 헤더와 TCP 헤더를 분석한다. TCP 헤더 분석 결과 Flag가 SYN이면 공격자가 보내는 패킷의 카운트를 증가시키고 SYN/ACK이면 카운트를 감소시켜 SYN 개수를 파악한다. 카운트가 공격인정 시간 내에 공격 인정횟수 이상이면 SYN Flooding으로 탐지한다.

 * 조치방법 : 클라이언트가 서버에 요구한 SYN 개수보다 큰 Connet Queue Size를 증대시킨다. 리눅스도 사이즈를 높일 수는 있으나 일시적인 방법밖에 되지 않는다.  SYN 쿠키 사이즈를 늘려 준다. 중간 게이트웨이에서 SYN 패킷이 지나간 후 일정한 시간이 지난 후에도 ACK가 이루어지지 않으면 해당 서버로 RST 패킷을 날려 주면 된다. 공격 성공을 위해서는 IP 헤더 중 소스 주소가 스푸핑 되어있어야 한다. 이 때문에 서브넷 외의 소스 주소를 가지고 외부로 나가는 패킷을 로우레벨에서 폐기한다.

 (2) UDP Flooding : 서비스 방해공격의 한 종류로 UDP 프로토콜을 이용하여 클라이언트가 서버에 가상의 데이터를 연속적으로 보내어 서버의 부하 및 네트워크 오버로드를 발생시켜 정상적인 서비스를 하지 못하도록 하는 공격을 말한다.

 * 탐지방법 : 공격자가 보낸 패킷에서 UDP를 분석해 본다. 대상 포트 번호를 확인하여 135, 17, 137번 UDP 포트 스캔이 아니면 UDP Flooding 공격으로 간주한다. 공격자가 보내는 패킷의 횟수를 카운트하여 공격 인정 시간 내에 공격인정 횟수면 UDP 공격으로 탐지한다.

 * 조치방법 : 관리자는 불필요한 서비스를 비활성화시키고 공격의 피해를 최소화한다. 방화벽과 라우터에서 불필요한 UDP서비스를 차단한다. 차단 시에는 반드시 불필요한 서비스인지를 꼭 확인 후에 차단한다.

 (3) Teardrop 공격 : 이 공격수법은 헤더가 조작된 일련의 IP 패킷조각(IP fragments)들을 전송함으로써 공격이 이루어진다. 이 공격읜 윈도우 NT 뿐만 아니라 이전의 Linux 시스템들에도 효과가 있다. 이 수법으로 공격당한 시스템은 네트워크 연결이 끊어지거나 일명 "죽음의 푸른 화면(Blue Screen of Death)"이라 불리는 오류 화면을 표시하면서 중단된다.

 (4) Smurf 공격 : ping을 이용한 공격으로 ICMP_ECHO_REPLY를 이용한 공격이라고 할 수 있다. 하나의 클라이언트에서 하나의 서버로 ICMP_ECHO_REQUEST를 보내면 서버에서 다시 클라이언트로 ICMP_ECHO_REPLY를 보내게 된다. 그런데 ECHO_REQUEST를 해당 Network의 Broadcast 주소로 보내는 경우 Network 상의 모든 host가 그 응답으로 ECHO_REPLY를 보내게 된다. 다시 말해서 출발지 주소를 속여서 네트워크의 Broadcast 주소로 ICMP_ECHO_REQUEST를 전달하는 경우 출발지로 응답에 대한 traffic이 증가하여 정상적인 Network 서비스가 이루어지지 않을 수 있다.

'정보보안' 카테고리의 다른 글

DDoS 공격  (0) 2019.10.08
네트워크 스캐닝  (0) 2019.10.08
암호 알고리즘  (0) 2019.10.07
네트워크 기반 프로그램 활용  (0) 2019.10.07
OSI 7 Layer  (0) 2019.10.07