1 / 32

Heap Exploitation Techniques

Heap Exploitation Techniques. 2017 KUCIS 영남권 세미나. Who am I. Name : 우동규 Age : 26 Interest : Pwnable E-mail : mrwoo92@naver.com Blog : http://woosunbi.tistory.com. INDEX. 1. G libc malloc Structure. 2 . Exploit with Unlink. 3 . House of Spirit. 4 . House of Force.

champ
Download Presentation

Heap Exploitation Techniques

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Heap Exploitation Techniques 2017 KUCIS 영남권 세미나

  2. Who am I Name: 우동규 Age: 26 Interest : Pwnable E-mail : mrwoo92@naver.com Blog : http://woosunbi.tistory.com

  3. INDEX 1. Glibcmalloc Structure 2. Exploit with Unlink 3. House of Spirit 4. House of Force

  4. Glibcmalloc structure ㆍdlmalloc - General purpose allocator ㆍptmalloc2 - Glibc ㆍjemalloc - FreeBSD and Firefox ㆍtcmalloc - Google ㆍlibumem - Solaris

  5. Chunk structures

  6. Bins (Total 126) ㆍFast bin (exact fit) ㆍUnsorted bin (Bin 1) ㆍSmall bin (Bin 2 to Bin 63, exact fit) ㆍLarge bin (Bin 64 to Bin 126)

  7. ㆍbin의 개수 - 10 Fast bin / Unsorted bin ㆍSingle Linked list, LIFO(Last In First Out) ㆍ병합 없음 -> 속도가 빠르다. ㆍbin의 개수- 1 ㆍDouble Linked List, FIFO(First In First Out) ㆍSmall / Large bin의 Chunk가 free 되었을 때 재사용의 기회를 주기 위함(속도 향상)

  8. Fast Bin Structure

  9. ㆍbin의 개수 - 62 Small bin / Large bin ㆍchunk size < 512 bytes ㆍDouble Linked List, FIFO(First In First Out) ㆍbin의 개수 - 63 ㆍchunk size >= 512 bytes ㆍ내림차순 정렬

  10. Unsorted, Small and Large Bin Structure

  11. ㆍchunk의 사이즈가 증가할 때 Unlink (1) ㆍfree된 chunk 가 다시 malloc될 때

  12. fd fd Unlink (2) BK P FD bk bk BK->fd = P->fd BK P FD FD->bk = P->bk

  13. BK->fd = FD fd ㆍHeap Overflow 를 이용하여 PREV_INUSE bit 변조 Exploit with Unlink (1) bad_BK P bad_FD ㆍFD+12 = BK, BK+8 = FD 원하는 주소에 값 overwrite 가능 bk FD->bk = BK

  14. ㆍglibc 2.3.3 이상버전에서는 취약점 패치 Exploit with Unlink (2)

  15. ㆍ Double Free Protection (1) ㆍ check next chunk’s PREV_INUSE bit

  16. ㆍ Invalid next size Protection (2) ㆍ 2*SIZE_SZ <= next chunk size <= av->system_mem

  17. ㆍ Corrupted Double Linked list Protection (3) ㆍ FD->bkand BK->fd point to currently unlinked chunk

  18. Prerequisite : >알고 있는 주소에 malloc으로 할당된 영역들이 포인터 배열로 저장되었을 때 사용 가능하다. Unsafe Unlink

  19. bypass protection • > 검사 과정을 우회하기 위해 FD->bk, BK->fd의 주소를 P 와 동일하게 해야 한다. • > Next chunk 의 prev_size와 size 필드를 속여야 한다.

  20. Prerequisite : > chunk 주소를 저장하고 있는 변수를 overwrite 할 수 있어야 한다. > 위의 chunk 를 free 해야 한다. > free 한 chunk size 와 같은 chunk size 를 malloc해야 한다. > user input 이 위의 chunk 에 복사되어야 한다. House of Spirit (1)

  21. ㆍglibc에서 free 할 때 뒤에 인접한 chunk 의 크기를 검사 House of Spirit (2) ㆍ 2*SIZE_SZ <= Next Chunk size <= av->system_mem

  22. House of Spirit (3) AAAA… buf Fake chunk address Fake chunk *p

  23. House of Spirit (4)

  24. Prerequisite : > top chunk overwrite 이 가능해야 한다. > sizecontrol 이 가능한 malloc이 호출되어야 한다. > 추가적으로 한번 더 malloc이 호출되어야 한다. House of Force (1) ※ top chunk : 어떠한 bin 에도 속하지 않으며, Heap 에서 사용 가능한 공간을 표현

  25. House of Force (2) (1) top chunk overwrite (2) malloc size control (3) malloc again

  26. House of Force (3) top chunk

  27. House of Force (4) top chunk overwrite!!

  28. ㆍ malloc size control > 덮어쓰고자 하는 주소 – &top chunk – 0x8(chunk header) House of Force (5)

  29. ㆍ malloc again House of Force (6) > 공격자는 원하는 임의의 포인터를 반환 받을 수 있다. ※ 만약 ASLR 이 걸려있다면,top chunk 주소 leak 해야 함.

  30. Reference https://sploitfun.wordpress.com/2015/02/10/understanding-glibc-malloc/ https://sploitfun.wordpress.com/2015/02/26/heap-overflow-using-unlink/ https://github.com/shellphish/how2heap http://phrack.org/issues/66/10.html https://bpsecblog.wordpress.com/about/ http://blog.naver.com/mathboy7/220986657907

  31. 감 사 합 니 다

More Related