Exploit Tech : Hook Overwrite

곽무경·2022년 7월 5일
0

System Hacking

목록 보기
19/27

Hooking(후킹)

운영체제가 어떤 코드를 실행하려 할 때, 이를 낚아채어 다른 코드가 실행되게 하는 것
그때 실행되는 코드 → 훅
malloc 함수와 free 함수를 후킹하여 공격자가 작성한 악의적인 코드가 실행되게 하는 기법
Full RELRO가 적용되더라도 libc의 데이터 영역에는 쓰기가 가능하므로,
Full RELRO를 우회하는 기법으로 활용될 수 있다.

malloc, free, realloc hook

C언어에서 메모리의 동적 할당과 해제를 담당하는 함수 → libc.so
libc에는 이 함수들의 디버깅 편의를 위해 훅 변수가 libc.so에 정의되어 있다.
__malloc_hook, __free_hook, _realloc_hook
hook 변수가 NULL인지 아닌지 검사하고, 아니라면 malloc을 수행하기 전에
__malloc_hook이 가리키는 함수를 먼저 실행한다.


예제 코드를 컴파일하려고 했더니..
deprecated : 중요도가 떨어져 더 이상 사용되지 않고 앞으로는 사라지게 될
이라고 한다. 훅 포인터는 앞으로 못 쓰는 것 같다.

one_gadget

one_gadget 또는 magic gadget은 실행되면 셸이 획득되는 코드 뭉치를 말한다.
one_gadget 도구를 사용하면 쉽게 one_gadget을 찾을 수 있다.
함수에 인자를 전달하기 어려울 때 유용하게 사용될 수 있다.

one_gadget의 각 주소와 함께 제약사항들이 출력된다.

0개의 댓글