SlideShare a Scribd company logo
1 of 26
Download to read offline
뮤직 플레이어 Exploit
2013 CODEGATE JUNIOR
현성원(sweetchip) 서울대원고등학교
Blog : http://pgnsc.tistory.com
Site : http://studyc.co.kr
E-mail : sweetchip@studyc.co.kr
Facebook : https://fb.com/sweetchipp
Vulnerability
시연 자료 : http://codegate.studyc.co.kr시연 자료 : http://codegate.studyc.co.kr
§ 보안 취약점
§ 하드웨어나 소프트웨어의 결함을 이용하여 사용자가 허용이상의 권한
을 획득 하거나 동작을 가능하게 하는 약점
§ 취약점을 이용하여 권한탈취, 정보유출이 가능하다
§ 서버 데몬의 0-Day를 이용하여 서버를 다운, 권한탈취가 가능하다
§ 취약점을 이용한 PDF, HWP파일을 이용하여 나도 모르게 해커에게 해
커에게 권한을 탈취 당해, 자료를 유출당했다.
Vulnerability
§ 보안 취약점
§ 하드웨어나 소프트웨어의 결함을 이용하여 사용자가 허용이상의 권한
을 획득 하거나 동작을 가능하게 하는 약점
§ 취약점을 이용하여 권한탈취, 정보유출이 가능하다
§ 서버 데몬의 0-Day를 이용하여 서버를 다운, 권한탈취가 가능하다
§ 취약점을 이용한 PDF, HWP파일을 이용하여 나도 모르게 해커에게 해
커에게 권한을 탈취 당해, 자료를 유출당했다.
§ 프로그램에서 데이터를 저장할때 개발자가 정한 크기의 버퍼를 사용한다.
§ 버퍼의 용량보다 더 많은 데이터 할당시 다른 메모리영역 까지 침범하여 오류
를 발생시킨다.
§ 버퍼 오버플로우를 이용하여 다른 메모리 영역의 데이터를 바꿀수 있으므로,
공격이 가능하다.
§ 입력한 값의 길이를 검사하는 부분을 추가한다면 충분히 방어가 가능하다.
Windows Buffer Overflow
§ 프로그램에서 데이터를 저장할때 개발자가 정한 크기의 버퍼를 사용한다.
§ 버퍼의 용량보다 더 많은 데이터 할당시 다른 메모리영역 까지 침범하여 오류
를 발생시킨다.
§ 버퍼 오버플로우를 이용하여 다른 메모리 영역의 데이터를 바꿀수 있으므로,
공격이 가능하다.
§ 입력한 값의 길이를 검사하는 부분을 추가한다면 충분히 방어가 가능하다.
§ Target : 뮤직 플레이어
§ Buffer Overflow 취약점
§ ID3 Tag 이용한 Exploit
시연
§ Target : 뮤직 플레이어
§ Buffer Overflow 취약점
§ ID3 Tag 이용한 Exploit
§ ID3는 MP3 파일에서 사용하는 메타
데이터 포맷으로, 음악의 제목, 음악
가 이름등의 음악 파일에 관련된 정
보를 담는다.
§ 로컬의 MP3 파일을 불러올때 ID3를
불러온다.
§ 출처 : http://ko.wikipedia.org/wiki/ID3
ID3 Tag?
§ ID3는 MP3 파일에서 사용하는 메타
데이터 포맷으로, 음악의 제목, 음악
가 이름등의 음악 파일에 관련된 정
보를 담는다.
§ 로컬의 MP3 파일을 불러올때 ID3를
불러온다.
§ 출처 : http://ko.wikipedia.org/wiki/ID3
§ 파일 로딩시 ID3 값의 길이
를 검사하지 않는 문제점
§ 그러므로 비정상적으로 많은
데이터 주입 가능
§ 결국 버퍼오버플로우 발생
Vuln?
§ 파일 로딩시 ID3 값의 길이
를 검사하지 않는 문제점
§ 그러므로 비정상적으로 많은
데이터 주입 가능
§ 결국 버퍼오버플로우 발생
§ Python Script 사용
§ ID3 Tag + Nop * 8000000
§ iamcrasher.mp3 파일 생성
§ 재생
취약점 찾기
§ Python Script 사용
§ ID3 Tag + Nop * 8000000
§ iamcrasher.mp3 파일 생성
§ 재생
OllyDBG
- 국내에 잘 알려진 도구
- 다양한 플러그인 지원
- 무료
Immunity DBG
- OllyDBG와 비슷한 UI
- Python Script 지원
- OllyDBG보다 빠르다
취약점 분석
OllyDBG
- 국내에 잘 알려진 도구
- 다양한 플러그인 지원
- 무료
Immunity DBG
- OllyDBG와 비슷한 UI
- Python Script 지원
- OllyDBG보다 빠르다
§ 최신 버전은 Themida 로 실행압축 되어있었다.
§ Unpack Script등을 이용한다면 언패킹이 가능하다
§ 스크립트는 일부 버전만 나와있으므로 예전 버전을 구하기로 했다.
§ 예전 버전으로 사용하여 Themida 우회 없이 분석이 가능했다.
분석중 문제.
§ 최신 버전은 Themida 로 실행압축 되어있었다.
§ Unpack Script등을 이용한다면 언패킹이 가능하다
§ 스크립트는 일부 버전만 나와있으므로 예전 버전을 구하기로 했다.
§ 예전 버전으로 사용하여 Themida 우회 없이 분석이 가능했다.
Memory Protection
§ 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 옵션이다. [다음 페이지에 설명]
§ 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 파이썬 스크립트가 있다.
§ 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 기법이라고 한다.
§ 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의 제약을 받지 않는다.
Memory Protection - ASLR
§ ASLR (Address Space Layout Randomization, 랜덤 주소 배치)
§ 프로그램 로딩 또는 부팅시 배치되는 주소가 매번 바뀌는 보호기법
§ 메모리 주소를 바뀌게 해서 효과적으로 BOF 공격을 방어
§ Windows Vista 부터 적용되는 방어기법으로, XP에는 해당사항이 아님
§ 사진은 왼쪽부터 ASLR On / On / Off 상태이다.
§ 16진수로 짜여진 프로그램 코드, 주로 Stack 영역에서 실행
§ Shellcode는 Backtrack 의 Metasploit 프로젝트를 이용하여 쉽게 제작
이 가능하다.
§ 쉘코드를 이용하여 원격연결, 실행, 백도어 포트개방등 다양한 명령을
실행이 가능하다.
§ 상황에 따라 인코딩이 필요한 경우도 있다. 예를들어, _swprintf 는 x00
과 xff가 들어있는경우 쉘코드가 손상되므로 저런 문자가 생기지 않도
록 인코딩을 하는것이 중요하다.
§ 예제 - 리눅스에서 /bin/sh를 실행하는 쉘코드
x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80
Shell Code
§ 16진수로 짜여진 프로그램 코드, 주로 Stack 영역에서 실행
§ Shellcode는 Backtrack 의 Metasploit 프로젝트를 이용하여 쉽게 제작
이 가능하다.
§ 쉘코드를 이용하여 원격연결, 실행, 백도어 포트개방등 다양한 명령을
실행이 가능하다.
§ 상황에 따라 인코딩이 필요한 경우도 있다. 예를들어, _swprintf 는 x00
과 xff가 들어있는경우 쉘코드가 손상되므로 저런 문자가 생기지 않도
록 인코딩을 하는것이 중요하다.
§ 예제 - 리눅스에서 /bin/sh를 실행하는 쉘코드
x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80
§ 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로 연결
Shellcode - Exec Shellcode
§ Victim의 Backdoor 포트를 여는 쉘코드
§ 실제로 쉘코드를 실행하면 왼쪽과 같이
4444포트로 포트가 개방됨
§ 포트를 여는 과정에서 방화벽이나 안티바
이러스등 블로킹을 당할수 있는 단점
Shellcode - Bind Shellcode
§ Victim의 Backdoor 포트를 여는 쉘코드
§ 실제로 쉘코드를 실행하면 왼쪽과 같이
4444포트로 포트가 개방됨
§ 포트를 여는 과정에서 방화벽이나 안티바
이러스등 블로킹을 당할수 있는 단점
Shellcode - Reverse Shellcode
§ Bind Shellcode 와는 반대로 Victim 이 Server에 역으로 접속
§ Bind 에 비해 방화벽이나 안티바이러스에 블로킹 당할 확률이 낮다
§ Victim의 IP를 몰라도 된다.
§ 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
§ 사진은 Python으로 제작된 exploit
§ 모은 정보를 이용하여 Exploit을 작성.
§ GOT SHELL :D
Exploit 구성
§ 사진은 Python으로 제작된 exploit
§ 모은 정보를 이용하여 Exploit을 작성.
§ GOT SHELL :D
EXPLOITEXPLOIT
Questions?Questions?
뮤직 플레이어 Exploit
2013 CODEGATE JUNIOR
Thank you!
현성원(sweetchip) 서울대원고등학교
Blog : http://pgnsc.tistory.com
Site : http://studyc.co.kr
E-mail : sweetchip@studyc.co.kr
Facebook : https://fb.com/sweetchipp

