발표자료는 다음링크에서 다운로드 받으실 수 있습니다. 발표자료는 다음링크에서 다운로드 받으실 수 있습니다. http://younges.tistory.com/629
Memory Protection Mechanism of Linux TEAM WANG YIS of KSIA – 김태욱 01032309051 xodnr631 fb.com/xodnr631
TEAM WANG
YIS
Buffer Overflow (1) 사용자가 입력한 데이터의 크기가 너무 과하여 제한된 버퍼의 용량을 넘쳐버렸을때 생기는 버그를 이용해 해킹하는 기술 버퍼 : 컴퓨터의 주기억 장치와 주변장치 사이에서 데이터를 주고받을때 정보를 임시로 기억해두는 임시저장공간
Buffer Overflow (1) 사용자가 입력한 데이터의 크기가 너무 과하여 제한된 버퍼의 용량을 넘쳐버렸을때 생기는 버그를 이용해 해킹하는 기술 버퍼 : 컴퓨터의 주기억 장치와 주변장치 사이에서 데이터를 주고받을때 정보를 임시로 기억해두는 임시저장공간
Buffer Overflow (2) 낮은 주소 CODE DATA HEAP STACK 높은 주소 컴파일 된 기계어 코드 전역/정적 및 각종 변수 HEAP 프로그래머가 직접 할당한 공간 STACK 지역 변수, 함수 인자, 환경 변수 높은 주소
Buffer Overflow (2) 낮은 주소 CODE DATA HEAP STACK 높은 주소 컴파일 된 기계어 코드 전역/정적 및 각종 변수 HEAP 프로그래머가 직접 할당한 공간 STACK 지역 변수, 함수 인자, 환경 변수 높은 주소
Buffer Overflow (3) BUFFER SFP RET BUFFER – SFP – RET – Argc/Argv – 환경변수 - 파일명 BUFFER SFP RET
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
Stack 낮은 주소 CODE DATA HEAP STACK 높은 주소 컴파일 된 기계어 코드 전역/정적 및 각종 변수 프로그래머가 직접 할당한 공간 STACK 지역 변수, 함수 인자, 환경 변수 높은 주소
Stack 유저영역 낮은 주소 CODE DATA HEAP STACK 높은 주소 컴파일 된 기계어 코드 전역/정적 및 각종 변수 프로그래머가 직접 할당한 공간 STACK 지역 변수, 함수 인자, 환경 변수 높은 주소 유저영역
Stack 커널 유저 LOW HIGH
STACK | HEAP | DATA | CODE 커널 유저 LOW HIGH STACK | HEAP | DATA | CODE
Buffer Overflow (4) < 버퍼 오버플로우 문제풀이 > 해커스쿨 FTZ 해커스쿨 LOB IO SmashTheStack
Buffer Overflow (5) <LOB 문제풀이 유형>
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) // here is changed! if(strlen(argv[0]) != 77){ printf("argv[0] error\n"); exit(0); }
Buffer Overflow (5) int main() { char buffer[16]; gets(buffer); printf("%s\n", buffer); }
BUT
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization)
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
ASLR(Address Space Layout Randomization) Memory Protection (1) ASLR(Address Space Layout Randomization) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH 난짱해커
↑ 고정 된 주소 ↑ 계속해서 바뀌는 주소
↑ 고정 된 주소 ↑ 계속해서 바뀌는 주소
DEP(Data Execution Prevention) Memory Protection (2) DEP(Data Execution Prevention)
DEP(Data Execution Prevention) Memory Protection (2) DEP(Data Execution Prevention) STACK BUFFER SFP RET 인자 환경변수 파일명
DEP(Data Execution Prevention) Memory Protection (2) DEP(Data Execution Prevention) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
DEP(Data Execution Prevention) Memory Protection (2) DEP(Data Execution Prevention) STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
DEP(Data Execution Prevention) - RTL Memory Protection (2) DEP(Data Execution Prevention) - RTL STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
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
&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
Memory Protection (2) RTL STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
Memory Protection (2) RTL STACK BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
Memory Protection (3) ASCII Armor
Memory Protection (3) STACK ASCII Armor BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
Memory Protection (3) STACK ASCII Armor BUFFER SFP RET 인자 환경변수 파일명 LOW HIGH
Memory Protection (4) Canary BUFFER SFP RET
Memory Protection (4) Canary BUFFER SFP CANARY RET
Memory Protection (4) BUFFER SFP RET Canary 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