본문 바로가기
Security/Windows System

ASLR(Address Space Layout Randomization) 끄기 /비활성화

by Winduck 2017. 6. 20.
반응형

  

Windows Vista이상버전에서는 메모리 보호를 위해 Load되는 PE의 Base주소를 Random하게 할당합니다.

근데 이 기법으로 인해 분석할경우에 VA계산이 어렵습니다.ㅠㅠ 그래서 이번 게시글에서는 ASLR을 끄는 방법을 알아보겠습니다.

요점은 PE의 Optional Header의 DLL Characteristics에 있습니다.




빨간색 박스 부분에서 IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 가 있습니다. DYNAMIC_BASE 말에서 알수있다시피  이 Flag값이 ASLR기능을 ON/OFF기능을 수행합니다. (위에 ImageBase가 0x1000000임을 기억합시다!!!) 현재 상태에서 올리디버거에 올려보겠습니다.



ImageBase인 0x1000000과 무관하게 0xE60000이라는 주소로 할당되는 것을 볼 수 있습니다. 이번에는 ASLR을 OFF해보겠습니다.

이를 위해 DLL Charactoristics 값의 0x40(IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE )를 지워보겠습니다. 

HXD를 통하여 해당 (0x40)IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE Flag를 제거했습니다.



올리디버거에 올려보겠습니다.



기존에 파일에 정의되었던 ImageBase값그대로 로드되는것을 볼수있습니다. 이를통해 ASLR이 적용된 Windows Vista이상 버전에서 별도의 VA계산이 필요없이 분석이 가능해졌습니다!!!



반응형

댓글