취약점분석보고서 = MS =

Similar documents
취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환

취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환

목 차 1. 개요 취약점분석추진배경 CVE 취약점요약 CVE 분석 CVE 취약점개요 CVE 대상시스템목록...

목 차 1. 개 요 배경 요약 정보 대상시스템 원리 공격 기법 및 기본 개념 Heap Spray Font 공 격..

< 목차 > 1. 악성코드은닉동향요약 1 2. 홈페이지은닉형악성코드통계 2 - 유포지탐지 국가별현황 2 - 대량경유지가탐지된유포지 TOP 악성코드유형별비율 4 - 악성코드취약점유형별비율 4 - 악성코드수집및분석결과 5 - 경유지탐지 업종별비율 9 3. 악성코

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Microsoft PowerPoint - chap01-C언어개요.pptx

*2008년1월호진짜

Deok9_Exploit Technique

Windows 8에서 BioStar 1 설치하기

< FBFF9B0A320BEC7BCBAC4DAB5E520C0BAB4D0BBE7C0CCC6AE20C5BDC1F620B5BFC7E220BAB8B0EDBCAD283131BFF E302028C8A8C6E4C0CCC1F620BEF7B

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] RedAlert Team_ 강동우

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

취약점분석보고서 [Elecard AVC_HD/MPEG Player 5.7 Buffer Overflow] RedAlert Team 봉용균

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

JVM 메모리구조

untitled

Microsoft Word - src.doc

Microsoft PowerPoint - 권장 사양

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

PowerPoint Template

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

** 5 개이발생한주요소프트웨어별취약점세 EDB 번호취약점종류공격난이도공격위험도취약점이름소프트웨어이름

목차 1. 개요 배경 파일정보 상세분석 SMB 취약점공격흐름 특징적인행위 대응

SIGIL 완벽입문

Javascript

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft PowerPoint - web-part01-ch10-문서객체모델.pptx

Microsoft Word - Static analysis of Shellcode.doc

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

how_2_write_Exploit_4_the_MSF_v3.x.hwp

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

04 Çмú_±â¼ú±â»ç

월간악성코드은닉사이트탐지 동향보고서 9 월 침해대응단사이버침해대응본부

PowerPoint Template

ActFax 4.31 Local Privilege Escalation Exploit

PowerPoint 프레젠테이션

chap 5: Trees

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

!K_InDesginCS_NFH

ISP and CodeVisionAVR C Compiler.hwp

<B1DDC0B6C1A4BAB8C8ADC1D6BFE4B5BFC7E C8A3292E687770>

Secure Programming Lecture1 : Introduction

슬라이드 1

gcloud storage 사용자가이드 1 / 17


메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

공지사항

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Microsoft Word - poc_script1.doc

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

슬라이드 1

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

Microsoft PowerPoint - chap04-연산자.pptx

ActFax 4.31 Local Privilege Escalation Exploit

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을

View Licenses and Services (customer)

게시판 스팸 실시간 차단 시스템

5th-KOR-SANGFOR NGAF(CC)

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로

쉽게 풀어쓴 C 프로그래밍

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

Chapter 4. LISTS

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax

서현수

1. 배경 업무 내용이나 개인정보가 담긴 청구서 등을 메일로 전달 시 중요한 정보가 유출되는 경우가 발생하고 있으며, 이에 따른 메일 암호화 솔루션을 도입하고 있으나 기존 ActiveX를 기반으로 한 플러그인 방식은 여러 가지 제약으로 인해 사용성이 저하되고, 고객 대

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Scene7 Media Portal 사용

Visual Studio online Limited preview 간략하게살펴보기

ThinkVantage Fingerprint Software

Microsoft Word - building the win32 shellcode 01.doc

PowerPoint 프레젠테이션

untitled

Microsoft PowerPoint - e pptx

로거 자료실

PowerPoint Presentation

설명 Description 상세정보 네이버에서운영하는서비스중하나인쥬니어네이버 ( 이하쥬니버 ) 에서는쥬니버서비스와 관련하여도움을주기위한 [ 그림 1] 과같은플래시애플리케이션이서비스되고있다.[2] [ 그림 1] 쥬니어네이버에서서비스중인쥬니버도우미플래시애플리케이션 해당플래

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

API 매뉴얼

SBR-100S User Manual

