티스토리 뷰

1. 메모리 포렌식 개념

1.1 메모리 포렌식이란?

메모리 포렌식은 컴퓨터의 RAM에 저장된 데이터를 수집하고 분석하여 사이버 범죄, 악성코드 침투, 정보 유출과 같은 디지털 사건을 조사하고 증거를 확보하는 디지털 포렌식 기법의 한 분야다. 일반적으로 디스크 포렌식이 디스크 상의 데이터를 분석하는 데 중점을 둔다면 메모리 포렌식은 휘발성 데이터 영역인 메모리의 데이터를 대상으로 한다. RAM은 컴퓨터의 작업 환경, 실행 중인 프로세스 정보, 네트워크 연결 정보, 암호화 키, 사용자 세션 정보 등 실시간 데이터를 보관하고 있어 기존 디스크 포렌식만으로 탐지하기 어려운 정보를 제공할 수 있다.

최근 공격자들이 디스크 기반 증거를 남기지 않으려고 메모리상에만 머무르는 악성 행위를 늘려가면서 메모리 포렌식은 디지털 포렌식 및 사이버 보안 사고 대응 과정에서 반드시 수행해야 하는 필수적인 분석 방법이다.

1.2 메모리 포렌식의 목적과 필요성

메모리 포렌식이 중요한 이유는, 최근 악성코드와 사이버 공격이 고도화됨에 따라 디스크 상에서 확인하기 어려운 공격 흔적들이 증가했기 때문이다. 대표적으로 메모리 기반(fileless malware) 악성코드가 늘어나면서, 메모리 분석 없이는 공격 탐지 및 분석이 매우 어려워졌다. 악성코드는 디스크에 흔적을 최소화하고 메모리상에서만 동작하거나 분석 도구를 탐지하여 자가 삭제하거나 변형하기 때문에 메모리 분석을 통한 신속하고 정확한 대응이 필수적이다.

1.3 메모리 포렌식 주요 기법 및 사례

  • 실행 중 프로세스 분석: 메모리에서 프로세스 정보, 핸들, 프로세스 간 상호작용 정보를 확인하여 의심스러운 프로세스를 판별한다.
  • 네트워크 연결 정보 분석: 악성 프로세스가 외부와 통신하는 네트워크 연결 현황을 파악한다.
  • 메모리 내 악성코드 탐지 및 분석: 프로세스 인젝션, DLL 인젝션, 루트킷 및 은폐된 코드 탐지.
  • 레지스트리 및 환경변수 추출: 사용자가 입력한 명령어 기록 및 시스템 설정 정보 분석.
  • 암호 및 인증 정보 복구: 메모리에 존재하는 세션정보, 암호 및 인증 정보 추출.

2. Volatility Framework를 활용한 메모리 포렌식

2.1 Volatility 개요

Volatility Framework는 가장 널리 알려지고 사용되는 오픈소스 메모리 분석 프레임워크이다. Python으로 작성되었으며, 윈도우, 리눅스, macOS 등 다양한 OS에서 추출한 메모리 이미지를 분석할 수 있다. 주요 특징으로는 프로세스, DLL, 커널 정보, 네트워크 정보, 악성코드 흔적, 레지스트리 데이터 등을 추출하고, 손상된 메모리 이미지에서도 강력한 구조적 분석을 수행할 수 있다.

2.2 Windows 환경에서의 메모리 포렌식 방법(Volatility 활용)

Windows 운영체제에서 Volatility를 활용한 대표적인 메모리 분석 기법은 다음과 같다.

프로세스 목록 분석

실행 중인 프로세스 정보 분석을 통해 비정상적이거나 의심스러운 프로세스를 찾는다.

  • 명령어 예시:
 
volatility -f <덤프파일> --profile=<운영체제> pslist

volatility -f  <덤프파일> --profile=<운영체제> pstree

네트워크 연결 정보 분석

악성코드 감염 시 네트워크 연결 정보를 확인할 수 있다.

volatility -f <덤프파일> --profile=<운영체제> netscan

DLL 및 코드 인젝션 탐지

DLL Injection 탐지 명령어로 악성코드의 프로세스 메모리 내 숨겨진 코드 분석이 가능하다.

volatility -f <덤프파일> --profile=<운영체제>  malfind

레지스트리 정보 분석

레지스트리에 숨겨진 악성 코드 실행 흔적 탐지:

volatility -f <덤프파일> --profile=<운영체제>  hivelist

volatility -f <덤프파일> --profile=<운영체제> printkey -o [Hive주소] -K "Software\Microsoft\Windows\CurrentVersion\Run"

명령어 히스토리 분석

시스템 공격 시 사용된 명령어 파악

volatility -f <덤프파일> --profile=<운영체제>  cmdscan 

volatility -f memory.raw --profile=Win10x64 consoles

루트킷 및 숨김 프로세스 탐지

volatility -f <덤프파일> --profile=<운영체제>  psxview

파일 흔적 및 파일 핸들 분석

메모리에 남은 파일의 핸들과 사용 흔적을 분석

volatility -f memory.raw --profile=Win10x64 filescan

2.3 Linux 환경에서의 메모리 포렌식 방법(Volatility 활용)

Linux 환경에서도 Volatility는 메모리 분석에 있어 매우 유용한 도구이다.

프로세스 분석

Linux 환경 프로세스 목록 확인:

volatility -f <덤프파일> --profile=<운영체제> linux_pslist

커널 모듈 분석

악성 커널 모듈을 확인하는 명령어:

volatility -f <덤프파일> --profile=<운영체제>  linux_lsmod

열린 파일 및 파일 디스크립터 분석

volatility -f <덤프파일> --profile=<운영체제>  linux_lsof

네트워크 연결 분석

volatility -f <덤프파일> --profile=<운영체제>  linux_netstat

Bash 명령어 히스토리 분석

악성 행위를 위한 명령어 이력을 분석하는 명령어:

volatility -f <덤프파일> --profile=<운영체제>  linux_bash

환경 변수 분석

사용자의 세션 환경 변수 및 작업 환경 분석:

volatility -f <덤프파일> --profile=<운영체제>  linux_envars

 

'Forensic > Memory Forensic' 카테고리의 다른 글

OlympicDestroyer - Volatility Contest 2018 #2  (0) 2024.03.28
OlympicDestroyer - Volatility Contest 2018 #1  (2) 2024.03.12
Volatility 정리  (0) 2024.03.09