본문 바로가기

Free

(2)
[Lecture] Use After Free 1. Use-After-Free 메모리 참조에 사용한 포인터를 메모리 해제 후, 제대로 초기화하지 않아 발생하는 취약점이다. 해제한 메모리를 초기화하지 않고 다음 청크에 재할당해주기 때문이다. 즉, 해제된 메모리에 접근할 수 있을 때, 발생하는 취약점이다. Chunk(청크) 란? • malloc에 메모리 할당을 요청하면, 넓은 메모리의 영역을 다양한 크기의 덩어리(chunk)로 나눈다. • chunk는 사용중인 덩어리, 해제된 덩어리, Top 덩어리, Last Remainder 덩어리가 있다. • 위에서 말하고 있는 청크는 "해제된 덩어리"로 응용프로그램에서 시스템에 반환한 덩어리를 의미하는 것이다. 2. Dangling Pointer 2-1. 정의 컴퓨터 과학에서 'Dangling Pointer'는 유..
[Practice] Hook Overwrite 1. Hook Overwrite Hook의 특징을 이용한 공격 기법이다. [참고] Hooking은 운영체제가 어떤 코드를 실행하려할 때, 이를 낚아채어 다른 코드가 실행되게 하는 것을 의미하며, 이때 실행되는 코드를 Hook이라고 한다. 2. 실습 목표 본 실습에서는 malloc과 free함수를 후킹하여, 각 함수가 호출될 때 공격자가 작성한 악의적인 코드가 실행되도록 하는 기법을 실습한다. Full RELRO가 적용되어도, libc의 데이터 영역에는 쓰기가 가능하므로 Full RELRO를 우회하는 기법으로 사용할 수 있다. 3. 메모리 함수 훅 C언어에서 메모리 동적할당&해제를 담당하는 함수는 malloc, free, realloc이 대표적이며, 해당 함수들은 libc.so에 구현되어 있다. libc에..