Closed9

vol.py を使いたい (python2 volatility) on macOS Catalina

hideharahidehara

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) を、どこにおけばいいのかがわからない。。。(指定できず挫折)

hideharahidehara

公式 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 を汚しすぎっていうのもある)

hideharahidehara

VMがあるじゃないか!

vol.py を導入済みのVMがあるとの情報を得た

SANS すげー (オフィシャルで学習してる人には当たり前なんだろうな。。。)

Ubuntu20.04 ベースに volality 無印 (Python2ベース) が導入済みとのこと。

無料アカウント登録して ova をダウンロード

VirtualBoxにインポート

NG。。。起動しない

次の2点を対応したら、無事に起動!

  • OSタイプを指定 : Unknown から Linux / Ubuntu x64へ
  • グラフィックコントローラー : VMSVGA に変更 (設定みるとエラーが表示されてるのでわかる)

なんて簡単に動作するんだ。。。。

無事に使いたいProfileも使って動作させることができました。

SIFT作った方、SANSさん、ありがとう!

hideharahidehara

実は。。。

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路線に切り替えました。

hideharahidehara

Volatility 2.6 で、任意のディレクトリ指定

--plugins オプションに任意のディレクトリを指定したら、プロファイル読めるようになった

% ./vol_stdalone --plugins=./ --info

参考

でも・・・実際に指定すると、次のエラーになる (infoで表示されないプロファイル名を指定したときと同じエラー)

ERROR   : volatility.debug    : Invalid profile LinuxUbuntu1804 selected
hideharahidehara

参考

SANS SIFT を VM で動かせることをしった

VirtualBoxにインポートしたのに動かないときの対応

VirtualBox 一時共有フォルダ関連

前提として guest additions を apt で導入

このスクラップは2022/12/04にクローズされました