Volatility 플러그인

Suyoung Park·2022년 4월 7일
1
post-thumbnail

볼라틸리티(Volatility)
= 메모리 포렌식에 사용하는 메모리 분석 도구
= 파이썬 2.x에서 구동되는 오픈소스 형식의 프레임워크

기본 명령어 방식

vol.py -f [이미지 경로] [플러그인]
vol.py -f [이미지 경로] --profile=[운영체제] [플러그인]
  • -f : 파일선택 옵션

덤프 이미지는 vol.py와 같은 위치에 있는 Windows7.vmem을 사용
운영체제는 Windows 7 Win7SP1x64

🔌volatility 플러그인

--info : 플러그인 정보 확인 가능

vol.py --info

imageinfo : 메모리 덤프 파일의 프로파일 정보를 출력

  • 운영체제 정보, 커널 정보, 덤프 시각 등을 확인할 수 있다.
vol.py -f Windows7.vmem imageinfo

kdbgscan : 커널 디버거 데이터 블록의 특징을 찾고 분석

timeliner : 시간 정보가 있는 윈도우 아티팩트 출력


pstree : 프로세스 트리 출력

vol.py -f Widnows7.vmem --profile=Win7SP1x64 pstree

pslist : 작동 중인 모든 프로세스 출력

  • Offset 주소
  • PID(Process Identification Number)
  • PPID(Parent Process Identification Number)

psscan : 풀 스캐너를 통해 프로세스 출력

  • 종료된 프로세스
  • 비활성화된 프로세스
  • 루트 킷에 의해 숨겨지거나 연결이 끊긴 프로세스

psxview : 다양한 프로세스 리스트 출력

  • pslist=True, psscan=False인 프로세스 : 숨겨진 프로세스

memdump : 프로세스의 메모리 덤프

  • 윈도우 가상 메모리를 파일로 추출

netscan : 덤프 당시 네트워크 상태

dlllist : 특정 프로세스가 사용하는 dll 리스트

  • dll 인젝션과 같은 악성코드 분석할 때 유용
vol.py -f Windows7.vmem --profile=Win7SP1x64 dlllist -p [PID 번호]

-p : PID 지정 옵션

PID가 2312인 chrome.exe의 dlllist 참조




리스트를 html에 출력하기

위의 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 : 레지스트리 하이브의 물리주소, 가상 주소, 경로 포함 이름 출력

  • 가상 주소는 특정 레지스트리 플러그인 실행할 때 사용 ex) 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 : 윈도우 각 사용자의 설치된 서비스 목록

  • 서비스 이름과 sid를 출력
  • 플러그인 실행 시간이 오래 걸려서 파일로 출력하는 것을 권장

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 소켓 출력

  • 윈도우 xp, 윈도우 서버 2003만 해당 플러그인 사용 가능

netscan : tcp, udp, raw 소켓 출력

  • 윈도우 7, 윈도우 서버 2008버전 이상에서 사용 가능 (이하 사용 X)

filescan : 추출할 수 있는 파일 찾기

  • offset 필드 값을 사용해서 dumpfiles 플러그인으로 해당 파일 추출 가능

dumpfiles : 메모리에서 추출할 수 있는 파일 추출을 수행

  • 프로세스가 접근/수정/생성/삭제한 파일 등
vol.py -f [이미지 경로] --profile=[운영체제] dumpfiles -Q [원하는 파일의 Offset값]

-Q : offset 값 입력 옵션

apihooks : 후킹 된 API 함수 찾기

  • 디폴트로 모든 프로세스를 대상으로 후킹 분석
  • malfind 플러그인과 같이 사용하면 좋다

driverscan : 드라이브 목록 출력

  • 악성코드로 설치된 드라이버를 찾을 때 유용

mutantscan : kmutant 객체 목록 출력

thrdscan : 프로세스가 사용한 쓰레드 목록 출력

  • 은닉 프로세스를 찾을 때 유용

memmap : 프로세스가 사용한 물리 메모리와 가상 메모리 출력

procdumpy : 프로세스를 파일로 추출

  • 추출할 대상이 프로세스만 가능
  • 추출한 파일이 모두 PE 헤더를 가지고 있고, 실행 가능

yarascan : yara 이용

  • 사용자 및 커널 모드 메모리 영역에 포함된 바이트 순서
  • ansi 및 유니코드 문자열


Reference

Memory Analysis
[메모리 포렌식] Volatility 프레임워크 플러그인
Volatility 플러그인

profile
I'm swimming!

2개의 댓글

comment-user-thumbnail
2022년 4월 7일

어렵네요.. 잘보고갑니다~

1개의 답글