๐Ÿ“ƒFirmware Analysis Process 2

DATE : 2024/05/16

์•ˆ๋…•ํ•˜์„ธ์š”, ํ•œํ›„์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜๋„ ์–ด๊น€์—†์ด Firmware Analysis์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™”๋Š”๋ฐ์š”,

Firmware Analysis Process์—์„œ ๋‹ค๋ฃฌ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋˜! ์กฐ๊ธˆ์€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ

File System ์ถ”์ถœํ•˜๋Š” ๊ณผ์ •์„ ์†Œ๊ฐœํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์•ž์„  POST์—์„œ๋Š” Binwalk ๋ผ๋Š” ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŒŒ์ผ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•˜๊ณ 

์••์ถ•๋˜์–ด์žˆ๋˜ LZMA ํŒŒ์ผ & Squashfs File System์„ ์ถ”์ถœํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Binwalk ํŠน์„ฑ ์ƒ, ํŒŒ์ผ ์ด๋ฆ„์„ ์ˆซ์ž๋กœ ๋ถ€์—ฌํ•œ๋‹ค๋Š” ๋ถ€๋ถ„์ด ๋ถˆํŽธํ•˜์‹ค ์ˆ˜๋„ ์žˆ๊ณ 

Firmware๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ํŒŒํŠธ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ Firmware์˜ ํŠน์ • ๋ถ€๋ถ„๋งŒ ์™ ๋นผ๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•˜๋Š”๋ฐ์š”,

๋ฐ”๋กœ ์‹œ์ž‘ํ•ด๋ณด์ฃ !!


1_) Firmware ์ค€๋น„ํ•˜๊ธฐ

์˜ค๋Š˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ถ„์„ํ•  Firmware๋ฅผ ์ค€๋น„ํ•ด์ค๋‹ˆ๋‹ค!

์ €๋Š” ์ข€ ๋” ๋‹ค์–‘ํ•˜๊ฒŒ ๊ตฌ์„ฑ๋œ Firmware๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์•ž์„œ ์‚ฌ์šฉํ•œ Firmware๊ฐ€ ์•„๋‹Œ,

Camera Firmware๋ฅผ ์‚ฌ์šฉํ•  ๊ฒ๋‹ˆ๋‹ค.

2_) Firmware ์••์ถ• ํ’€๊ธฐ

์ œ๊ฐ€ ์ค€๋น„ํ•œ Firmware๋Š” ZIP ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์••์ถ•๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— Bin file์„ ์–ป๊ธฐ ์œ„ํ•ด

์••์ถ•์„ ํ•œ ๋ฒˆ ํ’€์–ด์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

unzip ZIP_FILE_NAME

3_) BIN file ๊ตฌ์กฐ ๋ถ„์„

ZIP ํŒŒ์ผ์˜ ์••์ถ•์„ ํ’€์–ด๋ณด๋‹ˆ PDF ํŒŒ์ผ๊ณผ BIN ํŒŒ์ผ์ด ์ƒ๊ฒจ๋‚œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ์˜ Target.. BIN ํŒŒ์ผ์„ ๊ณต๋žตํ•ด๋ณด์ฃ . ๐Ÿ˜

Binwalk๋กœ Firmware๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋‚˜ ์—ด์–ด ๋ณด๋ฉด ์œ„์™€ ๊ฐ™์ด ์ต์ˆ™ํ•œ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ญ‰ ์ฝ์–ด๋ณด๋‹ˆ ์ €๋ฒˆ Firmware์—์„œ๋„ ๋‚˜์™”๋˜ LZMA ์••์ถ• ๋ฐ์ดํ„ฐ๋„ ๋“ค์–ด ์žˆ๋„ค์š”!

๊ทธ๋Ÿฐ๋ฐ.. ๋ญ”๊ฐ€ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ File System์ด ํ•˜๋‚˜๋„ ๋‚˜์˜ค์ง€ ์•Š์€ ๊ฑฐ์ฃ ..!? ๐Ÿค”

