vol.py を使いたい (python2 volatility) on macOS Catalina
Python2 の Volatility (無印) 2.6.1
- https://github.com/volatilityfoundation/volatility
- --profile を指定するタイプはこちら(ネットによく情報があがってる)
Python3 で新装された Volatility3 2.x 系 ※メンテナンス中※
- https://github.com/volatilityfoundation/volatility3
- --profile オプションがなくなってて、どのように使うかわからない。。。(経験値ゼロ)
Mac (Catalina v10.15.7) で使うには・・・
brew に Volatility3 はある
% brew info volatility
==> volatility: stable 2.0.1 (bottled), HEAD
Advanced memory forensics framework
https://github.com/volatilityfoundation/volatility3
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/volatility.rb
License: Cannot Represent
==> Dependencies
Required: jsonschema ✘, python@3.10 ✔, yara ✘
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 246 (30 days), 771 (90 days), 3,839 (365 days)
install-on-request: 247 (30 days), 771 (90 days), 3,841 (365 days)
build-error: 0 (30 days)
公式に Volatility 2.6 MacOSX build がある
実装古いからか、次のメッセージ
セキュリティとプライバシー > ダウンロードしたアプリケーションの実行許可で、動作はした。
しかし使いたい Standalone版のため profile (Ubuntu1804.zip) を、どこにおけばいいのかがわからない。。。(指定できず挫折)
公式 Volatility 2.6 を make すれば?
git clone して make をたたく
あっさり手元環境では通った
volatility-2.6.1 % make
python setup.py build
running build
running build_py
creating build
creating build/lib
creating build/lib/volatility
copying volatility/validity.py -> build/lib/volatility
copying volatility/timefmt.py -> build/lib/volatility
...
running build_scripts
creating build/scripts-2.7
copying and adjusting vol.py -> build/scripts-2.7
changing mode of build/scripts-2.7/vol.py from 644 to 755
勇気をもって make install 。とおったように見えたのだけども
volatility-2.6.1 % sudo make install
Password:
python setup.py install
running install
running bdist_egg
running egg_info
creating volatility.egg-info
writing volatility.egg-info/PKG-INFO
writing top-level names to volatility.egg-info/top_level.txt
writing dependency_links to volatility.egg-info/dependency_links.txt
writing manifest file 'volatility.egg-info/SOURCES.txt'
reading manifest file 'volatility.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.win'
warning: no files found matching 'contrib/plugins/aspaces/*.py'
warning: no files found matching 'tools/linux/pmem/*'
writing manifest file 'volatility.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.15-x86_64/egg
running install_lib
running build_py
creating build/bdist.macosx-10.15-x86_64
creating build/bdist.macosx-10.15-x86_64/egg
creating build/bdist.macosx-10.15-x86_64/egg/volatility
creating build/bdist.macosx-10.15-x86_64/egg/volatility/renderers
...
volatility.constants: module references __file__
volatility.debug: module MAY be using inspect.trace
volatility.registry: module references __path__
volatility.plugins.__init__: module references __path__
volatility.plugins.overlays.linux.linux: module references __path__
volatility.plugins.overlays.mac.mac: module references __path__
creating dist
creating 'dist/volatility-2.6.1-py2.7.egg' and adding 'build/bdist.macosx-10.15-x86_64/egg' to it
removing 'build/bdist.macosx-10.15-x86_64/egg' (and everything under it)
Processing volatility-2.6.1-py2.7.egg
creating /Library/Python/2.7/site-packages/volatility-2.6.1-py2.7.egg
Extracting volatility-2.6.1-py2.7.egg to /Library/Python/2.7/site-packages
Adding volatility 2.6.1 to easy-install.pth file
Installing vol.py script to /usr/local/bin
Installed /Library/Python/2.7/site-packages/volatility-2.6.1-py2.7.egg
Processing dependencies for volatility==2.6.1
Finished processing dependencies for volatility==2.6.1
なんか足りない
volatility-2.6.1 % which vol.py
/usr/local/bin/vol.py
volatility-2.6.1 % vol.py
Volatility Foundation Volatility Framework 2.6.1
*** Failed to import volatility.plugins.registry.shutdown (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.getservicesids (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.timeliner (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.malware.apihooks (NameError: name 'distorm3' is not defined)
*** Failed to import volatility.plugins.malware.servicediff (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.userassist (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.getsids (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.shellbags (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.evtlogs (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.tcaudit (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.dumpregistry (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.lsadump (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.malware.threads (NameError: name 'distorm3' is not defined)
*** Failed to import volatility.plugins.mac.apihooks_kernel (ImportError: No module named distorm3)
*** Failed to import volatility.plugins.registry.amcache (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.mac.check_syscall_shadow (ImportError: No module named distorm3)
*** Failed to import volatility.plugins.malware.svcscan (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.auditpol (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.ssdt (NameError: name 'distorm3' is not defined)
*** Failed to import volatility.plugins.registry.registryapi (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.mac.apihooks (ImportError: No module named distorm3)
*** Failed to import volatility.plugins.envars (ImportError: No module named Crypto.Hash)
*** Failed to import volatility.plugins.registry.shimcache (ImportError: No module named Crypto.Hash)
ERROR : volatility.debug : You must specify something to do (try -h)
distorm3 , Crypto などの対応が必要なのかな
Mac上で動かすっていう発想がダメな気がしてきた(OS付属の Python2.7 を汚しすぎっていうのもある)
Kali Linux (Ubuntu20.04ベース)に導入
Ubuntu / Kali への導入手順があった
それならばと、VirtualBoxのVMがあったのでやってみる。
うまくインストールできた。。。かのように見えた。
なぜか使いたい Profile (Ubuntu1804.zip) を使っても、メモリダンプの解析ができん!
VMがあるじゃないか!
vol.py を導入済みのVMがあるとの情報を得た
SANS すげー (オフィシャルで学習してる人には当たり前なんだろうな。。。)
Ubuntu20.04 ベースに volality 無印 (Python2ベース) が導入済みとのこと。
無料アカウント登録して ova をダウンロード
VirtualBoxにインポート
NG。。。起動しない
次の2点を対応したら、無事に起動!
- OSタイプを指定 : Unknown から Linux / Ubuntu x64へ
- グラフィックコントローラー : VMSVGA に変更 (設定みるとエラーが表示されてるのでわかる)
なんて簡単に動作するんだ。。。。
無事に使いたいProfileも使って動作させることができました。
SIFT作った方、SANSさん、ありがとう!
実は。。。
SIFT Easy Installation on Native Ubuntu ということで SIFT-CLI を使っての構築も試みたのですが、失敗。
- Kali上でやると、OS判断でUbuntu20じゃないよ!って怒られた
- Multipassで作ったUbunu20は、ディスク容量不足に陥った (Default 5GBか!)
冷静になってみると、Multipass はVM作成後にディスク容量かえれる?
と思ったら hyperkit がバックエンドで動作してるのではダメとでた。
qemu に変更はできたのだけども、hyperkit時代に作ったVMは表示されんー
volatility-2.6.1 % multipass set local.driver=qemu
volatility-2.6.1 % multipass get local.driver
qemu
volatility-2.6.1 % multipass list
No instances found.
変換までの元気なく、先程のVM路線に切り替えました。
Volatility 2.6 で、任意のディレクトリ指定
--plugins オプションに任意のディレクトリを指定したら、プロファイル読めるようになった
% ./vol_stdalone --plugins=./ --info
参考
でも・・・実際に指定すると、次のエラーになる (infoで表示されないプロファイル名を指定したときと同じエラー)
ERROR : volatility.debug : Invalid profile LinuxUbuntu1804 selected
参考
SANS SIFT を VM で動かせることをしった
VirtualBoxにインポートしたのに動かないときの対応
VirtualBox 一時共有フォルダ関連
前提として guest additions を apt で導入
まずこの概要は抑えたいかも
これ、ユーザーが迷うポイント抑えてるような。
HackTricks 見出しの範囲が半端ない