More Related Content

What's hot

What's hot (9)

졸업후 취업까지.ssul
졸업후 취업까지.ssul졸업후 취업까지.ssul
졸업후 취업까지.ssul
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
 
해킹 대회 리뷰 및 실전 해킹
해킹 대회 리뷰 및 실전 해킹해킹 대회 리뷰 및 실전 해킹
해킹 대회 리뷰 및 실전 해킹
 
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
 
CTF WEB Back_END 개발기
CTF WEB Back_END 개발기CTF WEB Back_END 개발기
CTF WEB Back_END 개발기
 
02.모의해킹전문가되기
02.모의해킹전문가되기02.모의해킹전문가되기
02.모의해킹전문가되기
 
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템 메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
 
프로세스 방어
프로세스 방어프로세스 방어
프로세스 방어
 
모바일 게임 보안
모바일 게임 보안모바일 게임 보안
모바일 게임 보안
 

Viewers also liked

Software Security - Vulnerability&Attack
Software Security - Vulnerability&AttackSoftware Security - Vulnerability&Attack
Software Security - Vulnerability&Attack
Emanuela Boroș
 
Web vulnerability seminar3
Web vulnerability seminar3Web vulnerability seminar3
Web vulnerability seminar3
Sakuya Izayoi
 
Web vulnerability seminar1
Web vulnerability seminar1Web vulnerability seminar1
Web vulnerability seminar1
Sakuya Izayoi
 
