Information Security
[ DLL Ejection ]프로세스에 강제로 삽입한 DLL을 빼내는 것 notepad.exe에 myhack.dll을 강제로 인젝션했다가 다시 이젝션해봅시다. 이젝션을 하기 위해서는 CreateRemoteThread()를 사용하여 대상 프로세스가 FreeLibrary() API를 스스로 호출하도록 만들어야 한다.pThreadProc은 FreeLibrary()의 주소이고, me.modBaseAddr은 이젝션할 myhack.dll의 로딩 주소이다. 일단 인젝션을 하고 확인을 한다. EjectDll.exe로 이젝션을 시도한다. success. notepad.exe에서 myhack.dll이 빠져 나갔다. 이젝션은 우리가 강제로 삽입한 dll만 가능하고 일반적으로 로딩되어 있는 dll은 불가능하다.
[ DLL Injection ]-실행 중인 프로세스에 LoadLibrary() API를 스스로 호출하도록 명령하여 원하는 DLL을 로딩시키는 것-삽입된 DLL은 이미 프로세스에 로딩되어 있는 다른 DLL과 마찬가지로 프로세스 메모리에 대한 권한을 가지게 된다. DLL이 로딩되면 DLLMain() 함수가 실행되는데, 이 switch 문에 기능을 개선하거나 버그를 패치하는 등의 사용자가 원하는 코드를 넣을 수 있다. 1. 원격 스레드 생성하여 DLL 인젝션 구현하기 - CreateRemoteThread()(리버싱 핵심 원리 https://reversecore.com/104)notepad.exe에 myhack.dll을 인젝션하는 실습을 할 것이다. myhack.dll이 로딩되면 OutputDebugString..
[ DLL Injection - Windows Message Hooking ] Windows는 Event Driven 방식으로 동작한다. 이벤트가 발생하면 OS는 응용프로그램에게 메시지를 보낸다. 이 메시지가 이동하는 중간에 엿보거나 가로채가는 것을 Message Hook이라고 한다.메시지 후킹은 DLL 인젝션 기법의 하나로 사용된다. 아래의 파일을 이용하여 후킹 실습을 진행한다.(리버싱 핵심 원리 https://reversecore.com/104)HookMain.exe은 KeyHook.dll을 최초로 로딩한 후, SetWindowsHookEx()을 이용하여 훅을 설치하는 프로그램이다. SetWindowsHookEX()는 훅을 설치하는 API이고, 정의는 위와 같다. KeyHook.dll에서 확인한 Se..