[Threat Analysis] IE 제로데이 공격, 국내에서도 발견!
| 2012 년 09 월 22 일 마이크로소프트(Microsoft, 이하 MS)사는 인터넷 익스플로러(Internet Explorer, 이하 IE)의 제로데이 취약점이었던 CVE-2012-4969를 해결하기 위한 비정기 긴급(Critical) 보안 업데이트(MS12-063)를 발표했다. 실제로 국내•외에서 해당 취약점을 이용한 공격 코드가 발견되었고, MS는 해당 취약점의 위험도를 ‘높음’으로 규정했다. IE는 국내에서 가장 많이 이용되고 있는 웹 브라우저인 만큼 관련 보안 업데이트를 적용하지 않은 다수의 사용자들에 대한 피해가 우려되고 있다. 특히 이 같은 브라우저 취약점이 웹 공격 툴킷(Web Exploit Toolkit)과 같은 공격 패키지에 업데이트되어 지속적으로 악용되고 있다는 점이 심각한 문제로 지적되고 있다. 이에 CVE-2012-4969를 이용한 실제 공격 사례 분석을 통해 취약점의 원인과 대처 방안을 살펴본다. |
MS는 2012년 9월 22일 배포한 보안 업데이트(MS12-063)를 통해 CVE-2012-4969 취약점을 원격 코드 실행 취약점으로 분류했다. MS에 따르면 해당 취약점을 이용한 공격이 성공한 경우, 공격자는 해당 시스템을 완전히 제어할 수 있게 되어 프로그램을 설치하거나 데이터를 탈취 또는 변조 및 삭제가 가능하다. IE를 기본 브라우저로 이용하는 사용자들은 취약점을 악용한 공격을 받을 위험성이 높다.
|
CVE-2012-4969 취약점 관련 MS 보안 업데이트(2012.09.22)
• MS Bulletin Info : • CVE Number : CVE-2012-4969 |
안랩 시큐리티대응센터(이하 ASEC)에서는 해당 취약점에 대한 위험성을 [표 1]과 같이 구분했다.
| 구분 | 위험성 | 상세 내용 |
| 대중성 | 중/상 | IE는 현재 가장 대중적으로 사용되는 브라우저임. |
| 코드 실행 | 높음 | 취약점은 IE 7/IE 8/IE 9 버전에 모두 발생하지만, OS 및 브라우저 상의 보안기능에 따라 코드실행에 제약을 받을 수 있음. |
| 공격 가능성 | 높음 | 일반적으로 방화벽 정책에서 80/TCP 등의 웹 정책은 모두 오픈되어 있음. 브라우저 취약점은 웹 공격 툴킷(Web Exploit Toolkit)에서 지속적으로 사용됨. |
| 공격 사례 | 있음 | 국내 모 정당 홈페이지 침해사고, 해외 사이트 침해사고에서 취약점 사용 발견됨. |
[표 1] CVE-2012-4969 취약점의 위험성
CVE-2012-4969 취약점 원인 및 분석
CVE-2012-4969 취약점은 IE의 execCommand 함수 상에서 발생하는 User-After-Free(메모리 해제 후 사용) 취약점이다. IE의 execCommand 함수는 command 이벤트를 실행할 때 AddCommandTarget 함수에 의해 CMshtmlEd 오브젝트를 할당하고 mshtml@CMshtmlEd::Exec() 함수를 실행한다. 그러나, exeCommand 함수가 이벤트를 추가한 후에 곧바로 해당 이벤트가 트리거(trigger)되고, 이벤트에 등록된 함수가 호출된다. 이때 등록된 함수 내부에 존재하는 html을 덮어쓰는 document.write(“L”) 코드가 실행되면서 ml!CHTMLEditor::DeleteCommandTarget이 호출되고, 그 함수 안에서 CMshtmlEd 객체가 해제된다. 따라서 이미 해제된 CMshtmlEd 객체에 대해 mshtml!CMshtmlEd::Exec 함수를 실행하게 되어 ‘used-after-free’ 취약점이 발생하게 되는 것이다.
• 취약점 발생 함수: mshtml@CMshtmlEd::Exec()
• 취약점 종류: used-after-free

[그림 1] CVE-2012-4969 취약점 POC 코드
위의 취약점 코드를 실행하면, [그림 2]와 같이 mshtml!CMshtmlEd::Exec 함수 안에서 잘못된 메모리 참조가 발생한다. 이 때, 공격자가 적절한 주소 값(0c0c0c0c)을 입력하는 경우 프로그램의 실행 흐름을 공격자가 원하는 코드로 임의 변경할 수 있다.

[그림 2] 취약점 발생 지점
실제 사례 분석을 통한 공격 코드 및 공격 방식
실제로 CVE-2012-4969 취약점을 이용한 공격 사례가 국내•외에서 발견되었으며, 이때 사용된 공격 코드와 공격 대상은 [표 2]와 같다.
| 사례 | 구조 | 사용된 파일 | 공격 대상 | |
| 운영체제 | 브라우저 | |||
| 해외 사례 | 취약점 코드 + 플래시(셸코드) | Exploit.html Moh2010.swf Eternalian.html |
Windows XP | IE 7/IE 8 |
| 국내 사례 | 취약점 코드 + 자바스크립트(셸코드) | IF.html k***joor.htm iframe.html |
Windows XP | IE 7/IE 8 |
[표 2] CVE-2012-4969 취약점 공격 코드 사례
■ 사례 1: 해외 침해사례

[그림 3] 해외 침해사례의 공격코드 전체 구조
해외에서 발견된 CVE-2012-4969 취약점 이용사례에서는 취약점 발생을 위해 Exploit.html, Eternalian.html 파일이 사용되었다. 각각의 코드는 [그림 4]와 같다.

