ASLR의 개념
해킹/개념 정리 2016. 1. 13. 15:20
ASLR-Adress Space Layout Randomization
내가 이해한 ASLR은 프로세스가 메모리에 올라갈 때 힙, 스텍, 공유 라이브러리의 위치를 랜덤하게 정해주는 것이다.
고정주소를 알아야 가능한 일부 익스플로잇 기법에 대해서 효과적인 대처가 될 수 있으나, 또 무식하게 주소가 맞을때까지 여러번 돌리면 공격이 성공할 수 있다는 단점 또한 가지고 있는 듯 하다.
아무튼 이렇게 프로세스 내에서 힙, 스텍등의 위치를 랜덤하게 하기 위해서 Image Base값을 랜덤하게 바꿔준다고 한다.
Image base에 관해서도 설명을 해야할 것 같은데..
이름에서 어느정도 느껴지듯이 가상 시작점이라고 생각하면 이해가 좀 편할듯 하다.
프로세스의 가상 메모리의 절대주소 VA값은 이 Image base값 + RVA(상대주소)로 정해진다.
쉽게말해서 어떤 스텍이 0xdeadbeef라는 주소에 위치한다면 Image base값 0xdead0000에 RVA 0x0000beef값을 더해서 0xdeadbeef라는 주소에 위치하게 된다는 것이다. 그런데 여기서 Image base값을 랜덤하게 정해줘 버려서 해당 스텍의 주소가 0xdeadbeef가 될지 0xcafebeeef가 될지 뭐가될지 공격자가 알수 없게 하겠다는 발상이다.
정확히 Image base와 RVA가 2바이트씩 떨어지는지는 확인한 바가 없다... 그냥 개념이 저렇다는 것이다.
ASLR을 우회할 수 있는 방법이나 좀더 깊히 들어가야 하는 내용은 필요할 때 그때그때 다른 포스팅에서 다루고 이 포스팅에 링크를 걸어놓는 방식으로 해야겠다.
'해킹 > 개념 정리' 카테고리의 다른 글
25바이트 쉘코드를 작성해봤다. (0) | 2016.01.16 |
---|---|
쉘코드 작성법 (0) | 2016.01.16 |
함수의 프롤로그와 에필로그에 관한 고찰 + fake ebp(실패) (0) | 2016.01.13 |
다중 파이프 페이로드 (0) | 2015.11.24 |
GOT overwrite (0) | 2015.11.24 |