codegate 2013 junior - music player exploit

26
뮤직 플레이어 Exploit 2013 CODEGATE JUNIOR 현성원(sweetchip) 서울대원고등학교 Blog : http://pgnsc.tistory.com Site : http://studyc.co.kr E-mail : [email protected] Facebook : https://fb.com/sweetchipp

Upload: sweetchip

Post on 26-Jul-2015

70 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Codegate 2013 Junior - Music Player Exploit

뮤직 플레이어 Exploit2013 CODEGATE JUNIOR

현성원(sweetchip) 서울대원고등학교Blog : http://pgnsc.tistory.comSite : http://studyc.co.krE-mail : [email protected] : https://fb.com/sweetchipp

Page 2: Codegate 2013 Junior - Music Player Exploit

Vulnerability시연자료 : http://codegate.studyc.co.kr시연자료 : http://codegate.studyc.co.kr

Page 3: Codegate 2013 Junior - Music Player Exploit

§ 보안취약점§ 하드웨어나소프트웨어의결함을이용하여사용자가허용이상의권한을획득하거나동작을가능하게하는약점

§ 취약점을이용하여권한탈취, 정보유출이가능하다§ 서버데몬의 0-Day를이용하여서버를다운, 권한탈취가가능하다§ 취약점을이용한 PDF, HWP파일을이용하여나도모르게해커에게해커에게권한을탈취당해, 자료를유출당했다.

Vulnerability§ 보안취약점§ 하드웨어나소프트웨어의결함을이용하여사용자가허용이상의권한을획득하거나동작을가능하게하는약점

§ 취약점을이용하여권한탈취, 정보유출이가능하다§ 서버데몬의 0-Day를이용하여서버를다운, 권한탈취가가능하다§ 취약점을이용한 PDF, HWP파일을이용하여나도모르게해커에게해커에게권한을탈취당해, 자료를유출당했다.

Page 4: Codegate 2013 Junior - Music Player Exploit

§ 프로그램에서데이터를저장할때개발자가정한크기의버퍼를사용한다.

§ 버퍼의용량보다더많은데이터할당시다른메모리영역까지침범하여오류를발생시킨다.

§ 버퍼오버플로우를이용하여다른메모리영역의데이터를바꿀수있으므로, 공격이가능하다.

§ 입력한값의길이를검사하는부분을추가한다면충분히방어가가능하다.

Windows Buffer Overflow§ 프로그램에서데이터를저장할때개발자가정한크기의버퍼를사용한다.

§ 버퍼의용량보다더많은데이터할당시다른메모리영역까지침범하여오류를발생시킨다.

§ 버퍼오버플로우를이용하여다른메모리영역의데이터를바꿀수있으므로, 공격이가능하다.

§ 입력한값의길이를검사하는부분을추가한다면충분히방어가가능하다.

Page 5: Codegate 2013 Junior - Music Player Exploit

§ Target : 뮤직플레이어

§ Buffer Overflow 취약점

§ ID3 Tag이용한 Exploit

시연§ Target : 뮤직플레이어

§ Buffer Overflow 취약점

§ ID3 Tag이용한 Exploit

Page 6: Codegate 2013 Junior - Music Player Exploit

§ ID3는 MP3 파일에서사용하는메타데이터포맷으로, 음악의제목, 음악가이름등의음악파일에관련된정보를담는다.

§ 로컬의 MP3 파일을불러올때 ID3를불러온다.

§ 출처 : http://ko.wikipedia.org/wiki/ID3

ID3 Tag?§ ID3는 MP3 파일에서사용하는메타데이터포맷으로, 음악의제목, 음악가이름등의음악파일에관련된정보를담는다.

§ 로컬의 MP3 파일을불러올때 ID3를불러온다.

§ 출처 : http://ko.wikipedia.org/wiki/ID3

Page 7: Codegate 2013 Junior - Music Player Exploit

§ 파일로딩시 ID3값의길이를검사하지않는문제점

§ 그러므로비정상적으로많은데이터주입가능

§ 결국버퍼오버플로우발생

Vuln?§ 파일로딩시 ID3값의길이를검사하지않는문제점

§ 그러므로비정상적으로많은데이터주입가능

§ 결국버퍼오버플로우발생

Page 8: Codegate 2013 Junior - Music Player Exploit

§ Python Script 사용

§ ID3 Tag + Nop * 8000000

§ iamcrasher.mp3 파일생성

§ 재생

취약점찾기§ Python Script 사용

§ ID3 Tag + Nop * 8000000

§ iamcrasher.mp3 파일생성

§ 재생

Page 9: Codegate 2013 Junior - Music Player Exploit

OllyDBG-국내에잘알려진도구-다양한플러그인지원-무료

Immunity DBG- OllyDBG와비슷한 UI- Python Script 지원- OllyDBG보다빠르다

취약점분석OllyDBG-국내에잘알려진도구-다양한플러그인지원-무료

