File/Data Carving & Recovery Tools

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

Carving & Recovery tools

๋” ๋งŽ์€ ๋„๊ตฌ๋Š” https://github.com/Claudio-C/awesome-datarecovery์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Autopsy

ํฌ๋ Œ์‹์—์„œ ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์ถ”์ถœํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋Š” Autopsy์ž…๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•œ ํ›„ ํŒŒ์ผ์„ ๊ฐ€์ ธ์™€ โ€œ์ˆจ๊ฒจ์ง„โ€ ํŒŒ์ผ์„ ์ฐพ์œผ์„ธ์š”. Autopsy๋Š” ๋””์Šคํฌ ์ด๋ฏธ์ง€ ๋ฐ ๊ธฐํƒ€ ์ข…๋ฅ˜์˜ ์ด๋ฏธ์ง€๋ฅผ ์ง€์›ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ ๋‹จ์ˆœ ํŒŒ์ผ์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2024-2025 ์—…๋ฐ์ดํŠธ โ€“ ๋ฒ„์ „ 4.21 (2025๋…„ 2์›” ์ถœ์‹œ)์—์„œ๋Š” ๋‹ค์ค‘ ํ…Œ๋ผ๋ฐ”์ดํŠธ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ˆˆ์— ๋„๊ฒŒ ๋น ๋ฅธ SleuthKit v4.13 ๊ธฐ๋ฐ˜์˜ ์žฌ๊ตฌ์„ฑ๋œ carving ๋ชจ๋“ˆ์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ, ๋‹ค์ค‘ ์ฝ”์–ด ์‹œ์Šคํ…œ์—์„œ ๋ณ‘๋ ฌ ์ถ”์ถœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.ยน ์ž‘์€ CLI ๋ž˜ํผ(autopsycli ingest <case> <image>)๋„ ๋„์ž…๋˜์–ด CI/CD ๋˜๋Š” ๋Œ€๊ทœ๋ชจ ์‹คํ—˜์‹ค ํ™˜๊ฒฝ ๋‚ด์—์„œ carving์„ ์Šคํฌ๋ฆฝํŠธํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

# Create a case and ingest an evidence image from the CLI (Autopsy โ‰ฅ4.21)
autopsycli case --create MyCase --base /cases
# ingest with the default ingest profile (includes data-carve module)
autopsycli ingest MyCase /evidence/disk01.E01 --threads 8

Binwalk

Binwalk๋Š” ์ž„๋ฒ ๋””๋“œ ์ฝ˜ํ…์ธ ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ๋ถ„์„ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. apt๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์†Œ์Šค๋Š” GitHub์— ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ์šฉํ•œ ๋ช…๋ น์–ด:

sudo apt install binwalk         # Installation
binwalk firmware.bin             # Display embedded data
binwalk -e firmware.bin          # Extract recognised objects (safe-default)
binwalk --dd " .* " firmware.bin  # Extract *everything* (use with care)

โš ๏ธ ๋ณด์•ˆ ๋…ธํŠธ โ€“ ๋ฒ„์ „ โ‰ค2.3.3๋Š” ๊ฒฝ๋กœ ํƒ์ƒ‰ ์ทจ์•ฝ์ (CVE-2022-4510)์˜ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ƒ˜ํ”Œ์„ ์กฐ๊ฐ๋‚ด๊ธฐ ์ „์— ์—…๊ทธ๋ ˆ์ด๋“œ(๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ/๋น„ํŠน๊ถŒ UID๋กœ ๊ฒฉ๋ฆฌ)ํ•˜์„ธ์š”.

Foremost

์ˆจ๊ฒจ์ง„ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ์ผ๋ฐ˜์ ์ธ ๋„๊ตฌ๋Š” foremost์ž…๋‹ˆ๋‹ค. foremost์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์€ /etc/foremost.conf์— ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด ์ฃผ์„์„ ์ œ๊ฑฐํ•˜์„ธ์š”. ์•„๋ฌด๊ฒƒ๋„ ์ฃผ์„์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š์œผ๋ฉด foremost๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํŒŒ์ผ ์œ ํ˜•์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get install foremost
foremost -v -i file.img -o output
# Discovered files will appear inside the folder "output"

Scalpel

Scalpel์€ ํŒŒ์ผ์— ํฌํ•จ๋œ ํŒŒ์ผ์„ ์ฐพ๊ณ  ์ถ”์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ์ถ”์ถœํ•˜๋ ค๋Š” ํŒŒ์ผ ์œ ํ˜•์„ ๊ตฌ์„ฑ ํŒŒ์ผ(/etc/scalpel/scalpel.conf)์—์„œ ์ฃผ์„์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get install scalpel
scalpel file.img -o output

