본문 바로가기

보안/포렌식

볼라틸리티 (Volatility) -메모리 포렌식

소개

 - Python 기반 Windows Memory Forensic Tool

 - Windows, Linux, Mac OS에서 실행할 수 있음

 - Open source 이며, Plugin 형태로 다양한 기능들을 제공

 - 플러그인을 자신이 직접 만들어 사용가능

 - 메모리 덤프 파일(img, raw, dmp), 하이버네이션 파일(hiber), 가상 머신 메모리(vmem) 분석가능

 - 획득할 수 있는 정보

   - 트리 형태의 프로세스 리스트, 프로세스가 로드한 DLL과 핸들, 프로세스 환경변수와 Import, Export하는 함수, 네트워크 정보, 시스템에서 로드했던 드라이버 목록

   - 실행 중이거나 종료 또는 루트킷으로 은닉된 프로세스의 오프셋, SID(보안 식별자), PID, 스레드 수, 핸들 수, 시작 및 종료시간


사용법

 - 소스코드 이용

   - Volatility 패키지 설치

   - Pycypto 모듈 설치(암호 알고리즘)

   - Lib 디렉토리의 site.py 479번째 줄 수정(ascii를 UTF-8로 변환)


  - 포터블 버전 이용

    - 문제가 발생할 수 있음



기본 옵션


 옵션

 설명

-h, --help

모든 옵션의 도움말과 해당 옵션의 디폴트 값을 출력한다.

--conf-file

설정파일의 경로를 설정한다.

-d, --debug

볼라틸리티를 디버그한다.

--plugins

플러그인이 위치할 폴더를 설정한다. 세미콜론을 이용하여 추가 디렉터리 포함이 가능하다.

--info

지원 운영체제나 각 플러그인의 기본 정보를 출력한다.

--cache-directory

캐시 파일이 저장된 경로를 설정한다.

--cache

Directory Table Base(DTB), KDBG, KPCR의 주소 등, 여러 변수를 저장하여 추후에 사용할 수 있도록 한다.

--tz

타임존을 설정한다. (유닉스 계열에서만 가능)

-f, --filename

메모리 이미지의 경로를 설정한다.

--profile

운영체제 및 버전을 설정한다.

-l, --location

메모리 이미지의 URN 경로를 설정한다.

-w, --write

쓰기모드를 활성화 한다.

--use-old-as

레거시 주소 공간을 쓰도록 설정한다.

--dtb

DTB 주소를 설정한다.

--output

출력 파일의 포맷을 설정한다.

--output-file

출력 파일의 경로를 설정한다.

-v, --verbose

진행상황을 출력한다.

-g, --kdbg

KDBG주소값을 설정한다.

-k, --kpcr

KPCR주소값을정한다.



기본 명령어 형식

 - vol.py –f [이미지 경로] [플러그인]

 - vol.py –f [이미지 경로] --profile=[운영체제] [플러그인]


운영체제 정보 획득 방법

 - vol.py -f memory.dd imageinfo

 - 예상 운영체제, 메모리 주소 공간, DTB와 KDBG, KCPR의 주소 출력


시간정보 획득 방법

 - vol.py -f memory.dd timeliner —output-file result.csv

 - 아티팩트를 시간과 함께 csv 파일로 출력


실행파일 추출 방법

 - vol.py –f [이미지 경로] procexedump –D [저장경로] -p [PID]


플러그인 분류


기능 분류

관련 플러그인

이미지 정보

imageinfo, kdbgscan, kpcrscan

프로세스, DLL

pslist, pstree, psscan, dlllist, dlldump, handles, getsids, verinfo, enumfunc

프로세스 메모리

memmap, memdump, procmemdump, procexedump, vadwalk, vadtree, vadinfo, vaddump

커널 메모리 & 오브젝트

connections, connscan, sockets, sockscan,

 

Netscan

레지스트리

hivescan, hivelist, printkey, hivedump, hashdump, lsadump, userassist

크래쉬 덤프,

 

하이버네이션 변환

crashinfo, hibinfo, imagecopy

멀웨어, 루트킷

malfind, svcscan, ldrmodules, impscan, apihooks, idt, gdt, threads, callbacks, driverirp, devicetree, psxview, ssdt_ex, timers

기타

strings, volshell, bioskbd, inspectcache, patcher, testsuite



Timeliner 플러그인


아티팩트 종류

관련 플러그인

프로세스

pslist, psscan, pstree, procmemdump

쓰레드

thrdscan

네트워크, 소켓

netscan(Win7), connections(XP), connscan(XP)

레지스트리

hivelist, printkey, userassist

실행파일(exe)

procexedump, handles

DLL 및 핸들

dlllist, dlldump

드라이버

driverscan, driverirp, moddump



루트킷 관련 플러그인


플러그인 이름

설명

psxview

pslistpsscan으로 숨겨진 프로세스를 찾는다.

driverscan

메모리에서 드라이버 오브젝트를 스캔한다.

apihooks

API/DLL 함수의 후크를 찾는다.

ssdt

System Service Descriptor Table(SSDT)에서 후크를 찾는다.

driverirp

I/O Request Packet(IRP) 후크를 찾는다.

idt

Interrupt Descriptor Table(IDT)를 출력한다.