안녕하세여
인코그니토에서 heap overflow 라는 주제의 발표를 들었습니다.
발표자는 조성환님이 였습니다.
아래는 발표 중에 ONENOTE에 적었던 것들입니다.
Heap : Malloc을 통해 메모리에 할당
Stack 높은 주소 : 큰메모리에서 작은메모리의 조소로 쌓인다.
Heap 낮은 주소 : 작은 메모리에서 큰 메모리로 쌓인다.
Who controls Heap? --> memory Allocatorfk라고 불리는 프로그램이 힙 메모리를 관리한다.
dImalloc-General Purpose allocaor
생각보다 malloc 은 처리해야할 것들이 많다. 그렇기 때문에 memory Allocatorfk 들이 많다.
Malloc 에서 사용되는 자료구조
Heap 큰 메모리 덩어리들 지칭
Chunk 가각 malloc된 조각들을 지칭
Malloc_chunk
메모리를 요청한 크기보다 조금 크게 할당된다.
실제로 메모리 주소를 응용 프로그램에 줄 때는 user data쪽을돌려준다.
Bins
Free 된 것을 재사용하기 위해서 모아두는 곳 비슷한 크기끼리 모아
번호를 붙여서 관리한다.
(메모리 단편화를 막기 위해서 사용 됨)
User data가 해제 되면 사용하지 않는 공간에 fd와 bk라는 내부 정보를 저장해 둔다.
나중에 다시 쓰기 위해서 링크드 디스크 형석으로 저장한다.
- free된 목록에 비슷한 크기가 있으면 그것을 응용 프로그램에게 줌
- 재사용 할 것이 있으면 top chunk에 저장
오늘 소개할 heap 공격 방식
fastbin_dup
House of force
Poison Null Byte
- Fastbin_dup
중복 free 를 이용할 경우
같은 free(a) 중복해서 이용할 경우 변수를 하나 더 만들어서
A가 한번 돌고 다시 A로 돌아 올 떄 free(c)를 하여 *c=원하는 주솟값
코드를 넣으면 프로그램이 원하는 메모리를
요구 조건 a,a, == x a,b,a==0
(12345678번지에 있는 size 영역을 맞춰줘야함 )
(크기가 작은 청크들 에만 적용이 가능하다.)
- House of force
Top chunk size 통해 조작을 통해서 원하는 위치에 malloc 을 할 수 있음
힙에서 bof 취약점이 선행 되어야한다.
write- what - where 가능 (무엇을 어디에다가 쓸 수 있다)
Top chunk size -->
Chunk size(30) buffer over flow( 400000) |
chunk size(100) |
|
이렇게 만들어진 청크는 기존의 힙 보다 400000만큼 떨어진 곳에 위치
40000000을 조작하는 것으로 원하는 위치에 malloc이 가능하다.
Top chunk size 조작 (최대한 크게)
다음에 할당 받고 싶은 주소- 현재 top chunk주소 만큼 새로 malloc 할당
다음 malloc을 통해서 할당된 메모리에 원하는 값을 복사.
요구사항
현재 top chunk 주소를 알아내야함.
Bof 버그로 top chunk 의 값을 수정 할 수 있어야한다.
- Posion Null Byte
This chunk size 의 N, M, P
PREV_INUSE(P)
바로 이전 청크가 할당 된 경우
IS_MMAPPED(M)
현재 청크가 mmap을 통해 할당 된 경우
NON_MAIN_ARENA(N)
바로 직전의 청크의 사이즈를 저장 (P=0, 즉 이전 청크가 해제 되었을 떄에만 유용 하다)
조건 : 널 바이트 하나 overwrite와 , malloc,free를 원하는 대로 할 수 있어야 한다.
다른 취약점에 비해서는 요구 조건이 적고 박생할 수 있을 가능성이 높음
A,B,C를 만들고 , B를 해제
A를 를 overflow 해서 해제된 B의 사이즐를 줄여버림
B를 쪼개서 D와 E를 만듬
개발자 입장에서의 heap 취약점을 막을려면?
Double-Free와 같은 취약점을 발생시키지 않는것.
Heap상에서 BOF가 나지 않도록 관리하는 것 .
널 바이트 하나도 허용 해서는 안된다.
공격자 입장에서 HEap을 Exploit하려면
위에 언급한 취약점을 찾을 수 있어야한다.
Heap근처에 위치한 자료구조를 잘 이해하고 있어야한다.
heap overflow에 대해서 쉽게 이해할 수 있어서 정말 유익한 시간이었습니다.
'ETC > 정보보안 세미나' 카테고리의 다른 글
화이트 햇 콘테스트 (0) | 2017.01.04 |
---|---|
ksia 발표 (0) | 2017.01.04 |
빵빵빵 세미나 (0) | 2017.01.04 |
kusic 학술 세미나 (0) | 2016.09.10 |
인코그니트 참가 및 일상 (0) | 2016.08.18 |
댓글