Bulk Extractor 2.x

์ด ๋„๊ตฌ๋Š” kali์— ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/simsong/bulk_extractor

Bulk Extractor๋Š” ์ฆ๊ฑฐ ์ด๋ฏธ์ง€๋ฅผ ์Šค์บ”ํ•˜๊ณ  pcap ์กฐ๊ฐ, ๋„คํŠธ์›Œํฌ ์•„ํ‹ฐํŒฉํŠธ (URL, ๋„๋ฉ”์ธ, IP, MAC, ์ด๋ฉ”์ผ) ๋ฐ ๋งŽ์€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ์Šค์บ๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ๋กœ ์กฐ๊ฐ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Build from source โ€“ v2.1.1 (April 2024) requires cmake โ‰ฅ3.16
git clone https://github.com/simsong/bulk_extractor.git && cd bulk_extractor
mkdir build && cd build && cmake .. && make -j$(nproc) && sudo make install

# Run every scanner, carve JPEGs aggressively and generate a bodyfile
bulk_extractor -o out_folder -S jpeg_carve_mode=2 -S write_bodyfile=y /evidence/disk.img

์œ ์šฉํ•œ ํ›„์ฒ˜๋ฆฌ ์Šคํฌ๋ฆฝํŠธ(bulk_diff, bulk_extractor_reader.py)๋Š” ๋‘ ์ด๋ฏธ์ง€ ๊ฐ„์˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ค‘๋ณต ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ๋ฅผ SIEM ์ˆ˜์ง‘์„ ์œ„ํ•ด JSON์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PhotoRec

https://www.cgsecurity.org/wiki/TestDisk_Download์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GUI ๋ฐ CLI ๋ฒ„์ „์ด ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. PhotoRec์ด ๊ฒ€์ƒ‰ํ•  ํŒŒ์ผ ์œ ํ˜•์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ddrescue + ddrescueview (๋ถˆ๋Ÿ‰ ๋“œ๋ผ์ด๋ธŒ ์ด๋ฏธ์ง•)

๋ฌผ๋ฆฌ์  ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๋ถˆ์•ˆ์ •ํ•  ๋•Œ๋Š” ๋จผ์ € ์ด๋ฏธ์ง•ํ•˜๋Š” ๊ฒƒ์ด ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด๋ฉฐ, ์ด๋ฏธ์ง€๋ฅผ ๋Œ€์ƒ์œผ๋กœ๋งŒ ์นด๋น™ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ddrescue (GNU ํ”„๋กœ์ ํŠธ)๋Š” ์ฝ์„ ์ˆ˜ ์—†๋Š” ์„นํ„ฐ์˜ ๋กœ๊ทธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ถˆ๋Ÿ‰ ๋””์Šคํฌ๋ฅผ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ๋ณต์‚ฌํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

sudo apt install gddrescue ddrescueview   # On Debian-based systems
# First pass โ€“ try to get as much data as possible without retries
sudo ddrescue -f -n /dev/sdX suspect.img suspect.log
# Second pass โ€“ aggressive, 3 retries on the remaining bad areas
sudo ddrescue -d -r3 /dev/sdX suspect.img suspect.log

# Visualise the status map (green=good, red=bad)
ddrescueview suspect.log

๋ฒ„์ „ 1.28 (2024๋…„ 12์›”)์—์„œ๋Š” **--cluster-size**๊ฐ€ ๋„์ž…๋˜์–ด ์ „ํ†ต์ ์ธ ์„นํ„ฐ ํฌ๊ธฐ๊ฐ€ ํ”Œ๋ž˜์‹œ ๋ธ”๋ก๊ณผ ๋” ์ด์ƒ ์ •๋ ฌ๋˜์ง€ ์•Š๋Š” ๊ณ ์šฉ๋Ÿ‰ SSD์˜ ์ด๋ฏธ์ง• ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Extundelete / Ext4magic (EXT 3/4 ๋ณต๊ตฌ)

์†Œ์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ์ด Linux EXT ๊ธฐ๋ฐ˜์ธ ๊ฒฝ์šฐ ์ตœ๊ทผ์— ์‚ญ์ œ๋œ ํŒŒ์ผ์„ ์ „์ฒด ์นด๋น™ ์—†์ด ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋„๊ตฌ๋Š” ์ฝ๊ธฐ ์ „์šฉ ์ด๋ฏธ์ง€์—์„œ ์ง์ ‘ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค:

