Chap 34. 고급 글로벌 API 후킹 - IE 접속 제어
이번 장의 실습 목표는 IE 프로세스의 API를 후킹하여 특정 사이트로 향하는 접속을 다른 사이트로 우회시키는 것이다.
34.1. IE 프로세스 구조
- IE 7부터는 탭 개념을 도입하면서 프로세스 구조가 부모-자식 관계임
34.2. 글로벌 API 후킹 개념 정리
- 일반적인 API 후킹은 Test.exe 프로세스에 인젝션하여 후킹하는 방법 --> 후킹 대상 프로세스가 새로 생성될 때마다 수동으로 API 후킹을 해야 함
- 글로벌 API 후킹은 Windows OS의 기본 Shell인 Explorer.exe 프로세스에 인젝션하여 자식 프로세스 생성에 관련된 API를 후킹하여 자식 프로세스를 생성할 때마다 인젝션 하도록 하는 것임
34.3. ntdll!ZwResumeThread() API
- 글로벌 API 후킹을 하기 위해서는 자식 프로세스를 생성하는 API에 대해 알아야 함
- 프로세스를 생성하는 대표적인 API는 Kernel32!CreateProcess() 임
- CreateProcessW() API의 호출 흐름은 다음과 같음
- 위의 4개의 API 중 어떤 것을 후킹해도 글로벌 API 후킹이 가능하지만 이번 실습에서는 ntdll!ZwResumeThread() API 를 후킹함
34.4. redirect.cpp
- DllMain() 함수에서는 ntdll!ZwResumeThread() 와 wininet!InternetConnectW() API 를 훅/언훅 하는 기능을 함
- NewInternetConnectW() 함수에서는 IE 의 접속 주소를 모니터링 하면서 특정 사이트에 접속할 때 원하는 사이트로 접속을 돌리는 역할을 함
- NewZwResumeThread() 함수에서는 자식 프로세스에 redirect.dll을 인젝션해주는 역할을 함
34.5. 실습 예제 - IE 접속 제어
- InjDll.exe 프로그램은 책 저자가 만든 프로그램(target 프로세스가 32bit인지 64bit인지에 따라 선택해서 사용하면 됨) --> 타깃 프로세스에 원하는 DLL을 인젝션/이젝션하는 기능을 함
'리버싱핵심원리' 카테고리의 다른 글
Reverse Engineering Chap 21-22 (0) | 2016.02.03 |
---|---|
Reverse Engineering Chap 45 (0) | 2016.01.30 |
Reverse Engineering Chap 3-6 (0) | 2016.01.27 |
Reverse Engineering Chap 33 (0) | 2016.01.27 |
Reverse Engineering Chap 32 (0) | 2016.01.24 |