2024/12 3

DLL injection

DLL 인젝션을 하는 이유와 알려진 방법들CreateRemoteThread() API 활용가장많이 사용되는 방법레지스트리에서 AppInit_DLLs 값을 변경해서 인젝션HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WindowsSetWindowsHookEx() API 활용  TCP Socket API hookChatting client/server 예제를 활용해 Winsock API를 hookServer는 전형적인 멀티스레드 기반으로 구현(접속하는 클라이언트 마다 스레드 생성)본 수업에서 예제 차제는 설명하지는 않음최초 Client 코드 수준에서 Hook 관련 코드를 추가해 동작을 확인하고 DLL Injection 기능을 추가하는 방식으..

Inline hook

inline hook 기술 개요 및 작동 원리함수의 진입점(function prologue)에 jmp code(0xE9)를 삽입해서 흐름을 변경하는 방법32bit 시스템에서 jmp 코드 피연산자는 점프할 위치에 대한 절대값이 아니라 현재 명령어가 저장된 위치를 기준으로 떨어진 거리를 상대적으로 계산한다.jmp code는 명령어와 피연산자를 포함 모두 5바이트 (x86기준)inline hook 사용시 주의사항jmp 코드로 흐름을 조작하더라도 정상적인 호출관계에 의한 stack frame 구조를 손상시키지 말아야한다. (function prologue , epilogue가 정상적으로 동작해야함)조작된 흐름이 끝나고 본래 위치로 되돌아 가는 과정에서 문제가 발생하지 않도록 강제화 해야한다. 32bit inli..

IAT hook

IAT = Import Address TableDLL 에서 가져다 쓴 함수들에대한 정보들을 가지고 있다고함묵시적인 로딩인 경우에만 남아있는다 PE (portable excutable) 파일 구조https://github.com/corkami/pics/blob/master/binary/pe101/pe101.pdf RVA (Relative Virutal Address)dll 이 가상메모리에 로딩이 되고 어떤 함수가 어디에 써있느냐를 나타낼떄 RVA를 통해 나타낸다. IAT hook 기술 개요실행 파일이 가지고 있는 IAT 영역 정보를 직접 조작하는 방식으로 피호출 API함수를 변경하는 기법C 언어 기반 응용 프로그램의 주요 함수들은 별도의 C Runtime Library(DLL) 로 구현되어 있으며 프로그램..