볼라틸리티(Volatility)
= 메모리 포렌식에 사용하는 메모리 분석 도구
= 파이썬 2.x에서 구동되는 오픈소스 형식의 프레임워크
vol.py -f [이미지 경로] [플러그인]
vol.py -f [이미지 경로] --profile=[운영체제] [플러그인]
-f
: 파일선택 옵션덤프 이미지는 vol.py와 같은 위치에 있는
Windows7.vmem
을 사용
운영체제는 Windows 7Win7SP1x64
--info
: 플러그인 정보 확인 가능
vol.py --info
imageinfo
: 메모리 덤프 파일의 프로파일 정보를 출력
vol.py -f Windows7.vmem imageinfo
kdbgscan
: 커널 디버거 데이터 블록의 특징을 찾고 분석
timeliner
: 시간 정보가 있는 윈도우 아티팩트 출력
pstree
: 프로세스 트리 출력
vol.py -f Widnows7.vmem --profile=Win7SP1x64 pstree
pslist
: 작동 중인 모든 프로세스 출력
psscan
: 풀 스캐너를 통해 프로세스 출력
psxview
: 다양한 프로세스 리스트 출력
pslist=True
, psscan=False
인 프로세스 : 숨겨진 프로세스memdump
: 프로세스의 메모리 덤프
netscan
: 덤프 당시 네트워크 상태
dlllist
: 특정 프로세스가 사용하는 dll 리스트
vol.py -f Windows7.vmem --profile=Win7SP1x64 dlllist -p [PID 번호]
-p
: PID 지정 옵션
PID가 2312인 chrome.exe의 dlllist 참조
위의 dll 리스트를 다음과 같은 명령어를 이용해 html 상에서 표 형태로 나타낼 수 있다.
psxview
, getservicesid
등에도 적용 가능
vol.py -f Windows7.vmem --profile=Win7SP1x64 dlllist -p 2312 --output=html --output-file=.\dlllist.html
dlldump
: 프로세스가 사용한 dll 덤프
vol.py -f Windows.vmem --profile=Win7SP1x64 dlldump -p 2312 --base=2005336064 -D ./
--base
: 특정 dll 추출 (인자: 특정 dll의 base 값)
-D
: 파일 추출 경로 지정
생성 파일 이름 : [프로세스 ID.프로세스 가상 주소.로드된 dll주소]
getsids
: 시스템 상 사용자의 SID, 응용 프로그램 별 권한 확인
malfind
: 악성코드를 시그니처 기반으로 검색
--dump-dir
옵션을 사용해 원하는 경로에 저장 가능hivelist
: 레지스트리 하이브의 물리주소, 가상 주소, 경로 포함 이름 출력
printkey
printkey
: 레지스트리의 key의 서브키, 값을 출력
vol.py -f Windows7.vmem --profile=Win7SP1x64 printkey -o 0xfffff8a000024010
-o
: 가상 주소 지정 옵션
hashdump
: 레지스트리 하이브에 있는 해시를 추출하고, 역해시 시도
userassist
: 레지스트리 키를 대상으로 분석한 결과 출력
많은 내용을 검토할 때, 명령어의 실행 내용을 텍스트로 바꾸는 경우에 사용한다.
[명령어] > [파일이름].txt
ex) vol.py -f Windows7.vmem --profile=Win7SP1x64 userassist > userassist.txt
shellbags
: shellbags 레지스트리 분석
shimcache
: shim 인프라가 사용하는 캐시를 분석
getservicesids
: 윈도우 각 사용자의 설치된 서비스 목록
dumpregistry
: 모든 레지스트리 하이브를 파일로 추출
vol.py -f [이미지 경로] --profile=[운영체제] dumpregistry -o [가상경로] -D ./
mftparser
: ntfs 파티션의 mft 엔트리 분석
consoles
: conhost.exe
를 분석
cmd.exe
에서 입력한 명령어와 실행 결과cmd.exe
를 사용하는 프로세스 이름connections
: 현재 실행 중인 tcp 세션 출력
connscan
: 종료된/현재 실행 중인 tcp 세션 출력
sockets
: listening 상태인 tcp, udp, raw 소켓 출력
netscan
: tcp, udp, raw 소켓 출력
filescan
: 추출할 수 있는 파일 찾기
dumpfiles
플러그인으로 해당 파일 추출 가능dumpfiles
: 메모리에서 추출할 수 있는 파일 추출을 수행
vol.py -f [이미지 경로] --profile=[운영체제] dumpfiles -Q [원하는 파일의 Offset값]
-Q
: offset 값 입력 옵션
apihooks
: 후킹 된 API 함수 찾기
malfind
플러그인과 같이 사용하면 좋다driverscan
: 드라이브 목록 출력
mutantscan
: kmutant 객체 목록 출력
thrdscan
: 프로세스가 사용한 쓰레드 목록 출력
memmap
: 프로세스가 사용한 물리 메모리와 가상 메모리 출력
procdumpy
: 프로세스를 파일로 추출
yarascan
: yara 이용
Memory Analysis
[메모리 포렌식] Volatility 프레임워크 플러그인
Volatility 플러그인
어렵네요.. 잘보고갑니다~