Skip to main content

Command Palette

Search for a command to run...

Volatility 101: Building a customize portable version

Build một bản Volatility portable tùy chỉnh.

Updated
5 min read

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

Đó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