linux 메모리 보호 기법 해제(우분투)
메모리 보호 기법 해제
스택 실행권한 해제(Non-executable stack)
cat /proc/self/maps 에서 확인
실행권한을 주기 위해서 컴파일 시 -z execstack 옵션 추가
cat /proc/PID/maps로 왁인
ASLR(Address Space Layout Randomization/랜덤 스택)
ldd명령어로 라이브러리 베이스 주소 확인
sysctl -w kernel.randomize_va_space=0 명령어 (0이 해제)
stack만 랜덤화하기 위해서
sysctl -w kernel.randomize_va_space=1
stack/heap
sysctl -w kernel.randomize_va_space=2
echo 0 > /proc/sys/kernel/randomize_va_space -> 안될 시 ulimit -s unlimited
32bit 컴파일 : gcc -o 파일 명 파일 명 -m32
스택 실행권한 해제
sysctl-w kernel.exec-shield=0 (반대는 1)
execstack -s 파일 명: nx-bit해제
-fno-builtin : 표준 라이브러리와 링크되지 말고 단독으로 링크하라는 의미
STACK GUARD
해제 컴파일 옵션
-fno-stack-protector
dummy값 고정
-mpreferred-stack-boundary=2
/etc/sysctl.conf에 저장되어있음
환경 설정
자동 설정 : 커널 2.6 부터 제공 (Default 값은 1)
# sysctl -w kernel.randomize_va_space=0 (해제)
# sysctl -w kernel.randomize_va_space=1 (랜덤 스택 & 라이브러리)
# sysctl -w kernel.randomize_va_space=2 (랜럼 스택 & 라이브러리 & 힙)
# sysctl -w kernel.exec-shield=0 (스택 실행권한 해제)
# sysctl -w kernel.exec-shield=1 (스택 실행권한 설정)
시스템 시작할때 자동으로 설정하기
위에 설정 명령을 /etc/sysctl.conf 안에 쓴 후 reboot