Memory Protection Mechanism of Linux

Preview:

DESCRIPTION

Memory Protection Mechanism of Linux. TEAM PWN&PLAY YIS of KSIA 김태욱 xodnr631@naver.com 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

김태욱xodnr631@naver.-

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

Recommended