Windows 10 General Announcement v1.0-KO

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2003) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2003 Exchange Server 2003 GFI MailEssentials 2010 fo

Microsoft PowerPoint - 00_(C_Programming)_(Korean)_Computer_Systems

Windows Server 2012

슬라이드 1

목 차 1. 드라이버 설치 설치환경 드라이버 설치 시 주의사항 USB 드라이버 파일 Windows XP에서 설치 Windows Vista / Windows 7에서 설치 Windows

Spring Boot

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft Word - [Windows Hook] 6.HideProcess.doc

Transcription:

취약점분석보고서 = MS12-037 = 2012-08-09

목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. MS12-037 취약점요약... 1 1.3. MS12-037 취약점개요... 1 1.4. MS12-037 대상시스템목록... 1 2. 분석... 2 2.1. 공격기법및기본개념... 2 2.1.1 DOM(Document Object Model)...2 2.2. MS12-037 공격코드... 3 2.2.1 공격코드분석...3 2.2.2 공격코드실행...7 2.3. 공격기법분석... 8 2.3.1 동적분석을통해공격흐름파악...8 2.3.2 정적분석으로취약점발생원리탐색... 10 3. 결론... 17 4. 대응방안... 18 5. 참고자료... 18

그림목차 [ 그림 1] DOM 의의미... 2 [ 그림 2] 공격코드구조... 3 [ 그림 3] 공격코드중 ROP 부분... 3 [ 그림 4] 공격코드중 HeapSpray 부분... 4 [ 그림 5] 취약점발생부분구조... 4 [ 그림 6] DIV 속성의자세한내용... 4 [ 그림 7] feng_shui_f 함수내용... 5 [ 그림 8] Crash_f 와 trigger_f 함수내용... 6 [ 그림 9] 옵션설정... 7 [ 그림 10] 모듈을실행후서버가동... 7 [ 그림 11] 공격이성공적으로수행된화면... 7 [ 그림 12] 공격성공후피해자측브라우저 ( 아무런증상이나타나지않음 )... 8 [ 그림 13] 공격성공후프로세스상태 (Process Explorer 이용 )... 8 [ 그림 14] Wireshark 로캡쳐한패킷... 9 [ 그림 15] Wireshark 를이용해 http 응답값을추출... 9 [ 그림 16] 취약점유발웹페이지내용... 9 [ 그림 17] 디버거를 JIT 모드로변경... 10 [ 그림 18] 요청값변조로충돌발생을유도... 10 [ 그림 19] 충돌발생후 attach 된디버거모습... 11 [ 그림 20] 1C1C1C 안에채워진내용을확인... 11 [ 그림 21] 쉘코드시작부분과이어져있는 NOP Slide... 12 [ 그림 22] 스택에마지막으로실행된부분... 12 [ 그림 23] 취약점유발코드를호출하는부분... 12 [ 그림 24] 모듈로드에변화가있을때마다브레이크되도록설정하는화면... 13 [ 그림 25] 분석을위해임의로 EP 를변조... 13 [ 그림 26] EP 부분을정상코드로재변환... 13 [ 그림 27] 함수의시작점을찾기위해어셈블리코드로해당지점검색... 14 [ 그림 28] 원하는부분을찾아브레이크포인트설정... 14 [ 그림 29] 웹페이지에서보았던 'id' 들을스택에서확인... 14 [ 그림 30] 스택에서순차적으로처리되는 id 속성... 15 [ 그림 31] Navigator 가실행된모습... 15 [ 그림 32] 취약점발생개요도... 16 [ 그림 33] 윈도우업데이트설정화면... 18

