(rtl은 내가 만든 연습용 소스이다!)

ldd명령어( 공유 라이브러리의 주소를 출력(?) ) 을 이용해 주소를 확인해보니 
여기저기로 톡톡 날아다니는것을 알 수 있다 

바로 ASLR 기법이 걸린 상태이다 .

이제 ASLR 기법을 해제하는 방법을 소개하고자 한다 .

첫번째는 /proc/sys/kernel/randomize_va_space 를 조작하는 방법이다

randomize_va_space 는 0 , 1 , 2 의 값을 가진다

0값은 randomize를 해제하는 옵션이고 1 , 2 는 실행하게 하는 옵션이라고 생각하면 된다 그렇다면 randomize_va_space를 훔쳐보도록 하자!

2로 값이 설정되있다 randomize가 실행되고 있다

그렇다면 이 값을 조절해보자! 

그런데 그냥 실행하면 퍼미션 디나이드가 뜬다 

randomize 값을 조절 하려면 root의 권한이 필요하다

echo 0 > /proc/sys/kernel/randomize_va_space 라고 입력해준후에 

randomize의 값을 확인해보니 0으로 변한것을 알 수 있습니다 . 

라이브러리의 주소가 더 이상 변하지않는 것을 확인할 수 있습니다!


두 번째로 소개드릴 방법은 setarch xxxxxx -R 입니다

[xxxxxx 에는 각 리눅스의 버전 ex) linux64 liunx32 i386 등등, 을 적어주시면 됩니다

addr-no-randomize 라고 적혀있네요! 

이 명령어를 실행하면 쉘이 뜨는데요 그 쉘 안에서는 aslr이 풀려있는 상태입니다!

이 명령어는 딱히 권한이 필요 없으므로그나마 이 방법이 가장 좋다고 생각할 수 있습니다! 

쉘이 열렸고 주소 값이 변하지 않는 것을 확인할 수 있습니다 


세번째로 소개 해드릴 방법은 

ulimit -s unlimited 입니다! 

코어덤프와 상당히 유사하지요 ? 스택을 꽈악 채워버려서 주소값이 움직이지 못하도록 합니다! 

다만 32비트에서만 사용이 가능하고 64비트에서는 사용을 못합니다!

+ Recent posts