본문 바로가기

API Hooking

API Hooking - API Code Patch, Global Hooking API Hooking - API Code Patch, Global Hooking API Code Patch, Global Hooking을 이용한 Stealth Process(Rootkit) 기법에 대해서 알아보도록 하겠습니다. API Code Patch 원리 Code Patch 방식은 실제 API 코드 시작 5바이트 값을 JMP XXXX 명령어로 패치하는 방식입니다.Hooking된 API가 호출되면 JMP XXXX 명령어가 실행되어 후킹 함수로 제어가 넘어옵니다.Code Patch는 프로세스에서 사용되는 어떤 API라도 후킹을 할 수 있습니다. 제한사항으로는 API 코드의 길이가 최소 5바이트 보다 커야 한다는 것.하지만 API의 코드 크기는 5바이트 보다 크기 때문에 사실상 제한이 없다. ※ 프로세스의.. 더보기
API Hooking - IAT Hooking API Hooking - IAT Hooking Windows의 계산기에 DLL 파일을 삽입하여 IAT의 user32.SetWindowsTextW() API를 후킹하는 것을 해보도록 하겠습니다. PEViewer를 이용하여 IAT를 확인합니다. 대부분 많이 사용되는 PEView 프로그램은 64bit를 지원하지 않기 때문에 64비트 프로그램을 분석할 수가 없습니다.그래서 64비트를 지원하는 PEBrowse를 이용합니다. PEView 프로그램을 이용해서 IAT를 확인해 보면 windows 10의 계산기 프로그램에서는 SetWindowTextW() API가 나타나지 않았습니다. 그래서 혹시나 해서 디버거를 이용해서 확인해보니 user32.dll이 로딩이 되었고, SetWindowTextW가 존재했습니다. Setw.. 더보기
API Hooking - Debug Technique API Hooking - Debug Technique Debug 기법을 이용한 실습을 해보도록 하겠습니다. 핵심원리에 나와있는 notedpad.exe WriteFile()을 해볼텐데, Windows 10 x64 notepad.exe를 이용하여 해보도록 하겠습니다. 먼저 디버거 동작원리와 디버그 이벤트에 대해서 알아보도록 하겠습니다. 디버거 동작원리 프로세스가 디버거에 붙어서 실행이 되면 OS에서는 프로세스에서 디버그 이벤트가 발생할 때 해당 프로세스 실행을 정지시키고 디버거에게 전달합니다.그러면 디버거는 해당 이벤트에 대해서 처리를 한 후에 프로세스 실행을 다시 시작합니다. 일반적인 예외도 디버그 이벤트에 해당하고, 해당 프로세스가 디버깅 중이 아니라면 디버그 이벤트는 예외처리되거나 OS의 예외 처리 루.. 더보기
API Hooking API Hooking 실행 흐름을 변경하고, 원래 동작하는 기능을 다른 기능으로 바꿔 동작하도록 만드는 방법입니다. API라는 것은 Windows를 사용함에 있어서, 애플리케이션이 시스템 자원에 직접 접근할 수 있는 방법이 없습니다. 그래서 MS에서 제공하는 Win32 API를 이용합니다.쉽게 말하자면 API 또한 함수라고 생각하면 되는데, 이미 만들어져 있는 함수라고 생각하면 됩니다. 모든 프로세스에는 기본적으로 kernel32.dll 이 로딩되고, kernel32.dll은 ntdll.dll를 로딩합니다. 예외적으로 smss.exe는 kernel32.dll을 로딩하지 않습니다. API Hooking의 과정을 살펴보면 아래와 같습니다. 정상적인 호출일 경우 Process에서 CreateFile()을 호출.. 더보기