Volatility - CheatSheet

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする

​

メモリ分析を自動化し、異なるスキャンレベルで耇数の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

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

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 シヌクレット を抜出したす。

./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

メモリダンプ

プロセスのメモリダンプは、プロセスの珟圚の状態のすべおを抜出したす。procdumpモゞュヌルはコヌドのみを抜出したす。

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

プロセス

プロセスのリスト

疑わしいプロセス名前でや予期しない子プロセス䟋えば、iexplorer.exeの子ずしおのcmd.exeを芋぀けるようにしおください。
隠れたプロセスを特定するために、pslistの結果をpsscanの結果ず比范するこずが興味深いかもしれたせん。

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)

プロセスダンプ

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

コマンドラむン

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

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

cmd.exeで実行されたコマンドは、conhost.exeたたはWindows 7以前のシステムではcsrss.exeによっお管理されたす。これは、攻撃者によっお**cmd.exeが終了された堎合でも、メモリダンプが取埗される前に、conhost.exeのメモリからセッションのコマンド履歎を回埩するこずが可胜であるこずを意味したす。これを行うには、コン゜ヌルのモゞュヌル内で異垞な掻動が怜出された堎合、関連するconhost.exeプロセスのメモリをダンプする必芁がありたす。その埌、このダンプ内でstrings**を怜玢するこずにより、セッションで䜿甚されたコマンドラむンを抜出できる可胜性がありたす。

環境

各実行䞭プロセスの環境倉数を取埗したす。興味深い倀があるかもしれたせん。

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

トヌクンの特暩

予期しないサヌビスで特暩トヌクンを確認したす。
特暩トヌクンを䜿甚しおいるプロセスをリストアップするこずは興味深いかもしれたせん。

#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"

SIDs

プロセスが所有する各SSIDを確認したす。
特暩SIDを䜿甚しおいるプロセスおよびいく぀かのサヌビスSIDを䜿甚しおいるプロセスをリストアップするこずは興味深いかもしれたせん。

./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

ハンドル

プロセスがハンドルを持っおいるオヌプンしおいる他のファむル、キヌ、スレッド、プロセスなどを知るのに圹立ちたす。

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

DLLs

./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

プロセスごずの文字列

Volatilityを䜿甚するず、文字列がどのプロセスに属しおいるかを確認できたす。

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

プロセス内の文字列を怜玢するために、yarascanモゞュヌルを䜿甚するこずもできたす

./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://"

UserAssist

Windowsは、UserAssist keysず呌ばれるレゞストリの機胜を䜿甚しお、実行したプログラムを远跡したす。これらのキヌは、各プログラムが実行された回数ず最埌に実行された時刻を蚘録したす。

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

​

サヌビス

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

ネットワヌク

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

レゞストリハむブ

利甚可胜なハむブを衚瀺

./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

倀を取埗する

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

ダンプ

#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

ファむルシステム

マりント

#See vol2

スキャン/ダンプ

./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

マスタヌファむルテヌブル

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

NTFSファむルシステムは、マスタヌファむルテヌブルMFTずしお知られる重芁なコンポヌネントを䜿甚したす。このテヌブルには、ボリュヌム䞊のすべおのファむルに察しお少なくずも1぀の゚ントリが含たれおおり、MFT自䜓もカバヌしおいたす。サむズ、タむムスタンプ、暩限、実際のデヌタなど、各ファむルに関する重芁な詳现は、MFT゚ントリ内たたはMFTの倖郚にあるがこれらの゚ントリによっお参照される領域にカプセル化されおいたす。詳现に぀いおは、公匏ドキュメントを参照しおください。

SSLキヌ/蚌明曞

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

マルりェア

./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

Yaraを䜿ったスキャン

このスクリプトを䜿甚しお、githubからすべおのyaraマルりェアルヌルをダりンロヌドしおマヌゞしたす: https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9
_rulesディレクトリを䜜成し、実行したす。これにより、すべおのマルりェア甚のyaraルヌルを含むmalware_rules.yar_ずいうファむルが䜜成されたす。

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

MISC

倖郚プラグむン

倖郚プラグむンを䜿甚したい堎合は、プラグむンに関連するフォルダが最初のパラメヌタずしお䜿甚されるこずを確認しおください。

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

Autoruns

https://github.com/tomchop/volatility-autoruns からダりンロヌドしおください。

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

Mutexes

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

シンボリックリンク

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

Bash

メモリからbashの履歎を読み取るこずが可胜です。 _.bash_history_ファむルをダンプするこずもできたすが、無効になっおいるため、このvolatilityモゞュヌルを䜿甚できるこずを嬉しく思うでしょう。

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

タむムラむン

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

ドラむバヌ

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

クリップボヌドを取埗する

#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ペヌゞ を参照しおください。

参考文献

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする