2016. 1. 27. 23:54

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을 인젝션해주는 역할을 함

redirect.cpp


34.5. 실습 예제 - IE 접속 제어


InjDll32.exe

InjDll64.exe

redirect.dll

- 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
Posted by 알 수 없는 사용자