1. 개요 1.1. 취약점분석추진배경 최근유행하는악성코드들은대부분제로데이취약점을이용해시스템을공격한다. MS 관련취약점은 Java, flash player 와같이타벤더사에서발생하는멀티미디어취약점들에비해비교적패치가빨리이루어지는편이다. 하지만패치가되기전까지제로데이취약점들은악의적의도를품은공격자들에의해얼마든지악용될수있다. 비록해당취약점은이미패치되었지만, 분석을통해시스템에어떠한취약점이발생할수있는지, 그리고그취약점이어떤방식으로악용될수있는지자세히알아볼필요성이제기되어분석보고서를작성하게되었다. 1.2. MS12-037 취약점요약 MS12-037 은 2012 년 6 월 12 일에발표된취약점으로, Internet Explorer 8 상에서 ID 속성을처리할때발생하는결함을이용하는취약점이다. 해당취약점을이용해공격자는원격코드실행뿐만아니라, 시스템변조, 서비스파괴등치명적인공격을수행할수있다. 현재는 Microsoft 사에의해패치가완료된상태이다. 1.3. MS12-037 취약점개요 취약점이름 MS12-037 Internet Explorer Same ID Property Deleted Object Handling Memory Corruption 최초발표일 2012 년 6 월 12 일 문서작성일 2012 년 8 월 9 일 위험등급 높음 벤더 Microsoft 취약점영향 원격코드실행 현재상태 패치됨 [ 표 1] MS12-037 취약점개요 1.4. MS12-037 대상시스템목록 해당취약점 Internet Explorer 8 이설치된윈도우운영체제에서취약점이발생가능하다. Microsoft Windows 7 Microsoft Windows XP Microsoft Windows server 2003 Microsoft Windows server 2008 Microsoft vista 1

2. 분석 2.1. 공격기법및기본개념 2.1.1 DOM(Document Object Model) 가. 정의및장점 The World Wide Web Consortium(W3C) Document Object Model(DOM) 은플랫폼과언어인터페이스에영향을받지않고손쉽게문서에접근, 구조및컨텐츠업데이트를가능하게하는일종의 API 라고할수있다. W3C DOM 모델은 html 과 xml 문서를표현하는객체의세트를어떻게표준화할것인가에대한내용뿐만아니라, 문서들에접근하고그것들을조작할수있는인터페이스도포함한다. W3C DOM 의가장큰장점은수많은컨텐츠들을업데이트하기위해또는여러개의문서조각내에존재하는컨텐츠들을이용해작업하기위해문서의모든부분에접근가능하다는것이다. 나. Javasrcipt 를위한 DOM [ 그림 1] DOM 의의미 D : 사용자가웹페이지를생성하고그것을브라우저에로드하면, DOM 이본격적으로동작한다. DOM 은사용자가작성한문서를 ' 객체 ' 형태로변환한다. O : 자바스크립트의객체에는다음과같이세가지종류가존재한다. - 프로그래머가제작한사용자정의객체 - 배열, 수학연산, 날짜와같이자바스크립트내에구축된네이티브객체 - 브라우저에서제공되는호스트객체 M : DOM 에서 M 은모델을의미한다. 또다른의미로 ' 지도 ' 라고부를수도있다. 지도와같이모델은무언가를표현하는수단이다. 모형기차가실제기차를표현하고, 도시의지도가실제도시를표현하듯이, DOM 은현재브라우저에로드된웹페이지를표현한다. 브라우저가페이지에대한지도를제공하면, 사용자는이지도를읽기위해자바스크립트를사용할수있다. 2

2.2. MS12-037 공격코드 2.2.1 공격코드분석 공격코드는루비 (Ruby) 언어로작성되었으며, Metasploit Framework 구성되었다. 전체적인코드구성은다음과같다. 에서기능하도록 [ 그림 2] 공격코드구조 가. 모듈옵션조정 이부분은해당코드가 Metasploit 내에서모듈로쓰이기위해필수로들어가야할부분 이다. MS12-037 공격코드에는다음과같은내용이포함되어있다. 1) 모듈정보 ( 취약점요약, 저자, 라이센스, 레퍼런스등 ) 2) 페이로드오프셋조정 3) 대상시스템에따른 ROP 종류및오프셋구분 4) 기타추가되는모듈실행옵션항목에대한내용 ( 자바스크립트난독화기능제공 ) 나. ROP 설정이부분은공격코드가작동하는시스템에서메모리보호를위해실행되는 DEP 및 ASLR 기능을우회하기위해실행되는 ROP 부분을담고있다. 이 ROP 부분은 corelan.be 에서제공하는 'mona.py' 를통해제작되었다. 또한, OS 별로상이한 ROP 설정을위해두가지종류의 ROP(msvcrt, jre) 를제공한다. [ 그림 3] 공격코드중 ROP 부분 3

