기술 가이드

Volatility를 이용한 RAM(메모리) 포렌식 분석

7 min read 디지털 포렌식 업데이트됨 16 Sep 2025
Volatility로 RAM 메모리 포렌식 분석하기
Volatility로 RAM 메모리 포렌식 분석하기

메모리(RAM) 분석은 악성코드 포렌식에서 핵심 역할을 합니다. 실행 중인 프로세스, 네트워크 연결, 로드된 DLL, 명령 이력 등 런타임 정보를 통해 디스크에 남지 않는 멀웨어 활동을 포착할 수 있습니다. 이 문서에서는 휘발성 메모리 분석용 오픈소스 도구인 Volatility 프레임워크(파이썬 기반, 멀티플랫폼 독립형 실행 파일 제공)를 사용한 실전 사례와 절차, 판별·대응 방법을 상세히 다룹니다.

정의: Volatility — 휘발성 메모리 이미지를 분석해 프로세스, 네트워크, DLL, 레지스트리 등 런타임 상태를 추출하는 오픈소스 도구.

중요: 로컬 이미지의 무결성 검증과 증거 보존(chain of custody)을 항상 우선하십시오.

관련 검색 의도

  • 메모리 포렌식 도구 사용법
  • Volatility malfind 사용법
  • 메모리에서 프로세스/네트워크/명령 기록 추출

기대 결과

  • 메모리 덤프에서 의심 프로세스 식별
  • malfind로 인젝션/임의 메모리 영역 덤프 추출
  • netscan/cmdscan으로 네트워크·명령 이력 확인
  • 확보한 덤프를 바이러스 검사 엔진으로 추가 확인

메모리 형식 지원

최신 Volatility 릴리스에서 지원하는 메모리 형식(요약):

  • Raw/Padded Physical Memory
  • Firewire (IEEE 1394)
  • Expert Witness (EWF)
  • 32/64비트 Windows Crash Dump
  • 32/64비트 Windows Hibernation
  • 32/64비트 MachO 파일
  • VirtualBox Core Dumps
  • VMware Saved State (.vmss) 및 Snapshot (.vmsn)
  • HPAK Format (FastDump)
  • QEMU 메모리 덤프

설치

Volatility는 Windows, Linux, macOS에서 사용할 수 있습니다. 우분투 기반 시스템에서는 패키지로 설치할 수 있습니다:

apt-get install volatility

Volatility 설치 스크린샷

(이미지 설명: Volatility 설치 또는 실행 화면 스냅샷)

분석 준비 및 무결성 검증

메모리 이미지를 분석하기 전에 해시로 무결성을 확인하고 원본 이미지를 변경하지 마십시오. 예시 덤프의 MD5는 다음과 같습니다:

MD5:               ee043142485a83f4d49a3a7899408500

무결성 검증은 파일이 전송/복사 과정에서 손상되었는지 확인하기 위한 최소 절차입니다. 추가로 SHA-1/SHA-256을 병행하면 안전합니다.

분석 대상 환경 및 예비 정보

  • 분석 대상: Windows 메모리 덤프 (예시 파일: memdump3.raw)
  • Volatility 독립 실행형 윈도우 바이너리 사용
  • 목표: 의심 프로세스 식별, 인젝션 흔적 추출, 네트워크 연결 확인, 명령 기록 확인

Volatility로 프로파일 확인

프로파일은 메모리 이미지에 맞는 아키텍처·커널 정보를 뜻합니다. 이미지 정보(imageinfo)로 권장 프로파일을 확인합니다:

"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" imageinfo -f memdump3.raw

imageinfo 실행 결과

imageinfo 결과 예시: 권장 프로파일은 Win7SP0x86, Win7SP1x86 등으로 표시됩니다.

프로세스 목록 확인 (pslist)

메모리에서 실행 중인 프로세스 목록을 추출합니다. 일반적으로 pslist는 프로세스의 생성 시간과 PID를 보여주므로 의심 프로세스의 존재를 빠르게 식별할 수 있습니다.

