일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 윈도우 커널 디버깅
- hacking
- Network Byte Order
- Windows Kernel
- arudino
- Windows Kernel Driver
- pcap packet capture
- 윈도우 커널 드라이버
- pwnable
- Windows
- 윈도우 커널
- Msvcrt.dll
- C언어 패킷캡쳐
- 네트워크 바이트 오더
- apphelp.dll
- packet capture
- windows kernel debugging
- vcruntime.dll
- 바이트 오더
- ucrtbase.dll
- Windows Kernel Debug
- pcap packet
- HackCTF
- 포너블
- vcruntime140.dll
- 개발 환경 준비
- 해킹
- IAT Hooking
- 시스템해킹
- 개발하기
- Today
- Total
미친해커
[Reversing] 리버싱의 꽃 후킹이란? 본문
이제부터 본격적으로 프로그래밍뿐만 아니라 해킹과 관련된 글도 포스팅하려고 한다. 모든 내용은 필자가 공부한 내용을 바탕으로 서술되며 내가 해킹을 배우고 싶어하는 친구들에게 가장 알려주고 싶은 기술을 API Hooking이다. 나는 후킹을 책으로 배우지 않고 실제 실습 또는 해외 포럼과 악성코드 분석 등을 통해 배웠기 때문에 정통 후킹 방식과는 차이가 있을 수 있음을 미리 알린다.
What is the hooking?
특정 함수가 호출되었을 때 함수의 제어권을 가로채는 행위를 뜻한다.
즉 특정 함수가 호출되었을 때 함수 호출, 메시지, 이벤트 또는 반환 값, 인자 등을 조작할 수 있다. 그리고 이를 가능캐 해주는 기술이 후킹이다. 우리는 이것을 API Hooking 이라고 부른다.
Types of hooking
API Hooking은 User Mode와 Kernel Mode 두가지로 나뉜다.
User Mode Hooking
IAT(Import Address Table) Hooking : IAT에 적혀있는 API의 주소를 조작하여 후킹하는 기법
Trampoline Code Hooking : 후킹할 API의 상위 5바이트를 jmp 어셈블리로 패치하여 후킹하는 기법
Kernel Mode Hooking
SSDT(System Service Descriptor Table) Hooking : SSDT가 가리키는 주소를 조작하여 후킹하는 기법
DKOM(Direct Kernel Object Modification) : Kernel Object를 조작하여 프로세스, 스레드, 서비스 등 핸들의 Entry를 숨기는 기법
외 추후 서술
위에 서술된 기법들을 하나하나 실습해보고 원리와 방법 그리고 코드를 포스팅할 예정이다. 여기서 아직 후킹이 무엇인지 감을 잡지 못한 사람이 있을 것이다. 다음 그림은 정상적인 API 호출과정이다.
프로세스가 kernel32.dll에 있는 API 함수를 호출한다. kernel32.dll 은 해당 함수를 실행하고 반환 값을 프로세스에게 돌려준다. 다음은 특정 함수가 후킹되었을 때의 API 호출과정이다.
프로세스가 kernel32.dll에 후킹된 API 함수를 호출하게 되면 그 함수에 대한 제어권을 Hook 함수(코드)가 가로챈다. 그렇다면 프로세스가 kernel32.dll에 후킹된 API 함수를 호출할 때 마다 Hook 함수(코드)를 먼저 호출하게 된다. 이때 Hook 함수(코드)에서 인자 값, 반환 값 등을 조작할 수 있다. 이것이 API Hooking의 기본 개념이다.
'Reversing > Hooking' 카테고리의 다른 글
[Reversing] Trampoline(Inline) Hooking x86 Step 1 (0) | 2022.04.27 |
---|---|
[Reversing] Trampoline(Inline) Hooking x86 Step 0 (0) | 2022.04.27 |
[Reversing] IAT Hooking Step 2 (0) | 2022.02.03 |
[Reversing] IAT Hooking Step 1 (0) | 2022.01.22 |
[Reversing] IAT Hooking Step 0 (0) | 2022.01.19 |