-
윈도우 프로세스 메모리 보호를 위한 방식 분석프로그래밍/해킹/보안 2025. 3. 25. 03:08반응형
프로세스 메모리 보호를 위한 방식 몇가지 리서치 중인 내용들을 기록한다.
단순히 유저모드 단에서 처리되는 방식은 다음과 같다.
GlobalHookAgent.exe , HookingDLL.dll
1. SetWindowsHook API 를 사용하여 윈도우가 존재하는 모든 프로세스에 DLL을 주입시킨다.
2. 주입된 DLL은 DllMain 함수가 호출되고 내부 PROCESS_ATTACH 시점에 대상 프로세스들의 특정 윈도우 API를 후킹한다. (후킹 대상이 되는 API는 KERNELBASE!WriteProcessMemory)
자 이제 여기부터가 코어로직이 들어가기 시작한다.
전역 후킹 방식으로 현재 실행되는 모든 프로세스의 KERNELBASE!WriteProcessMemory API가 후킹이 되었다.
그렇다면 만약, 메모리 변조를 시도하려는 프로그램이 실행되었을 때 내 프로세스의 메모리를 변조하기 위해
특정 메모리 영역에 WriteProcessMemory 를 시도할 때,
잘못된 정보를 전달하거나 진짜인척 하는 데이터를 전달할 수 있을 것이다.
대부분 이런 방식은 DRM 소프트웨어나 보안 프로그램에서 사용하는 방식이다.
이렇게하면 특정 프로세스가 어떤 행동을 하는지 파악할 수 있다.
위 시나리오 대로 동작 했을 때 추정해볼 수 있는 정보는 다음과 같다.
위 API를 후킹하겠다라는 건데.
일단 이 API는 특정 프로세스의 핸들을 먼저 취득해야한다.
해당 프로세스의 핸들을 취득하기 위해서는 OpenProcess 라는 WinAPI 를 사용해야한다.
그렇다면 OpenProcess 또한 후킹을 하면 어떤 프로세스(A)가 특정 프로세스의 핸들을 취득하려는 시도를 하는지 (행위) 파악할 수 있게된다.
흔하디 흔한 DLL 인젝션 기법을 탐지할 수 있는 행위 정보를 누적할 수 있는것이다.
누적 방법은 다양하지만 프로세스의 행위 정보를 구조화 한다음 연결리스트 형태로 행위 리스트를 만들고 행위의 단위를 프로세스로 정의할 때 탐지로직을 구현할 수 있게된다.
대부분 보안 프로그램들은 DLL 인젝션이나 OpenProcess 를 수행할 경우 이를 탐지한다.
이 행위를 한다는 것 자체가 공격을 하는 방식이기 때문이다.
반응형'프로그래밍 > 해킹/보안' 카테고리의 다른 글
안티치트 솔루션 개발에 필요한 기능 정리 (2) 2025.03.27 안티치트 커널 드라이버에서 프로세스 행위 검사를 위한 정보 수집 콜백 항목 정리 (0) 2025.03.26 게임 보안 프로그램이 게임의 메모리 변조를 탐지 하는 방식 (0) 2025.03.26 DLL 라이브러리에서 (DLL Export Function) 함수 이름 숨기기 (0) 2023.04.05