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는 코드의 실행 가능 범위를 줄여(Read Only영역으로 바꿈) exploit을 어렵게 하는 기법입니다.
3- 위 내용을 공부한 후 느낌
공부하면서 처음 보는 메모리 보호 기법은 뭔가 완벽해 보였습니다. 하지만 이는 공격을 어렵게 하는, 완화, 경감의 느낌의 Mitigation기술이지, 이를 아예 100% 못하게 하는 것은 아니 다라는 것을 깨닫게 되었습니다.
다음엔 각각의 기법들을 우회하는 법을 알아본 후 실습을 해보도록 하겠습니다.(공부할 때 이미 했지만.. 시간을 만들지 못해서 포스팅을 읍읍)
'Pwnable > Tech' 카테고리의 다른 글
Heap Series - Use After Free (0) | 2021.12.25 |
---|---|
environ ptr -하나하나 뜯어보기- (0) | 2021.11.29 |
메모리에 관한 내용 정리(pptx) (0) | 2021.11.14 |
Heap - House of Force (0) | 2021.10.27 |
Heap - House of Lore (0) | 2021.10.26 |