소개
- 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 |
pslist와 psscan으로 숨겨진 프로세스를 찾는다. |
|
driverscan |
메모리에서 드라이버 오브젝트를 스캔한다. |
|
apihooks |
API/DLL 함수의 후크를 찾는다. |
|
ssdt |
System Service Descriptor Table(SSDT)에서 후크를 찾는다. |
|
driverirp |
I/O Request Packet(IRP) 후크를 찾는다. |
|
idt |
Interrupt Descriptor Table(IDT)를 출력한다. |
'보안 > 포렌식' 카테고리의 다른 글
이미지 파일을 VMWare에서 부팅하기 (0) | 2016.11.03 |
---|---|
USB 사용기록 분석 (0) | 2016.11.03 |
메모리 포렌식 기초 지식 (0) | 2016.08.28 |
APT 분석방법 - 디스크 및 패킷 분석 (0) | 2016.06.08 |
윈도우 악성코드 포렌식 (0) | 2016.05.22 |