tmxklab

[Volatility] Process Hollowing 탐지 본문

Security/Volatility

[Volatility] Process Hollowing 탐지

tmxk4221 2021. 4. 28. 20:42

Process Hollowing

먼저, 프로세스 할로윙에 대한 개념을 살펴보기 위해서 다음 링크를 참고하자

 

Dropper 3-2(Process Hollowing)

0. 목차 0. 목차 1. Process Hollowing이란 2. Process Hollowing 유형 분석 2.1 분석 환경 2.2 예제 소스 코드 및 컴파일 3. 분석 3.1 정적 분석 1) CreateProcessA() 2) CreateFileA(ExeName, 0x80000000, 1, 0,..

rninche01.tistory.com

Process Hollowing 순서)

① CreateProcess - 인젝션할 프로세스를 일시 중지된 상태로 생성한다.

② NtUnmapViewOfSection - 섹션 매핑 해제

③ VirtualAlloc - RWX로 메모리 할당

④ WriteProcessMemory - 인젝션

⑤ SetContextThread - 스레드 시작 주소를 인젝션한 엔트리 포인트로 변경

⑥ ResumeThread - 실행 재개

 

즉, 원본 코드를 날리고 인젝션한 코드로 채워 실행시킨다.

따라서, 할로윙을 하기 전과 후를 VAD를 기반해서 그림으로 비교하면 다음과 같다.

할로윙 이후에 VAD와 PEB간에 2개의 불일치가 발생한다. 프로세스 경로와 권한이 다른 점을 확인할 수 있다. 추가적으로 부모-자식 관계의 불일치도 발생할 수 있다. 이러한 특징을 이용하여 할로윙 탐지에 활용할 수 있다.

① 프로세스 경로 불일치(전체 경로 <-> 없음)

② 프로세스 권한 불일치(WCX <-> RWX)

③ 부모-자식 관계의 불일치(부모가 다름)

 

<<pslist, malfind, dlllist, ldrmodules플러그인 활용>>

(dlllist는 PEB에 의존하고 ldrmodules는 커널 VAD에 의존하므로 이 두 개를 통해 비교해보면 된다. 그리고 ldrmodules플러그인을 사용할 때 3개의 PEB 리스트에는 잡히는데 MappedPath가 비어있으면 의심해봐야 한다. 이외에도 다양한 방법이 있을 것임)

 

svchost.exe를 타겟으로 실행한 process hollowing테스트 코드를 실행하여 덤프 뜨고 분석을 진행해보자

 

다음은 malfind플러그인을 사용했을 때 출력 결과이다.

svchost.exe(pid : 3324)프로세스에서 RWX메모리 영역에 MZ시그니쳐를 발견하였다.(malfind가 짱짱인듯..)

 

다음은 svchost.exe(pid:3324)프로세스를 대상으로 dllist와 ldrmodules플러그인을 사용하여 출력한 결과이다.

PEB에 의존하는 dlllist에는 svchost.exe를 확인할 수 있지만 커널의 VAD에 의존하는 ldrmodules에는 svchost.exe를 확인할 수가 없다. 이를 통해 일반적으로 로드되지 않았음을 확인할 수 있다.

 

 

 

추가자료) - 프로세스 할로윙 인젝션 탐지 방법 

 

Detecting Deceptive Process Hollowing Techniques Using HollowFind Volatility Plugin - Cysinfo

In this blog post we will look at different types of process hollowing techniques used in the wild to bypass, confuse, deflect and divert the forensic analysis. I also present a Volatility plugin hollowfind to detect these different types of process hollow

cysinfo.com

 

 

Comments