Immunity DBG- OllyDBG와비슷한 UI- Python Script 지원- OllyDBG보다빠르다

Page 10: Codegate 2013 Junior - Music Player Exploit

§ 최신버전은 Themida 로실행압축되어있었다.

§ Unpack Script등을이용한다면언패킹이가능하다

§ 스크립트는일부버전만나와있으므로예전버전을구하기로했다.

§ 예전버전으로사용하여 Themida우회 없이분석이가능했다.

분석중문제.§ 최신버전은 Themida 로실행압축되어있었다.

§ Unpack Script등을이용한다면언패킹이가능하다

§ 스크립트는일부버전만나와있으므로예전버전을구하기로했다.

§ 예전버전으로사용하여 Themida우회 없이분석이가능했다.

Page 11: Codegate 2013 Junior - Music Player Exploit

Memory Protection

Page 12: Codegate 2013 Junior - Music Player Exploit

§ SafeSEH, DEP, ASLR중 SafeSeh와 DEP가 exe에걸려있는상태

§ ASLR은Windows Vista부터적용되는보호기법이므로 XP에선해당되지않는다.

§ DEP는 XP sp3 기준으로 Optin 옵션이다. [다음페이지에설명]

Memory Protection

§ SafeSEH, DEP, ASLR중 SafeSeh와 DEP가 exe에걸려있는상태

§ ASLR은Windows Vista부터적용되는보호기법이므로 XP에선해당되지않는다.

§ DEP는 XP sp3 기준으로 Optin 옵션이다. [다음페이지에설명]

Page 13: Codegate 2013 Junior - Music Player Exploit

§ Safe Seh는 SEH Overwrite 공격을막기위한 보호기법

§ SE Handler의값이올바르지않은값으로변조되었는지체크

§ 변조를확인하면프로그램을 종료한다.

§ EXE와로딩된모듈중, SafeSeh옵션이걸려있지않은모듈의 Pop/Pop/Ret이나 Call / Jmp dword ptr[ebp+n] 종류의명령어를이용한다면 우회가가능하다.

§ 간단하게찾아주는 Pvefindaddr 과 Mona 파이썬스크립트가있다.

Memory Protection - Safe Seh§ Safe Seh는 SEH Overwrite 공격을막기위한 보호기법

§ SE Handler의값이올바르지않은값으로변조되었는지체크

§ 변조를확인하면프로그램을 종료한다.

§ EXE와로딩된모듈중, SafeSeh옵션이걸려있지않은모듈의 Pop/Pop/Ret이나 Call / Jmp dword ptr[ebp+n] 종류의명령어를이용한다면 우회가가능하다.

§ 간단하게찾아주는 Pvefindaddr 과 Mona 파이썬스크립트가있다.

Page 14: Codegate 2013 Junior - Music Player Exploit

§ SEH [ Structured Exception Handler , 구조적예외처리]§ Pointer to next SEH record : 다음 SE Handler의주소§ SE Handler : 예외발생시이동할 Pointer.§ 프로그램에서 Exception 발생시처리하는역할§ 강제로예외를발생시키고 BOF공격으로 SE Handler를변조시킨다면 EIP변조가가능하다. 이를 SEH Overwite 기법이라고한다.

Memory Protection - SEH

§ SEH [ Structured Exception Handler , 구조적예외처리]§ Pointer to next SEH record : 다음 SE Handler의주소§ SE Handler : 예외발생시이동할 Pointer.§ 프로그램에서 Exception 발생시처리하는역할§ 강제로예외를발생시키고 BOF공격으로 SE Handler를변조시킨다면 EIP변조가가능하다. 이를 SEH Overwite 기법이라고한다.

Page 15: Codegate 2013 Junior - Music Player Exploit

§ DEP [Data Excution Prevention]§ 코드영역이외 Stack, Heap, Data Section의 Code Execution 금지§ 코드실행시 Exception 으로프로그램을종료§ Windows XP / SP3기준으로 DEP는 Optin이기본옵션이므로, 해당플레이어는 DEP의제약을받지않는다.

Memory Protection - DEP

§ DEP [Data Excution Prevention]§ 코드영역이외 Stack, Heap, Data Section의 Code Execution 금지§ 코드실행시 Exception 으로프로그램을종료§ Windows XP / SP3기준으로 DEP는 Optin이기본옵션이므로, 해당플레이어는 DEP의제약을받지않는다.

Page 16: Codegate 2013 Junior - Music Player Exploit

Memory Protection - ASLR

§ ASLR (Address Space Layout Randomization, 랜덤주소배치)§ 프로그램로딩또는부팅시배치되는주소가매번바뀌는보호기법§ 메모리주소를바뀌게해서효과적으로 BOF공격을방어§ Windows Vista 부터적용되는방어기법으로, XP에는해당사항이아님§ 사진은왼쪽부터 ASLR On / On / Off 상태이다.

