(혼자 공부하며 참고하기 위해 본문 내용을 그대로 가져왔습니다. 문제시 삭제 조치 하겠습니다.)


(프로세스 할로윙은 실행중인 신뢰하는 프로세스를 suspend 상태로 설정하고 dll 또는 코드 인젝션을 수행하는 것이다)



Process hollowing은 일부 악성코드에서 사용하는 기술이다. 악의적인 코드의 컨테이너로 동작하기 위해 시스템에 정상적인 프로세스를 로드시킨다. 실행되면, 정상적인 코드는 해제되고 악의적인 코드로 재정의 된다.

아름다운 이 기술은 기존 처리방식에서 악의적인 코드 실행을 숨길 수 있도록 도와준다. 이 기술에 대해 조금 더 살펴본다.

1 단계.

악성코드는 fdwCreate에 CREATE_SUSPENDED 플래그를 활성화 시켜 CreateProcess를 호출해 정상적인 프로세스를 실행한다.

2 단계.

프로세스가 생성되고 suspend 상태이다. 이제 호스트 프로세스 메모리로부터 정상 코드에 구멍을 만든다. 여기에선 ZwUnmapViewOfSection을 사용한다. 

3 단계.

악성코드는 VirtualAllocEx를 사용해 새로운 코드에 대한 메모리를 할당한다. 악성코드는 flProtect 플래그에 쓰기 가능하고 실행가능하도록 설정을 해야한다.

4 단계.

이제 WriteProcessMemory를 사용해 호스트 프로세스 구멍에 악성 코드를 쓴다.

5 단계.

악성코드를 위장하기 위해, 악성코드 제작자는 VirtualProtectEx를 사용해 다른 정상적인 프로세스들처럼 Read/Execute 보호 권한으로 재설정해야한다.
또한 새로운 코드 섹션을 가리키도록 리모트 컨텍스트 설정을 해줘야햔다. SetThreadContext API를 사용할 수 있다.

6 단계.

ResumeThread 함수로 suspended 스레드를 다시 resume 해주면 끝이난다.

탐지하는 것에 초점을 맞추면, 만약 기존 AntiVirus 처럼 정적 시그니처 방식을 사용하는 경우 어려울 것이다. 하지만 샌드박스 환경에서 시스템 콜 동적 분석을 하게 되면 가능하다. 


출처 : http://jmpcall.blogspot.com/2016/08/process-hollowing.html

추가 참고 자료 : http://sanseolab.tistory.com/57


'Reversing > Theory' 카테고리의 다른 글

Windows XP Folders and Locations & Windows 7 and Vista  (0) 2019.01.06
About Rich Header  (0) 2019.01.06
Code Injection overview  (0) 2019.01.06
프로세스 핸들과 PID의 차이  (0) 2019.01.06
CreateFile의 CreateFileW CreateFileA 차이  (0) 2019.01.06

+ Recent posts