"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 pslist -f memdump3.raw

pslist 결과 파트1

(이미지 설명: 메모리 덤프에서 추출된 프로세스 목록 스냅샷)

pslist 결과 파트2

이미지 설명: 추가 프로세스 목록. 이 예시에서는 ‘0KqEC12.exe’와 같은 생소한 이름과 여러 개의 ‘iexplore.exe’ 인스턴스가 포착되어 의심스러운 행위로 분류됩니다.

프로세스 계층 확인 (pstree)

프로세스의 부모·자식 관계를 파악하려면 pstree를 사용합니다. 악성 프로세스가 정당한 부모 프로세스(explorer.exe 등)에 인젝션됐는지 확인할 수 있습니다.

"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 pstree -f memdump3.raw

pstree 결과 파트1

pstree 결과 파트2

(이미지 설명: 프로세스 트리로 PID·PPID가 표시되어 있으며, 의심 프로세스가 어떤 부모 프로세스에서 파생되었는지 확인 가능)

메모리 내 코드 주입·의심 영역 추출 (malfind)

malfind는 사용자 공간에서 코드 주입 흔적(익명의 메모리 영역, RWX 페이지 등)을 찾아 해당 영역을 덤프합니다. 덤프 파일을 바이러스 검사 엔진으로 확인하면 유용합니다.

예시: PID 1120 (svchost.exe)에서 malfind 실행

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 malfind -D E:\output/pid-1120 -p 1120 -f memdump3.raw

malfind PID 1120 결과

설명: 이 케이스에서는 PID 1120에서 덤프된 DLL 없음.

예시: PID 1788 (rdpclip.exe)

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 malfind -D E:\output/pid-1788 -p 1788 -f memdump3.raw

malfind PID 1788 결과

설명: 이 경우도 덤프 없음.

예시: PID 2104 (explorer.exe)

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 malfind -D E:\output/pid-2104 -p 2104 -f memdump3.raw

malfind PID 2104 결과

explorer.exe에서 추출된 DLL 덤프

설명: explorer.exe에서 인젝션 흔적 및 DLL 덤프가 추출됨. 이후 이 덤프를 AV·온라인 샌드박스에 제출하여 식별합니다.

예시: PID 2240 (0KqEC12.exe)

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 malfind -D E:\output/pid-2240 -p 2240 -f memdump3.raw

malfind PID 2240 결과

PID 2240 덤프 샘플

설명: 이 프로세스는 이름과 동작이 비정상적이며, 덤프를 통해 추가 분석을 진행합니다.

예시: PID 2840 / 2364 / 3728 등 여러 iexplore.exe 인스턴스에 대해 malfind 실행

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 malfind -D E:\output/pid-2840 -p 2840 -f memdump3.raw

malfind PID 2840

malfind PID 2364 덤프

malfind PID 3728 덤프

설명: 여러 iexplore.exe 인스턴스에서 유사한 인젝션·덤프 패턴이 관찰됨. 이는 악성코드가 정식 IE 프로세스명을 도용해 실행되었을 가능성을 시사합니다.

덤프 분석 및 악성 여부 확인

덤프 파일을 VirusTotal·Payload Security(online sandbox)·Windows Defender·MalwareBytes 등으로 검사하여 위협 명명과 행동 패턴을 확인합니다. 본 사례에서 Windows Defender는 “Trojan:Win32/EyeStye.N” 및 “Trojan:Win32/EyeStye.plugin”으로 탐지했습니다.

Windows Defender 탐지 결과

설명 요약: EyeStye 계열은 키로깅·인터넷 활동 모니터링·자격 증명 탈취 동작을 수행하며, 코드 인젝션을 통해 탐지를 회피합니다. 본 사례에서는 악성 코드가 explorer.exe에 인젝션되어 동작한 것으로 보입니다.

MalwareBytes 결과: 덤프를 Trojan.Grabber로 탐지

