Tag Archives: 후킹

커널 모드 후킹 – SSDT 후킹

커널 모드 후킹 – SSDT 후킹 SSDT 후킹 역시 위 엔프로텍트를 이용하여 진행해 보도록 하겠다. 그럼 바로 분석에 들어가자. // 먼저 SSDT의 주소를 확인하기 위해 KeServiceDescriptorTable를 확인하자. 첫번째 메모리 주소가 SSDT는 위치이다. kd> dd KeServiceDescriptorTable 8055c220 804e46a8 00000000 0000011c 80512088 8055c230 00000000 00000000 00000000 00000000 8055c240 00000000 00000000 00000000 00000000 8055c250 00000000 00000000 00000000 00000000

Read More

유저모드 후킹 – 인젝션 SetWindowsHookEx

SetWindowsHookEx 메시지 후킹은 앞서 말했듯이 운영체제가 사전에 정해놓은 특정 이벤트(키 입력, 윈도우 크기 변경 등과 같은 작업)를 프로그램이 운영체제에 요청하고 처리 결과를 프로그램에 통보하게 되는데, 이 지점을 가로채기, 즉 후킹하여 메시지를 엿보거나 조작할 수 있다. 이런 메시지 훅은 운영체제에서 제공하는 기본 기능(여기서 소개할 이외 후킹들도 운영체제가 지원하는 기능들을 이용한 것이다)으로 하나의 메시지에 여러 개의 훅을

Read More

유저 모드 후킹 – 코드패치, 인젝션 개념

디버깅: 우리가 진행하는 디버깅 과정도 프로세스 입장에서는 후킹이라 할 수 있다. 이는 커널 디버깅이냐 유저 모드 디버깅이냐에 따라 후킹 범위가 달라지며, 유저 모드 후킹은 디버거를 통해 프로세스를 Attach하는 행위도 후킹이라 할 수 있다. 이때 사용되는 API인 DebugActiveProcess 로써 구조체는 다음과 같다.   BOOL WINAPI DebugActiveProcess(     DWORD dwProcessId );   MSDN의 http://msdn.microsoft.com/en-us/library/ms679295(VS.85).aspx 에서 위 API에

Read More

Hooking 후킹 – SetWindowsHookEx

메시지 후킹은 앞서 말했듯이 운영체제가 사전에 정해놓은 특정 이벤트(키 입력, 윈도우 크기 변경 등과 같은 작업)를 프로그램이 운영체제에 요청하고 처리 결과를 프로그램에 통보하게 되는데, 이 지점을 가로채기, 즉 후킹하여 메시지를 엿보거나 조작할 수 있다. 이런 메시지 훅은 운영체제에서 제공하는 기본 기능(여기서 소개할 이외 후킹들도 운영체제가 지원하는 기능들을 이용한 것이다)으로 하나의 메시지에 여러 개의 훅을 설치할

Read More

Hooking 후킹 – CreateRemoteThread

CreateRemoteThread 후킹을 위해 제일 많이 애용하는 방법이 바로 CreateRemoteThread일 것이다. CreateRemoteThread는 방법도 쉬울 뿐더러 Dll을 인젝션 오류 없이 진행할 수 있다. 그래서 실제 악성코드나 해킹도구에서도 많이 사용하는 방법이다. 그럼 이 CreateRemoteThread를 이용하는 로더 프로그램을 작성해 보자. injectiondll.cpp #include <stdio.h>#include <windows.h>#include <tlhelp32.h>BOOL InjectDll(DWORD PID, char* DllName){ HANDLE h = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE

Read More

후킹 Hooking

후킹에 대해 어느 정도 진행해야 할까 고민이 많이 되었다. 후킹은 영어로 “걸다”라는 의미로, 우리가 익히 알고 있듯이 “가로 채기”와 같다. 즉 중간에 끼어들어 정보를 훔쳐보거나, 가로 채는 MITM(Man in the Middle) 방식으로 원제공자와 처리자 사이에서 지나가는 정보를 보고 이를 조작하는 공격과 유사하다고 할 수 있다. 후킹은 무엇인가를 노리는 낚시와 같이 가장 대표적인 방식으로 특정 프로그램과

Read More