공부해요/리버싱_핵심원리

41. ASLR

yenas0 2024. 12. 26. 08:10
반응형

ASLR이란?

PE파일이 메모리에 로딩될 때 로딩 시작 주소 값을 랜덤하게 바꾸는 것이다.

 

학교 운영체제때 배운내용으로는.. 지역주소로 계속 똑같이 보이게되면 공격자에게 당하기 쉬워져 ASLR이 보안측면에 사용된다고 했었음

책에도 비슷하게 exploit code작성을 어렵게 하기 위해 사용되었다고 함

 

모든 실행파일에서 적용되는 기술은 아니고 운영체제의 Kernel Version이 6이상이어야하고, 개발 도구에서 /DYNAMICBASE 옵션을 지원해야된다고 한다.

비주얼스튜디오에서 확인한건데

디버그 > 속성에서 위와같은 화면이 나오면 링커 > 고급에서 임의 기준 주소를 설정하면 된다.

윈보운 과제할때는 편하게 하려고 꺼두고 했던..

 

 

아래에서 파일을 받아서 실습을 진행해보았다.

https://github.com/reversecore/book/tree/master/%EC%8B%A4%EC%8A%B5%EC%98%88%EC%A0%9C/05_64%EB%B9%84%ED%8A%B8_%26_Windows_Kernel_6/41_ASLR/bin

 

book/실습예제/05_64비트_&_Windows_Kernel_6/41_ASLR/bin at master · reversecore/book

리버싱 핵심원리 - 소스 코드 및 실습 예제. Contribute to reversecore/book development by creating an account on GitHub.

github.com

 

 

먼저 ASLR.exe파일을 실행시키면

 

EIP랑 스택이위와 같이 뜨게된다.

그러고 나서 ASLR.exe파일을 보면은

 

이렇게 확인할 수 있다.

 

PEview에서 보면

 

ASLR이 적용된 경우에는  .reloc섹션이 있는것을 확인할 수 있다.

근뎅얘는 선택적인거라 없어도 되고 사실 중요한거는

IMAGE_FILE_HEADER\Characteristics이다.

 

두 파일을 비교해보면 ALSR이 적용된 실행파일에는 0001플래그가 없다.

 

IMAGE_FILE_HEADER\DLL Characteristics에서도 차이가 있는데 

이렇게.. 40플래그 차이도 있음

 

즉 PE헤더에 위에거를 변경하면 ASLR기능을 지원하거나 뺄수가 있다는것

 

ALSR 기능을 제거해보자

Hxd를 사용했다. 먼저 DLL Charateristics먼저 바꿔준다.

 

 

그러고 나서 다시 디버거로 보면

ASLR파일인데 ALSR_no처럼 바뀐걸 볼 수 있다.

반응형

'공부해요 > 리버싱_핵심원리' 카테고리의 다른 글

43. DLL Injection in Kernel 6  (0) 2024.12.26
42. Session in Kernel 6  (0) 2024.12.26
40. 64비트 디버깅  (0) 2024.12.26
39. WinDbg  (1) 2024.12.18
38. PE32+  (0) 2024.12.18