다. Heap Spray 부분 최근에 공개된 대다수의 취약점의 경우처럼, MS12-037 도 취약점 발생 후 프로그램의 흐름을 힙 스프레이 기법을 이용해 뿌려진 공격코드로 이동하도록 구성했다. 다음은 공격코드에 포함된 힙 스프레이 코드의 모습이다. [그림 4] 공격코드 중 HeapSpray 부분 라. 취약점 발생 부분 취약점 발생 부분은 크게 2 가지로 구분할 수 있다. 어떠한 부분으로 구성되어 있는지, 각 영역은 어떠한 특성을 가지고 있는지 알아보자. [그림 5] 취약점 발생 부분 구조 첫째, [그림 5]의 왼쪽에 보이는 속성 부분이다. 취약점 유발에 핵심 역할을 하는 부분으로써, 아래 그림에서 보는 것처럼 DIV 속성 아래 img 링크와 자식 div 로 이루어져 있다. 여기서 DIV 는 HTML 문서의 특정 섹션을 하나의 컨테이너로 묶어주는 역할을 하는 기능을 갖고 있다. [그림 6] DIV 속성의 자세한 내용 4

DIV 내부를자세히들여다보면, id 가 imgtest 인부분이두가지인것을확인할수있다. 첫째로, 이미지링크의 id 가사용된다. 이이미지에링크된함수는바로힙스프레이를 유발하는 feng_shui_f() 함수이다. 둘째로, 외곽 div 내부의또다른 div 에 imgtest 가 사용된다. 해당 div 에서는 DOM 이벤트객체인 OnMouseOver 와 OnMouseOut 을 crash_f() 함수로이어주도록선언되어있다. 둘째, [ 그림 5] 의오른쪽부분에있는자바스크립트함수부분이다. 여기서는 MS12-037 취약점발생과깊은관련이있는함수위주로설명하도록한다. a) feng_shui_f() 이함수는힙스프레이를담당하는함수이다. 취약점이유발되면이함수를통해프로그램흐름이힙스프레이된코드로이동하게된다. 후에 [ 그림 7] 에보이는 0x1c1c1c0c 부분을변조해충돌을발생시켜공격기법분석을수행하도록하겠다. [ 그림 7] feng_shui_f 함수내용 이함수에서특이한점은 [ 그림 7] 의박스 (1) 에표시된 div.push 부분과, classname 을지정하는두부분으로추려낼수있다. ㄱ. 'divs.push(document.createelement('div'))' 부분은현재 div 에자식노드를 128 개 생성해주는데, 각각의자식노드는앞서 html 속성부분에서정의한 'div' 의속성을 가지고있다. ㄴ. divs[0~4] 배열의 ClassName 을앞에서임의로정의한태그로지정하는부분이다. 원래 divs[0].classname = vtable1; 하나만있어도무방하나, 공격성공률을높이기위해 4 개로지정된것으로판단된다. (2,3 번을지워도공격이먹힌다.) 5

b) crash_f() 와 trigger_f() crash_f() 함수는충돌을발생시키는부분으로자세한내용은공격기법에서설명하겠다. 한가지생각해야할부분은 eval() 함수의인자로 danger_id 를이용한다는사실이다. trigger_f() 함수는 DOM 을사용한것으로, 웹문서에포함된요소들을가져와특정행동을수행하는기능을포함하고있다. DOM 객체의종류에따라두가지방법으로이벤트를실행한다. W3C 와 IE 로구분하고있을뿐목적은이벤트를발생시켜취약점을발생시킬수있도록하는것이다. 자세한실행흐름은뒤에서설명하도록한다. [ 그림 8] Crash_f 와 trigger_f 함수내용 c) main_f() 메인함수는앞에서구성한힙스프레이코드 ( 그림 4) 를가져와실행하고, settimeout 함수를이용해 1 초가지난후 trigger_f 함수를실행시키도록작성되어있다. 이지연시간은공격코드가힙에스프레이되고난뒤에취약점이유발되도록하기위해의도적으로추가되었다. 6

