ASLR이란?
PE파일이 메모리에 로딩될 때 로딩 시작 주소 값을 랜덤하게 바꾸는 것이다.
학교 운영체제때 배운내용으로는.. 지역주소로 계속 똑같이 보이게되면 공격자에게 당하기 쉬워져 ASLR이 보안측면에 사용된다고 했었음
책에도 비슷하게 exploit code작성을 어렵게 하기 위해 사용되었다고 함
모든 실행파일에서 적용되는 기술은 아니고 운영체제의 Kernel Version이 6이상이어야하고, 개발 도구에서 /DYNAMICBASE 옵션을 지원해야된다고 한다.
비주얼스튜디오에서 확인한건데
디버그 > 속성에서 위와같은 화면이 나오면 링커 > 고급에서 임의 기준 주소를 설정하면 된다.
윈보운 과제할때는 편하게 하려고 꺼두고 했던..
아래에서 파일을 받아서 실습을 진행해보았다.
먼저 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 |