취약점(Vulnerability) db 구조 설명
취약점(Vulnerability) db 구조 설명취약점(Vulnerability) db 구조 설명
취약점(Vulnerability) db 구조 설명
eungjin cho
 
MBFuzzer : MITM Fuzzing for Mobile Applications
MBFuzzer : MITM Fuzzing for Mobile ApplicationsMBFuzzer : MITM Fuzzing for Mobile Applications
MBFuzzer : MITM Fuzzing for Mobile Applications
Fatih Ozavci
 
EZ KEY_EZ
EZ KEY_EZEZ KEY_EZ
EZ KEY_EZ
Jaesung Lee
 

Viewers also liked (20)

Web vulnerability seminar4
Web vulnerability seminar4Web vulnerability seminar4
Web vulnerability seminar4
 
Codegate 2014 - Bug Hunting Challenge [Track0]
Codegate 2014 - Bug Hunting Challenge [Track0]Codegate 2014 - Bug Hunting Challenge [Track0]
Codegate 2014 - Bug Hunting Challenge [Track0]
 
Variables and constants
Variables and constantsVariables and constants
Variables and constants
 
Software Security - Vulnerability&Attack
Software Security - Vulnerability&AttackSoftware Security - Vulnerability&Attack
Software Security - Vulnerability&Attack
 
Web vulnerability seminar3
Web vulnerability seminar3Web vulnerability seminar3
Web vulnerability seminar3
 
How to find_vulnerability_in_software
How to find_vulnerability_in_softwareHow to find_vulnerability_in_software
How to find_vulnerability_in_software
 
[2007 CodeEngn Conference 01] amesianx - Art of Hooking
[2007 CodeEngn Conference 01] amesianx - Art of Hooking[2007 CodeEngn Conference 01] amesianx - Art of Hooking
[2007 CodeEngn Conference 01] amesianx - Art of Hooking
 
Fuzzing sucks!
Fuzzing sucks!Fuzzing sucks!
Fuzzing sucks!
 
Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015
Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015
Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015
 
Web vulnerability seminar1
Web vulnerability seminar1Web vulnerability seminar1
Web vulnerability seminar1
 
