31 KiB
Raw Blame History

Volatility - CheatSheet

{{#include ../../../banners/hacktricks-training.md}}

メモリ分析を自動化し、異なるスキャンレベルで複数のVolatility3プラグインを並行して実行するツールが必要な場合は、autoVolatility3を使用できます:: https://github.com/H3xKatana/autoVolatility3/

# Full scan (runs all plugins)
python3 autovol3.py -f MEMFILE -o OUT_DIR -s full

# Minimal scan (runs a limited set of plugins)
python3 autovol3.py -f MEMFILE -o OUT_DIR -s minimal

# Normal scan (runs a balanced set of plugins)
python3 autovol3.py -f MEMFILE -o OUT_DIR -s normal

もし速くてクレイジーなものが欲しいなら、いくつかのVolatilityプラグインを並行して起動するために次を使用できます: https://github.com/carlospolop/autoVolatility

python autoVolatility.py -f MEMFILE -d OUT_DIRECTORY -e /home/user/tools/volatility/vol.py # It will use the most important plugins (could use a lot of space depending on the size of the memory)

インストール

volatility3

git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
python3 setup.py install
python3 vol.py —h

volatility2

{{#tabs}} {{#tab name="Method1"}}

Download the executable from https://www.volatilityfoundation.org/26

{{#endtab}}

{{#tab name="Method 2"}}

git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
python setup.py install

{{#endtab}} {{#endtabs}}

Volatility コマンド

公式ドキュメントは Volatility command reference でアクセスできます。

“list” プラグインと “scan” プラグインについての注意

Volatility にはプラグインに対する2つの主要なアプローチがあり、これは時々その名前に反映されます。“list” プラグインは、プロセス(メモリ内の _EPROCESS 構造のリンクリストを見つけて歩く)や OS ハンドル(ハンドルテーブルを見つけてリスト化し、見つかったポインタを解参照するなど)の情報を取得するために Windows カーネル構造をナビゲートしようとします。これらは、例えばプロセスをリスト化するように要求された場合、Windows API のように振る舞います。

そのため、“list” プラグインは非常に速いですが、マルウェアによる操作に対して Windows API と同様に脆弱です。例えば、マルウェアが DKOM を使用してプロセスを _EPROCESS リンクリストから切り離すと、タスクマネージャーにも pslist にも表示されません。

一方、“scan” プラグインは、特定の構造として解参照されたときに意味を持つ可能性のあるものをメモリから彫り出すアプローチを取ります。例えば psscan はメモリを読み取り、そこから _EPROCESS オブジェクトを作成しようとしますこれは、関心のある構造の存在を示す4バイトの文字列を検索するプールタグスキャンを使用します。利点は、終了したプロセスを掘り起こすことができ、マルウェアが _EPROCESS リンクリストを改ざんしても、プラグインはメモリ内に残っている構造を見つけることができることですプロセスが実行されるためには、構造がまだ存在する必要があります。欠点は、“scan” プラグインは “list” プラグインよりも少し遅く、時には誤検知を引き起こすことがあることです(終了してから長い時間が経過し、他の操作によってその構造の一部が上書きされたプロセス)。

出典: http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/

OS プロファイル

Volatility3

readme 内で説明されているように、サポートしたい OS の シンボルテーブルvolatility3/volatility/symbols 内に置く必要があります。
さまざまなオペレーティングシステム用のシンボルテーブルパックは ダウンロード 可能です:

Volatility2

外部プロファイル

サポートされているプロファイルのリストを取得するには、次のようにします:

./volatility_2.6_lin64_standalone --info | grep "Profile"

新しくダウンロードしたプロファイル例えば、Linux用のものを使用したい場合は、次のフォルダー構造をどこかに作成する必要があります: plugins/overlays/linux そして、このフォルダーの中にプロファイルを含むzipファイルを置きます。次に、次のコマンドを使用してプロファイルの番号を取得します:

./vol --plugins=/home/kali/Desktop/ctfs/final/plugins --info
Volatility Foundation Volatility Framework 2.6


Profiles
--------
LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 - A Profile for Linux CentOS7_3.10.0-123.el7.x86_64_profile x64
VistaSP0x64                                   - A Profile for Windows Vista SP0 x64
VistaSP0x86                                   - A Profile for Windows Vista SP0 x86

LinuxおよびMacのプロファイルはhttps://github.com/volatilityfoundation/profilesからダウンロードできます。

前の部分では、プロファイルがLinuxCentOS7_3_10_0-123_el7_x86_64_profilex64と呼ばれているのが見え、これを使用して次のようなコマンドを実行できます:

./vol -f file.dmp --plugins=. --profile=LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 linux_netscan

プロファイルの発見

volatility imageinfo -f file.dmp
volatility kdbgscan -f file.dmp

imageinfoとkdbgscanの違い

こちらから: imageinfoが単にプロファイルの提案を提供するのに対し、kdbgscanは正しいプロファイルと正しいKDBGアドレス複数ある場合を正確に特定するように設計されています。このプラグインは、Volatilityプロファイルに関連するKDBGHeaderシグネチャをスキャンし、偽陽性を減らすためのサニティチェックを適用します。出力の詳細度と実行できるサニティチェックの数は、VolatilityがDTBを見つけられるかどうかに依存するため、正しいプロファイルをすでに知っている場合またはimageinfoからプロファイルの提案を受けている場合は、それを使用することを確認してください。

常にkdbgscanが見つけたプロセスの数を確認してください。時々、imageinfoとkdbgscanは複数の適切なプロファイルを見つけることがありますが、有効なものだけがいくつかのプロセスに関連していることになりますこれは、プロセスを抽出するためには正しいKDBGアドレスが必要だからです

# GOOD
PsActiveProcessHead           : 0xfffff800011977f0 (37 processes)
PsLoadedModuleList            : 0xfffff8000119aae0 (116 modules)
# BAD
PsActiveProcessHead           : 0xfffff800011947f0 (0 processes)
PsLoadedModuleList            : 0xfffff80001197ac0 (0 modules)

KDBG

カーネルデバッガーブロックKDBGは、VolatilityによってKDBGと呼ばれ、Volatilityやさまざまなデバッガーによって実行されるフォレンジックタスクにとって重要です。KdDebuggerDataBlockとして特定され、タイプは_KDDEBUGGER_DATA64であり、PsActiveProcessHeadのような重要な参照を含んでいます。この特定の参照はプロセスリストの先頭を指し、すべてのプロセスのリストを可能にし、徹底的なメモリ分析にとって基本的です。

OS情報

#vol3 has a plugin to give OS information (note that imageinfo from vol2 will give you OS info)
./vol.py -f file.dmp windows.info.Info

プラグイン banners.Banners は、vol3 でダンプ内の Linux バナーを探すために使用できます

ハッシュ/パスワード

SAM ハッシュ、ドメインキャッシュ資格情報 および lsa シークレット を抽出します。

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.hashdump.Hashdump #Grab common windows hashes (SAM+SYSTEM)
./vol.py -f file.dmp windows.cachedump.Cachedump #Grab domain cache hashes inside the registry
./vol.py -f file.dmp windows.lsadump.Lsadump #Grab lsa secrets

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 hashdump -f file.dmp #Grab common windows hashes (SAM+SYSTEM)
volatility --profile=Win7SP1x86_23418 cachedump -f file.dmp #Grab domain cache hashes inside the registry
volatility --profile=Win7SP1x86_23418 lsadump -f file.dmp #Grab lsa secrets

{{#endtab}} {{#endtabs}}

メモリダンプ

プロセスのメモリダンプは、プロセスの現在の状態のすべて抽出します。procdumpモジュールはコードのみを抽出します。

volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/

プロセス

プロセスのリスト

疑わしいプロセス(名前で)や予期しないプロセス例えば、iexplorer.exeの子としてのcmd.exeを見つけるようにしてください。
隠れたプロセスを特定するために、pslistの結果をpsscanの結果と比較することが興味深いかもしれません。

{{#tabs}} {{#tab name="vol3"}}

python3 vol.py -f file.dmp windows.pstree.PsTree # Get processes tree (not hidden)
python3 vol.py -f file.dmp windows.pslist.PsList # Get process list (EPROCESS)
python3 vol.py -f file.dmp windows.psscan.PsScan # Get hidden process list(malware)

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=PROFILE pstree -f file.dmp # Get process tree (not hidden)
volatility --profile=PROFILE pslist -f file.dmp # Get process list (EPROCESS)
volatility --profile=PROFILE psscan -f file.dmp # Get hidden process list(malware)
volatility --profile=PROFILE psxview -f file.dmp # Get hidden process list

{{#endtab}} {{#endtabs}}

プロセスダンプ

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid <pid> #Dump the .exe and dlls of the process in the current directory

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 procdump --pid=3152 -n --dump-dir=. -f file.dmp

{{#endtab}} {{#endtabs}}

コマンドライン

疑わしいものは実行されましたか?

{{#tabs}} {{#tab name="vol3"}}

python3 vol.py -f file.dmp windows.cmdline.CmdLine #Display process command-line arguments

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=PROFILE cmdline -f file.dmp #Display process command-line arguments
volatility --profile=PROFILE consoles -f file.dmp #command history by scanning for _CONSOLE_INFORMATION

{{#endtab}} {{#endtabs}}

cmd.exeで実行されたコマンドは、conhost.exeまたはWindows 7以前のシステムではcsrss.exe)によって管理されます。これは、攻撃者によって**cmd.exeが終了された場合でも、メモリダンプが取得される前に、conhost.exeのメモリからセッションのコマンド履歴を回復することが可能であることを意味します。これを行うには、コンソールのモジュール内で異常な活動が検出された場合、関連するconhost.exeプロセスのメモリをダンプする必要があります。その後、このダンプ内でstrings**を検索することにより、セッションで使用されたコマンドラインを抽出できる可能性があります。

環境

各実行中プロセスの環境変数を取得します。興味深い値があるかもしれません。

{{#tabs}} {{#tab name="vol3"}}

python3 vol.py -f file.dmp windows.envars.Envars [--pid <pid>] #Display process environment variables

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=PROFILE envars -f file.dmp [--pid <pid>] #Display process environment variables

volatility --profile=PROFILE -f file.dmp linux_psenv [-p <pid>] #Get env of process. runlevel var means the runlevel where the proc is initated

{{#endtab}} {{#endtabs}}

トークンの特権

予期しないサービスで特権トークンを確認します。
特権トークンを使用しているプロセスをリストアップすることは興味深いかもしれません。

{{#tabs}} {{#tab name="vol3"}}

#Get enabled privileges of some processes
python3 vol.py -f file.dmp windows.privileges.Privs [--pid <pid>]
#Get all processes with interesting privileges
python3 vol.py -f file.dmp windows.privileges.Privs | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"

{{#endtab}}

{{#tab name="vol2"}}

#Get enabled privileges of some processes
volatility --profile=Win7SP1x86_23418 privs --pid=3152 -f file.dmp | grep Enabled
#Get all processes with interesting privileges
volatility --profile=Win7SP1x86_23418 privs -f file.dmp | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"

{{#endtab}} {{#endtabs}}

SIDs

プロセスが所有する各SSIDを確認します。
特権SIDを使用しているプロセスおよびいくつかのサービスSIDを使用しているプロセスをリストアップすることは興味深いかもしれません。

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.getsids.GetSIDs [--pid <pid>] #Get SIDs of processes
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 getsids -f file.dmp #Get the SID owned by each process
volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp #Get the SID of each service

{{#endtab}} {{#endtabs}}

ハンドル

プロセスがハンドルを持っている(オープンしている)他のファイル、キー、スレッド、プロセスなどを知るのに役立ちます。

{{#tabs}} {{#tab name="vol3"}}

vol.py -f file.dmp windows.handles.Handles [--pid <pid>]

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=<pid>]

{{#endtab}} {{#endtabs}}

DLLs

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.dlllist.DllList [--pid <pid>] #List dlls used by each
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid <pid> #Dump the .exe and dlls of the process in the current directory process

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 dlllist --pid=3152 -f file.dmp #Get dlls of a proc
volatility --profile=Win7SP1x86_23418 dlldump --pid=3152 --dump-dir=. -f file.dmp #Dump dlls of a proc

{{#endtab}} {{#endtabs}}

プロセスごとの文字列

Volatilityを使用すると、文字列がどのプロセスに属しているかを確認できます。

{{#tabs}} {{#tab name="vol3"}}

strings file.dmp > /tmp/strings.txt
./vol.py -f /tmp/file.dmp windows.strings.Strings --strings-file /tmp/strings.txt

{{#endtab}}

{{#tab name="vol2"}}

strings file.dmp > /tmp/strings.txt
volatility -f /tmp/file.dmp windows.strings.Strings --string-file /tmp/strings.txt

volatility -f /tmp/file.dmp --profile=Win81U1x64 memdump -p 3532 --dump-dir .
strings 3532.dmp > strings_file

{{#endtab}} {{#endtabs}}

プロセス内の文字列を検索するために、yarascanモジュールを使用することもできます

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.vadyarascan.VadYaraScan --yara-rules "https://" --pid 3692 3840 3976 3312 3084 2784
./vol.py -f file.dmp yarascan.YaraScan --yara-rules "https://"

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 yarascan -Y "https://" -p 3692,3840,3976,3312,3084,2784

{{#endtab}} {{#endtabs}}

UserAssist

Windowsは、UserAssist keysと呼ばれるレジストリの機能を使用して、実行したプログラムを追跡します。これらのキーは、各プログラムが実行された回数と最後に実行された時刻を記録します。

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.registry.userassist.UserAssist

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 -f file.dmp userassist

{{#endtab}} {{#endtabs}}

サービス

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.svcscan.SvcScan #List services
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services

{{#endtab}}

{{#tab name="vol2"}}

#Get services and binary path
volatility --profile=Win7SP1x86_23418 svcscan -f file.dmp
#Get name of the services and SID (slow)
volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp

{{#endtab}} {{#endtabs}}

ネットワーク

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.netscan.NetScan
#For network info of linux use volatility2

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 netscan -f file.dmp
volatility --profile=Win7SP1x86_23418 connections -f file.dmp#XP and 2003 only
volatility --profile=Win7SP1x86_23418 connscan -f file.dmp#TCP connections
volatility --profile=Win7SP1x86_23418 sockscan -f file.dmp#Open sockets
volatility --profile=Win7SP1x86_23418 sockets -f file.dmp#Scanner for tcp socket objects

volatility --profile=SomeLinux -f file.dmp linux_ifconfig
volatility --profile=SomeLinux -f file.dmp linux_netstat
volatility --profile=SomeLinux -f file.dmp linux_netfilter
volatility --profile=SomeLinux -f file.dmp linux_arp #ARP table
volatility --profile=SomeLinux -f file.dmp linux_list_raw #Processes using promiscuous raw sockets (comm between processes)
volatility --profile=SomeLinux -f file.dmp linux_route_cache

{{#endtab}} {{#endtabs}}

レジストリハイブ

利用可能なハイブを表示

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.registry.hivelist.HiveList #List roots
./vol.py -f file.dmp windows.registry.printkey.PrintKey #List roots and get initial subkeys

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 -f file.dmp hivelist #List roots
volatility --profile=Win7SP1x86_23418 -f file.dmp printkey #List roots and get initial subkeys

{{#endtab}} {{#endtabs}}

値を取得する

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.registry.printkey.PrintKey --key "Software\Microsoft\Windows NT\CurrentVersion"

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 printkey -K "Software\Microsoft\Windows NT\CurrentVersion" -f file.dmp
# Get Run binaries registry value
volatility -f file.dmp --profile=Win7SP1x86 printkey -o 0x9670e9d0 -K 'Software\Microsoft\Windows\CurrentVersion\Run'

{{#endtab}} {{#endtabs}}

ダンプ

#Dump a hive
volatility --profile=Win7SP1x86_23418 hivedump -o 0x9aad6148 -f file.dmp #Offset extracted by hivelist
#Dump all hives
volatility --profile=Win7SP1x86_23418 hivedump -f file.dmp

ファイルシステム

マウント

{{#tabs}} {{#tab name="vol3"}}

#See vol2

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=SomeLinux -f file.dmp linux_mount
volatility --profile=SomeLinux -f file.dmp linux_recover_filesystem #Dump the entire filesystem (if possible)

{{#endtab}} {{#endtabs}}

スキャン/ダンプ

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.filescan.FileScan #Scan for files inside the dump
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --physaddr <0xAAAAA> #Offset from previous command

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 filescan -f file.dmp #Scan for files inside the dump
volatility --profile=Win7SP1x86_23418 dumpfiles -n --dump-dir=/tmp -f file.dmp #Dump all files
volatility --profile=Win7SP1x86_23418 dumpfiles -n --dump-dir=/tmp -Q 0x000000007dcaa620 -f file.dmp

volatility --profile=SomeLinux -f file.dmp linux_enumerate_files
volatility --profile=SomeLinux -f file.dmp linux_find_file -F /path/to/file
volatility --profile=SomeLinux -f file.dmp linux_find_file -i 0xINODENUMBER -O /path/to/dump/file

{{#endtab}} {{#endtabs}}

マスターファイルテーブル

{{#tabs}} {{#tab name="vol3"}}

# I couldn't find any plugin to extract this information in volatility3

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 mftparser -f file.dmp

{{#endtab}} {{#endtabs}}

NTFSファイルシステムは、マスターファイルテーブルMFTとして知られる重要なコンポーネントを使用します。このテーブルには、ボリューム上のすべてのファイルに対して少なくとも1つのエントリが含まれており、MFT自体もカバーしています。サイズ、タイムスタンプ、権限、実際のデータなど、各ファイルに関する重要な詳細は、MFTエントリ内またはMFTの外部にあるがこれらのエントリによって参照される領域にカプセル化されています。詳細については、公式ドキュメントを参照してください。

SSLキー/証明書

{{#tabs}} {{#tab name="vol3"}}

#vol3 allows to search for certificates inside the registry
./vol.py -f file.dmp windows.registry.certificates.Certificates

{{#endtab}}

{{#tab name="vol2"}}

#vol2 allos you to search and dump certificates from memory
#Interesting options for this modules are: --pid, --name, --ssl
volatility --profile=Win7SP1x86_23418 dumpcerts --dump-dir=. -f file.dmp

{{#endtab}} {{#endtabs}}

マルウェア

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.malfind.Malfind [--dump] #Find hidden and injected code, [dump each suspicious section]
#Malfind will search for suspicious structures related to malware
./vol.py -f file.dmp windows.driverirp.DriverIrp #Driver IRP hook detection
./vol.py -f file.dmp windows.ssdt.SSDT #Check system call address from unexpected addresses

./vol.py -f file.dmp linux.check_afinfo.Check_afinfo #Verifies the operation function pointers of network protocols
./vol.py -f file.dmp linux.check_creds.Check_creds #Checks if any processes are sharing credential structures
./vol.py -f file.dmp linux.check_idt.Check_idt #Checks if the IDT has been altered
./vol.py -f file.dmp linux.check_syscall.Check_syscall #Check system call table for hooks
./vol.py -f file.dmp linux.check_modules.Check_modules #Compares module list to sysfs info, if available
./vol.py -f file.dmp linux.tty_check.tty_check #Checks tty devices for hooks

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 -f file.dmp malfind [-D /tmp] #Find hidden and injected code [dump each suspicious section]
volatility --profile=Win7SP1x86_23418 -f file.dmp apihooks #Detect API hooks in process and kernel memory
volatility --profile=Win7SP1x86_23418 -f file.dmp driverirp #Driver IRP hook detection
volatility --profile=Win7SP1x86_23418 -f file.dmp ssdt #Check system call address from unexpected addresses

volatility --profile=SomeLinux -f file.dmp linux_check_afinfo
volatility --profile=SomeLinux -f file.dmp linux_check_creds
volatility --profile=SomeLinux -f file.dmp linux_check_fop
volatility --profile=SomeLinux -f file.dmp linux_check_idt
volatility --profile=SomeLinux -f file.dmp linux_check_syscall
volatility --profile=SomeLinux -f file.dmp linux_check_modules
volatility --profile=SomeLinux -f file.dmp linux_check_tty
volatility --profile=SomeLinux -f file.dmp linux_keyboard_notifiers #Keyloggers

{{#endtab}} {{#endtabs}}

Yaraを使ったスキャン

このスクリプトを使用して、githubからすべてのyaraマルウェアルールをダウンロードしてマージします: https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9
_rulesディレクトリを作成し、実行します。これにより、すべてのマルウェア用のyaraルールを含むmalware_rules.yar_というファイルが作成されます。

{{#tabs}} {{#tab name="vol3"}}

wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
mkdir rules
python malware_yara_rules.py
#Only Windows
./vol.py -f file.dmp windows.vadyarascan.VadYaraScan --yara-file /tmp/malware_rules.yar
#All
./vol.py -f file.dmp yarascan.YaraScan --yara-file /tmp/malware_rules.yar

{{#endtab}}

{{#tab name="vol2"}}

wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
mkdir rules
python malware_yara_rules.py
volatility --profile=Win7SP1x86_23418 yarascan -y malware_rules.yar -f ch2.dmp | grep "Rule:" | grep -v "Str_Win32" | sort | uniq

{{#endtab}} {{#endtabs}}

MISC

外部プラグイン

外部プラグインを使用したい場合は、プラグインに関連するフォルダが最初のパラメータとして使用されることを確認してください。

{{#tabs}} {{#tab name="vol3"}}

./vol.py --plugin-dirs "/tmp/plugins/" [...]

{{#endtab}}

{{#tab name="vol2"}}

volatilitye --plugins="/tmp/plugins/" [...]

{{#endtab}} {{#endtabs}}

Autoruns

https://github.com/tomchop/volatility-autoruns からダウンロードしてください。

volatility --plugins=volatility-autoruns/ --profile=WinXPSP2x86 -f file.dmp autoruns

Mutexes

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.mutantscan.MutantScan

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 mutantscan -f file.dmp
volatility --profile=Win7SP1x86_23418 -f file.dmp handles -p <PID> -t mutant

{{#endtab}} {{#endtabs}}

シンボリックリンク

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.symlinkscan.SymlinkScan

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 -f file.dmp symlinkscan

{{#endtab}} {{#endtabs}}

Bash

メモリからbashの履歴を読み取ることが可能です。 _.bash_history_ファイルをダンプすることもできますが、無効になっているため、このvolatilityモジュールを使用できることを嬉しく思うでしょう。

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp linux.bash.Bash

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 -f file.dmp linux_bash

{{#endtab}} {{#endtabs}}

タイムライン

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp timeLiner.TimeLiner

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 -f timeliner

{{#endtab}} {{#endtabs}}

ドライバー

{{#tabs}} {{#tab name="vol3"}}

./vol.py -f file.dmp windows.driverscan.DriverScan

{{#endtab}}

{{#tab name="vol2"}}

volatility --profile=Win7SP1x86_23418 -f file.dmp driverscan

{{#endtab}} {{#endtabs}}

クリップボードを取得する

#Just vol2
volatility --profile=Win7SP1x86_23418 clipboard -f file.dmp

IEの履歴を取得する

#Just vol2
volatility --profile=Win7SP1x86_23418 iehistory -f file.dmp

Notepadのテキストを取得する

#Just vol2
volatility --profile=Win7SP1x86_23418 notepad -f file.dmp

スクリーンショット

#Just vol2
volatility --profile=Win7SP1x86_23418 screenshot -f file.dmp

マスターブートレコード (MBR)

volatility --profile=Win7SP1x86_23418 mbrparser -f file.dmp

マスターブートレコード (MBR) は、ストレージメディアの論理パーティションを管理する上で重要な役割を果たします。これらのパーティションは異なる ファイルシステム で構成されています。MBRはパーティションのレイアウト情報を保持するだけでなく、ブートローダーとして機能する実行可能コードも含まれています。このブートローダーは、OSのセカンドステージのロードプロセスを直接開始するかセカンドステージブートローダー を参照)、各パーティションの ボリュームブートレコード (VBR) と連携して動作します。詳細については、MBRのWikipediaページ を参照してください。

参考文献

{{#include ../../../banners/hacktricks-training.md}}