3. 메모리 보호기법
안녕하세요. 이번주는 '메모리 보호기법'에 대해 포스팅하겠습니다.
우선 '메모리 보호'의 정의를 알아봅시다. 메모리 보호란 '컴퓨터 메모리의 사용을 제어하는 방법'입니다. 좀 더 자세히 말하자면 'OS에서 실행하고 있는 프로세스가 자신에게 할당되지 않은 영역의 메모리에 접근하는 것을 막는 것'이라고 할 수 있습니다. 한마디로 허가되지 않은 메모리 접근으로 인한 영향을 미리 예방하는 것입니다.
<메모리 보호의 정의>
-컴퓨터 메모리의 사용을 제어하는 방법
-OS에서 실행하고 있는 프로세스가 자신에게 할당되지 않은 영역의 메모리에 접근하는 것을 막는 것
(=허가되지 않은 메모리 접근으로 인한 영향을 미리 예방하는 것)
자, 이제 메모리 보호기법의 종류에 대해 알아보겠습니다. 사실 메모리 보호 기법은 점점 발전해 나가는 시스템 해킹에 대응하여 발전해 왔습니다. 그 중 오늘은 총 4가지의 메모리 보호기법을 다루겠습니다.
우선 가장 첫번째로 'ASLR'부터 설명하겠습니다. ASLR은 Address Space Layout Randomization의 약자로, 그 이름에서 알 수 있듯이 뭉뜬그려 말하면 '실행 및 호출 할 때 마다 주소 배치를 무작위로 배정하는 기법'입니다. 그러면 무엇의 주소 공간을 무작위로 배정한다는 것일까요? 바로 heap, stack, libc 등의 주소 공간입니다. 이러한 ASLR 기법의 효과는 buffer overflow 공격을 힘들게 한다는 점이지만, 이 또한 NOP sled, RTL, ROP 등으로 우회할 수 있습니다. 그럼 정리를 하면 ASLR 기법은 '실행할 때 마다 heap,stack,libc 등의 주소를 프로세스 주소 공간에 무작위로 배치하는 기법'입니다.
두 번째로는 'DEP/NX'에 대해 설명하겠습니다. DEP와 NX는 둘 다 같은 개념의 보호기법으로 각각 Data Execution Protection과 Non executable의 약자입니다. 각각의 의미를 읽어보면 한 마디로 '실행시키지 않는다'입니다. 좀 더 자세히 말하자면 'heap과 stack과 같이 buffer overflow 공격에 이용되는 메모리 공간에 있는 코드를 실행시키지 않는다'는 것이죠. (쉘 코드 실행 x)
세 번째로는 'ASCII-Armor'에 대해 설명하겠습니다. ASCII-Armor는 '라이브러리 함수(Libc)의 상위 주소에 \x00인 NULL 바이트를 삽입하는 기법'입니다. 이로써 buffer overflow에서 이용되는 'strcpy()'와 같은 취약한 함수들을 통한 공격을 힘들게 만듭니다. (strcpy()는 NULL byte를 만나면 종료)
마지막으로 'Canary'기법에 대해 설명하겠습니다. Canary기법이란 'buffer와 SFP(Stack Frame Pointer) 사이에 buffer overflow를 탐지하기 위한 임의의 데이터를 삽입하는 기법'입니다. 만약 buffer overflow를 통해 공격을 하면 canary가 변경되어 경고가 발생할 것입니다. 카나리에는 terminator canary, random canary 등이 있고, StackGuard와 ProPolice 등에서 canary 기법을 지원합니다.
<메모리 보호기법의 종류>
1). ASLR (Address Space Layout Randomization)
- 실행할 때 마다 heap,stack,libc 등의 주소를 프로세스 주소 공간에 무작위로 배치하는 기법
2). DEP/NX (Data Execution Protection/Non-Executable)
- heap과 stack과 같이 buffer overflow 공격에 이용되는 메모리 공간에 있는 코드를 실행시키지 않는 기법
3). ASCII-Armor
- 라이브러리 함수(Libc)의 상위 주소에 \x00인 NULL 바이트를 삽입하는 기법
4). Canary
- buffer와 SFP(Stack Frame Pointer) 사이에 buffer overflow를 탐지하기 위한 임의의 데이터(canary)를 삽입하는 기법
이렇게 목표했던 메모리 보호의 정의와 메모리 보호기법의 종류에 대한 설명이 끝났습니다. 그럼 포스팅을 마무리 하겠습니다. 만약 틀린 내용이 있다면 comment를 남겨주세요! (그냥 심심해서 comment 남겨주시면 더욱 감사합니다.)
'정보보안' 카테고리의 다른 글
5. 시스템 해킹 (System hacking) (145) | 2018.01.29 |
---|---|
4. Worm (2) | 2018.01.11 |
Anti Reversing (0) | 2017.12.27 |
Ransomware (0) | 2017.12.18 |