티스토리 뷰

728x90
반응형

[Reversing] CreateProcessInternalW()


Process Hollowing 기법을 이용하는 Lokibot 분석 시  궁금하여 CreateProcessInternalW()에 대해 메모해본다.


아래 표는 CreateProcess()의 내부함수를 나열하였으며, 후킹하거나 행위를 숨기기 위해 내부 함수를 사용하는 경우가 있다.

 kernel32.CreateProcessW

     kernel32.CreateProcessInternalW
           ntdll.ZwCreateUserProcess    //프로세스 생성됨(Suspend 상태)
           ntdll.ZwResumeThread        //메인 스레드 Resume(프로세스가 실행)


(표 - 1)


CreateProcessInternalW()의 내부 함수를 들어가본다.

(그림 - 1)


쭉 진행하다가 보면 ZwCreateUserProcess()을 만나게 되는데 위 표의 주석과 같이 프로세스를 생성하되 Suspend 상태로 프로세스를 생성하게 된다.

호출하기전 해당 인자를 보게 되면 2번째 스택을 살펴보면 두번째 인자에 12F550 값이 있는 걸 확인 할 수 있다.

해당 값의 주소로 메모리를 찾아가게 되면 0x192196를 확인 할 수 있는데 메모리 주소를 살펴보자.

(그림 - 2)


0x192196 메모리 주소를 살펴보면 (그림 - 3)와 같이 문자열이 보이게 되는데 해당 프로세스를 나타내는 걸 알 수 있다.

(그림 - 3)


(그림 - 4)을 살펴보면 해당 함수 호출 전, 후를 나타내는 그림으로 Suspend 상태로 프로세스가 생성되는 걸 확인 할 수 있다.

(그림 - 4)


728x90
반응형
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today