Page 17: Codegate 2013 Junior - Music Player Exploit

§ 16진수로짜여진프로그램코드, 주로 Stack 영역에서실행§ Shellcode는 Backtrack 의 Metasploit 프로젝트를이용하여쉽게제작이가능하다.

§ 쉘코드를이용하여원격연결, 실행, 백도어포트개방등다양한명령을실행이가능하다.

§ 상황에따라인코딩이필요한경우도있다. 예를들어, _swprintf 는 \x00과 \xff가들어있는경우쉘코드가손상되므로저런문자가생기지않도록인코딩을하는것이중요하다.

§ 예제 -리눅스에서 /bin/sh를실행하는쉘코드\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80

Shell Code§ 16진수로짜여진프로그램코드, 주로 Stack 영역에서실행§ Shellcode는 Backtrack 의 Metasploit 프로젝트를이용하여쉽게제작이가능하다.

§ 쉘코드를이용하여원격연결, 실행, 백도어포트개방등다양한명령을실행이가능하다.

§ 상황에따라인코딩이필요한경우도있다. 예를들어, _swprintf 는 \x00과 \xff가들어있는경우쉘코드가손상되므로저런문자가생기지않도록인코딩을하는것이중요하다.

§ 예제 -리눅스에서 /bin/sh를실행하는쉘코드\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80

Page 18: Codegate 2013 Junior - Music Player Exploit

§ 2가지이상 ShellCode를이용한 Exploit을시연할예정이다.

§ 1. Exec Shellcode - CMD 나 Calc 를실행시킴

§ 2. Bind Shellcode - Victim의 Backdoor Port를개방

§ 3. Reverse Shellcode - Victim이 Hacker의 Server로연결

시연에사용할 Shellcode§ 2가지이상 ShellCode를이용한 Exploit을시연할예정이다.

§ 1. Exec Shellcode - CMD 나 Calc 를실행시킴

§ 2. Bind Shellcode - Victim의 Backdoor Port를개방

§ 3. Reverse Shellcode - Victim이 Hacker의 Server로연결

Page 19: Codegate 2013 Junior - Music Player Exploit

Shellcode - Exec Shellcode

Page 20: Codegate 2013 Junior - Music Player Exploit

§ Victim의 Backdoor 포트를여는쉘코드

§ 실제로쉘코드를실행하면왼쪽과같이4444포트로포트가개방됨

§ 포트를여는과정에서방화벽이나안티바이러스등블로킹을당할수있는단점

Shellcode - Bind Shellcode§ Victim의 Backdoor 포트를여는쉘코드

§ 실제로쉘코드를실행하면왼쪽과같이4444포트로포트가개방됨

§ 포트를여는과정에서방화벽이나안티바이러스등블로킹을당할수있는단점

Page 21: Codegate 2013 Junior - Music Player Exploit

Shellcode - Reverse Shellcode

§ Bind Shellcode 와는반대로 Victim 이 Server에역으로접속§ Bind에비해방화벽이나안티바이러스에블로킹당할확률이낮다§ Victim의 IP를몰라도된다.

Page 22: Codegate 2013 Junior - Music Player Exploit

§ BOF이후의 Stack의상태를예상한다.§ SEH를변조하기위해 Fack Handler삽입한상태

§ Fake Handler에의해 0x00280b0b 로이동

§ 이동후 Call ebp+30 에의해 short jump의주소로이동 [스택에진입]

§ 약 0x12 Byte 만큼점프후 padding진입§ padding[\x90]와 Shellcode실행§ GOT SHELL

Payload 구성§ BOF이후의 Stack의상태를예상한다.§ SEH를변조하기위해 Fack Handler삽입한상태

§ Fake Handler에의해 0x00280b0b 로이동

§ 이동후 Call ebp+30 에의해 short jump의주소로이동 [스택에진입]

§ 약 0x12 Byte 만큼점프후 padding진입§ padding[\x90]와 Shellcode실행§ GOT SHELL

Page 23: Codegate 2013 Junior - Music Player Exploit

§ 사진은 Python으로제작된 exploit

§ 모은정보를이용하여 Exploit을작성.

§ GOT SHELL :D

Exploit 구성§ 사진은 Python으로제작된 exploit

§ 모은정보를이용하여 Exploit을작성.

§ GOT SHELL :D

Page 24: Codegate 2013 Junior - Music Player Exploit

EXPLOITEXPLOIT

Page 25: Codegate 2013 Junior - Music Player Exploit

Questions?Questions?

Page 26: Codegate 2013 Junior - Music Player Exploit

뮤직 플레이어 Exploit2013 CODEGATE JUNIOR

Thank you!

현성원(sweetchip) 서울대원고등학교Blog : http://pgnsc.tistory.comSite : http://studyc.co.krE-mail : [email protected] : https://fb.com/sweetchipp