ASLR 이란
Adress Space Layout Randomization이란 뜻으로 메모리 보호기법중 하나이다
프로그램이 실행될때마다 실행되는 메모리 주소가 달라짐
하제방법
sysctl -w kernel.randomize_va_space=0
위와 같이하면
kernel.randomize_va_space = 0와 같이 뜨게된다.
다시활성화 시키려면 끝에 1을 적어주면됨
-----------------------------
또는
echo 0 >> /proc/sys/kernel/randomize_va_space
환경변수 주소 변경되는것 해제
------------------------------
스택가드 해제
gcc할때 옵션을 걸어준다.
스택가드 해제 및 더미값일정하게 만들기위해서
gcc -o test test.c -fno-stack-protector -mpreferred-stack-boundary=2 -zexecstack
와같이 명령을 넣어주면 된다.
---------------------------
<추가적으로 잘 정리된 곳> 출처 : http://kaspyx.kr/3
* 공격환경 만들 때 컴파일 옵션들
-fno-stack-protector : 스택프로텍트
-fno-builtin : 표준 라이브러리와 링크되지 말고 단독으로 링크하라는 의미
-mpreferred-stack-boundary=2 : 더미 없애기
-z execstack : 스택에 실행 권한 주기
* 랜덤스택 (0 이면 해제)
sysctl -w kernel.randomize_va_space=1
(stack만 랜덤)
sysctl -w kernel.randomize_va_space=2
(heap/stack 둘다랜덤)
randomize_va_space=0 : ASLR 해제
randomize_va_space=1 : 랜덤 스택 & 랜덤 라이브러리 설정
randomize_va_space=2 : 랜덤 스택 & 랜덤 라이브러리 & 랜덤 힙 설정
* 스택 실행권한
sysctl -w kernel.exec-shield=0 (스택 실행권한 해제)
sysctl -w kernel.exec-shield=1 (위와 반대)
/etc/sysctl.conf에 저장되어있음