취약점(Vulnerability) db 구조 설명
취약점(Vulnerability) db 구조 설명취약점(Vulnerability) db 구조 설명
취약점(Vulnerability) db 구조 설명
 
MBFuzzer : MITM Fuzzing for Mobile Applications
MBFuzzer : MITM Fuzzing for Mobile ApplicationsMBFuzzer : MITM Fuzzing for Mobile Applications
MBFuzzer : MITM Fuzzing for Mobile Applications
 
Web vulnerability seminar2
Web vulnerability seminar2Web vulnerability seminar2
Web vulnerability seminar2
 
0-knowledge fuzzing
0-knowledge fuzzing0-knowledge fuzzing
0-knowledge fuzzing
 
Fuzzing underestimated method of finding hidden bugs
Fuzzing underestimated method of finding hidden bugsFuzzing underestimated method of finding hidden bugs
Fuzzing underestimated method of finding hidden bugs
 
EZ KEY_EZ
EZ KEY_EZEZ KEY_EZ
EZ KEY_EZ
 
2016 sua 발표스터디 이찬우
2016 sua 발표스터디 이찬우2016 sua 발표스터디 이찬우
2016 sua 발표스터디 이찬우
 
BoB 정보보안_인력양성_아이디어_공모전_ssim
BoB 정보보안_인력양성_아이디어_공모전_ssimBoB 정보보안_인력양성_아이디어_공모전_ssim
BoB 정보보안_인력양성_아이디어_공모전_ssim
 
개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지
 
초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인
 

Similar to Codegate 2013 Junior - Music Player Exploit

Memory corruption stack
Memory corruption stackMemory corruption stack
Memory corruption stack
codevania
 
안드로이드 악성코드의 철학적_연구_padocon_조효제
안드로이드 악성코드의 철학적_연구_padocon_조효제안드로이드 악성코드의 철학적_연구_padocon_조효제
안드로이드 악성코드의 철학적_연구_padocon_조효제
Hyoje Jo
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
종인 전
 

Similar to Codegate 2013 Junior - Music Player Exploit (20)

Memory corruption stack
Memory corruption stackMemory corruption stack
Memory corruption stack
 
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
 
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
 
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
 
Windows reversing study_basic_1
Windows reversing study_basic_1Windows reversing study_basic_1
Windows reversing study_basic_1
 
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
 
암호화 기초
암호화 기초암호화 기초
암호화 기초
 
안드로이드 악성코드의 철학적_연구_padocon_조효제
안드로이드 악성코드의 철학적_연구_padocon_조효제안드로이드 악성코드의 철학적_연구_padocon_조효제
안드로이드 악성코드의 철학적_연구_padocon_조효제
 
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 
파이썬 소개
파이썬 소개 파이썬 소개
파이썬 소개
 
Network researching
Network researchingNetwork researching
Network researching
 
보안프로젝트 세미나 Viper-v1.2
보안프로젝트 세미나 Viper-v1.2보안프로젝트 세미나 Viper-v1.2
보안프로젝트 세미나 Viper-v1.2
 
Project turtle ship
Project turtle shipProject turtle ship
Project turtle ship
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
 
(120128) #fitalk android forensics 101
(120128) #fitalk   android forensics 101(120128) #fitalk   android forensics 101
(120128) #fitalk android forensics 101
 
랜섬웨어 엔딩 #2016 1Q
랜섬웨어 엔딩 #2016 1Q랜섬웨어 엔딩 #2016 1Q
랜섬웨어 엔딩 #2016 1Q
 
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
 
암호화 이것만 알면 된다.
암호화 이것만 알면 된다.암호화 이것만 알면 된다.
암호화 이것만 알면 된다.
 

