ASLR
ASLR 이란?
Address Space Layout Randomization
프로세스의 가상주소 공간에 어떤 object 가 매핑될 때
그 위치를 프로그램 실행 시 마다 랜덤하게 변경하는 보안 기법
메모리 해킹 방지를 위해 Windows Vista 부터 지원된 기법
스택이나 힙, 라이브러리 등의 주소를 랜덤으로 프로세스 주소 공간에 배치하는 기법
프로세스를 실행 할 때 마다 데이터의 주소가 변경됨
ASLR 을 사용하는 이유
user32.dll 와 같이 windows 에서 제공해 주는 라이브러리 안에
dll 을 import 하는 LoadLibrary 함수와 GetProcAddress 함수가 있음.
이 함수를 사용하는 법은
고정 라이브러리 메모리 주소가 있어서
항상 해당 메모리 주소로부터 + 얼마를 하여
LoadLibrary 함수와 GetProcAddress 함수 메모리 주소를 예측할 수 있었음.
예) 0x100000 = user32.dll 메모리 주소
0x100000 + 0x100 = LoadLibrary 함수 메모리 주소
0x100000 + 0x200 = GetProcAddress 함수 메모리 주소
악의 적인 사용자의 경우
상위 처럼 함수의 메모리 주소를 알 수 있으니
악의 적으로 실행 파일에서 어셈블리 언어 공격을 해서
본인 실행 라이브러리를 수행하는 공격을 하기도 함.
이러한 과정이 가능한것은
user32.dll 라이브러리가 올라가는 메모리주소가 항상 같아서 가능했었는데
이 메모리 주소를 랜덤하게 변경해주는것이
ASLR 기능임.
'보안' 카테고리의 다른 글
PKI 리서치 - 암호화 알고리즘 개념 (0) | 2022.04.02 |
---|---|
DEP(Data Execution Prevention) 이란? (0) | 2021.08.27 |
OpenSSL를 이용한 암/복호화, 해쉬 (0) | 2021.02.23 |
해쉬 (HASH) (0) | 2021.02.23 |
보안 (0) | 2021.02.23 |