2.2.2 공격 코드 실행 테스트환경 = 공격자 시스템 : BackTrack 5 R2 + Metasploit = 피해자 시스템 : Windows XP SP3 + Internet Explorer 8 가. Metasploit 모듈을 이용할 것이므로, 해당 모듈을 로드한 뒤 옵션을 설정해 준다. [그림 9] 옵션 설정 나. 모듈을 실행하면 다음과 같이 공격자 서버가 실행된다. [그림 10] 모듈을 실행 후 서버 가동 다. 피해자 서버에서 공격자 서버로 접속하면 피해자 브라우저에서는 오류가 발생하게 되고, 공격자 서버에서는 아래와 같은 절차와 함께 공격이 성공적으로 수행된다. [그림 11] 공격이 성공적으로 수행된 화면 라. [그림 11]과 같이 meterpreter 리버스 커넥션이 성공적으로 맺어지면 공격자는 피해자 시스템에서 별다른 제한 없이 Post-exploitation 공격을 수행할 수 있게 된다. 7

마. 피해자컴퓨터에서공격자서버로접속하면, 브라우저에서아무런증상이나타나지않는다. 하지만이는 Metasploit 에서취약점공격만을위해최소한의기능을가지도록제작된것으로, 실제공격에서는보다더정교한방법으로공격이이루어질수있다. 그예로, 만일공격자가정상웹페이지 ( 인터넷뉴스또는홈페이지 ) 에취약점공격코드를삽입할경우, 사용자는이를인지하지못한채로공격에노출될수있다. [ 그림 12] 공격성공후피해자측브라우저 ( 아무런증상이나타나지않음 ) 2.3. 공격기법분석 2.3.1 동적분석을통해공격흐름파악가. 공격이성공하면 Internet explorer 브라우저의자식프로세스로 notepad.exe 가실행되는데, 이는 metasploit 에서사용하는 Post-exploitation 도구인 meterpreter 가실행되고있는것으로키로깅, 원격조정, 파일업로드등강력한기능을제공한다. 자세한기능은관련문서를참고하길바라며, 이번문서에서는취약점유발원리를밝히는것에초점을맞추도록한다. [ 그림 13] 공격성공후프로세스상태 (Process Explorer 이용 ) 나. 우선공격자와피해자시스템간에주고받는데이터를확인해본다. Wireshark 로공격 시패킷을캡쳐한결과, [ 그림 14] 같이 TCP 세션이성립되고, http 요청이수행되는것을 확인한다. 8

[그림 14] Wireshark 로 캡쳐한 패킷 다. 공격이 인터넷 브라우저 상에서 발생하므로, http 패킷을 추려내어 확인한다. [그림 15] 에서 보듯이 두 시스템 간에 주고받은 http 패킷은 총 2 개이며, 요청과 응답 형태로 구성되어 있다. 피해자의 요청에 대한 공격자의 응답값이 취약점을 일으키는 핵심 코드로, 별도의 텍스트로 저장해 내용을 확인해 본다. [그림 15] Wireshark 를 이용해 http 응답값을 추출 라. 웹 페이지 내용 확인 결과, 공격 코드에서 분석한 것처럼 힙스프레이 코드와 취약점 유발 코드를 가지고 있는 것을 확인할 수 있다. [그림 16] 취약점 유발 웹페이지 내용 9

2.3.2 정적분석으로취약점발생원리탐색 가. 정확한취약점발생원리를확인하기위해디버거를이용해분석을수행한다. 우선 Ollydbg 를 Just-In-Time-debugging 모드로전환해충돌이발생하면자동으로 attach 되어디버깅을할수있도록설정한다. [ 그림 17] 디버거를 JIT 모드로변경 나. Paros 를이용해공격자서버에서보내는응답값을다음과같이변조하면인위적으로 충돌을발생시킬수있다. [ 그림 18] 요청값변조로충돌발생을유도 10

다. 충돌이 발생하면 디버거가 자동으로 attach 되면서 실행되고, 다음과 같이 문제가 되는 코드가 나타난다. [그림 11]에서 보듯이, EAX 안의 내용이 'BBBBBBBB' 로 설정이 되어있어서 MOV EDX, DWORD PTR DS:[EAX+70] 명령 수행을 시도할 때 충돌이 발생하게 된다. [그림 19] 충돌 발생 후 attach 된 디버거 모습 라. 원래 EAX 에 들어갔어야 할 주소는 'BBBBBBBB' 가 아니라 '1C1C1C7C(1C1C1C+70)' 가 된다. 요청값을 변조하지 않을 경우 프로그램 흐름이 어떻게 이동하는지 확인해 보기 위해 '1C1C1C7C' 의 내용을 확인해 본다. [그림 20] 1C1C1C 안에 채워진 내용을 확인 [그림 13]에서 보듯이, '1C1C1C7C' 부분은 공격 코드 중 ROP chain 부분임을 알 수 있다. ROP Chain 을 이용해 메모리 보호 기법을 다시 한 번(MSF 자체에서도 ROP 체인을 제공하고 있다.) 우회한 후, NOP slide 로 흐름을 이어간다. 그 뒤에, 아래 그림처럼 리버스 커넥션을 맺는 공격코드로 흐름이 이동하게 되어 공격이 성공적으로 수행된다. 11

