Security/Forensics

[Memory] Volatility

bonggang 2020. 3. 14. 12:24

볼라틸리티


볼라틸리티는 파이썬 기반으로 만든 메모리 포렌식 도구로 윈도우, 리눅스, 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

https://realsung.tistory.com/171?category=758070

https://schmidtiana95.tistory.com/entry/Volatility