MalwareBytes 탐지 스크린샷

명령 히스토리 추출 (cmdscan)

cmdscan은 메모리에 남아 있는 명령 프롬프트 이력(명령 로그)을 검색합니다. 공격 흔적과 수동 명령 실행 기록을 확인하는 데 유용합니다.

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 cmdscan -f memdump3.raw

cmdscan 결과

설명: 공격자는 여러 명령을 실행했고, ‘iexplorer.exe’, ‘ieplore.exe’ 같이 오타 또는 변조된 파일명을 이용해 악성코드를 실행한 기록이 남아 있었습니다. 또한 ‘_lt112.spn’ 같은 파일명이 나타났고, 이를 온라인 샘플 DB에서 검색해 연관성을 확인했습니다.

malwr 참조 스냅샷

hybrid-analysis 참조 스냅샷

네트워크 연결 추출 (netscan)

메모리에서 열린 소켓 정보·원격 IP·포트·상태(TCP 연결 등)를 추출하여 C2 통신 또는 데이터 유출 흔적을 찾습니다.

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 netscan -f memdump3.raw

netscan 파트1

netscan 파트2

netscan 파트3

설명: 여러 연결 중 악성 프로세스 ‘iexplore’가 포트 80으로 외부 연결을 맺고 있는 것이 확인되어 HTTP 기반 C2 가능성을 의심했습니다.

종합 결론

  • 메모리 덤프 분석 결과, 대상 시스템은 악성코드에 감염되어 있으며 주요 행위는 explorer.exe에 주입된 형태로 동작하고 여러 iexplore.exe(또는 변형된 이름) 인스턴스가 실행되어 외부 C2(포트 80)와 통신하고 있었습니다.
  • malfind로 추출한 덤프를 AV/샌드박스에 제출한 결과 EyeStye 계열 또는 Grabber 분류로 탐지되었습니다.
  • cmdscan으로 명령 이력이 확보되어 공격자의 수동 명령·파일 실행 흔적을 확인했습니다.

실무용 체크리스트 (역할별)

분석가 체크리스트:

  • 메모리 이미지 원본의 해시(MD5/SHA-1/SHA-256) 생성 및 기록
  • imageinfo로 권장 프로파일 확인
  • pslist/pstree로 의심 PID 식별
  • malfind/ldrmodules로 인젝션·로드된 모듈 추출
  • cmdscan/consolescan로 명령 이력 확인
  • netscan로 열린 소켓·원격IP 확인
  • 추출물(덤프) 저장소에 복사 후 오프라인으로 AV/샌드박스 제출

인시던트 대응자 체크리스트:

  • 의심 시스템 네트워크 차단(격리)
  • 추가 정도(라이브 포렌식) 필요 시 메모리 이미지 추가 수집
  • 악성 프로세스의 프로파일·완전 경로 확보
  • C2 IP/도메인 차단 및 IOC 배포
  • 복구 계획 수립(패치·패스워드 변경 등)

관리자(포렌식 담당) 체크리스트:

  • 수집 절차 문서화 및 체인오브커스터디 확보
  • 관련 로그(방화벽, 프록시, EDR) 수집 요청
  • 관련 의심 파일의 보존(원본, 분석 결과)

플레이북: 메모리 기반 의심 악성코드 탐지 시 표준 절차

  1. 증거 보존: 이미지를 복사하고 해시 생성(MD5/SHA-256).
  2. 초기 식별: volatility imageinfo 실행 → 프로파일 확보.
  3. 프로세스 분석: pslist, pstree로 의심 PID 식별.
  4. 인젝션 식별: malfind, dlllist, ldrmodules로 로드/인젝션 확인.
  5. 네트워크 활동: netscan으로 열린 소켓·원격 주소 파악.
  6. 명령·스크립트: cmdscan, consolescan으로 히스토리 확보.
  7. 덤프 제출: 덤프 파일을 VirusTotal/Hybrid/Malwr에 제출해 TTP 및 탐지명 확인.
  8. 대응: 네트워크 차단, IOC 유포, 패치·비밀번호 변경, 포렌식 보고서 작성.
  9. 보고: 사건 요약·타임라인·영향 범위·권장 조치 포함한 보고서 제출.

