

Volatility는 메모리 포렌식에 사용되는 도구로, 시스템의 메모리 덤프를 분석해 OS 구조를 기준으로 복원한다.
다음은 실행 형식은 다음과 같다.
python vol.py -[OPTION] [PLUGIN]
메모리 덤프 파일을 지정하는 -f 옵션만은 기억해두도록 하자.
| Option | 내용 |
|---|---|
| -c [CONFIG], --config [CONFIG] | json 설정 파일을 불러옴 |
| --write-config | 현재 설정을 config.json 설정 파일로 저장 |
| --save-config [CONFIG] | 현재 설정을 json 설정 파일로 저장 |
| -e [EXTEND], --extend [EXTEND] | 설정 값 추가 또는 변경 |
| Option | 내용 |
|---|---|
| -f [FILE], --file [FILE] | 메모리 덤프 파일 지정 |
| --single-location [SINGLE_LOCATION] | 분석할 파일의 기본 위치 지정 |
| --single-swap-locations [SINGLE_SWAP_LOCATIONS ...] | swap 영역 위치 지정 |
| --stackers [STACKERS ...] | stacker 목록 지정 |
| Option | 내용 |
|---|---|
| -v, --verbosity | 자세히 출력 |
| -q, --quiet | 진행 상황을 출력하지 않음 |
| -l [LOG], --log [LOG] | 콘솔 출력 내용을 지정한 경로에 저장 |
| -o [OUTPUT_DIR], --output-dir [OUTPUT_DIR] | 결과물 경로 지정 |
| --filters [FILTERS] | 출력 결과 필터링 |
| --hide-columns | 특정 열 숨김 |
| -r [RENDERER], --renderer [RENDERER] | 출력 형식 지정(csv, json, parquet 등) |
| Option | 내용 |
|---|---|
| -p [PLUGIN_DIRS], --plugin-dirs [PLUGIN_DIRS] | Plugin 경로 지정 |
| -s SYMBOL_DIRS, --symbol-dirs SYMBOL_DIR | Symbol 경로 지정 |
| Option | 내용 |
|---|---|
| --clear-cache | 캐시 삭제 |
| --cache-path [CACHE_PATH] | 캐시 저장 경로 변경 |
| --offline | 온라인 Symbol 검색 안함 |
| -u [URL], --remote-isf-url [URL] | 온라인 ISF 검색 URL 지정 |
| Option | 내용 |
|---|---|
| -h, --help | 도움말 표시 |
| --parallelism [{PROCESSES, THREADS, OFF}] | 병렬 처리({멀티프로세스, 멀티스레드, 비활성화}) |
vol.py [PLUGIN] --help로 각 Plugin의 도움말을 볼 수 있다.
| Plugin | 내용 |
|---|---|
| banners | 메모리 이미지에서 Linux 배너 문자열 식별 시도 |
| configwriter | 자동 분석(automagic)을 실행하고 설정을 출력 및 output 디렉토리에 저장 |
| frameworkinfo | Volatility 프레임워크의 모듈 구성 요소 정보 출력 |
| isfinfo | 사용 가능한 ISF 파일 또는 특정 ISF 정보 출력 |
| layerwriter | stacker가 생성한 기본 메모리 레이어를 파일로 저장 |
| regexscan | 커널 메모리를 정규표현식 기반으로 스캔 |
| timeliner | 시간 관련 정보를 제공하는 플러그인 결과를 시간순으로 정렬 |
| vmscan | Intel VT-d 구조를 스캔하고 VM용 Volatility 설정 생성 |
| Plugin | 내용 |
|---|---|
| linux.boottime | 시스템 부팅 시각 출력 |
| linux.capabilities | 프로세스 권한(capabilities) 목록 출력 |
| linux.pidhashtable | PID 해시테이블을 통해 프로세스 열거 |
| linux.pslist | 메모리 이미지에 존재하는 프로세스 목록 출력 |
| linux.psscan | 메모리 스캔 기반으로 프로세스 탐지 |
| linux.pstree | 부모-자식 관계 기반 프로세스 트리 출력 |
| linux.psaux | 프로세스 실행 인자 출력 |
| linux.pscallstack | 각 태스크의 호출 스택 출력 |
| linux.ptrace | ptrace로 연결된 tracer/tracee 태스크 열거 |
| Plugin | 내용 |
|---|---|
| linux.bash | bash 명령 히스토리 복구 |
| linux.envars | 프로세스 환경 변수 출력 |
| Plugin | 내용 |
|---|---|
| linux.proc | 모든 프로세스의 메모리 맵 출력 |
| linux.elfs | 프로세스에 매핑된 ELF 파일 목록 |
| linux.library_list | 프로세스에 로드된 라이브러리 목록 |
| linux.lsof | 프로세스별 열린 파일 목록 |
| linux.pagecache.files | 메모리에 캐시된 파일 목록 |
| linux.pagecache.inodepages | 캐시된 inode 페이지 목록 및 복구 |
| linux.pagecache.recoverfs | 캐시된 파일시스템을 tarball로 복구 |
| linux.module_extract | 커널 특정 주소에서 ELF 파일 복원 |
| Plugin | 내용 |
|---|---|
| linux.ip.Addr | 모든 네트워크 장치의 인터페이스 주소 정보 출력 |
| linux.ip.Link | ip link show와 유사한 네트워크 인터페이스 정보 출력 |
| linux.sockscan | 메모리 레이어에서 네트워크 소켓 스캔 |
| linux.sockstat | 모든 프로세스의 네트워크 연결 정보 출력 |
| Plugin | 내용 |
|---|---|
| linux.lsmod | 로드된 커널 모듈 목록 |
| linux.kallsyms | 커널 kallsyms 심볼 열거 |
| linux.kmsg | 커널 로그 버퍼 출력 |
| linux.kthreads | 커널 스레드 함수 열거 |
| linux.iomem | 실행 중인 시스템의 /proc/iomem과 유사한 정보 출력 |
| linux.mountinfo | 프로세스 마운트 네임스페이스의 마운트 포인트 출력 |
| linux.vmcoreinfo | VMCoreInfo 테이블 열거 |
| Plugin | 내용 |
|---|---|
| linux.ebpf | eBPF 프로그램 열거 |
| linux.tracing.ftrace.CheckFtrace | ftrace 후킹 탐지 |
| linux.tracing.perf_events.PerfEvents | 프로세스별 성능 이벤트 목록 출력 |
| linux.tracing.tracepoints.CheckTracepoints | tracepoint 후킹 탐지 |
| linux.vmaregexscan.VmaRegExScan | 모든 VMA 영역을 정규표현식으로 스캔 |
| Plugin | 내용 |
|---|---|
| linux.malfind.Malfind | 코드 인젝션이 의심되는 메모리 영역 탐지 (deprecated) |
| linux.hidden_modules.Hidden_modules | 숨겨진 커널 모듈 탐지 (deprecated) |
| linux.malware.malfind.Malfind | 코드 인젝션이 의심되는 메모리 영역 탐지 |
| linux.malware.hidden_modules.Hidden_modules | 숨겨진 커널 모듈 탐지 |
| linux.malware.modxview.Modxview | 여러 모듈 탐지 기법을 종합해 은닉 여부 분석 |
| linux.malware.netfilter.Netfilter | Netfilter 훅 목록 출력 |
| linux.malware.process_spoofing.ProcessSpoofing | 실행 경로·cmdline·comm 비교로 프로세스 스푸핑 탐지 |
| linux.malware.tty_check.Tty_Check | tty 장치 후킹 탐지 |
| linux.malware.check_afinfo.Check_afinfo | 네트워크 프로토콜 함수 포인터 무결성 검사 |
| linux.malware.check_creds.Check_creds | 프로세스 간 credential 구조 공유 여부 검사 |
| linux.malware.check_idt.Check_idt | IDT 변조 여부 검사 |
| linux.malware.check_modules.Check_modules | 커널 모듈 목록과 sysfs 정보 비교 |
| linux.malware.check_syscall.Check_syscall | 시스템 콜 테이블 후킹 검사 |
| Plugin | 내용 |
|---|---|
| windows.info | 메모리 샘플의 OS 및 커널 정보 출력 |
| windows.pslist | 프로세스 목록 출력 |
| windows.psscan | 메모리 스캔 기반 프로세스 탐지 |
| windows.pstree | 부모-자식 관계 기반 프로세스 트리 출력 |
| windows.cmdline | 프로세스 실행 명령어 출력 |
| windows.envars | 프로세스 환경 변수 출력 |
| Plugin | 내용 |
|---|---|
| windows.filescan | 파일 오브젝트 스캔 |
| windows.dumpfiles | 메모리에 캐시된 파일 내용 덤프 |
| windows.handles | 프로세스 열린 핸들 목록 출력 |
| Plugin | 내용 |
|---|---|
| windows.dlllist | 로드된 DLL 목록 |
| windows.modules | 로드된 커널 모듈 목록 |
| windows.driverscan | 메모리 기반 드라이버 스캔 |
| windows.vadinfo | 프로세스 메모리 영역 정보 출력 |
| windows.vadwalk | VAD 트리 순회 |
| windows.memmap | 메모리 맵 출력 |
| Plugin | 내용 |
|---|---|
| windows.malware.malfind | 코드 인젝션 의심 메모리 영역 탐지 |
| windows.malware.hollowprocesses | 프로세스 할로잉 탐지 |
| windows.malware.pebmasquerade | PEB 기반 프로세스 이름 위장 탐지 |
| windows.malware.processghosting | Process Ghosting 탐지 |
| windows.malware.svcdiff | 서비스 목록 비교를 통한 은닉 탐지 |
| Plugin | 내용 |
|---|---|
| windows.registry.hivelist | 레지스트리 하이브 목록 출력 |
| windows.registry.hivescan | 메모리 기반 레지스트리 하이브 스캔 |
| windows.registry.printkey | 특정 레지스트리 키 출력 |
| windows.registry.userassist | UserAssist 실행 기록 출력 |
| windows.registry.amcache | AmCache 실행 이력 추출 |
| windows.registry.scheduled_tasks | 레지스트리 기반 예약 작업 정보 출력 |
| Plugin | 내용 |
|---|---|
| windows.mbrscan | MBR 스캔 및 파싱 |
| windows.mutantscan | 뮤텍스 오브젝트 스캔 |
| windows.ssdt | 시스템 콜 테이블 출력 |
| windows.timers | 커널 타이머 및 DPC 출력 |
| windows.truecrypt | TrueCrypt 캐시된 패스프레이즈 탐지 |
| Plugin | 내용 |
|---|---|
| mac.pslist | 프로세스 목록 출력 |
| mac.psscan | 메모리 스캔 기반 프로세스 탐지 |
| mac.pstree | 프로세스 트리 출력 |
| mac.psaux | 프로그램 실행 인자 복구 |
| Plugin | 내용 |
|---|---|
| mac.netstat | 네트워크 연결 정보 출력 |
| mac.ifconfig | 네트워크 인터페이스 정보 출력 |
| mac.list_files | 모든 프로세스의 열린 파일 디스크립터 출력 |
| mac.lsof | 프로세스별 열린 파일 목록 |
| Plugin | 내용 |
|---|---|
| mac.lsmod | 로드된 커널 모듈 목록 |
| mac.malfind | 코드 인젝션 의심 메모리 영역 탐지 |
| mac.check_syscall | 시스템 콜 테이블 후킹 검사 |
| mac.check_sysctl | sysctl 핸들러 후킹 검사 |
| mac.check_trap_table | mach trap 테이블 후킹 검사 |
| mac.socket_filters | 커널 소켓 필터 열거 |
| mac.timers | 악성 커널 타이머 탐지 |
| mac.trustedbsd | 악성 trustedbsd 모듈 검사 |
| mac.vfsevents | 파일 시스템 이벤트를 필터링하는 프로세스 출력 |