DFIR
Volatility 101: Building a customize portable version
category
DFIR
date
Oct 3, 2021
slug
volatility-building-a-customize-portable-version
author
status
Public
tags
volatility
summary
Build một bản volatility portable tùy chỉnh.
type
Post
thumbnail
updatedAt
Mar 1, 2023 08:53 AM
1. Cài đặt Volatility trên Windows2. Cài đặt Volatility trên Linux Ubuntu/WSL hoặc macOS3. Cài đặt bộ plugin MalConfScan cho Volatility4. Đóng gói Volatility với PyInstaller
1. Cài đặt Volatility trên Windows
Cài đặt Python 2.7.18
Cài đặt Microsoft Visual C++ Compiler for Python 2.7
Cài đặt Pip2
$ curl.exe https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py $ python .\get-pip.py
Download mã nguồn của Volatility Framework
$ git clone --recursive https://github.com/volatilityfoundation/volatility.git
Cài đặt gói
virtualenv
cho Python 2:$ pip install virtualenv
Tạo Python Virtual Environments
$ virtualenv.exe -p path\to\your\python.exe vol2 $ .\vol2\Scripts\activate
Cài đặt các dependencies Python Modules
$ pip install distorm3 yara-python==3.11.0 pycrypto Pillow==6.2.2 openpyxl ujson==1.35 pytz ipython
Cài đặt Volatility
$ python .\setup.py build $ python .\setup.py install
Kiểm tra hoạt động
$ vol.py --info | findstr -i "win10x64"
$ vol.py -f .\sample\triage.mem imageinfo
$ vol.py -f .\sample\triage.mem --profile=Win7SP1x64 pslist
2. Cài đặt Volatility trên Linux Ubuntu/WSL hoặc macOS
Cài đặt Python 2:
$ apt install python python-dev -y $ python -V Python 2.7.18
Cài đặt Pip:
$ curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py -o get-pip.py
$ python get-pip.py
Download mã nguồn:
$ git clone --recursive https://github.com/volatilityfoundation/volatility.git
Cài đặt gói
virtualenv
$ pip install virtualenv
Tạo Python Virtual Environments
$ virtualenv -p $(which python) vol2 $ source vol2/bin/activate
Cài đặt các dependencies Python Modules
$ pip install distorm3 yara-python==3.11.0 pycrypto Pillow==6.2.2 openpyxl ujson pytz ipython
Cài đặt Volatility
$ python setup.py build $ python setup.py install
Kiểm tra hoạt động
$ vol.py --info | grep -i "win10x64"
$ vol.py --conf-file=sample/volatilityrc linux_banner $ vol.py --conf-file=sample/volatilityrc linux_pslist
3. Cài đặt bộ plugin MalConfScan cho Volatility
Áp dụng cho Linux, macOS và WSL
MalConfScan là một bộ plugin cho Volatility do JPCERTCC phát triển với chức năng phát hiện và trích xuất cấu hình của những dòng mã độc (Malware Family) đã biết. Bộ plugin này rất hữu dụng cho những người làm công việc phân tích Malware trên bộ nhớ.
Sao chép mã nguồn của MalConfScan từ Github:
$ git clone https://github.com/JPCERTCC/MalConfScan.git
Cài đặt các gói phụ thuộc của MalConfScan
$ pip install -r MalConfScan/requirements.txt
Sao chép các plugin của MalConfScan vào thư mục plugin của Volatility
$ cd MalConfScan $ cp -R malconfscan.py utils yara ~/volatility/vol2/lib/python2.7/site-packages/volatility-2.6.1-py2.7.egg/volatility/plugins/malware/
Kiểm tra kết quả
$ vol.py --info | grep -i "malconf"
Chạy thử plugin mới cài
$ vol.py --conf-file=sample/volatilityrc linux_malconfscan
4. Đóng gói Volatility với PyInstaller
Áp dụng cho Windows. Phần này độc lập với các phần trước, có thể thực hiện ngay, ko phải thực hiện các bước trước đó.
PyInstaller là một công cụ đóng gói các ứng dụng viết bằng Python thành một tệp duy nhất phù hợp với hệ điều hành mà bạn đang chạy. Sau khi đóng gói, có thể dễ dàng đem tệp thực thi sang các hệ điều hành khác cùng loại để chạy mà không cần phải cài đặt bất cứ thành phần nào của Volatility từ đầu.
Tham khảo hướng dẫn tại đây: https://github.com/volatilityfoundation/volatility/wiki/Compiling-Binaries-with-Pyinstaller
Download mã nguồn của Volatility Framework
$ git clone --recursive https://github.com/volatilityfoundation/volatility.git
Tạo Python Virtual Environments
$ virtualenv.exe -p path\to\your\\python.exe vol2 $ .\vol2\Scripts\activate
Cài đặt các dependencies Python Modules
$ pip install distorm3 yara-python==3.11.0 pycrypto Pillow==6.2.2 openpyxl ujson==1.35 pytz ipython
Cài đặt PyInstaller phiên bản v3.4
$ pip install pyinstaller==3.4
Patching Source của gói
OpenPyxl
Source code trước khi patch
# Copyright (c) 2010-2019 openpyxl from openpyxl.compat.numbers import NUMPY, PANDAS from openpyxl.xml import DEFUSEDXML, LXML from openpyxl.workbook import Workbook from openpyxl.reader.excel import load_workbook import openpyxl._constants as constants # Expose constants especially the version number __author__ = constants.__author__ __author_email__ = constants.__author_email__ __license__ = constants.__license__ __maintainer_email__ = constants.__maintainer_email__ __url__ = constants.__url__ __version__ = constants.__version__
Source code sau khi patch
# Copyright (c) 2010-2019 openpyxl import json import os import sys from openpyxl.compat.numbers import NUMPY, PANDAS from openpyxl.xml import DEFUSEDXML, LXML from openpyxl.workbook import Workbook from openpyxl.reader.excel import load_workbook import openpyxl._constants as constants # Expose constants especially the version number __author__ = constants.__author__ __author_email__ = constants.__author_email__ __license__ = constants.__license__ __maintainer_email__ = constants.__maintainer_email__ __url__ = constants.__url__ __version__ = constants.__version__ here = os.path.abspath(os.path.dirname(__file__)) if hasattr(sys, '_MEIPASS'): here = sys._MEIPASS
Tùy chọn: Packed tệp với UPX Packer
- Download tại: https://github.com/upx/upx/releases
- Giải nén và chép tệp upx.exe vào:
volatility\vol2\Scripts\
Đóng gói với PyInstaller
$ pyinstaller --onefile pyinstaller.spec
Kiểm tra hoạt động:
$ .\dist\volatility.exe -f .\sample\triage.mem --profile=Win7SP1x64 pstree