Download presentation
Presentation is loading. Please wait.
1
발표자료는 다음링크에서 다운로드 받으실 수 있습니다.
발표자료는 다음링크에서 다운로드 받으실 수 있습니다.
2
Memory Protection Mechanism of Linux
TEAM WANG YIS of KSIA – 김태욱 xodnr631 fb.com/xodnr631
3
TEAM WANG
4
YIS
5
Buffer Overflow (1) 사용자가 입력한 데이터의 크기가 너무 과하여 제한된 버퍼의 용량을 넘쳐버렸을때 생기는 버그를 이용해 해킹하는 기술 버퍼 : 컴퓨터의 주기억 장치와 주변장치 사이에서 데이터를 주고받을때 정보를 임시로 기억해두는 임시저장공간
6
Buffer Overflow (1) 사용자가 입력한 데이터의 크기가 너무 과하여 제한된 버퍼의 용량을 넘쳐버렸을때 생기는 버그를 이용해 해킹하는 기술 버퍼 : 컴퓨터의 주기억 장치와 주변장치 사이에서 데이터를 주고받을때 정보를 임시로 기억해두는 임시저장공간
7
Buffer Overflow (2) 낮은 주소 CODE DATA HEAP STACK 높은 주소 컴파일 된 기계어 코드
전역/정적 및 각종 변수 HEAP 프로그래머가 직접 할당한 공간 STACK 지역 변수, 함수 인자, 환경 변수 높은 주소
8
Buffer Overflow (2) 낮은 주소 CODE DATA HEAP STACK 높은 주소 컴파일 된 기계어 코드
전역/정적 및 각종 변수 HEAP 프로그래머가 직접 할당한 공간 STACK 지역 변수, 함수 인자, 환경 변수 높은 주소
9
Buffer Overflow (3) BUFFER SFP RET
BUFFER – SFP – RET – Argc/Argv – 환경변수 - 파일명 BUFFER SFP RET
10
Buffer Overflow (3) BUFFER SFP RET
BUFFER – SFP – RET – Argc/Argv – 환경변수 - 파일명 BUFFER SFP RET A A A A A A A A A A A A A A A A A A A
11
Stack 낮은 주소 CODE DATA HEAP STACK 높은 주소 컴파일 된 기계어 코드 전역/정적 및 각종 변수
프로그래머가 직접 할당한 공간 STACK 지역 변수, 함수 인자, 환경 변수 높은 주소
12
Stack 유저영역 낮은 주소 CODE DATA HEAP STACK 높은 주소 컴파일 된 기계어 코드 전역/정적 및 각종 변수
프로그래머가 직접 할당한 공간 STACK 지역 변수, 함수 인자, 환경 변수 높은 주소 유저영역
13
Stack 커널 유저 LOW HIGH
14
STACK | HEAP | DATA | CODE
커널 유저 LOW HIGH STACK | HEAP | DATA | CODE
15
Buffer Overflow (4) < 버퍼 오버플로우 문제풀이 > 해커스쿨 FTZ 해커스쿨 LOB
IO SmashTheStack
16
Buffer Overflow (5) <LOB 문제풀이 유형>
17
Buffer Overflow (5) int main(int argc, char *argv[]) { char buffer[256]; if(argc < 2){ printf("argv error\n”); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); }
18
Buffer Overflow (5) // here is changed! if(strlen(argv[0]) != 77){ printf("argv[0] error\n"); exit(0); }
19
Buffer Overflow (5) int main() { char buffer[16]; gets(buffer); printf("%s\n", buffer); }
20
BUT
26
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization)
27
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK
28
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
29
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
30
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
31
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
32
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
33
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
34
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
35
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
36
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
37
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
38
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
39
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
40
ASLR(Address Space Layout Randomization)
Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
42
↑ 고정 된 주소 ↑ 계속해서 바뀌는 주소
43
↑ 고정 된 주소 ↑ 계속해서 바뀌는 주소
44
DEP(Data Execution Prevention)
Memory Protection (2) DEP(Data Execution Prevention)
45
DEP(Data Execution Prevention)
Memory Protection (2) DEP(Data Execution Prevention) STACK BUFFER SFP RET 인자 환경변수 파일명
46
DEP(Data Execution Prevention)
Memory Protection (2) DEP(Data Execution Prevention) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
47
DEP(Data Execution Prevention)
Memory Protection (2) DEP(Data Execution Prevention) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
48
DEP(Data Execution Prevention) - RTL
Memory Protection (2) DEP(Data Execution Prevention) - RTL STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
49
Memory Protection (2) BUFFER SFP RET RTL
A A A A A A A A A A A A A A A A A A A
50
&system() &execl() &/bin/sh
Memory Protection (2) RTL BUFFER SFP RET A A A A A A A A A A A A A A A A A A A &system() &execl() &/bin/sh
51
Memory Protection (2) RTL STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
52
Memory Protection (2) RTL STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
53
Memory Protection (3) ASCII Armor
54
Memory Protection (3) STACK ASCII Armor BUFFER SFP RET 인자 환경변수 파일명 LOW
HIGH
55
Memory Protection (3) STACK ASCII Armor BUFFER SFP RET 인자 환경변수 파일명 LOW
HIGH
56
Memory Protection (4) Canary BUFFER SFP RET
57
Memory Protection (4) Canary BUFFER SFP CANARY RET
58
Memory Protection (4) BUFFER SFP RET Canary
A A A A A A A A A A ? ! # $ A A A A A
59
Memory Protection (4) Canary CANARY RANDOM
60
Memory Protection (4) Canary CANARY RANDOM TERMINATOR
61
Memory Protection (4) Canary CANARY RANDOM TERMINATOR NULL
Similar presentations