[그림 21] 쉘코드 시작 부분과 이어져 있는 NOP Slide 마. 디버거의 스택 창을 확인하면, 마지막으로 실행된 모듈이 mshtml.dll 임을 확인할 수 있다. 즉, mshtml.dll 내부의 특정 매커니즘에 의해 취약점이 유발되었다는 것으로 추측할 수 있다. [그림 22] 스택에 마지막으로 실행된 부분 바. [그림 22]에서 보이는 스택의 마지막 실행 부분을 'Follow in Assembler' 명령을 수행하면 다음과 같이 취약점이 발생하는 'MOV EDX, DWORD PTR DS:[EAX+70]' 코드가 포함된 부분을 호출하는 코드를 추적해 볼 수 있다. 결정적으로 해당 호출 명령에 의해 취약점이 발생되지만, 근본적인 원인이 되는 메커니즘은 상세한 분석을 통해 검증해 볼 필요가 있다. [그림 23] 취약점 유발 코드를 호출하는 부분 12

사. 해당 취약점의 발생 원인을 찾기 위해 다음과 같은 두 가지 방법을 동시에 사용한다. a) 취약점은 mshtml.dll 모듈 안에서 발생한다. 그러므로 디버거에서 제공되는 기능을 이용해 새로운 모듈이 올라올 때 자동으로 브레이크 포인트가 걸리도록 설정하면 언젠간 mshtml.dll 이 올라오는 부분을 포착할 수 있다. [그림 24] 모듈 로드에 변화가 있을 때마다 브레이크 되도록 설정하는 화면 b) 모듈이 처음으로 실행되는 Entry Point 부분의 소스를 'CC'로 변경해 모듈이 처음 시작되는 부분에서 인터럽트가 발생해 프로그램 실행이 잠시 정지된다. [그림 25] 분석을 위해 임의로 EP 를 변조 아. [그림 24] 와 [그림 25]에서 사용한 방법을 통해 취약점을 발생시키면, 다음과 같이 mshtml.dll 모듈에 접근할 수 있게 된다. 모듈이 로드 되면 우선 앞서 변조했던 EP(Entry Point) 부분을 정상코드로 변환시킨다. [그림 26] EP 부분을 정상 코드로 재변환 13

자. [그림 23]에서 확인한 취약점 유발 코드로 가는 호출 명령 ( CALL mshtml.6363fcc4 ) 을 포함하는 함수의 시작점을 mshtml.dll 내부에서 찾아 브레이크 포인트를 걸어준다. ( sequence of commands 기능을 이용 ) [그림 27] 함수의 시작점을 찾기 위해 어셈블리 코드로 해당 지점 검색 [그림 28] 원하는 부분을 찾아 브레이크 포인트 설정 차. 브레이크 포인트(BP)를 건 뒤 프로그램을 재실행 시켜주면 우리가 지정한 BP 에 흐름이 멈추게 되고, 스택 창에서 코드 분석 시 보았던 'testfaild'라는 친숙한 단어를 발견할 수 있다. 반복적으로 F9(실행) 을 몇 차례 누르면 다음과 같이 스택에 취약점 유발 웹페이지에서 보았던 'id' 들이 보인다. mshtml.dll 모듈에서는 공격코드 분석에서 제시한 순서, 즉 웹페이지에 기록된 순서에 따라 'id'를 처리하는 것을 확인할 수 있다. [그림 29] 웹페이지에서 보았던 'id' 들을 스택에서 확인 14

