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) 부탁 드려요~

Trackback Address :: http://www.reversecore.com/trackback/79 관련글 쓰기

  1. 철이 2010/05/08 20:00 댓글주소 | 수정 | 삭제 | 댓글

    유용한 정보 감사합니다 .

    ^^
    하루 빨리 커널 속으로 고고고 ^^;

  2. 철이 2010/05/08 20:00 댓글주소 | 수정 | 삭제 | 댓글

    유용한 정보 감사합니다 .

    ^^
    하루 빨리 커널 속으로 고고고 ^^;

  3. 타루다 2010/06/17 13:52 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요.

    요즘 게임에서 사용할 간단한 매크로제작을 위해서 후킹을 공부중입니다.
    인터넷 검색을 통해서 이 블로그를 알게되었는데요, 많은 도움이 되고있습니다.

    좋은 강좌 감사드립니다.

  4. 2011/01/24 16:52 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

    • reversecore 2011/01/25 23:10 댓글주소 | 수정 | 삭제

      안녕하세요.

      흠~ 저 혼자 분석은 가능합니다만...
      정보 공개는 어렵겠습니다.

      이유는 제가 하는 업무와 관련되고, 회사와도 약간이나마 관련이 있어서 그렇습니다. 양해 부탁 드립니다.

      하지만 리버싱을 열심히 공부하시다 보면 악성코드도 분석이 가능하게 될 것입니다. 어차피 같은 프로그램이니까요.

      감사합니다.

    • 2011/01/25 23:48 댓글주소 | 수정 | 삭제

      비밀댓글입니다

  5. 2011/03/15 20:14 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

    • reversecore 2011/03/16 21:36 댓글주소 | 수정 | 삭제

      안녕하세요.

      죄송하지만 그런 내용은 공개하기 어렵습니다.
      직접 찾아보시는 것이 좋을것 같습니다.

      감사합니다.


◀ PREV : [1] : ... [13] : [14] : [15] : [16] : [17] : [18] : [19] : [20] : [21] : ... [91] : NEXT ▶