Rev/Info
Find Windows OS (ASLR)
zooonique
2022. 2. 21. 11:05
반응형
먼저 ASLR은 PE파일을 메모리에 로딩할 때 Start Base Address를 랜덤하게 바꾸는 기법이다.
(디버깅할 때에도 실행할 때마다 시작 주소가 바뀐다.)
PE파일을 메모리에 로딩할 때는 .reloc 섹션을 참고해서 재배치한다.
(DLL은 항상 재배치 고려해야해서 .reloc 섹션이 있다고 한다.)
악성코드를 분석하다보면, x86/x64의 문제가 아닌 OS에 따라서 PE파일이 실행이 되지않는 경우가 가끔 있다.
그럴땐 어떤 환경에서 해당 파일을 실행시켜야하는지 알아내야하는데, ASLR이 그 단서가 되기도한다.
예를 들어보면,
디버깅 도중에 특정 주소로 CALL/JMP 하는 명령어가 존재하고,
그 주소가 DLL 주소를 가리킴과 동시에 명령어 실행하자마자 프로세스가 죽어버린다면?
이 부분을 의심해보고 다시 디버깅을 해봤을 때 해당 주소가 하드코딩 되어있는 것을 발견한다면,
윈도우는 ASLR을 Vista버전 이후부터 적용하는 것을 고려해서
이전 OS환경에서 프로그램을 돌려보는 것도 하나의 해결 방법이 될 수 있다.
반응형