ASLR (2) 썸네일형 리스트형 [Lecture] PIE (Position-Independent Executable) 1. PIC (Position-Independent Code) 정의 리눅스에서 ELF에는 실행파일(Executable)과 공유 오브젝트(Shared Object, SO)가 존재하며, 공유 오브젝트는 libc.so와 같은 라이브러리 파일이 해당된다. 공유 오브젝트는 기본적으로 재배치가 가능하도록 설계되어 있는데, 이러한 성질을 만족하는 코드를 PIC라고 한다. gcc는 PIC 컴파일을 지원한다. [참고] '재배치가 가능하다는 것'은 메모리의 어느 주소에 적재되어도, 코드의 의미가 훼손되지 않음을 의미한다. 2. PIC 실습 2-1. 실습 코드 PIC 적용된 바이너리와 적용되지 않은 바이너리 비교를 위해, 두 가지 방식으로 컴파일해준다. // Name: pic.c // Compile: gcc -o pic p.. NX & ASLR 1. ASLR 정의 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 보호 기법이다. 커널에서 지원하는 보호 기법으로, 아래와 같은 명령어로 확인할 수 있다. $cat /proc/sys/kernel/randomize_va_space 2 0 (No ASLR) : ASLR을 적용하지 않는다. 1 (Conservative Randomization) : 스택, 힙, 라이브러리, vdso 2 (Conservative Randomization + brk(2) : 1의 영역과 brk로 할당한 영역 2. ASLR 특이점 코드 영역의 main함수를 제외한 다른 영역의 주소들은 실행할 때마다 변경된다. ASLR이 적용됐을 때, 파일을 페이지 단위로 임의 주소에 매핑한다. 이로 인해 페이지의.. 이전 1 다음