Pwnable/Tech

시스템 해킹-각 메모리 보호 기법과 기법 우회

Kon4 2021. 8. 1. 13:32

1- 메모리 보호 기법의 종류와 각 기법에 대해 간단히 알아봅시다. (본 포스팅 글)

2- 각 메모리 보호 기법을 어떻게 우회할 수 있는지, 알아봅시다.  (Next-01)

3- 위 내용을 공부한 후 느낌  

4- CTF 문제 추천!! 해주시면 좋을것 같습니다 ㅎㅎㅎ


1- 메모리 보호 기법과 종류

간단하게 메모리 보호 기법들을 보면 ASLR, NXbit(DEP), ASCII-Armor, Canary, RELRO 등이 있습니다.

 

ASLR=

Address Space Layout Randomization --> 말그대로 입니다. 

설명을 덧붙이자면, 실행 파일의 베이스와 스택, 힙 및 라이브러리의 위치를 포함하여 프로세스의 주요 데이터 영역의 주소 공간 위치를 무작위로 배정하여 메모리와 기타 데이터 주소를 활용해 BOF 등의 공격을 방지하는 기술입니다.

 

NXbit(DEP)= Never eXecute bit(Data Execution Protection) --> 이것도 말그대로.

물론 축약어를 풀어서 쓰는 말은 다양하게 있지만, 뭐.. 다 같은 느낌이라서 이 글에선 이걸로 생략하겠습니다.

무튼, 이 기법은 데이터 영역(Stack, Heap) 영역에서 실행을 못합니다. (권한 박탈)

말보단 캡처 화면을 보여드리는 게 편할 것 같아, 데비안 환경의 리눅스에서 NX bit기법이 적용된 것을 보여드리겠습니다.

그림과 같이 스택과 힙 모두 실행 권한이 없습니다.

--물론 NX bit를 해제하면 다시 생깁니다.(rwxp)

 

ASCII-Armor= 공유 라이브러리 영역 상위 주소에 NULL(0x00) 값을 포함하여, RTL기법 등, 상위 주소에 NULL값을 포합 시킨 부분을 사용하여 공격을 하지 못하게 합니다.

 

Canary= 스택의 변수들의 공간과 SFP 사이에 특정한 값(Canary)을 넣어, Stack Buffer overflow와 같은 공격을 하지 못하도록 하는 기법입니다.

 

RELRO= RELocation Read-Only의 줄임말이며, ELF 바이너리/프로세스의 데이터 섹션의 보안을 강화하는 일반적인 기술이다. --> 메모리 보호 기법 (RELRO) — c0wb3ll's 5tudy B109 (tistory.com)

 

메모리 보호 기법 (RELRO)

메모리 보호 기법 (RELRO) 메모리 보호 기법 종류 NX Bit ( MS : DEP ) ASLR Canaries RELRO PIE RELRO Explanation RELRO는 RELocation Read-Only의 줄임말이며, ELF 바이너리 / 프로세스의 데이터 섹션의 보안을..

c0wb3ll.tistory.com

위에 잘 정리된 내용이 있어 참고 링크를 걸어두겠습니다.

 

결국 RELRO는 코드의 실행 가능 범위를 줄여(Read Only영역으로 바꿈) exploit을 어렵게 하는 기법입니다.

 

 


3- 위 내용을 공부한 후 느낌

공부하면서 처음 보는 메모리 보호 기법은 뭔가 완벽해 보였습니다. 하지만 이는 공격을 어렵게 하는, 완화, 경감의 느낌의  Mitigation기술이지, 이를 아예 100% 못하게 하는 것은 아니 다라는 것을 깨닫게 되었습니다.

 

다음엔 각각의 기법들을 우회하는 법을 알아본 후 실습을 해보도록 하겠습니다.(공부할 때 이미 했지만.. 시간을 만들지 못해서 포스팅을 읍읍)