NTP 서버보안가이드 침해사고분석단취약점점검팀 김정호선임연구원 ( jungho@kisa.or.kr ) 2015. 1. 본보고서의전부나일부를인용시, 반드시 [ 자료 : 한국인터넷진흥원 (KISA)] 를명시하여주시기바랍니다
제 1 장개요 1 제 2 장 NTP 취약점 4 1. NTP 분산서비스거부취약점 (CVE : 2013-5211) 5 1) NTP Amplification 5 2) 취약점내용 6 2. NTP 스택오버플로우취약점 (CVE : 2014-9295) 7 1) 스택오버플로우 7 2) 취약점내용 7 제 3 장대응방안 8 1. 공통 9 1) NTP 서비스필요성검토 9 2) 사설망 NTP 서버이용권고 9 2. 서버보안조치 9 1) NTP 버전업데이트 9 2) 설정파일수정 10 3) 취약점확인 10 3. 네트워크및보안장비보안조치 12 1) 방화벽설정 12 2) 보안장비설정 12 4. 보안을고려한제품설계 13
제 1 장 개요 - 1 -
제 1 장개요 NTP(Network Time Protocol) 는현재까지쓰여온가장오래된인터넷프로토콜가운데 하나이며, 네트워크를통해컴퓨터시스템간시간동기화를위해사용된다. 앞서 NTP 패킷이인증을위한암호화서명이되어있지않아 MITM(Man In the Middle) 공격이가능한점과메시지를변조하여클라이언트 PC의시간을변경할수있는점등 NTP가사용된오랜기간동안몇몇문제점이발견되었으나실제그파급도는높지않았다. 하지만최근발표된 NTP 분산서비스거부취약점 (CVE-2013-5211) 과스택오버플로우취약점 (CVE-2014-9295) 의경우전세계적으로큰이슈가되고있다. < 그림 1-1> NTP 취약점을이용한공격트래픽예 일례로 2014 년 2월미국의보안업체클라우드플레어의고객사를대상으로 NTP 취약점을이용한역대최대규모인 400Gbps의 DDoS 공격이발생한바있으며, 국내에서도동일한기법의 DDoS 공격이발견되는등전세계적으로대규모 DDoS 공격을위한새로운위협으로부상되고있다. NTP 취약점의위험성은해당서비스가 PC 및서버에만국한되어실행되지않는다는점에있다. 지난 5월국내온라인게임업체를대상으로한 DDoS 공격이발생하여 KISA 에서는그진원지를확인한적이있었는데, 공격에사용된시스템의경우좀비PC가아닌냉난방관리용셋톱박스가원인으로밝혀졌다. 대학전체냉난방을효율적으로관리하려고설치한장비로, 공격자는이셋톱박스에내장된 NTP의취약점을악용하여공격에사용한것이다. 이처럼사물인터넷시대에들어서며다양한장비에서 NTP 서비스를제공하고있으나, 실제보안설정은미흡하여공격자들에게좋은자원이되고있는실정이다. - 2 -
< 그림 1-2> NTP 취약점을이용, DDoS 공격에악용된냉난방셋탑박스 이에본가이드에서는 NTP 서비스의주요취약점에다루고, 해당취약점에대한점검 항목및대응책을제공함으로써사고를예방하고발생할수있는피해를최소화하고자 한다. - 3 -
제 2 장 NTP 취약점 - 4 -
제 2 장 NTP 취약점 1. NTP 분산서비스거부취약점 (CVE : 2013-5211) 1) NTP Amplification NTP 분산서비스거부취약점을이해하기위해서는 NTP 증폭 (Amplification) 에대한이해가우선적으로필요하다. NTP 증폭이란분산서비스거부 (DDoS) 기법중하나로공개된 NTP 서버를통해증폭된 UDP 패킷을발송, 공격대상시스템이정상적으로서비스를할수없도록하는것이다. NTP 증폭공격의가장기본적인형태는공격자의 IP 주소, 즉 Source IP를공격대상의 IP로변조하여 NTP 서버에다수의 monlist 명령을요청하는것이다. 그러면 NTP 서버는호스트리스트가포함된패킷을변조된 IP 주소로응답하게된다. 이응답패킷은요청시발생하는패킷보다훨씬크게증폭되며, 이증폭된트래픽은공격대상서버로향하게되어곧서비스의부하를가져오게된다. NTP 증폭의경우근본적으로반사공격 (Reflection Attack) 에속한다. 반사공격은서버의응답패킷을변조된 IP 주소로유도하도록한다. 공격자는자신의 IP를공격대상서버 IP로변조하여패킷을요청하고 NTP 서버는그변조된 IP주소로응답하게된다. 반사공격의경우응답데이터그자체는정상이기때문에다양한위험성이존재한다. 여기에증폭기법까지접목되었을때그위험성은말로설명할수없을정도이다. 전형적으로사용되는 DNS 증폭시응답패킷사이즈는요청패킷사이즈에비해 8배에서 70배증폭된다. NTP 증폭의경우더높은비율로패킷을증폭하여전송할수있다. 요청패킷대비응답패킷의비율이 1:20에서 1:200 혹은그이상이될수도있다. 이로인해공격자는 Open NTP Project 등을통해공개된 NTP 서버를이용, 고대역폭의대용량 DDoS 공격을수행할수있다. - 5 -
2) 취약점내용 NTP 서비스데몬 ntpd 의 4.2.7 이전버전에서는쿼리를통해해당접속호스트를 모니터링할수있는기능을지원한다. monlist 라는이름의이명령어를통해 NTP 서버에 쿼리를요청하여최근접속한 600 개호스트리스트를응답받을수있다. monlist 의경우요청 IP 에대한검증작업을수행하지않기에이를이용하여특정 대상을목표로한 DDoS 공격을수행할수있으며, 공격방법은다음과같다. 공격방법 ➀ [ 변조 ] 공격자는 IP 주소를공격대상의 IP로패킷을변조 ➁ [ 전송 ] 취약한다수의 NTP 서버를대상으로 monlist 이용한다수의쿼리전송 ➂ [ 증폭 ] 쿼리를수신한 NTP 서버는증폭된패킷을변조된 IP( 공격대상 ) 로응답 ➃ [ 장애 ] 공격대상서버는증폭된다수의쿼리수신으로네트워크대역폭고갈 < 그림 2-1> NTP 취약점을이용한 DDoS 공격 - 6 -
2. NTP 스택오버플로우취약점 (CVE : 2014-9295) 1) 스택오버플로우 스택오버플로우 (Stack overflow) 는스택포인터가스택의경계를넘어설때발생한다. 호출스택은제안된양의주소공간을이루며대개프로그램시작시결정된다. 프로그램이호출스택에서이용가능한공간이상을사용하려고할때, 스택이오버플로우된다고하며이경우일반적으로프로그램충돌이발생하게된다. 이러한오버플로우취약점의경우원격쉘코드실행등다양한형태의공격으로이어질 수있어그위험성이높다. 2) 취약점내용 2014 년 12월구글의 Stephen Roettger 는 ntpd 4.2.8 이전버전에서스택오버플로우를발생시킬수있는취약점 (CVE-2014-9295) 을발표하였다. 원격에서인가되지않은사용자가 ntpd 관련함수인 crypto_recv(), ctl_putdat(), configure() 를통해스택오버플로우를발생시킬수있다는내용으로앞서발표된분산서비스거부취약점에이어 NTP에대한보안이다시이슈화되었다. 다만해당취약점의경우함수별로오버플로우가발생하기위한전제조건이존재한다. cryto_recv() 함수의경우 Autokey 인증이활성화되어있을경우에만취약점을통하여버퍼오버플로우가가능하나, 이인증기능은기본으로비활성화되어있어실제해당기능을강제활성화한시스템만이취약점의영향을받게된다. ctl_putdata() 함수의경우에도신뢰되지않은호스로부터컨트롤메시지를받는것이허용되어있을경우버퍼오버플로우가발생가능하나, 기본설정으로로컬호스트에서만해당메시지를받게되어있는관계로이경우로컬에서만익스플로잇이가능하다는제약조건이붙게된다. 마지막으로 configure() 함수의경우익스플로잇을위해서는추가적인인증이필요하다는이슈가제기되고있는상황이다. - 7 -
제 3 장 대응방안 - 8 -
제 3 장대응방안 1. 공통 1) NTP 서비스필요성검토 다수의업체및기관에서 NTP 서비스를설치후실제사용하지않는케이스가확인된다. 이렇게방치된서비스의경우공격자에의해악용될소지가다분하기에, 보안정책상 운영이반드시필요한서비스가아닐경우제거하는것이바람직하다. 시스템담당자들은보유서버중 NTP 서비스가실행중인서버를파악하여야하며, 서비스이용이지속적으로필요한지여부에대해검토를거친후반드시필요하지않을 경우해당서비스를제거하여야한다. 운영체제내설치된패키지명령에따라제거명령이조금씩상이하나 apt-get remove 혹은 rpm e, yum remove 등의명령을이용, 파라미터값으로 ntp 혹은 ntpd 를지정하여 NTP 서비스를제거할수있다. 2) 사설망 NTP 서버이용권고 업무상필요로인해 NTP 서비스를구축및운영하여야한다면사설혹은사내망에 NTP 서버를두는것이안전하다. DMZ 구간에서버가위치할경우외부로부터의접속에노출되어공격에악용될소지가있다. 가급적외부에서접속할수없는사설혹은사내망에 NTP 서버를두고운영하여외부의위협으로부터보호할수있도록한다. 2. 서버보안조치 1) NTP 버전업데이트 ntpd 4.2.6 이하버전의경우 NTP 분산서비스거부취약점이존재하며, ntpd 4.2.7 이하버전에는원격코드실행을포함한다중취약점이존재한다. 이를해결할수있는 가장간단한방법으로는 4.2.8 이상버전으로업데이트를수행하는것이다. - 9 -
아래명령을실행하여현재시스템에설치된 ntpd 버전을확인할수있다. ntpd -version 만약설치된버전이권고버전보다낮을경우아래 URL 에서최신버전의 ntpd 를다운로드 받아설치하도록한다.( 다운로드 URL : http://www.ntp.org/downloads.html) 2) 설정파일수정 업데이트가가장안전한방법이긴하나, 경우에따라업데이트를수행할수없는경우가발생할수있다. 이럴경우 NTP 분산서비스거부취약점을제거하기위해 NTP 설정파일 ntp.conf 내 disable monitor 를삽입, NTP 서비스를재시작하는방법으로 monlist 기능을비활성화할수있다. 또다른방법으로는아래와같이 ntp.conf 파일의 restrict default 항목에 noquery 를추가함으로 monlist 기능을비활성화하는동시에스택오버플로우취약점도 함께해결할수있다. restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery 3) 취약점확인 분산서비스거부취약점에영향을받는서버인지또는적절하게조치가되었는지에 대해확인하기위해원격에서아래명령어를실행해보도록한다. ntpdc c monlist < 점검대상 NTP 서버 IP> 위명령어를실행하였을때 timed out 메시지가출력되면이는취약점에영향을받지 않는것이나, 아래와같이리스트가출력되면조치가필요한상황으로볼수있다. - 10 -
< 그림 3-1> NTP 분산서비스거부취약점확인방법 보안스캐너 Nmap 을이용하여분산서비스거부취약점을점검할수도있다. Nmap 에서는 NSE 스크립트를제공하는데, 이중 ntp-monlist 를통해 monlist 활성화 여부에대한확인이가능하다. nmap -su -pu:123 -Pn -n script=ntp-monlist < 점검대상 NTP 서버 IP> 위명령어를실행하였을때 ntp-monlist 관련리스트가출력된다면취약점이존재하는 것으로볼수있다. 이외에도 OpenNTPProject 를통해특정네트워크에서실행중인 NTP 서버리스트를 확인할수있으며, 이리스트를점검에활용할수도있다. (URL : http://openntpproject.org) < 그림 3-2> OpenNTPProject 사이트화면 - 11 -
3. 네트워크및보안장비보안조치 1) 방화벽설정 방화벽을통해외부트래픽으로부터 NTP 유입을접근통제할수있다. iptables 명령어를 이용하여인가된 IP 에대해서만 UDP 123 포트로접근을허용하도록하는것이바람직하다. 또한 100 byte 이상 NTP 패킷에대한차단을설정하도록한다. 통상적으로 NTP 패킷은 100byte 이하 (48byte) 이며공격패킷은 400 byte 내외 ( 주로 monlist) 이므로패킷크기 값을통해아래와같이제한할수있다. iptables -A OUTPUT -p udp --sport 123 -m length --length 100: -j DROP 이외에도 ntpquery 에대한 rate-limit 을설정하는방안이있는데, 동일 IP 에서 1 분이내 3 번이상의쿼리발생시차단하도록설정한다. iptables -A INPUT -p udp --dport 123 -m recent --set --name ntpquery iptables -A INPUT -p udp --dport 123 -m recent --name ntpquery --rcheck --seconds 60 --hitcount 3 -j DROP 2) 보안장비설정 IDS 와 IPS 의경우아래와같이 NTP monlist 패킷에대한시그니처기반필터링을적용, 분산서비스거부취약점을이용한공격을방어할수있다. MON_GETLIST- 00 03 2a Anti-DDoS 장비의경우에는아래와같이설정변경을통해보안을강화하도록한다. - 12 -
➀ 비정상 UDP 패킷차단 - 비정상적인 UDP Header 값을가진패킷을차단하도록한다. ➁ LAND2 공격 UDP 패킷차단 - 출발지와목적지포트가동일한 UDP 패킷을차단하도록한다. - 단 NTP 서버를운영하지않는기관및업체에서적용이가능하다. ➂ 소스 IP 기반의 Flooding 방어설정 - UDP PPS 임계치 (10 PPS) 를넘은 Source IP를 Black list에등록한다. ➃ NTP 시그니처방어설정 - UDP 프로토콜의목적지포트기준 any에대해 NTP monlist 요청패킷의헥사값 (032a00060048) 을시그니처로등록한다. < 그림 3-3> NTP monlist 요청패킷 4. 보안을고려한제품설계 사물인터넷이활성화됨에따라다양한기기가출시되고있으며, 이중상당수에서 NTP 서비스가실행되고있다. 이러한기기들의경우공격에취약할뿐만아니라취약점이확인되 더라도신속하게보안패치를적용하기가어려운문제점이존재한다. 이에제조사는제품을설계하는초기단계부터보안을고려하여공격에악용되지않도록주의하여야한다. 제품운용에있어 NTP 서비스가반드시필요하지않을경우해당서비스를설치하지않도록하며, 반드시필요할경우차후해당서비스에대한보안패치가지속적으로이루어질수있도록설계후설치하여야할것이다. - 13 -