[Windows 분석] Process Hollowing 정상 프로세스 속에 숨은 악성코드

[보안 분석] Process Hollowing: 정상 프로세스 속에 숨은 악성코드의 실체

안녕하세요. 오늘은 윈도우 시스템 보안과 리버싱 분야에서 매우 중요하게 다뤄지는 '프로세스 할로잉(Process Hollowing)' 기법에 대해 심층 분석해 보겠습니다. 이 포스팅은 시스템 엔지니어와 보안 분석가를 위한 가이드로 제작되었습니다.

이 글의 주요 내용

  • 프로세스 할로잉(Process Hollowing)의 정의와 위험성
  • 시스템 레벨에서의 4단계 동작 원리 분석
  • 공격자가 이 기법을 선호하는 기술적 이유
  • 보안 관점에서의 탐지 방법 및 방어 전략

1. 프로세스 할로잉이란 무엇인가?

윈도우 운영체제에서 프로세스 할로잉(Process Hollowing)은 매우 교묘한 코드 주입 기법 중 하나입니다. 직역하자면 '프로세스의 속을 비워낸다'는 뜻을 가지고 있습니다. 정상적인 실행 파일(예: notepad.exe, svchost.exe)을 로드한 직후, 해당 프로세스의 메모리 매핑을 해제하고 그 자리에 악성 페이로드를 대신 채워 넣는 방식입니다.

이 기법이 무서운 이유는 겉으로 보이는 프로세스의 이름과 경로는 지극히 정상이라는 점입니다. 작업 관리자나 기본적인 시스템 모니터링 도구로는 변조 여부를 확인하기 어렵기 때문에, 많은 지능형 지속 위협(APT) 공격에서 은닉 수단으로 활용됩니다.

2. 단계별 동작 원리 (Technical Deep Dive)

프로세스 할로잉은 윈도우 API를 정교하게 호출하는 과정을 거칩니다. 엔지니어링 관점에서 그 흐름을 4단계로 요약할 수 있습니다.

Step 1: Suspended 프로세스 생성

먼저 CreateProcess 함수를 호출할 때 CREATE_SUSPENDED 플래그를 인자로 전달합니다. 이를 통해 프로세스의 메모리 구조는 형성되지만, 실제 명령어는 한 줄도 실행되지 않은 정지 상태를 유지하게 됩니다.

Step 2: 메모리 언매핑 (Unmapping)

정상 프로세스의 이미지 베이스 주소를 확인한 뒤, ZwUnmapViewOfSection 또는 NtUnmapViewOfSection 함수를 사용하여 메모리에 로드된 원본 코드를 깨끗이 비워냅니다.

Step 3: 악성 페이로드 주입

비워진 공간에 새로운 실행 코드를 기록하기 위해 VirtualAllocEx로 메모리를 할당하고, WriteProcessMemory를 통해 공격자가 준비한 실제 악성 코드를 주입합니다.

Step 4: 실행 흐름 제어 및 재시작

마지막으로 SetThreadContext를 호출하여 스레드의 Entry Point(진입점)를 주입된 코드로 수정합니다. 이후 ResumeThread를 호출하면, 겉은 메모장이지만 속은 악성 코드인 프로세스가 본격적으로 동작하게 됩니다.

3. 왜 프로세스 할로잉을 사용하는가?

공격자들이 단순히 새로운 프로세스를 실행하지 않고 굳이 할로잉 기법을 번거롭게 사용하는 이유는 크게 세 가지입니다.

  • 안티바이러스(AV) 우회: 파일 시스템에 악성 .exe 파일을 남기지 않는 'Fileless' 형태의 공격이 가능해집니다.
  • 신뢰 기반 탐지 무력화: 윈도우 핵심 프로세스(예: lsass.exe)를 가로채면 방화벽이나 보안 툴에서 네트워크 통신을 허용할 가능성이 높아집니다.
  • 포렌식 방해: 휘발성 메모리에서만 동작하므로 PC를 재부팅하면 증거가 사라져 추적이 매우 어렵습니다.

🛡️ 분석가와 사용자를 위한 대응 방안

시스템 분석가라면 프로세스의 부모-자식 관계(Parent-Child Relationship)를 유심히 살펴야 합니다. 또한, Process Hacker 같은 도구로 각 섹션의 권한(RWX 여부)을 확인하고, 실제 디스크 파일의 해시값과 메모리 이미지의 해시값을 대조하는 정밀 검사가 필요합니다. 최신 EDR(Endpoint Detection and Response) 솔루션은 이러한 메모리상의 비정상적인 API 호출 패턴을 실시간으로 감시하여 차단합니다.

본 포스팅이 윈도우 시스템 보안 구조를 이해하는 데 도움이 되셨길 바랍니다.
궁금한 점이나 기술적인 토론은 언제든 댓글로 남겨주세요.

#ProcessHollowing #보안분석 #윈도우시스템 #메모리보안 #악성코드분석 #리버싱 #IT기술블로그 #시스템엔지니어

댓글

이 블로그의 인기 게시물

[Windows 분석] ShellExperienceHost.exe의 역할과 CPU 점유율 해결법 (엔지니어 가이드)

[Intel 보안 분석] jhi_service.exe의 정체와 인텔 관리 엔진(ME)의 역할