UDP 트래픽으로 서버에 트래픽을 폭주하게 함으로써 NTP 프로토콜의 취약성을 이용하는 볼류메트리 DDoS 공격.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
NTP 증폭 공격은 NTP(Network Time Protocol) 서버 기능을 악용하여 UDP 트래픽의 양을 증폭함으로써 목표 네트워크 또는 서버를 압도하고 결과적으로 정상적인 트래픽이 목표 및 주변 인프라에 액세스할 수 없게 하는 반사 기반 볼류메트릭 분산 서비스 거부(DDoS) 공격입니다.
모든 증폭 공격은 공격자와 목표 웹 자원 간의 대역폭 비용 차이를 이용합니다. 많은 요청을 통해 이러한 비용의 불일치가 확대되면 이에 따른 트래픽 양으로 네트워크 인프라가 중지될 수 있습니다. 악의적 사용자는 대량의 응답을 요구하는 소량의 쿼리를 보냄으로써 작은 것을 이용해 큰 것을 얻게 됩니다. 또한, 봇넷의 각 봇이 유사한 요청을 작성하게 하면 이러한 확대 효과가 더욱 커지며 공격자는 감지되지 않으면서 공격 트래픽을 크게 늘릴 수 있습니다.
DNS 폭주 공격은 DNS 증폭 공격과 다릅니다. DNS 증폭 공격은 DNS 폭주와 달리, 공격의 출발점을 숨기고 효율성을 높이기 위해 안전하지 않은 DNS 서버의 트래픽을 반사하고 이를 증폭시킵니다. DNS 증폭 공격은 대역폭 연결이 작은 장치를 사용하여 보안되지 않은 DNS 서버에 다수의 요청을 보냅니다. 이 장치는 다수의 작은 요청을 작성하여 매우 큰 DNS 레코드 응답을 요구하면서 반환 주소를 피해자의 주소로 지정합니다. 공격자는 이러한 증폭을 통해 제한된 공격 자원만을 사용하여 더 큰 대상을 압도할 수 있는 것입니다.
DNS 증폭과 유사한 NTP 증폭 공격은 악동이 식당에 전화해 "거기 있는 메뉴를 모두 1인분씩 주문할 테니 내게 전화해서 내가 주문한 걸 다 말해주세요"라고 말한다고 생각하면 됩니다. 식당에서 어디로 전화하냐고 물을 때 목표 피해자의 전화번호를 알려주는 것입니다. 그러면 목표 피해자는 식당으로부터 본인이 요청하지도 않은 엄청난 양의 정보를 받게 됩니다.
NTP(Network Time Protocol)은 인터넷에 연결된 장치가 내부 클럭을 동기화하할 수 있도록 하는 등 인터넷 아키텍처에서 중요한 기능을 수행하도록 설계되어 있습니다. 공격자는 일부 NTP 서버에서 사용 가능한 일원론적 명령을 사용하여 초기 요청 트래픽을 확대하여 큰 응답을 받을 수 있습니다. 이 명령은 기본적으로 과거의 장치들에 제공되며 NTP 서버에 대해 작성된 요청의 마지막 600개의 소스 IP 주소로 응답합니다. 메모리에 600개의 주소가 있는 서버의 monlist 요청은 초기 요청보다 206배 급니다. 따라서 1GB의 인터넷 트래픽이 있는 공격자는 200GB 이상의 공격을 만들 수 있으며 이는 공격 트래픽이 엄청나게 증폭된 것입니다.
이는 합법적인 서버에서 수신되는 합법적인 트래픽처럼 보이기 때문에 합법적인 활동으로부터 실제 NTP 서버를 차단하지 않는 한 이러한 종류의 공격 트래픽을 완화하는 것은 쉽지 않습니다. UDP 패킷은 핸드셰이크를 필요로 하지 않으므로 해당 NTP 서버는 요청을 검증하지 않고 대상 서버에 대량의 응답을 전송할 것입니다. 기본적으로 대량의 응답을 전송하는 내장 명령에 이러한 사실이 결합되어 있으므로 NTP 서버는 DDoS 증폭 공격을 위한 탁월한 반사 기능을 제공하게 됩니다.
웹 사이트 또는 서비스를 가동하는 개인 또는 회사의 완화 방식은 제한적입니다. 이것은 해당 주체의 서버가 목표가 되는 경우도 있겠지만, 실제 해당 서버는 볼류메트릭 공격의 실제 효과를 느낄 수 없다는 점에 기인합니다. 생성된 트래픽의 양이 많으므로 서버를 둘러싼 인프라는 그 영향을 받게 됩니다. ISP(Internet Service Provider) 등의 업스트림 인프라 제공업체가 압도되지 않은 상태에서 수신 트래픽을 처리하지 못하게 되는 경우도 있습니다. 결과적으로, ISP는 공격 대상 피해자의 IP 주소로 모든 트래픽을 블랙홀처럼 보내 자체 인프라를 보호하면서 목표 피해자를 오프라인으로 만들게 됩니다. Cloudflare DDoS 방어 서비스 같은 외부 서비스를 제외한 완화 전략은 예방적인 인터넷 인프라 솔루션이 대부분입니다.
일원적 명령의 취약성을 해결하는 간단한 솔루션은 이 명령을 사용하지 않는 것입니다. 버전 4.2.7 전의 모든 NTP 소프트웨어 버전은 기본적으로 취약합니다. NTP 서버를 4.2.7 이상으로 업그레이드하면 해당 명령이 비활성화되어 취약성을 해결할 수 있습니다. 업그레이드가 불가능한 경우, 서버 관리자가 US-CERT 명령어를 따라 필요한 변경 조치를 수행할 수 있다.
공격자의 봇넷에서 전송되는 UDP 요청에는 피해자의 IP 주소로 스푸핑된 소스 IP 주소가 있어야 하기 때문에 UDP 기반 증폭 공격의 효과를 줄이는 핵심 구성요소는 인터넷 서비스 공급자(ISP)가 스푸핑된 IP 주소의 내부 트래픽을 거부하는 것입니다. 패킷이 네트워크 외부에서 시작된 것처럼 보이도록 하는 소스 주소를 사용하여 네트워크 내부에서 해당 패킷을 보내는 경우, 이는 스푸핑된 패킷이므로 삭제할 수 있습니다. Cloudflare는 모든 ISP에게 수신 필터링을 권고하며 경우에 따라 자신도 모르게 (BCP38을 위반하여) DDoS 공격에 가담하는 ISP에게 연락하여 취약성을 깨닫도록 도와드리고 있습니다.
NTP 서버에서 monlist를 비활성화하고 현재 IP 스푸핑이 가능한 네트워크에 수신 필터링을 적용하게 되면 이러한 유형의 공격이 대상 네트워크에 도달하기 전에 차단할 수 있게 됩니다.
올바르게 구성된 방화벽 및 충분한 네트워크 용량(Cloudflare 수준의 규모가 아니라면 확보하기 쉽지 않음)을 사용하면 NTP 증폭 공격과 같은 반사 공격을 차단할 수 있습니다. 이 공격은 단일 IP 주소를 대상으로 하지만, Anycast 네트워크는 모든 공격 트래픽을 방해가 되지 않는 지점으로 분산시킵니다. Cloudflare는 규모의 장점을 활용하여 많은 데이터 센터에서 공격의 무게를 분산시키고 서비스가 중단되지 않도록 부하 균형을 유지하므로 공격은 대상 서버의 인프라를 절대 압도할 수 없습니다. 최근 6개월 동안, Cloudflare의 DDoS 모니터링 시스템인 "게이트봇"은 629건(즉, 40분마다 1건)의 단순 반사 공격을 감지했고 이를 모두 완화하는 데 성공했습니다. Cloudflare의 고급 DDoS 방어에 대해 자세히 알아보세요.