Global API Hooking 예제를 실습하겠습니다.
본 내용을 읽기 전에 이전 포스트를 참고하세요. 같이 이어지는 내용입니다.
* 참고!
모든 소스 코드는 MS Visual C++ 2008 Express Edition 으로 개발 되었으며, Windows 7 32bit & IE 8 에서 테스트 되었습니다.
실습 예제 – IE 접속 제어
# 실습 내용
IE 프로세스의 특정 API 를 후킹 하여 국내 4 대 포탈 사이트(Naver, Daum, Nate, Yahoo)에 접속 시도할 때 www.reversecore.com 주소로 연결 시켜버립니다. 또한 IE 의 탭이 새로 생성되면서 동시에 프로세스가 추가되는 경우를 대비해서 Global API Hooking 기법을 사용하였습니다.
API 후킹은 redirect.dll 을 인젝션 시켜서 구현합니다. redirect.dll 은 아래 2 개의 API 를 후킹합니다.
wininet!InternetConnectW() - IE 프로세스의 접속 주소를 제어하기 위해 후킹
ntdll!ZwResumeThread() – Global API Hooking 구현을 위해 후킹
* Global API Hooking 에 대한 자세한 설명은 아래 글을 참고하세요.
#1. IE 실행
실습을 위해서 먼저 IE 를 실행시켜 주시기 바랍니다. 그리고 Process Explorer 를 이용하여 현재 실행중인 IE 프로세스의 구조를 살펴 보겠습니다.
<Fig. 1>
위 그림을 보시면 IE 프로세스는 부모-자식 관계로 실행되는 것을 알 수 있습니다. 부모 프로세스만 ntdll!ZwResumeThread() API 를 후킹해도 이후부터 생성되는 모든 IE 프로세스들은 자동으로 후킹됩니다.
#2. DLL Injection
redirect.dll 파일을 IE 프로세스(iexplore.exe) 에 인젝션 시킵니다.
<Fig. 2>
Process Explorer 를 이용해서 IE 프로세스에 redirect.dll 파일이 정상적으로 인젝션 되었는지 확인합니다.
<Fig. 3 >
#3. 새로운 탭 생성
IE 에서 새로운 탭을 생성합니다.
<Fig. 4>
Process Explorer 를 이용해서 새로 생긴 탭과 연결된 프로세스(PID:3136)에 redirect.dll 이 제대로 인젝션 되었는지 확인합니다.
<Fig. 5>
ntdll!ZwResumeThread() API 후킹을 통한 Global API Hooking 이 성공하였습니다.
#4. 포탈 사이트 접속
IE 의 아무 탭에서 국내 4 대 포탈 사이트에 접속을 시도해 보세요.
www.naver.com
www.daum.net
www.nate.com
www.yahoo.com
<Fig. 6>
위 그림에서처럼 주소는 naver 지만 실제로는 ReverseCore 사이트가 연결되었습니다.
#5. DLL Ejection
IE 프로세스에서 redirect.dll 을 내려보겠습니다.
<Fig. 7>
Process Explorer 를 이용하여 redirect.dll 가 정상적으로 ejection 되었는지 확인합니다.
<Fig. 8>
이제 다시 naver 에 접속해보면 이제는 정상적으로 접속하는 것을 확인하실 수 있습니다.
<Fig. 9>
#6. 추가 실습
위에 소개된 InjDll.exe 와 redirect.dll 파일을 이용해서 각자 좀 더 실습을 많이 해보시기 바랍니다. Global API Hooking 기법에 대한 개념을 확실히 이해하실 수 있으실 것입니다.
- 전체 프로세스 후킹
- explorer.exe 만 후킹 (이후 IE 실행)
+---+
실습 내용이 길어진 관계로 redirect.dll 파일의 소스 코드 설명은 다음 강좌에 하겠습니다. (조금 빨리 올리겠습니다.)
ReverseCore
위 글이 도움이 되셨다면 추천(VIEW ON) 부탁 드려요~
'study' 카테고리의 다른 글
| 어셈블리 언어를 이용한 Code Injection (1) (0) | 2010/06/27 |
|---|---|
| Code Injection 기법 (3) (7) | 2010/06/24 |
| Code Injection 기법 (2) (14) | 2010/06/23 |
| Code Injection 기법 (1) (8) | 2010/06/22 |
| Advanced Global API Hooking – IE 접속 제어 (4) (27) | 2010/05/17 |
| Advanced Global API Hooking – IE 접속 제어 (3) (10) | 2010/05/07 |
| Advanced Global API Hooking – IE 접속 제어 (2) (10) | 2010/04/25 |
| Advanced Global API Hooking – IE 접속 제어 (1) (21) | 2010/03/29 |
| DLL Injection in Windows 7 (3) (32) | 2010/02/23 |
| DLL Injection in Windows 7 (2) (15) | 2010/02/21 |
| DLL Injection in Windows 7 (1) (8) | 2010/02/20 |
API,
CreateProcess,
CreateProcessInternal,
Global API Hooking,
IE,
Internet Explorer,
InternetConnect,
it,
kernel32.dll,
NtCreateUserProcess,
NtResumeThread,
redirect,
redirection,
Reverse Code Engineering,
Reverse Engineering,
ReverseCore,
Reversing,
wininet.dll,
ZwCreateUserProcess,
ZwResumeThread,
리버스 엔지니어링,
리버싱,
소프트웨어 역공학,
우회,
후킹
redirect.dll
InjDll.exe
