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 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
notion image
Download mã nguồn của Volatility Framework
$ git clone --recursive https://github.com/volatilityfoundation/volatility.git
notion image
Cài đặt gói virtualenv cho Python 2:
$ pip install virtualenv
notion image
Tạo Python Virtual Environments
$ virtualenv.exe -p path\to\your\python.exe vol2 $ .\vol2\Scripts\activate
notion image
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
notion image
Cài đặt Volatility
$ python .\setup.py build $ python .\setup.py install
notion image
Kiểm tra hoạt động
$ vol.py --info | findstr -i "win10x64"
notion image
$ vol.py -f .\sample\triage.mem imageinfo
notion image
$ vol.py -f .\sample\triage.mem --profile=Win7SP1x64 pslist
notion image

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
notion image
$ python get-pip.py
notion image
Download mã nguồn:
$ git clone --recursive https://github.com/volatilityfoundation/volatility.git
notion image
Cài đặt gói virtualenv
$ pip install virtualenv
notion image
Tạo Python Virtual Environments
$ virtualenv -p $(which python) vol2 $ source vol2/bin/activate
notion image
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
notion image
Cài đặt Volatility
$ python setup.py build $ python setup.py install
notion image
Kiểm tra hoạt động
$ vol.py --info | grep -i "win10x64"
notion image
$ vol.py --conf-file=sample/volatilityrc linux_banner $ vol.py --conf-file=sample/volatilityrc linux_pslist
notion image

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
notion image
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/
notion image
Kiểm tra kết quả
$ vol.py --info | grep -i "malconf"
notion image
Chạy thử plugin mới cài
$ vol.py --conf-file=sample/volatilityrc linux_malconfscan
notion image

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.
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
notion image
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
  • Giải nén và chép tệp upx.exe vào: volatility\vol2\Scripts\
notion image
Đóng gói với PyInstaller
$ pyinstaller --onefile pyinstaller.spec
notion image
Kiểm tra hoạt động:
$ .\dist\volatility.exe -f .\sample\triage.mem --profile=Win7SP1x64 pstree
notion image