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 ๋ช…๋ น์–ด ์ฐธ์กฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€œlistโ€์™€ โ€œscanโ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์ฃผ์˜์‚ฌํ•ญ

Volatility๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•ด ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋•Œ๋•Œ๋กœ ์ด๋ฆ„์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. โ€œlistโ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Windows ์ปค๋„ ๊ตฌ์กฐ๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค(๋ฉ”๋ชจ๋ฆฌ์—์„œ _EPROCESS ๊ตฌ์กฐ์˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฐพ๊ณ  ํƒ์ƒ‰)์™€ OS ํ•ธ๋“ค(ํ•ธ๋“ค ํ…Œ์ด๋ธ”์„ ์ฐพ๊ณ  ๋‚˜์—ดํ•˜๋ฉฐ, ๋ฐœ๊ฒฌ๋œ ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐ ๋“ฑ)๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์€ ์š”์ฒญ ์‹œ 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"

์ƒˆ๋กœ ๋‹ค์šด๋กœ๋“œํ•œ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด (์˜ˆ: ๋ฆฌ๋ˆ…์Šค ํ”„๋กœํ•„) ๋‹ค์Œ ํด๋” ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: 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์˜ ์ฐจ์ด์ 

์—ฌ๊ธฐ์—์„œ: profile ์ œ์•ˆ์„ ๋‹จ์ˆœํžˆ ์ œ๊ณตํ•˜๋Š” 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

์ปค๋„ ๋””๋ฒ„๊ฑฐ ๋ธ”๋ก์€ 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์—์„œ ๋คํ”„์—์„œ ๋ฆฌ๋ˆ…์Šค ๋ฐฐ๋„ˆ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด์‹œ/๋น„๋ฐ€๋ฒˆํ˜ธ

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)๋กœ ์•Œ๋ ค์ง„ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”์€ ๋ณผ๋ฅจ์˜ ๋ชจ๋“  ํŒŒ์ผ์— ๋Œ€ํ•ด ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜๋ฉฐ, 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

๋ฎคํ…์Šค

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

๋ฉ”๋ชจ์žฅ ํ…์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ

#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์˜ 2๋‹จ๊ณ„ ๋กœ๋”ฉ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง์ ‘ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ (์ž์„ธํ•œ ๋‚ด์šฉ์€ 2๋‹จ๊ณ„ ๋ถ€ํŠธ ๋กœ๋” ์ฐธ์กฐ) ๊ฐ ํŒŒํ‹ฐ์…˜์˜ ๋ณผ๋ฅจ ๋ถ€ํŠธ ๋ ˆ์ฝ”๋“œ (VBR)์™€ ์กฐํ™”๋ฅผ ์ด๋ฃจ์–ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‹ฌ์ธต์ ์ธ ์ง€์‹์€ MBR ์œ„ํ‚ค ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

References

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 ์ง€์›ํ•˜๊ธฐ