Codegate 2013 Junior - Music Player Exploit

  • 1. 뮤직 플레이어 Exploit 2013 CODEGATE JUNIOR 현성원(sweetchip) 서울대원고등학교 Blog : http://pgnsc.tistory.com Site : http://studyc.co.kr E-mail : sweetchip@studyc.co.kr Facebook : https://fb.com/sweetchipp
  • 2. Vulnerability 시연 자료 : http://codegate.studyc.co.kr시연 자료 : http://codegate.studyc.co.kr
  • 3. § 보안 취약점 § 하드웨어나 소프트웨어의 결함을 이용하여 사용자가 허용이상의 권한 을 획득 하거나 동작을 가능하게 하는 약점 § 취약점을 이용하여 권한탈취, 정보유출이 가능하다 § 서버 데몬의 0-Day를 이용하여 서버를 다운, 권한탈취가 가능하다 § 취약점을 이용한 PDF, HWP파일을 이용하여 나도 모르게 해커에게 해 커에게 권한을 탈취 당해, 자료를 유출당했다. Vulnerability § 보안 취약점 § 하드웨어나 소프트웨어의 결함을 이용하여 사용자가 허용이상의 권한 을 획득 하거나 동작을 가능하게 하는 약점 § 취약점을 이용하여 권한탈취, 정보유출이 가능하다 § 서버 데몬의 0-Day를 이용하여 서버를 다운, 권한탈취가 가능하다 § 취약점을 이용한 PDF, HWP파일을 이용하여 나도 모르게 해커에게 해 커에게 권한을 탈취 당해, 자료를 유출당했다.
  • 4. § 프로그램에서 데이터를 저장할때 개발자가 정한 크기의 버퍼를 사용한다. § 버퍼의 용량보다 더 많은 데이터 할당시 다른 메모리영역 까지 침범하여 오류 를 발생시킨다. § 버퍼 오버플로우를 이용하여 다른 메모리 영역의 데이터를 바꿀수 있으므로, 공격이 가능하다. § 입력한 값의 길이를 검사하는 부분을 추가한다면 충분히 방어가 가능하다. Windows Buffer Overflow § 프로그램에서 데이터를 저장할때 개발자가 정한 크기의 버퍼를 사용한다. § 버퍼의 용량보다 더 많은 데이터 할당시 다른 메모리영역 까지 침범하여 오류 를 발생시킨다. § 버퍼 오버플로우를 이용하여 다른 메모리 영역의 데이터를 바꿀수 있으므로, 공격이 가능하다. § 입력한 값의 길이를 검사하는 부분을 추가한다면 충분히 방어가 가능하다.
  • 5. § Target : 뮤직 플레이어 § Buffer Overflow 취약점 § ID3 Tag 이용한 Exploit 시연 § Target : 뮤직 플레이어 § Buffer Overflow 취약점 § ID3 Tag 이용한 Exploit
  • 6. § ID3는 MP3 파일에서 사용하는 메타 데이터 포맷으로, 음악의 제목, 음악 가 이름등의 음악 파일에 관련된 정 보를 담는다. § 로컬의 MP3 파일을 불러올때 ID3를 불러온다. § 출처 : http://ko.wikipedia.org/wiki/ID3 ID3 Tag? § ID3는 MP3 파일에서 사용하는 메타 데이터 포맷으로, 음악의 제목, 음악 가 이름등의 음악 파일에 관련된 정 보를 담는다. § 로컬의 MP3 파일을 불러올때 ID3를 불러온다. § 출처 : http://ko.wikipedia.org/wiki/ID3
  • 7. § 파일 로딩시 ID3 값의 길이 를 검사하지 않는 문제점 § 그러므로 비정상적으로 많은 데이터 주입 가능 § 결국 버퍼오버플로우 발생 Vuln? § 파일 로딩시 ID3 값의 길이 를 검사하지 않는 문제점 § 그러므로 비정상적으로 많은 데이터 주입 가능 § 결국 버퍼오버플로우 발생
  • 8. § Python Script 사용 § ID3 Tag + Nop * 8000000 § iamcrasher.mp3 파일 생성 § 재생 취약점 찾기 § Python Script 사용 § ID3 Tag + Nop * 8000000 § iamcrasher.mp3 파일 생성 § 재생
  • 9. OllyDBG - 국내에 잘 알려진 도구 - 다양한 플러그인 지원 - 무료 Immunity DBG - OllyDBG와 비슷한 UI - Python Script 지원 - OllyDBG보다 빠르다 취약점 분석 OllyDBG - 국내에 잘 알려진 도구 - 다양한 플러그인 지원 - 무료 Immunity DBG - OllyDBG와 비슷한 UI - Python Script 지원 - OllyDBG보다 빠르다
  • 10. § 최신 버전은 Themida 로 실행압축 되어있었다. § Unpack Script등을 이용한다면 언패킹이 가능하다 § 스크립트는 일부 버전만 나와있으므로 예전 버전을 구하기로 했다. § 예전 버전으로 사용하여 Themida 우회 없이 분석이 가능했다. 분석중 문제. § 최신 버전은 Themida 로 실행압축 되어있었다. § Unpack Script등을 이용한다면 언패킹이 가능하다 § 스크립트는 일부 버전만 나와있으므로 예전 버전을 구하기로 했다. § 예전 버전으로 사용하여 Themida 우회 없이 분석이 가능했다.
  • 12. § 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 옵션이다. [다음 페이지에 설명]
  • 13. § 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 파이썬 스크립트가 있다.
  • 14. § 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 기법이라고 한다.
  • 15. § 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의 제약을 받지 않는다.
  • 16. Memory Protection - ASLR § ASLR (Address Space Layout Randomization, 랜덤 주소 배치) § 프로그램 로딩 또는 부팅시 배치되는 주소가 매번 바뀌는 보호기법 § 메모리 주소를 바뀌게 해서 효과적으로 BOF 공격을 방어 § Windows Vista 부터 적용되는 방어기법으로, XP에는 해당사항이 아님 § 사진은 왼쪽부터 ASLR On / On / Off 상태이다.
  • 17. § 16진수로 짜여진 프로그램 코드, 주로 Stack 영역에서 실행 § Shellcode는 Backtrack 의 Metasploit 프로젝트를 이용하여 쉽게 제작 이 가능하다. § 쉘코드를 이용하여 원격연결, 실행, 백도어 포트개방등 다양한 명령을 실행이 가능하다. § 상황에 따라 인코딩이 필요한 경우도 있다. 예를들어, _swprintf 는 x00 과 xff가 들어있는경우 쉘코드가 손상되므로 저런 문자가 생기지 않도 록 인코딩을 하는것이 중요하다. § 예제 - 리눅스에서 /bin/sh를 실행하는 쉘코드 x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80 Shell Code § 16진수로 짜여진 프로그램 코드, 주로 Stack 영역에서 실행 § Shellcode는 Backtrack 의 Metasploit 프로젝트를 이용하여 쉽게 제작 이 가능하다. § 쉘코드를 이용하여 원격연결, 실행, 백도어 포트개방등 다양한 명령을 실행이 가능하다. § 상황에 따라 인코딩이 필요한 경우도 있다. 예를들어, _swprintf 는 x00 과 xff가 들어있는경우 쉘코드가 손상되므로 저런 문자가 생기지 않도 록 인코딩을 하는것이 중요하다. § 예제 - 리눅스에서 /bin/sh를 실행하는 쉘코드 x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80
  • 18. § 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로 연결
  • 19. Shellcode - Exec Shellcode
  • 20. § Victim의 Backdoor 포트를 여는 쉘코드 § 실제로 쉘코드를 실행하면 왼쪽과 같이 4444포트로 포트가 개방됨 § 포트를 여는 과정에서 방화벽이나 안티바 이러스등 블로킹을 당할수 있는 단점 Shellcode - Bind Shellcode § Victim의 Backdoor 포트를 여는 쉘코드 § 실제로 쉘코드를 실행하면 왼쪽과 같이 4444포트로 포트가 개방됨 § 포트를 여는 과정에서 방화벽이나 안티바 이러스등 블로킹을 당할수 있는 단점
  • 21. Shellcode - Reverse Shellcode § Bind Shellcode 와는 반대로 Victim 이 Server에 역으로 접속 § Bind 에 비해 방화벽이나 안티바이러스에 블로킹 당할 확률이 낮다 § Victim의 IP를 몰라도 된다.
  • 22. § 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
  • 23. § 사진은 Python으로 제작된 exploit § 모은 정보를 이용하여 Exploit을 작성. § GOT SHELL :D Exploit 구성 § 사진은 Python으로 제작된 exploit § 모은 정보를 이용하여 Exploit을 작성. § GOT SHELL :D
  • 26. 뮤직 플레이어 Exploit 2013 CODEGATE JUNIOR Thank you! 현성원(sweetchip) 서울대원고등학교 Blog : http://pgnsc.tistory.com Site : http://studyc.co.kr E-mail : sweetchip@studyc.co.kr Facebook : https://fb.com/sweetchipp