โ—binwalk๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ ํ™”๋ฉด์„ ๋ณด์‹œ๋ฉด ์ด์ „ Firmware์™€ ๊ต‰์žฅํžˆ ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฒผ๋‹ค๋Š” ๊ฑธ ๋Š๋‚„ ๊ฒ๋‹ˆ๋‹ค.

์•„๋งˆ ์‚ฌ์šฉํ•˜์‹œ๋Š” Firmware๊ฐ€ ๋ฌด์—‡์ด๋ƒ์— ๋”ฐ๋ผ ๋“ค์–ด ์žˆ๋Š” File System๋„, ์••์ถ• ๋ฐ์ดํ„ฐ๋„ ๊ฐ€์ง€๊ฐ์ƒ‰์ผ ํ…๋ฐ์š”

๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ ์ง€๊ธˆ ๋ณด์—ฌ๋“œ๋ฆฌ๋Š” Firmware์ฒ˜๋Ÿผ File System์ด ๋ฐ”๋กœ ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ 

binwalk์™€ ๊ฐ™์€ ๋„๊ตฌ๋กœ ์ถ”์ถœํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์˜๋„์ ์œผ๋กœ ์œ„์น˜ ํŒŒ์•…์„ ๋ฐฉํ•ดํ•˜๋Š” dummy๋ฅผ

๋„ฃ์–ด๋‘๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—!! ์ด๋ฒˆ POST์—์„œ๋Š” Binwalk -e๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  File System์„ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„

์•Œ์•„๋ณด๊ณ ์ž ํ•˜๋Š” ๊ฑฐ์ฃ !! ๊ทธ๋Ÿผ ๊ณ„์† ์ด์–ด๊ฐ€ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

4_) dd command๋กœ LZMA Data๋งŒ ๋ฝ‘์•„๋‚ด๊ธฐ

์œ„์—์„œ ํ™•์ธํ•œ Firmware ๊ตฌ์„ฑ ์š”์†Œ ์ค‘์—์„œ LZMA data๋งŒ ๋ฝ‘์•„๋‚ด๊ณ ์ž ํ•˜๋Š”๋ฐ์š”

์—ฌ๊ธฐ์„œ ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด๊ฐ€ dd๊ฐ€ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.

dd if=INPUT_FILE skip=START_OFFSET bs=BLOCK_SIZE of=OUTPUT_FILE_NAME

์ œ๊ฐ€ ์‚ฌ์šฉํ•  dd command๋Š” ๋ณด์‹œ๋Š” ๋ฐ”์™€ ๊ฐ™์ด 4๊ฐœ์˜ ์˜ต์…˜์„ ๋™๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.

if์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ€๋ถ„ ์ถ”์ถœํ•  ํŒŒ์ผ์„ ์ „๋‹ฌํ•˜๊ณ , skip์€ ์ถ”์ถœํ•  ๋ฐ์ดํ„ฐ์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ

bs๋Š” block size๋กœ ๊ธฐ๋ณธ ํฌ๊ธฐ๊ฐ€ 1k์ธ๋ฐ ์šฐ๋ฆฌ๋Š” Firmware ์ค‘์—์„œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•œ LZMA๋ฅผ ์ถ”์ถœํ• 

๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ด์ฆˆ ์กฐ์ •์„ ๊ตณ์ด ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ of๋Š” ์ถ”์ถœํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ํŒŒ์ผ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๋ฐ”๋กœ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ฃ . LZMA ๋ฐ์ดํ„ฐ์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ํ™•์ธํ•œ ๋‹ค์Œ, skip ์˜ต์…˜์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ํŒŒ์ผ ์ด๋ฆ„์€ whatisit.lzma๋กœ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ด์™”๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด file command๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋‹ˆ

