Windows Heap Internals
2014. 12. 17. 17:22
힙 메모리에 대해 정리...끝나면 깔끔하게 문서로 작성해서 공유 할 예정입니다.
===========================================================================
메모리 커럽션 류의 취약점은 스택 기반 취약점과 힙 기반 취약점이 존재한다. 스택기반 취약점은 정리가 잘 되어있는 반면 힙 기반
Exploitation 기술과 배경 지식들은 자료가 부족한 편이다. 이에 나 또한 힙 메모리에 대한 기존 지식 정리와 함께 이 기회에 조금 더 자세
히 공부해 보려고 한다.
ㅁ 윈도우 힙 메모리 관리 메커니즘
- 힙 메모리 관리 메커니즘은 버전이 올라가며 조금씩 바뀌어 왔으며 Vista 를 기준으로 관리 메커니즘이 아래와 같이 변경되었다.
Front-end Heap Management Back-end Heap Management
Windows XP LookAside List
Windows 7 Low Fragmentation Heap ListHint, Freelist
- 응용프로그램이 메모리를 요청하면 Frontend 인 LFH 에 의하여 "이미 해제된 메모리 블럭 리스트" 중에서 반환을 해 준다. 단편화를 줄이기 위해(low fragmentation)
요청한 메모리 크기를 만족시키는 가장 작은 메모리블럭을 반환해준다. 또한 최근에 해제된 메모리를 반환해 주는 경향이 있다. 만약 Frontend 가 처리할 수 없는
크기의 요청이 들어오면 Back-end 단에 요청을 해서 새롭게 메모리를 할당받는 구조이다.
ㅁ Use-After-Free 의 공격 원리
- ex) 32 byte 의 객체가 free 되었을때, free 된 객체와 비슷한 사이즈로 객체를 할당받으면 LFH 에 의해 최근에 반환된 메모리 블럭(주소)를 할당받게 되어 덮어쓸 수 있다.
이렇게 되면 VTable 을 변조할 수 있게 되어 (Fake VTable) 이를 이용하여 임의의 쉘코드를 실행시킨다.
'Windows System Hacking' 카테고리의 다른 글
Internet Explorer 10 Exploit - God mode (0) | 2017.06.07 |
---|---|
쉘코드 인코더 구현 / GetPC - 현재 실행 코드(eip, pc) 구하는 방법 (1) | 2015.01.12 |
Paimei - pstalker 모듈 소개 (0) | 2013.06.19 |
Windows bufferoverflow (6) - ROP 2 (bypass DEP with mona.py) (5) | 2013.06.09 |
Windows bufferoverflow (5) - ROP 1 (DEP 와 우회방법) (2) | 2013.06.08 |