원격 DLL 삽입 | LoadLibrary 혹은 원시LdrLoadDll을 호출하여 특정 DLL을 대상 프로세스에 삽입한다. DLL은 디스크상에 존재해야 함 |
원격 코드 삽입 | 대상 프로세스의 메모리 공간에 코드를 작성하고 해당 프로세스에서 강제로 실행 |
DLL 삽입 후 반영 | DLL을 대상 프로세스의 메모리 공간에 작성. 디스크에 존재하지 않아도 됨 |
속이 빈 프로세스 삽입 | 해당 프로세스를 정지 시킨 후, 새로운 인스턴스를 실행 |
* 원격 DLL 삽입
1. 디버거일 경우 해당 프로세스의 메모리를 읽거나 쓸 수 있도록 하는 권한 얻기 SE_DEBUG_PRIVILEGE
2. OpenProcess API를 통해 해당 프로세스의 핸들을 얻음
3. VirtualAllocEx API를 통해 해당 프로세스에 메모리를 할당
4. WriteProcessMemory API를 통해 해당 프로세스에 할당한 메모리에 LoadLibrary 함수에 들어갈 인자들에 대한 문자열 삽입
5. CreateRemoteThread API를 통해 해당 프로세스에서 새로운 스레드와 시작 주소를 정의
* 원격 코드 삽입
1. 해당 프로세스에 PAGE_EXECUTE_READWRITE 보호로 메모리 할당
2. WriteProcessMemory 함수를 통해 해당 프로세스에 코드 블록 생성
3. CreateRemoteThread를 호출하여 해당 프로세스에 삽입한 코드 블록을 실행
'메모리포렌식' 카테고리의 다른 글
이벤트 로그 ( Vista, 2008, 7 ) (0) | 2022.01.23 |
---|---|
이벤트 로그 (0) | 2022.01.23 |
메모리 내의 PE 파일 (0) | 2022.01.18 |
동적 링크 라이브러리 (Dynamic Link Library; DLL) (0) | 2022.01.17 |
환경 변수 (0) | 2022.01.15 |