lzma compressed data๋ผ๊ณ  ์ธ์‹๋˜๋Š”๊ตฐ์š”!

5_) lzma compressed data -> data

์œ„์—์„œ ๋งŒ๋“ค์–ด์ง„ whatisit.lzma file์€ ๋ง ๊ทธ๋Œ€๋กœ LZMA ๋ฐฉ์‹์œผ๋กœ ์••์ถ•๋œ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋Š” ๊ฑด, ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋‚ด์šฉ๋ฌผ์„ ์–ป๊ธฐ ์œ„ํ•ด ์••์ถ•์„ ํ’€์–ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด์ฃ !

unlzma LZMA_COMPRESSED_FILE

or 

lzma -d < LZMA_COMPRESSED_FILE > OUTOUT_FILE_NAME 

์ €๋Š” unlzma command๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ„์† ์—๋Ÿฌ๋งŒ ๋‚˜์„œ ๋‘ ๋ฒˆ์งธ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์••์ถ•์ด ํ’€๋ฆฌ๋ฉด ์ง€์ •ํ•œ ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ ธ ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”

binwalk๋กœ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•ด ๋ณด๋ฉด

์ด๋ฒˆ Linux kernel version ์ •๋ณด๋„ ์•Œ ์ˆ˜ ์žˆ๊ณ  ์ƒˆ๋กœ์šด LZMA ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ฃผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค..!

6_) LZMA Data ๋ณต์‚ฌํ•˜๊ณ  ์••์ถ• ํ’€๊ธฐ (2 round)

์•ž์—์„œ ํ•œ ๋ฒˆ ํ•ด๋ดค์œผ๋‹ˆ ์ด๋ฒˆ์—” ๊ทธ๋ ‡๊ฒŒ ๋‚ฏ์„ค์ง€ ์•Š์„ ๊ฒ๋‹ˆ๋‹ค!

dd command๋กœ LZMA ๋ฐ์ดํ„ฐ๋งŒ ์™ ๋ณต์‚ฌํ•ด์„œ ์••์ถ•์„ ํ’€์–ด ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์–ด๋ณด๋„๋ก ํ•˜์ฃ !

์ด๋ฒˆ์—” unlzma command๋กœ LZMA ์••์ถ• ํŒŒ์ผ์ด ์ž˜- ํ’€๋ ธ์Šต๋‹ˆ๋‹ค!

file command๋กœ output์˜ ํŒŒ์ผ ํƒ€์ž…์„ ํ™•์ธํ•ด ๋ณด๋‹ˆ cpio archive๋ผ๊ณ  ํ•˜๋„ค์š”!!

์ œ๊ฐ€ ์ง€๊ธˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Firmware๋Š” Dlink์˜ camera ์ œํ’ˆ์˜ Firmware์ž…๋‹ˆ๋‹ค.

Dlink์˜ ๋งŽ์€ ์ œํ’ˆ์ด File System์„ cpio archive ์•ˆ์— ๋„ฃ์–ด๋‘”๋‹ค๊ณ  ํ•˜๋Š”๋ฐ์š”, ๊ทธ๋ ‡๋‹ค๋ฉด.. output file์„

์—ด์–ด๋ณด๊ธฐ๋งŒ ํ•˜๋ฉด file system์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฑธ๊นŒ์š”..!?

7_) cpio archive -> file system ์–ป๊ธฐ

mkdir cpio
cd cpio

cpio์—์„œ ๋‚ด์šฉ๋ฌผ์„ ์ถ”์ถœํ•˜๊ธฐ ์ „์— directory๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ƒˆ directory๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด

์ด๋™ํ•ด์ค๋‹ˆ๋‹ค.

cpio -idm --no-absolute-filenames < ../output

๊ทธ๋Ÿฐ ๋‹ค์Œ, ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด cpio directory ๋ฐ–์— ์žˆ๋Š” output file์„ ๊ฐ€์ ธ์™€

