ASLR

    [System][Dreamhack] PIE - Position-Independent Executable

    [System][Dreamhack] PIE - Position-Independent Executable

    PIE(Position-Independent Executable)은 ASLR이 코드 영역에도 적용되게 하는 기술이다. PIC & PIE PIC 리눅스 ELF 파일은 실행파일(Executable)과 공유 오브젝트(Shared Object, so)로 2가지가 존재한다. 공유 오브젝트는 재배치(relocation)가 가능하다. Relocation이 가능하다는 것은 메모리의 어디에 적재되어도 코드의 의미가 훼손되지 않음을 의미한다. 이런 코드를 Position-Independent Code(PIC)라고 부른다. PIC 코드 분석 PIC가 적용된 바이너리와 그렇지 않은 바이너리를 비교하기 위해 아래의 코드를 컴파일하였다. // Name: pic.c // Compile: gcc -o pic pic.c // : gc..

    [System][Dreamhack] 메모리 보호기법 Mitigation: NX & ASLR

    [System][Dreamhack] 메모리 보호기법 Mitigation: NX & ASLR

    지난 글(Return to shellcode)를 보면 쉘을 딸 수 있었던 이유는 다음과 같다. return addr을 임의의 주소로 덮기 가능 → canary 도입 ⇒ canary leak 으로 우회 버퍼의 주소 알아내기 가능 버퍼안의 쉘코드 실행 가능 공격을 막기 위해 시스템 개발자들은 여려 겹의 보호 기법을 적용해 공격당할 수 있는 표면(Attack Surface) 를 줄여나가려 한다. Attack surface를 줄이기 위한 메모리 보호기법에 대해 드림핵을 기반으로 작성하였다. 요약 return addr을 임의의 주소로 덮기 가능 → canary 도입 ⇒ canary leak 으로 우회 가능 버퍼의 주소 알아내기 가능 → ASLR 도입 버퍼안의 쉘코드 실행 가능 → NX-bit 도입 ASLR ( A..