how to use Volatility
조금 찾아 봤는데 Volatility 2.5 치트 시트는 찾을 수가 없었다.
Linux와 MAC OS X는 Windows와 플러그인(명령어)이 다르기 때문에 기회가 된다면 나중에 따로 정리하도록 하겠다.
사실 모든 플러그인을 정리하자면 긴 문서가 되어 버린다.
플로그인들을 정리한 문서들은 웹 상에 많이 있으니 자세한 문서를 원하는 사람들은 웹 상에서 찾아보길 바란다.
나는 그냥 블로깅 용으로 메모리를 분석하면서 자주 사용했던 플러그인들을 정리하고자 한다.
1. 이미지 정보
python vol.py -f [target] imageinfo
profile이 없는 경우, https://github.com/volatilityfoundation/profiles에서 필요한 profile을 다운로드 한다.
저장 경로는 volatility-master\volatility\plugins\overlays.
압축파일 통째로 넣으면 됨.
python2 setup.py build
python2 setup.py install
을 해야함.
추가가 잘 됐다면 "python2 vol.py --info"를 통해 추가된 프로필을 확인할 수 있다.
2. 프로세스
python vol.py -f [target] --profile=[OS version] pslist
pslist는 실행중인 프로세스를 출력해주는 명령어이다.
python vol.py -f [target] --profile=[OS version] psscan
psscan은 pslist의 상위 버전 느낌으로 숨겨져 있거나 종료된 프로세스까지도 출력해준다. 만약 종료된 프로세스라면 Time Exited에 종료된 시각이 출력된다.
python vol.py -f [target] --profile=[OS version] pstree
프로세스의 부모 자식 관계를 트리 형태로 출력해준다.
python vol.py -f [target] --profile=[OS version] psxview
pslist와 psscan의 결과를 동시에 보여준다.
3. DLL
python vol.py -f [target] --profile=[OS version] dlllist
특정 프로세스에 대한 DLL 리스트만을 출력하고 싶다면 -p 혹은 -pid 옵션을 추가해주면 된다.
python vol.py -f [target] --profile=[OS version] dlldump
dlldump를 이용하면 dll을 추출해낼 수 있다.
dlllist와 마찬가지로 특정 프로세스에 한정해서 dll을 추출하고 싶다면 -p 혹은 -pid 옵션을 추가하면 된다.
4. cmd
python vol.py -f [target] --profile=[OS version] cmdscan
python vol.py -f [target] --profile=[OS version] consoles
cmdscan과 비슷하지만 위 스크린샷처럼 사용한 명령어(history) 뿐만 아니라 입출력 버퍼들까지 모두 보여준다는 점이 다르다.
5. 프로세스 메모리
python vol.py -f [target] --profile=[OS version] -p [pid] memdump -D [dir]
해당 프로세스의 덤프 파일을 생성한다.
python vol.py -f [target] --profile=[OS version] -p [pid] procdump -D [dir]
해당 프로세스를 .exe로 추출한다.
다만 프로세스가 메모리에 단편적으로 올라와 있을 가능성이 매우 높으므로 완벽한 .exe 파일을 기대하기는 힘들다.
--offset=[offset] 옵션을 사용하면 offset 부터 추출해낼 수 있다.
6. 파일
python vol.py -f [target] --profile=[OS version] filescan
메모리에 있는 파일 오브젝트를 스캔한다. 이는 루트킷이 디스크에 파일을 숨겨도 찾아낼 수 있다.
python vol.py -f [target] --profile=[OS version] dumpfiles -Q [offset] -D [dir]
filescan으로 얻은 파일의 offset으로 메모리 안의 파일을 추출할 수 있다. -Q 옵션은 오프셋을, -p 옵션은 pid를 주면 된다.
7. 네트워크
python vol.py -f [target] --profile=[OS version] connections
활성화된 네트워크 연결 상태를 보여준다.
이미지가 Windows XP, Windows Server 2003일 때만 사용 가능하다.
python vol.py -f [target] --profile=[OS version] sockets
현재 listening 중인 소켓들을 찾아낸다.
sockets 역시 connections와 마찬가지로 이미지가 Windows XP, Windows Server 2003일 때만 사용 가능하다.
python vol.py -f [target] --profile=[OS version] connscan
종료된 연결 정보도 추출해낼 수 있지만 오탐일 가능성 또한 존재한다.
connscan 역시 connections와 마찬가지로 이미지가 Windows XP, Windows Server 2003일 때만 사용 가능하다.
python vol.py -f [target] --profile=[OS version] sockscan
이전에 있던 소켓 정보들까지도 추출 가능하다.
sockscan 역시 connections와 마찬가지로 이미지가 Windows XP, Windows Server 2003일 때만 사용 가능하다.
python vol.py -f [target] --profile=[OS version] netscan
netscan은 Windows Vista, Windows 7, Windows Server 2008에서 네트워크 아티팩트를 얻는데 사용된다.
아마 그 이상의 버전도 되겠지? 안 해봐서 모르겠다.