[그림 4] 해외 침해사례의 취약점 발생코드
해당 해외 사례에서는 특이하게 플래시(Flash) 파일인 Moh2010.swf 파일이 사용되었다. 해당 플래시 파일 안에는 [그림 5]와 같이 내부에 셸코드를 실행하기 위한 Heap_Spray 코드와 취약점 발생코드가 담긴 외부 HTML(Eternalian.html) 호출 코드가 포함되어 있다. 또한, Windows XP일 경우에만 Heap_Spray 코드가 실행되도록 구현되어 있다.

[그림 5] 해외 침해사례의 플래시 파일
셸코드 분석 결과, 특정 URL(www.nod[생략]de.com/test.exe)로부터 악성코드를 다운로드한 후 실행한다. [그림 6]은 취약점 발생 시 셸코드가 성공적으로 실행되었을 때 악성코드가 다운로드되는 트래픽이다.

[그림 6] 셸코드 실행 성공 시 발생하는 트래픽
■ 사례 2: 국내 침해사례(모 정당 홈페이지)

[그림 7] 국내 침해사례(모 정당 홈페이지)의 공격코드 전체 구조
국내에서 발견된 CVE-2012-4969 취약점 이용 침해사례에서는 취약점 발생에 K***joor.html, iframe. html 파일이 사용되었다. 각각의 코드는 [그림 8]과 같다.

[그림 8] 국내 침해사례(모 정당 홈페이지)의 취약점 발생코드
국내 침해사례에서는 자바스크립트를 이용하여 셸코드 실행을 위한 Heap_Spray 코드를 구현했다. 포함된 셸코드는 특정 URL(www.nko[생략].or.kr/html/inst.cab)로부터 악성코드를 다운로드하여 실행하는 구조로 되어 있다.
CVE-2012-4969 취약점 대상 및 조치
MS에서 발표한 CVE-2012-4969 취약점에 영향을 받는 운영체제 및 브라우저 버전은 [표 3]과 같으며, ASEC은 실제 공격사례에서 사용된 코드를 이용한 자체 테스트 결과, 해당 취약점의 대상을 [표 4]와 같이 상세하게 구분했다.
| 운영체제 | 브라우저 |
| Windows XP Windows Server 2003 Windows Vista Windows Server 2008 Windows 7 Windows Server 2008 R2 |
IE 6 |
[표 3] CVE-2012-4969 취약점 대상(MS 보안 업데이트)
| 공격코드 | 운영체제 | 브라우저 | 실행여부 |
| 취약점 발생 | Windows XP SP3 / Windows 7 SP1 | IE 7/IE 8/IE 9 | O |
| 공격코드 사례 (Flash 사용) |
Windows XP SP3 | IE 7/IE 8 | O |
| 공격코드 사례 (JavaScript 사용) |
Windows XP SP3/ Windows 7 SP1(단, Windows 7의 경우, 올바른 ROP 주소사용필요) |
IE 7/IE 8 | O |
[표 4] CVE-2012-4969 취약점 대상 상세 분석 결과(ASEC 자체 테스트)
MS는 2012년 9월 22일 IE 관련 보안 업데이트(MS12-063)를 발표하고 사용자들의 즉각적인 보안 업데이트 적용을 촉구했다. 해당 보안 업데이트 적용여부는 윈도우(Windows) 7 기준으로, 제어판 → 프로그램 → 프로그램 및 기능 → 업데이트 설치([그림 9])를 통해 손쉽게 확인할 수 있다.

[그림 9] 패치 파일이 설치된 상태
만일, [그림 9]와 같이 KB2744842에 대한 보안 업데이트 항목이 보이지 않는다면, 다음의 MS 보안 게시판의 내용을 참고하여 해당 보안 업데이트를 적용해야 한다.
| MS 보안 업데이트 인터넷 익스플로러 누적 보안 업데이트(KB2744842) http://technet.microsoft.com/en-us/security/bulletin/ms12-063 |
안랩은 해당 취약점 분석을 통해 즉각적으로 자사 통합 네트워크 보안 솔루션 트러스가드(AhnLab TrusGuard)에 아래와 같은 탐지 및 차단 시그니처를 적용했다.
• AhnLab TrusGuard 시그니처 :
[2012-09-19] ms_ie_execcommand_exploit(CVE-2012-4969) 시그니처 배포
[2012-09-11] javascript_malicious_heap_spray-4(HTTP) GEN 시그니처 배포
MS는 지난 3분기에만 총 21건의 보안 업데이트를 발표했다. 그 중 취약점과 관련된 보안 업데이트가 전체의 48%를 차지했다. 특히, IE 관련 취약점이 매달 1건씩 발표되고 있어 그 어느 때 보다 IE 관련 위협이 증가하고 있다고 볼 수 있다. 앞서 사례를 통해 살펴본 바와 같이 국내에서도 MS12-063(CVE-2012-4969) 취약점을 악용한 악성코드 공격이 발견된 바 있어 즉각적인 관련 보안 업데이트 적용은 물론, IE 사용자들의 지속적인 주의가 요구된다.@
※ 참고
• Emerging Threats(snort) 시그니처
snort-2.8.4: ET CURRENT_EVENTS Internet Explorer execCommand function Use after free Vulnerability 0day Metasploit (SID: 2015712)
http://rules.emergingthreats.net/open/snort-2.8.4/rules/emerging-current_events.rules
• Metasploit(Pen-test) 코드
http://www.metasploit.com/modules/exploit/windows/browser/ie_execcommand_uaf
- AhnLabA-FIRST 심선영 책임 연구원