의사결정 흐름도 (간단)

flowchart TD
  A[메모리 덤프 확보] --> B{해시 무결성 확인}
  B -->|정상| C[Volatility imageinfo]
  B -->|불일치| Z[이미지 재수집 또는 검증 절차]
  C --> D{의심 프로세스 존재?}
  D -->|예| E[malfind로 인젝션 추출]
  D -->|아니오| F[기타 플러그인으로 추가 검사]
  E --> G{덤프 악성판정?}
  G -->|예| H[네트워크·명령 이력 분석 → 대응]
  G -->|불분명| I[샌드박스 제출 및 심층 분석]

언제 Volatility 분석이 실패하거나 한계가 있는가

  • 커널 레벨 루트킷이 메모리 구조를 변조한 경우 정상적인 오브젝트 식별이 어려움
  • 이미지가 부분적으로 손상되거나 아웃오브밴드(비표준) 형식인 경우 플러그인이 실패할 수 있음
  • 최신 OS 패치/커널 구조 변경으로 인해 적절한 프로파일이 제공되지 않으면 정확도 저하
  • 암호화·난독화된 페이로드는 정적 검사에서 탐지되지 않을 수 있어 동적 분석 보완 필요

대응: Rekall(대안 메모리 포렌식 도구) 사용, 메모리 이미지를 여러 도구로 교차 검증, 라이브 분석(신중히), 관련 버전·프로파일 수동 구성

테스트 케이스(검증 기준)

  • 이미지가 손상되지 않았음을 증명하는 해시와 로그 존재
  • imageinfo가 적절한 프로파일을 권장하는지
  • pslist가 알려진 정상 시스템과 유사한 프로세스 수를 반환하는지
  • malfind가 인젝션을 검출하면 덤프 파일이 생성되고 AV에서 분석 가능한지
  • netscan 결과에 원격 IP/포트가 명확히 표기되는지

1라인 용어집

  • 프로파일: 메모리 이미지의 아키텍처/OS 버전을 나타내는 Volatility 구성
  • malfind: 사용자 메모리에서 의심스러운 코드·RWX 페이지를 찾는 플러그인
  • pslist/pstree: 프로세스 목록 및 계층 구조를 출력하는 플러그인
  • netscan: 메모리에서 열린 소켓 정보를 추출하는 플러그인
  • cmdscan: 명령 프롬프트 히스토리를 추출하는 플러그인

보안·프라이버시 노트

  • 확보한 메모리 덤프에는 자격 증명·개인 식별 정보(PII)가 포함될 수 있으므로 접근·전송 시 암호화하고 접근 권한을 최소화해야 합니다.
  • 외부 샌드박스(온라인) 제출 전에는 정책·법적 요구사항을 검토하십시오.

요약 및 권장 조치

  • Volatility는 메모리 기반 포렌식에서 필수적인 도구입니다. malfind, cmdscan, netscan 같은 플러그인으로 런타임 상태를 폭넓게 조사할 수 있습니다.
  • 분석 결과 악성 활동(코드 인젝션·원격 연결·명령 실행)이 확인되면 즉시 네트워크 차단, IOC 배포, 관련 호스트 격리 및 패스워드 변경 등 사고 대응 절차를 실행하십시오.
  • 한 도구에만 의존하지 말고 여러 분석 도구 및 온라인 샌드박스를 교차 검증해 진단 신뢰도를 높이십시오.

참고 자료

  1. http://www.volatilityfoundation.org/24
  2. https://www.microsoft.com/security/portal/threat/encyclopedia/entry.aspx?Name=Trojan:Win32/EyeStye.N
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기