티스토리 뷰
환경은 Kali 리눅스 입니다.
---------------------------------------------------
칼리 리눅스 ASLR끄기
ASLR이란 Address Space Layout Randomization의 약자로서
공격자가 제대로 된 RET를 구하기 힘들게 만들기 위해 모든 영역을 랜덤화
하는 메모리 보호기법이다.
root@Kali:~# ls /proc/sys/kernel/ | grep randomize
randomize_va_space
-> ASLR옵션을 끄고 키는 파일
root@Kali:~# sysctl -w kernel.randomize_va_space=2
kernel.randomize_va_space = 2
현재 힙 + LIBC + 스택영역까지 모두 보호
1은 힙을 제외한 LIBC와 스택영역
printf_buffer.c
--------------------
#include <stdio.h>
int main( int argc, char **argv ) {
char buffer[100];
strcpy( buffer, argv[1] );
printf( "Buffer Address : [ %p ]\n", buffer );
return 0;
} // gcc -o printf_buffer printf_buffer.c
--------------------
root@Kali:~/system_hack_test# ./printf_buffer 1
Buffer Address : [ 0xbfb2dfcc ]
root@Kali:~/system_hack_test# ./printf_buffer 1
Buffer Address : [ 0xbfa7c01c ]
root@Kali:~/system_hack_test# ./printf_buffer 1
Buffer Address : [ 0xbffd61ac ]
ASLR이 적용되어 있는 모습
root@Kali:~/system_hack_test# sysctl -w kernel.randomize_va_space=1
kernel.randomize_va_space = 1
root@Kali:~/system_hack_test# ./printf_buffer 1
Buffer Address : [ 0xbfe14b0c ]
root@Kali:~/system_hack_test# ./printf_buffer 1
Buffer Address : [ 0xbf9afe5c ]
1로 바꿔보아도 스택영역은 아직 보호되고 있으니 랜덤화가 유지된다.
그럼 0으로 바꿔서 사용을 중지해보면
root@Kali:~/system_hack_test# sysctl -w kernel.randomize_va_space=0
kernel.randomize_va_space = 0
root@Kali:~/system_hack_test# ./printf_buffer A
Buffer Address : [ 0xbffff6fc ]
root@Kali:~/system_hack_test# ./printf_buffer A
Buffer Address : [ 0xbffff6fc ]
root@Kali:~/system_hack_test# ./printf_buffer A
Buffer Address : [ 0xbffff6fc ]
0으로 값을 주면 ASLR이 작동하지 않는것을 확인할 수 있다.
'Pwnable > System 잡지식' 카테고리의 다른 글
ulimit -s unlimited :: ASLR이 꺼지는 이유 (0) | 2015.10.24 |
---|---|
Pwnable 워게임 사이트, 문서 정리 (2) | 2015.01.28 |