카. 브레이크 포인트를 유지한 채로 프로그램을 계속 실행하다 보면 [그림 29] 처럼 스택 부분에서 앞서 처리된 id(testfaild) 부분들을 확인 가능하다. 분석을 반복적으로 진행하다 보면 아래 그림과 같은 순서로 id 값들이 처리된다. [그림 30] 스택에서 순차적으로 처리되는 id 속성 [그림 30]에서 주의를 기울어야 할 부분이 몇 가지 있다. 우선 'Navigator' 부분은 취약점 발생을 위한 관문 역할을 하는 부분으로, 이 부분을 진행하면 다음과 같이 새로운 환경 설정에 대한 안내가 나온다. [그림 31] Navigator 가 실행된 모습 [그림 31]처럼 'Ask me later' 버튼을 누른 뒤 특정 매커니즘에 의해 실질적인 취약점이 발생하게 된다. 하지만 여기서 중요한 점은 바로 그림 30 에서 볼 수 있는 회색 박스 안의 id 부분이다. 타. MS12-037 취약점은 Internet Explorer 에서 같은 ID 속성을 처리할 때 충돌이 발생하는 결함을 이용해 공격을 수행한다. 바로 [그림 30]의 회색부분이 바로 취약점 유발 부분인데, 만일 브레이크 포인트(BP)를 해제하지 않고, id 가 처리 되는 매커니즘을 하나씩 확인하려 시도하면 취약점이 발생되지 않는다. 그 이유는 같은 id 를 가지는 여러 객체가 동시에 불러져 와야 충돌이 발생하기 때문이다. 취약점 발생 원리를 그림으로 간단히 표현하면 다음과 같다. 15

[ 그림 32] 취약점발생개요도 a) main_f 함수 : 메인함수에서는힙스프레이를수행하고 1 초가지난후 trigger_f() 함수를호출한다. b) trigger_f : DOM 객체를처리하는부분이다. 공격코드에서는 W3C 와 IE 두가지 DOM 에대한처리를해주고있지만, 실질적으로 IE DOM 만사용되었다. (fireevent 함수는 IE DOM 에서작동하는함수이다.) c) FireEvent : 실질적으로취약점이발생하는부분이다. fireevent 가실행되는벡터는두가지가존재하는데하나는 crash_f() 함수를실행하는부분이고, 나머지하나는 feng_shui_f() 함수를실행하는부분이다. 두함수는모두 'imgtest' 라는 id 와연관이되어있는데, Internet Explorer 가 crash_f() 함수내부의 eval() 함수를이용해 imgtest 의속성을불러올때프로그램의흐름은 imgtest 라는 id 를가지는이미지또는 div 에접근할수있게된다 ([ 그림 6] 참고 ). 즉, fireevent 에서 crash_f() 로이동하거나, feng_shui_f() 로이동하게되는것이다. 만일흐름이 crash_f() 로이동한다고하더라도, 또다시 fireevent 의실행부분으로돌아오게되고 ([ 그림 32] 의 where to go 부분 ) 두갈림길에봉착하게된다. 그러다가언젠가는 feng_shui_f() 로흐름이이동해힙스프레이가뿌려진곳으로프로그램이이동하게되어쉘코드가실행되는원리이다 ( 공격코드실행시마다취약점이발생하는시간이조금씩다르다 ). 16

3. 결론 MS12-037 취약점은인터넷브라우저의 ID 속성처리매커니즘에존재하는결함을이용한취약점이다. 비록공개된다른취약점들에비해비교적패치가빨리이루어졌지만최근이슈가되고있는 XML 이나기타 JAVA 및 Flash 멀티미디어관련취약점과는다소다른유형으로다소특이한원리를가지고있다. 비록정확한코드분석을통한근본적인결함에는다가가지못했지만, 브라우저가 DOM 객체를처리하는과정에서취약점이발생할수있다는사실을확인했다는점에서시사하는바가크다. 문서내에존재하는모든객체를간편하게끌어다쓸수있는 DOM 기능은사용자에게편리성을제공해주는반면 MS12-037 과같은보안결함을유발할수있다는사실이이번분석문서를통해밝혀졌다. 17

4. 대응방안 MS12-037 은현재패치가완료된상태로, 자동업데이트를사용하는사용자는해당취약점에 대한위험요소를가지고있지않다. 만일업데이트를수동으로설정했거나, 운영체제를새롭게 설치한사용자라면보안업데이트를반드시적용해야한다. [ 그림 33] 윈도우업데이트설정화면 5. 참고자료 1. 참고문서 - DOM Scripting by Jeremy Keith 2. 참고사이트 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms764730(v=vs.85).aspx 18