관리 메뉴

Information Security

후킹 본문

포렌식/윈도우 포렌식

후킹

HackingPractice 2020. 12. 27. 10:40

후킹이란

정보를 가로채거나 실행 흐름을 변경하여 원래와는 다른 기능을 제공하는 기술

Method Object Location Technique API
static file 1) IAT
2) CODE
3) EAT
X X
dynamic Process
Memory
(000000000 ~7FFFFFFFF)
A) Debug
(Interactive)
DebugActiveProcess
GetThreadContext
SetThreadContext
B) Injection
(Statndalone)



B-1) Independent Code CreateRemoteThread

B-2) Dll File


Registry(Appini_DLLs)
BHo(IE only)

SetWindowsHookEx
CreateRemoteThread

메시지 후킹

- SetWindowsHookEx 함수 사용

그림 1-1 메시지 후킹

IAT 후킹

IAT(Import Address Table)를 수정하여 기존의 등록된 API가 아닌 다른 DLL의 함수를 참조

그림 1-2 정상적인 IAT
그림 1-3 변조된 IAT

API 후킹

Process Attach를 사용하는 후킹

(Debugger엣 처리하지 않는 예외는 OS로 넘기거나, Debuggee에게 돌려줌)

그림 1-4 디버거 동작 원리
그림 1-5 Attach를 사용한 API

 

그림 1-6 DLL Injection
그림 1-7 API 후킹

인라인 후킹

후킹 하려는 해당 함수의 가장 앞이나 중간쯤을 후킹 하는 기법

 

SSDT 후킹

  • 시스템 서비스 기술자 테이블(System Service Descriptor Table)은 커널 모드 함수에 대한 포인터를 제공
  • ntdll.dll 또는 다른 사용자 모드 라이브러리 내 작은 스텁(stub)은 통제된 방법으로 커널 모드로 진입하는 스레드 호출을 도움
  • 전환은 SYSTEM(XP 이상)나 INT 0x2E(2000 이하)를 발생함으로 수행

SSDT 한계

  • Patchguard : 64비트 시스템에서 커널 패치 보호(Kenrel Patch Protection - KPP) 기능으로 변경 불가
  • Undocumented API

'포렌식 > 윈도우 포렌식' 카테고리의 다른 글

패킹  (0) 2020.12.27
루트킷  (0) 2020.12.27
인증번호 탈취  (0) 2020.12.25
NTFS MFT  (0) 2020.12.22
파일시스템  (0) 2020.12.21