생몰정보
소속
직위
직업
활동분야
주기
서지
국회도서관 서비스 이용에 대한 안내를 해드립니다.
검색결과 (전체 1건)
원문 있는 자료 (1) 열기
원문 아이콘이 없는 경우 국회도서관 방문 시 책자로 이용 가능
목차보기더보기
Title Page
Contents
Abstract 9
1. Introduction 11
2. Evolution of Exploit Techniques 14
2.1. Stack Smashing 14
2.2. Return-to-Libc 15
2.3. Return-Oriented Programming 16
2.4. Jump Oriented Programming 18
3. Intel x86 Architecture Overview 19
3.1. Basic Program Execution Registers 19
3.2. Flags 21
3.3. Instruction Format 23
4. Jump-Oriented Programming 24
4.1. Limitation of Previous Researches and Motivation 24
4.2. Controlling the Instruction Pointer without Returns 26
4.3. Gadgets 29
4.4. Advantages over Return Oriented Programming 29
5. Intel x86 Gadget Catalog 31
5.1. Load / Store 31
5.2. Arithmetic 32
5.3. Logical 33
5.4. Control Flow 34
5.5. Conditional 34
5.6. Function Call 35
5.7. Dispatcher 36
6. Automatic Gadget Search 38
6.1. Overall Structure 38
6.2. Gadget Search Algorithm 39
6.3. Representation of Gadget Catalog 42
6.4. Pattern Matching 43
6.5. Implementation 43
6.6. Output Files 48
7. Analysis of Kernel32.dll 49
7.1. Load/Store Gadgets 49
7.2. Arithmetic Gadgets 50
7.3. Others Gadgets 51
7.4. Result 52
8. Detection of Jump Oriented Programming 54
8.1. Trampoline 54
8.2. Control Flow Integrity 54
9. Conclusion 56
References 58
논문요약 60
Table 1: Conventional Purposes of Registers 20
Table 2: EFLAGS Fields 22
Table 3: Catalog of Load/Store Gadgets 32
Table 4: Catalog of Arithmetic Addition Gadgets 33
Table 5: Catalog of Logical And Gadgets 34
Table 6: Catalog of Control Flow Gadgets 34
Table 7: Catalog of Conditional Gadgets 35
Table 8: Catalog of Function Call Gadgets 36
Table 9: Catalog of Dispatcher Gadget 37
Table 10: Description of Functions 47
Table 11: Libraries in Windows XP 52
Table 12: Libraries of Windows 7 53
Figure 1: Normal Stack 14
Figure 2: Buffer Overflow 15
Figure 3: Return to Libc 16
Figure 4: Return-Oriented Programming 17
Figure 5: General Purpose Registers 19
Figure 6: ESI, EDI Registers 20
Figure 7: x86 Instruction Format 23
Figure 8: Operating System Usage Statistics 25
Figure 9: Checkoway's Approach 26
Figure 10: Jump Oriented Programming Approach by Bletsch 28
Figure 11: Dispatcher Gadget Example 36
Figure 12: Search Algorithm 38
Figure 13: Recursive Call of Shacham's Algorithm 39
Figure 14: Example of Redundant Gadgets 40
Figure 15: Gadget Search Algorithm of JUMPER 41
Figure 16: Main Function 44
Figure 17: gadget_catalog.py 46
초록보기 더보기
소프트웨어 익스플로잇 기술은 방어기술과 함께 과거에서부터 현재까지 꾸준히 발전해왔다. 과거에는 공격코드를 직접 스택과 같은 메모리에 삽입하여 실행시켰지만, 운영체제에서 데이터가 저장되는 메모리의 실행권한을 없애버리면서 코드 재사용 공격이 등장하게 되었다. 코드 재사용 공격이란, 공격자가 공격코드를 메모리에 삽입하는 것이 아니라 실행 중인 프로그램내의 코드영역에서 원하는 코드를 실행하는 공격 방법을 뜻한다.
코드 재사용 공격의 가장 대표적인 예는 return-oriented programming이다. 이 공격 방법은 리턴 명령어로 끝나는 명령어의 집합들(가젯)을 조합하여 악성행위를 하는 방법이다. 아이폰 탈옥, 안드로이드 루팅 등 광범위하게 사용되고 있다. Return-oriented programming이 인기를 끌면서 탐지 기술들이 다수 제안되었는데, 대부분이 리턴 명령어가 가지고 있는 특징을 기반으로 공격을 탐지하고 있다. 하지만 리턴 명령어 대신 다른 명령어로 대체함으로써 쉽게 우회가 가능하다는 것을 증명했는데, 그것이 jump-oriented programming이다.
Jump-oriented programming은 점프 명령어를 통해 리턴 명령어와 유사한 효과를 내도록 하여 공격을 수행하며,연구를 통해 실제 익스플로잇을 제작하여 공격이 가능하다는 것을 증명했다. 하지만 현재까지의 연구는 리눅스(데비안 5.0.4)상에서만 진행되었기 때문에 jump-oriented programming 공격 모델이 다양한 플랫폼에 적용될 수 있다는 것을 증명하지는 못했다. 실험을 진행한 리눅스의 버전 자체도 몇 년 전에 발표했으며, 또한 전체 운영체제 중 리눅스의 사용률은 여전히 윈도우에 비해 현저하게 낮다.
따라서 본 논문에서는 jump-oriented programming 가젯을 자동으로 검색하는 도구인 점퍼를 설계하고, 이를 활용하여 사용률이 제일 높은 윈도우 시스템의 동적 라이브러리에서 가젯들을 검색함으로써 jump-oriented programming 공격 모델이 리눅스 시스템에 한정되어있는 것이 아니라 그 외의 운영체제들에도 적용이 가능하다는 것을 보여주었다. 향후에는 가젯의 자동검색뿐만 아니라, 가젯을 조합하여 익스플로잇을 만드는 과정을 자동화하는 연구가 진행되어야 할 것이다.
원문구축 및 2018년 이후 자료는 524호에서 직접 열람하십시요.
도서위치안내: / 서가번호:
우편복사 목록담기를 완료하였습니다.
* 표시는 필수사항 입니다.
* 주의: 국회도서관 이용자 모두에게 공유서재로 서비스 됩니다.
저장 되었습니다.
로그인을 하시려면 아이디와 비밀번호를 입력해주세요. 모바일 간편 열람증으로 입실한 경우 회원가입을 해야합니다.
공용 PC이므로 한번 더 로그인 해 주시기 바랍니다.
아이디 또는 비밀번호를 확인해주세요