[Memory] Volatility
볼라틸리티
볼라틸리티는 파이썬 기반으로 만든 메모리 포렌식 도구로 윈도우, 리눅스, MAC os에서 실행 가능한 오픈소스다. Plugin을 추가하여 여러 기능을 사용할 수 있으며 직접 플러그인을 제작하여 사용하는 것 역시 가능하다.
획득할 수 있는 정보
- 트리 형태의 프로세스 리스트
- 프로세스가 로드한 DLL과 핸들
- 프로세스 환경변수와 Import, Export하는 함수
- 네트워크 정보
- 시스템에서 로드했던 드라이버 목록
- 실행 중이거나 종료 또는 루트킷으로 은닉된 프로세스 오프셋
- SID(보안 식별자), PID, 스레드 수, 핸들 수, 시작 및 종료시간
기본 옵션
옵션 | 내용 |
-h, --help | 모든 옵션의 도움말 및 해당 옵션의 디폴트 값 출력 |
--con-file | 설정파일 경로 설정 |
-d, --debug | 디버그 |
--plugins | 플러그인 폴더 설정 (세미콜론을 이용해 추가 디렉터리 포함 가능) |
--info | 지원 os나 각 플러그인 기본 정보 출력 |
--cache-directory | 캐시 파일 저장 경로 설정 |
--cache | Directory TableBase, KDBG, KPER의 주소 등 여러 변수를 저장 |
--tz | 타임존 설정 |
-f, --filename | 메모리 이미지 경로 설정 |
--profile | os 및 버전 설정 |
-l, --location | 메모리 이미지의 URN 경로 설정 |
-w, --write | 쓰기모드 활성화 |
--use-old-as | 레거시 주소 공간을 쓰도록 설정 |
--dtb | DTB 주소 설정 |
--output | 출력 파일 포맷 설정 |
--output-file | 출력 파일 경로 설정 |
-v, --verbose | 진행상황 출력 |
-g, --kdbg | KDBG 주소 값 설정 |
-k, --kpcr | KPCR 주소 값 설정 |
플러그인
기능 | 플러그인 |
이미지 정보 | 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 |
레지스트리 | hivescan, hivelist, printkey, hivedump, hashdump, lsadump, userassist |
크래쉬 덤프, 하이버네이션 변환 |
crashinfo, hibinfo, imagecopy |
멀웨어, 루트킷 | malfind, svcscan, ldrmodules, impscan, apihooks, idt, gdt, threads, callbacks, driveirp, devicetree, psxview, ssdt_ex, timers |
기타 | strings, volshell, bioskbd, inspectcache, patcher, testsuite |
- imageinfo: 메모리 덤프 파일의 프로파일(os, hw 아키텍쳐 식별 정보) 정보 출력
- kdbgscan: 커널 디버거 데이터 블록 특징 탐색 및 분석
- timeliner: 시간 정보가 있는 윈도우 아티팩트 출력
- info: 플러그인 정보 확인
- pstree: 프로세스 정보 트리 출력
- psxview: pslist와 psscan 결과 비교
- dlllist: 프로세스에서 로드 한 dll 목록 출력
- dlldump: dll 파일 추출
- hivelist: 레지스트리 하이브 물리 주소, 가상 주소, 경로를 포함한 이름 출력
- hivedump: 특정 레지스트리 하이브 서브키 출력
- shellbags: shellbag 레지스트리 분석
- shimcache: shim 인프라가 사용하는 캐시 분석
- mftparser: ntfs 파티션의 mft 엔트리 분석
- netscan: tcp, udp, raw 소켓 등 출력
- malfind: 페이지 권한 등을 사용해서 프로세스에 삽입된 코드 또는 dll 탐색
- filescan: 추출할 수 있는 파일을 탐색
- dumpfiles: 프로세스가 메모리에서 추출할 수 있는 파일 추출
- memdump: 윈도우 가상 메모리를 파일로 추출
- procdump: 프로세스를 파일로 추출
사용법
운영체제 정보 획득
- vol.py -f [이미지 경로] imageinfo
기본 명령어 형식
- vol.py -f [이미지 경로] [플러그인]
- vol.py -f [이미지 경로] --proflie=[운영체제] [플러그인]
실행 파일 추출
- vol.py -f [이미지경로] procdump -D [저장경로] -p [PID]
참고
https://moaimoai.tistory.com/198
https://wave1994.tistory.com/31