# Attempt journal-based undelete (metadata must still be present)
extundelete disk.img --restore-all

# Fallback to full directory scan; supports extents and inline data
ext4magic disk.img -M -f '*.jpg' -d ./recovered

๐Ÿ›ˆ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์‚ญ์ œ ํ›„์— ๋งˆ์šดํŠธ๋˜์—ˆ๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ ๋ธ”๋ก์ด ์ด๋ฏธ ์žฌ์‚ฌ์šฉ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€“ ์ด ๊ฒฝ์šฐ ์ ์ ˆํ•œ ์นด๋น™(Foremost/Scalpel)์ด ์—ฌ์ „ํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

binvis

์ฝ”๋“œ์™€ ์›น ํŽ˜์ด์ง€ ๋„๊ตฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

BinVis์˜ ํŠน์ง•

  • ์‹œ๊ฐ์ ์ด๊ณ  ๋Šฅ๋™์ ์ธ ๊ตฌ์กฐ ๋ทฐ์–ด
  • ๋‹ค์–‘ํ•œ ์ดˆ์ ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ํ”Œ๋กฏ
  • ์ƒ˜ํ”Œ์˜ ์ผ๋ถ€์— ์ง‘์ค‘
  • PE ๋˜๋Š” ELF ์‹คํ–‰ ํŒŒ์ผ์—์„œ ์ŠคํŠธ๋ง๊ณผ ๋ฆฌ์†Œ์Šค ๋ณด๊ธฐ
  • ํŒŒ์ผ์— ๋Œ€ํ•œ ์•”ํ˜ธ ๋ถ„์„์„ ์œ„ํ•œ ํŒจํ„ด ์–ป๊ธฐ
  • ํŒจ์ปค ๋˜๋Š” ์ธ์ฝ”๋” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฐพ๊ธฐ
  • ํŒจํ„ด์œผ๋กœ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ ์‹๋ณ„
  • ์‹œ๊ฐ์  ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฐจ์ด ๋น„๊ต

BinVis๋Š” ๋ธ”๋ž™ ๋ฐ•์Šค ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๋Œ€์ƒ์„ ์ตํžˆ๊ธฐ ์œ„ํ•œ ํ›Œ๋ฅญํ•œ ์‹œ์ž‘์ ์ž…๋‹ˆ๋‹ค.

ํŠน์ • ๋ฐ์ดํ„ฐ ์นด๋น™ ๋„๊ตฌ

FindAES

ํ‚ค ์Šค์ผ€์ค„์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ AES ํ‚ค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. TrueCrypt ๋ฐ BitLocker์—์„œ ์‚ฌ์šฉ๋˜๋Š” 128, 192 ๋ฐ 256 ๋น„ํŠธ ํ‚ค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”.

YARA-X (์นด๋น™๋œ ์•„ํ‹ฐํŒฉํŠธ ๋ถ„๋ฅ˜)

YARA-X๋Š” 2024๋…„์— ์ถœ์‹œ๋œ YARA์˜ Rust ์žฌ์ž‘์„ฑ์ž…๋‹ˆ๋‹ค. ๊ณ ์ „ YARA๋ณด๋‹ค 10-30๋ฐฐ ๋น ๋ฅด๋ฉฐ ์ˆ˜์ฒœ ๊ฐœ์˜ ์นด๋น™๋œ ๊ฐ์ฒด๋ฅผ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# Scan every carved object produced by bulk_extractor
yarax -r rules/index.yar out_folder/ --threads 8 --print-meta

์†๋„ ํ–ฅ์ƒ์œผ๋กœ ์ธํ•ด ๋Œ€๊ทœ๋ชจ ์กฐ์‚ฌ์—์„œ ๋ชจ๋“  ์กฐ๊ฐ ํŒŒ์ผ์„ ์ž๋™ ํƒœ๊ทธํ•˜๋Š” ๊ฒƒ์ด ํ˜„์‹ค์ ์œผ๋กœ ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

๋ณด์กฐ ๋„๊ตฌ

ํ„ฐ๋ฏธ๋„์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ ค๋ฉด viu ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
PDF๋ฅผ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์ฝ์œผ๋ ค๋ฉด ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์ค„ ๋„๊ตฌ pdftotext๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ

  1. Autopsy 4.21 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ โ€“ https://github.com/sleuthkit/autopsy/releases/tag/autopsy-4.21

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