미역줄기의 이모저모

[ Dreamhack ] Hook Overwrite 본문

Hacking/DreamHack 시스템 해킹 강의

[ Dreamhack ] Hook Overwrite

미역줄기줄기 2024. 2. 17. 14:45
728x90

후킹(hooking) 운영체제가 어떤 코드를 실행하려 할 때, 이를 낚아채어 다른 코드가 실행되게 하는 것이다. 이때 실행되는 코드를 훅(Hook)이라고 부른다.

 

후킹의 용도

  • 함수에 훅을 심어서 함수의 호출을 모니터링한다.
  • 함수에 기능을 추가한다.
  • 아예 다른 코드를 심어서 실행 흐름을 변조시킨다.

 

 

훅 오버라이트

  • malloc()과 free() 를 호출할 때 함께 호출되는 훅이 함수 포인터 형태로 존재한다. 이 함수 포인터를 임의의 함수 주소로 오버라이트하여 악의 적인 코드를 실행하는 기법이다.
  • Full RELRO를 우회하는 기법이다.

 

원가젯

  • 단일 가젯만으로도 셸을 실행할 수 있는 매우 강력한 가젯이다.

 

malloc, free, realloc, hook

  • c언어에서 메모리의 동적 할당과 해제를 담당하는 함수
  • libc.so에 구현되어 있다.
  • 각각에 대응되는 훅 변수가 존재한다.
  • libc의 bss 섹션에 위치하여 실행 중에 덮어쓰는 것이 가능하다.
  • 훅을 실행할 때 기존 함수에 전달한 인자를 같이 전달해준다.
  • __malloc_hook을 system 함수의 주소로 덮고 malloc("/bin/sh")을 호출하여 셸을 획득하는 공격 가능

 

 

'Hacking > DreamHack 시스템 해킹 강의' 카테고리의 다른 글

[ Dreamhack ] 포맷 스트링 버그(FSB)  (0) 2024.02.24
[ Dreamhack ] Out of Bounds  (0) 2024.02.20
[ Dreamhack ] link  (0) 2024.02.09
[ Dreamhack ] NX & ASLR  (0) 2024.02.08
[ Dreamhack ] Stack Canary  (1) 2024.02.08