Upload
kaiser
View
61
Download
7
Embed Size (px)
DESCRIPTION
Memory Protection Mechanism of Linux. TEAM PWN&PLAY YIS of KSIA 김태욱 [email protected] fb.com/xodnr631. YIS. TEAM PWN&PLAY. SYSTEM HACKING. Memory Protection Mechanism of Linux. Buffer Overflow (1). 사용자가 입력한 데이터의 크기가 너무 과하여 제한된 버퍼의 용량을 넘쳐버렸을때 생기는 버그를 이용해 해킹하는 기술 - PowerPoint PPT Presentation
Citation preview
Memory Protection Mechanism of Linux
TEAM PWN&PLAYYIS of KSIA
comfb.com/xodnr631
YIS
TEAM PWN&PLAY
SYSTEM HACKINGMemory Protection Mechanismof Linux
Buffer Overflow (1)
• 사용자가 입력한 데이터의 크기가 너무 과하여 제한된 버퍼의 용량을 넘쳐버렸을때 생기는 버그를 이용해 해킹하는 기술
• 버퍼 : 컴퓨터의 주기억 장치와 주변장치 사이에서 데이터를 주고받을때 정보를 임시로 기억해두는 임시저장공간
Buffer Overflow (1)
• 사용자가 입력한 데이터의 크기가 너무 과하여 제한된 버퍼의 용량을 넘쳐버렸을때 생기는 버그를 이용해 해킹하는 기술
• 버퍼 : 컴퓨터의 주기억 장치와 주변장치 사이에서 데이터를 주고받을때 정보를 임시로 기억해두는 임시저장공간
Buffer Overflow (2)
낮은 주소
CODE 컴파일 된 기계어 코드
DATA 전역 / 정적 및 각종 변수
HEAP 프로그래머가 직접 할당한 공간
STACK 지역 변수 , 함수 인자 , 환경 변수
높은 주소
Buffer Overflow (2)
낮은 주소
CODE 컴파일 된 기계어 코드
DATA 전역 / 정적 및 각종 변수
HEAP 프로그래머가 직접 할당한 공간
STACK 지역 변수 , 함수 인자 , 환경 변수
높은 주소
Buffer Overflow (3)
BUFFER SFP RET
BUFFER – SFP – RET – Argc/Argv – 환경변수 - 파일명
Buffer Overflow (3)
BUFFER SFP RET
BUFFER – SFP – RET – Argc/Argv – 환경변수 - 파일명
A A A A A A A A A A A A A A A A A A A
Stack
낮은 주소
CODE 컴파일 된 기계어 코드
DATA 전역 / 정적 및 각종 변수
HEAP 프로그래머가 직접 할당한 공간
STACK 지역 변수 , 함수 인자 , 환경 변수
높은 주소
Stack
낮은 주소
CODE 컴파일 된 기계어 코드
DATA 전역 / 정적 및 각종 변수
HEAP 프로그래머가 직접 할당한 공간
STACK 지역 변수 , 함수 인자 , 환경 변수
높은 주소
유저영역
Memory
커널 유저HIGH LOW
Memory
커널 유저HIGH LOW
STACK | HEAP | DATA | CODE
Buffer Overflow (5)
<BOF 문제풀이 유형 >
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);}
Buffer Overflow (5)
Buffer Overflow (5)int main(){ char buffer[16]; gets(buffer); printf("%s\n", buffer);}
Buffer Overflow (5) // here is changed! // egghunter for(i=0; environ[i]; i++) memset(environ[i], 0,
strlen(environ[i]));
Buffer Overflow (5) // here is changed! if(strlen(argv[0]) != 77){ printf("argv[0] error\n"); exit(0); }
BUT
Memory Protection (1)DEP(Data Execution Prevention)
Memory Protection (1)DEP(Data Execution Prevention)
STACKBUFFER SFP RET 인자 환경변수 파일명
Memory Protection (1)DEP(Data Execution Prevention)
STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
Memory Protection (1)DEP(Data Execution Prevention)
STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
Memory Protection (1)RTL(Return-to-libc)
STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
Memory Protection (1)
RTL(Return-to-libc)
BUFFER SFP RET
A A A A A A A A A A A A A A A A A A A
Memory Protection (1)RTL(Return-to-libc)
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
Memory Protection (2)ASLR(Address Space Layout Random-
ization)
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACK
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
난짱해커
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
난짱해커
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
난짱해커
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
난짱해커
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
난짱해커
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
난짱해커
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
난짱해커
Memory Protection (2)ASLR(Address Space Layout Random-
ization)STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
난짱해커똑같은주소
↑ 계속해서 바뀌는 주소↑ 고정 된 주소
↑ 계속해서 바뀌는 주소↑ 고정 된 주소
Memory Protection (3)ASCII Armor
Memory Protection (3)ASCII Armor
STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
Memory Protection (3)ASCII Armor
STACKBUFFER SFP RET 인자 환경변수 파일명
LOW HIGH
Memory Protection (4)Canary
BUFFER SFP RET
Memory Protection (4)Canary
BUFFER SFP CANARY RET
Memory Protection (4)Canary
BUFFER SFP CANARY RET
A A A A A A A A A A ? ! # $ A A A A A
Memory Protection (4)Canary
CANARY RANDOM
Memory Protection (4)Canary
CANARY RANDOM
TERMINATOR
Memory Protection (4)Canary
CANARY RANDOM
TERMINATOR
NULL
DEP
DEP + ASLR
DEP + ASLR+ ASCII Armor
DEP + ASLR+ ASCII Ar-mor+ Canary