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에 저장되어있음


+ Recent posts