티스토리 뷰

Pwnable/System 잡지식

ASLR 활성/비활성

err0rless313 2014. 10. 4. 20:32

환경은 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이 작동하지 않는것을 확인할 수 있다.




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함