Ye0ngJae

메모리 보호 기법(Canary, NX Bit/DEP) 본문

정보보안/포너블

메모리 보호 기법(Canary, NX Bit/DEP)

Ye0ngJae 2022. 9. 26. 13:52
728x90

메모리 보호 기법


NX Bit / DEP 보호기법


NX Bit / DEP 보호기법이란 스택이나 힙 같은 영역에서 코드가 실행되는 것을 방지하기 위하여 실행 권한을 제한함으로써 셸의 실행을 막는 기법이다. 데이터 저장 공간에서는 굳이 실행 권한이 필요하지 않기 때문에, 해당 부분에서 실행 권한을 제외함으로써 만일 셸코드가 정상 코드를 덮어도 실행권한이 없어 셸이 실행되지 않는다. 이 기법은 윈도우에서는 DEP. 리눅스에서는 NX Bit 기법이라고 부른다.

위 코드와 같이 일반적인 C코드를 컴파일 한다고 했을 때, 명령어는 다음과 같다.

 

DEP-disabled : gcc -z execstack -o DEP-disabled DEP.c

DEP-enabled : gcc -o DEP-enabled DEP.c

 

NX Bit / DEP 보호 기법이 적용된 파일 하나와 적용이 되지 않은 파일이 생성이 된 것을 확인할 수 있다.

Canary 보호 기법


Canary 보호 기법은 sfp와 변수 사이에 공간에 특정 값을 저장하여 만일 sfp와 return address를 저장할 때 이 정보들이 공격자에 의해 덮어 씌어지는 것을 방지하기 위한 기법이다. 만일 별다른 조치 없이 BOF 공격을 진행하여 BOF가 이루어진다면 Canary 값이 변조되어 프로세스 실행이 마무리 될 때 Canary 값을 검사할 수가 없어 프로세스가 자동적으로 종료되게 된다.

 

728x90

'정보보안 > 포너블' 카테고리의 다른 글

[Pwnable] PLT & GOT  (0) 2022.10.20
[Pwnable] Libc leak과 GOT Overwrite  (0) 2022.10.20
RTL 기법에 대하여 알아보자  (0) 2022.10.03