ํŒŒ์ผ์„ ์ถ”์ถœํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋..!

์ฐธ๊ณ ๋กœ cpio command๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” i, p, o, t ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

cpio ์˜ต์…˜์— ๋Œ€ํ•ด ๋” ์•Œ๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ํ„ฐ๋ฏธ๋„์— cpio --help๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ง์ ‘ ์•Œ์•„๋ณด์‹œ๊ธธ!!

๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋‚˜๋ฉด --no-absolute-filename ์˜ต์…˜์— ์˜ํ•ด ํ˜„์žฌ ๊ฒฝ๋กœ, ์ฆ‰ cpio directory๋ฅผ ๊ธฐ์ค€์œผ๋กœ

๋ฝ‘์•„๋‚ธ ํŒŒ์ผ๋“ค์ด ์œ„์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋Š” ๊ฑด, ls command๋กœ cpio directory๋ฅผ ์—ด์–ด๋ณด๋Š” ์ˆœ๊ฐ„!

File System์ด ์ซ™- ๋‚˜์˜ฌ ๊ฑฐ๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๊ณผ์—ฐ ์ •๋ง๋กœ ๊ทธ๋Ÿฐ์ง€ ๋ฐ”-๋กœ ํ™•์ธํ•ด๋ณผ๊นŒ์š”!?

ls command๋ฅผ ๋ˆŒ๋Ÿฌ ํ˜„์žฌ directory์— ๋“ค์–ด์žˆ๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ์ถœ๋ ฅํ–ˆ๋”๋‹ˆ ์œ„์™€ ๊ฐ™์ด ์šฐ๋ฆฌ์—๊ฒŒ ์ต์ˆ™ํ•œ

File System์„ ์ถ”์ถœํ•ด๋‚ธ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค!! ํ•œ ๋งˆ๋””๋กœ ์„ฑ๊ณต์ด๋ผ๋Š” ๊ฑฐ์ฃ !! ๐Ÿคค

์ด๋ ‡๊ฒŒ ํ•ด์„œ ์–ป์–ด๋‚ธ File System ์•ˆ์—๋Š” ๋ญ๊ฐ€ ์žˆ๋Š”์ง€ ์ฒœ์ฒœํžˆ ๊ตฌ๊ฒฝํ•ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค!


์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ ํ•ด์„œ camera Firmware์—์„œ File System๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋˜‘๊ฐ™์ด File System ์ถ”์ถœํ•˜๋Š” ๊ฑด๋ฐ ์•ž์„œ ์‚ดํŽด๋ณธ ๋‚ด์šฉ๊ณผ๋Š” ๋˜ ๋‹ค๋ฅด์ฃ ?

Binwalk๋Š” ์ž๋™์œผ๋กœ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ์ถ”์ถœํ•˜๊ณ  File System๊นŒ์ง€ ํด๋”๋กœ ์˜ˆ์˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฐ˜๋ฉด

dd๋Š” Firmware ์ค‘ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์™ ๋นผ๋‚ด๊ธฐ์— ์ ํ•ฉํ•œ ๋ช…๋ น์–ด์˜€์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Firmware๋ฅผ ํ•œ ๋ฒˆ ์—ด์–ด๋ดค๋‹ค๊ณ  ํ•ด์„œ ๊ทธ ์•ˆ์—์„œ

๋–ก!ํ•˜๋‹ˆ File System์ด ์šฐ๋ฆฌ๋ฅผ ๋ฐ˜๊ฒจ ์ฃผ๋Š” ๊ฒฝ์šฐ๋งŒ ์žˆ์ง€๋Š” ์•Š๋‹ค๋Š” ์ !!

์˜ค๋Š˜ POST๋ฅผ ํ†ตํ•ด ์–ป์–ด๊ฐ€์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์šฐ๋ฆฐ ๋‹ค์Œ POST์—์„œ ๋งŒ๋‚˜์ฃ !

Last updated