반응형

시스템해킹&보안/리눅스 메모리 보호기법 2

리눅스 PLT와 GOT

PLT (Procedure Linkage Table) : Dynamic Link를 사용 시, 외부 라이브러리에 있는 함수를 연결해주는 테이블. 외부 프로시저를 연결해주는 테이블. PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용할 수 있다. GOT (Global Offset Table) : PLT이 참조하는 테이블로서, GOT에는 라이브러리 함수들의 실제 주소가 있다. PLT가 참조하는 테이블. 외부 라이브러리의 함수/변수의 주소를 담고 있다. 처음으로 함수를 실행한다면 GOT는 함수의 주소를 갖고 있지 않고, 어떤 과정을 거쳐 주소를 알아낸다. 두 번째 호출부터는 첫 번째 호출 때 알아낸 주소로 바로 점프한다. 함수를 실행하기 전 plt address -> got address (jmp pl..

리눅스 메모리 보호기법

리눅스 메모리 보호 기법은 Memory Curruption 공격인 Buffer Overflow를 보호하기 위한 목적으로 생기게 되었다. 메모리 보호 기법은 ASLR, NX, ASCII-Armor, Stack canary가 존재한다. 그럼 이제 각각의 보호 기법들이 하는 역할을 알아보겠다. 첫 번째 ASLR ASLR은 Address Space Layout Randomization의 약어로 메모리 상의 공격을 어렵게 하기 위해 실행 시 스택, 힙, 라이브러리 등의 주소를 랜덤으로 프로세스에게 할당하여 주소 공간을 배치한다. 실행할 때마다 주소 값이 달라지므로 공격자 입장에서는 공격할 주소를 알아내기 어렵게 된다. 아래 그림을 비교해보면 한번 실행한 것과 두 번 실행했을 때 주소 값들이 달라지는 것을 볼 수 ..

반응형