서비스 거부 공격은 네트워크 보안에서 단순한 공격 기법 중 하나입니다. 서비스 거부 공격의 목적은 정보 탈취가 아니라 서비스 방해에 있습니다. 악의적인 요청으로 시스템의 리소스를 소비하게 하여 서비스를 마비시키는 것이죠. 예를 들어 여러분들이 수업시간에 발표를 하고 있는데 발표 중 큰 소리로 계속 떠듬으로서 여러분들의 발표를 다른 사람들이 듣지 못하도록 하는 방식이나 장사를 하는 곳에서 손님이 들어오지 못하게 난동을 부리는 것도 해당할 것 같습니다. 서비스 거부 공격으로 Dos와 DDos에 대해 정리해보겠습니다.
1. Dos (Denial of Service)
1) 취약점 공격형
자원 고갈 공격형은 시스템이 사용하는 리소스를 비정상적으로 소비하게 함으로서 서비스를 방해하는 공격입니다. CPU, 네트워크 대역 등 다양한 리소스를 소비하도록 만듭니다.
Ping of Death Attack
각 네트워크 장비 마다 패킷을 쪼개서 전송하는 특성을 이용한 기법입니다. 여러분들이 보낼 수 있는 ping의 가장 큰 크기의 패킷을 만들어 봅시다. 여러분들은 하나의 패킷만 보낸다고 생각하겠지만, 각 장비를 거치면서 수십, 수백개의 패킷으로 쪼개질 수 있습니다. 그럼 하나의 패킷 전송이 서버 측에서는 수십, 수백개의 패킷으로 나눠져서 들어와서 쪼개진 패킷에 대해 모두 처리해야 하는 로드가 발생할 수 있습니다. 이 특성을 이용하여 공격하는 기법입니다. ping 명령을 수행 시 가장 긴 길이의 패킷을 만들어 계속 보내는 방식의 공격입니다. 이러한 문제 해결방법 중 하나는 ping은 ICMP 프로토콜인데 ICMP 프로토콜에 대해서는 차단을 하는 방식으로 처리하면 될 것 같습니다.
SYN Flooding Attack
3-Way HandShaking을 생각해보면 SYN - SYN+ACK - ACK의 순으로 이루어지는데요, 클라이언트에서 서버에게 SYN을 요청한 이후에 SYN+ACK를 무시하게 되면 어떻게 될까요? 서버에서는 ACK를 받기 위해 대기중이 됩니다. 이 방식을 이용한 공격 기법이 SYN Flooding Attack입니다. 많은 서버들은 서버 접속자 수를 제한해 놓고 있는데요, 위와 같은 방법으로 무수히 많은 SYN를 전송하게 되고, 서버에서는 ACK+SYN 요청을 전송 후 ACK를 받기 위해 기다리는 시간으로 인해 다른 정상적인 요청을 처리할 리소스가 없는 상황이 되는 겁니다.
HTTP GET Flooding Attack
3-Way Handshaking으로 클라이언트-서버간 정상적으로 접속이 된 후에 공격하는 기법입니다. HTTP GET 요청을 함으로서 서버를 무력화 시키는 공격입니다. 서버-클라이언트 간 연결된 후에 특정 페이지를 무한대로 요청함으로서 서버 측에서 정상적으로 연결된 클라이언트의 요청을 처리하기 위해 시스템 리소스를 소비하게 만듭니다.
HTTP Cache Control 공격
이 공격은 HTTP 1.1버전에 적용된 Cache Control 옵션을 변경할 수 있도록 한 기능을 이용한 공격기법입니다. 현재는 잘 사용되지 않으며 공격받은 서버에서도 탐지가 쉽고 많은 리소스를 사용하지 않아 잘 사용되지 않습니다. 원리는 서버-클라이언트 간 중간에 캐시를 두어 변경되지 않은 내용에 대한 Request에 대해 캐시에 저장된 데이터를 이용해 빠른 응답을 보이는 Cache 기능을 이용합니다. Cache Control 옵션을 'no-store, must-revalidate' 옵션을 사용하여 데이터를 캐시에 저장하지 않고 서버 측에서 데이터를 재검증하도록 요청하는 옵션을 설정하믕로써 서버의 부하를 증가시키는 기법입니다. 특히 고사양의 이미지등을 많이 사용하는 웹페이지에 대해서 사용하게 된다면 큰 영향을 줄 수 있을 것 같습니다.
Dynamic HTTP Request Flooding Attack
위에서 설명한 HTTP GET Flooding, HTTP Cache Control 공격방법은 지정된 페이지에 대해 서버에게 요청하는 공격인데 해당 패턴은 쉽게 캐치될 수 있고 서버측에서 쉽게 방어할 수 있습니다. Dynamic HTTP Request Flooding Attack은 서버에서 패턴을 캐치하지 못하도록 다양한 웹 페이지에 대해 동적으로 요청하는 페이지를 변경하여 서버에 요청하는 공격 방법입니다.
슬로 HTTP Header DoS Attack
서버로 전달하는 HTTP의 헤더를 변경하여 공격하는 방법입니다. 헤더에 포함된 정보를 비정상적으로 조작함으로서 서버가 모든 데이터를 전달 받을 때까지 연결을 강제로 연결시켜 놓는 방법입니다. HTTP 헤더와 바디를 구분하는 구분자들을 변조하게 되고, 변조된 HTTP 데이터로 인해 서버는 데이터가 모두 수신될 때 까지 기다리도록 만드는 방법입니다.
슬로 HTTP POST Attack
HTTP POST 메소드를 사용한 공격기법입니다. 헤더를 조작하는건 위 슬로 HTTP Header DoS Attack과 동일합니다. 변조하는 정보는 헤더의 Content-Length 필드에 매우 큰 값을 입력함으로써 서버에서 Content가 모두 들어올 때까지 계속 연결을 유지시킴으로서 다른 사용자의 요청을 처리하지 못하도록 리소스를 낭비하도록 합니다. 이때 HTTP의 바디 데이터를 매우 드문드문 시간 간격으로 전송함으로서 최대한 장시간 연결을 유지하도록 합니다.
스머프 공격
ICMP 프로토콜과 다이렉트 브로드캐스트를 이용한 공격방법입니다. ping을 이용해 클라이언트가 서버에게 전송하고 응답받는 방법을 브로드캐스트와 접목하였습니다. 기본적인 브로드캐스트는 기본적으로 라우터를 넘어서지 못하는데 Source IP를 임의의 IP를 작성하고 Destination IP에 브로드캐스트 IP인 255.255.255.255를 기입합니다. 그럼 Source IP에 적힌 네트워크로 ping이 브로드캐스팅 됨으로써 라우터를 넘어설 수 있습니다. 이 방법이 다이렉트 브로드 캐스트입니다. 이렇게 브로드캐스트로 전달받은 ping을 서버 IP로 변경해 놓은 시작 IP주소로 ICMP Reply를 전달하게 됨으로서 서버의 리소스를 소모하게 만드는 공격 방법입니다.
2. DDos (Distributed Denial of Service)
DDoS는 말그대로 분산 서비스 거부 공격입니다. 공격자가 중간 시스템에 공격을 명령하고 중간 시스템에서 관리하는 각 PC들이 서버에게 로드를 가하는 방법입니다. 공격자는 중간 시스템과 공격자를 악성 코드를 이용해 좀비 PC로 만들고 해당 PC들에게 공격을 가하는 기법이기에 정확한 공격자를 찾기 어려운 측면이 있습니다. 악성 프로그램이 퍼져나갈수록 좀비 PC를 늘어날테고 서버 즉, 공격대상 또한 피해가 크게 되는 방법입니다.
간단하게 Dos와 DDoS에 대해 정리해보았습니다. 감사합니다.
참고 | 정보 보안 개론 3판, 양대일 지음
'ETC > Security' 카테고리의 다른 글
[정보보호개론] SSL / TLS (1) | 2018.11.04 |
---|---|
[정보보호개론] 인증 (Authentication) (0) | 2018.11.04 |
[정보보호개론] 정보보안의 3가지 속성 (0) | 2018.11.04 |
Level 12 (0) | 2013.11.21 |
Level 11 (0) | 2013.11.04 |