๐Ÿ“ƒFirmware Analysis Process

DATE : 2024/05/12

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

์˜ค๋Š˜ POST์—์„œ๋Š” Firmware๋ฅผ ๋ถ„์„ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

"์•„๋‹ˆ Hardware Hacking ํ•œ๋‹ค๋ฉด์„œ ๊ฐ‘์ž๊ธฐ Firmware ๋ถ„์„์„ ์™œ ํ•˜๋‚˜์š”?"

Firmware๋Š” ๊ฐ„๋‹จํžˆ ๋งํ•ด Hardware device ๋‚ด๋ถ€์— ๋“ค์–ด์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

Router, Switch๋ฅผ ์‹œ์ž‘์œผ๋กœ ์Šค๋งˆํŠธํฐ, ๋…ธํŠธ๋ถ, ๋ฐ์Šคํฌ ํƒ‘ ๋“ฑ ๋‹ค์–‘ํ•œ device์—์„œ Firmware๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


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

๋‹น์—ฐํ•œ ๋ง์ด๊ฒ ์ง€๋งŒ Firmware๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด์„  Firmware๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. (๋น„์žฅ)

์ž์‹ ์ด ๋œฏ์–ด๋ณด๊ณ  ์‹ถ์€ Firmware๋ฅผ ์„ ํƒํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œ ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ, ์ €๋Š” ์˜ค๋Š˜ Router Firmware๋ฅผ ์ค€๋น„ํ•ด์™”์Šต๋‹ˆ๋‹ค.

2_) AttifyOS -> BIN file

Firmware๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ์ค€๋น„ํ•ด๋‘์—ˆ๋˜ AttifyOS๋ฅผ ์‹คํ–‰ ์‹œ์ผœ ์ค๋‹ˆ๋‹ค.

ํŽธ์˜ ์ƒ ๋ณ„๋„์˜ ํด๋”๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ํ•ด๋‹น ํด๋”์— Firmware๋ฅผ ๋„ฃ์–ด์ค„ ๊ฒ๋‹ˆ๋‹ค.

์ €๋Š” router_firmware directory๋ฅผ ๋งŒ๋“ค์–ด ๊ทธ ์•ˆ์— Firmware๋ฅผ ์œ„์น˜ ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

mkdir DIRECTORY_NAME

์ƒˆ๋กœ์šด ํด๋”(directory)๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„  mkdir command๋กœ ์ƒ์„ฑํ•  ํด๋” ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

mkdir command๋Š” make directory์˜ ์•ฝ์ž๋กœ ์œ„์™€ ๊ฐ™์ด directory๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

unzip ZIP_FILE_NAME

์ œ ๊ฒฝํ—˜ ์ƒ ์••์ถ•์„ ํ’€๋ฉด ๊ทธ ์•ˆ์— bin file์ด ๋“ค์–ด์žˆ๋”๊ตฐ์š”!

3_) Binwalk

์ด์ œ ๋ถ„์„ํ•  ํŒŒ์ผ ์ค€๋น„๋Š” ๋๋‚ฌ์œผ๋‹ˆ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ •๋ณด ์ˆ˜์ง‘์— ๋“ค์–ด๊ฐ€ ๋ด…์‹œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ž ๊น ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋„๊ตฌ๋ฅผ ํ•˜๋‚˜ ์†Œ๊ฐœํ• ๊นŒ ํ•˜๋Š”๋ฐ์š”, ๋ฐ”๋กœ binwalk๋ผ๋Š” ์นœ๊ตฌ์ž…๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„ ์ฐฝ์— binwalk๋ฅผ ์ž…๋ ฅํ•˜๋ฉด binwalk๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

binwalk๋„ Firmware๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋กœ

AttifyOS์— ๊ธฐ๋ณธ์ ์œผ๋กœ ๋“ค์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ์„ค์น˜ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ๊ธฐ๋ณธ์ ์œผ๋กœ Firmware๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ์ง€ ํ™•์ธํ•ด๋ณด์ฃ .

binwalk -t BIN_FILE_NAME

ํ„ฐ๋ฏธ๋„์— ์œ„์™€ ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ์‹คํ–‰ ๊ฒฐ๊ณผ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ํŒŒํŠธ๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์œ„์น˜ ์ •๋ณด์™€ ์„ค๋ช…์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

๋งจ ์•ž์— ๋ณด์ด๋Š” ๊ฐ’์ด ์œ„์น˜ ์ •๋ณด์ธ๋ฐ์š”

header, data, file system ๋“ฑ ์›ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์™ ๋ฝ‘์•„๋‚ด๊ณ  ์‹ถ์„ ๋•Œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Description์—์„œ๋Š” ๊ฐ ์œ„์น˜์— ๋“ค์–ด์žˆ๋Š” ๊ฒŒ ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ˆˆ ์—ฌ๊ฒจ๋ณผ ๋‹จ์–ด๋Š”

LZMA compression๊ณผ Squashfs์ž…๋‹ˆ๋‹ค.

LZMA๋Š” Firmware์—์„œ๋Š” ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์••์ถ• ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋กœ

LZMA, Zip, Gzip, ARJ, Zilb

๊ณผ ๊ฐ™์€ ์••์ถ• ๋ฐฉ์‹์ด ๋Œ€ํ‘œ์ ์ด๋ผ๊ณ  ํ•˜๋„ค์š”.

๋˜ํ•œ file system์— ๊ด€ํ•ด์„œ๋Š” Squashfs์— ๋”๋ถˆ์–ด

SquashFS, CramFS, JFFS2, YAFFS2, EXT2

์™€ ๊ฐ™์€ File System์ด ๋Œ€ํ‘œ์ ์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.

4_) File Extraction

์ž! ๊ทธ๋Ÿผ ์ด์ œ Bin file์—์„œ ์ถ”์ถœํ•  ๋งŒํ•œ ๊ฑด ๋ชจ์กฐ๋ฆฌ ๋ฝ‘์•„๋‚ด ๋ด…์‹œ๋‹ค.

binwalk -e BIN_FILE_NAME

์ด๋ฒˆ์—๋„ binwalk๋ฅผ ์‚ฌ์šฉํ•  ๊ฑด๋ฐ์š”, ํŒŒ์ผ์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ -e option์„ ์‚ฌ์šฉํ•ด์ค„ ๊ฒ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด BIN_FILE_NAME.extracted/ ๋ผ๋Š” ์ด๋ฆ„์˜ ์ƒˆ directory๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ญ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ง€ directory ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€ ๋ณผ๊นŒ์š”?

cd DIRECTORY_NAME

directory๋ฅผ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” cd command๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. cd command๋Š” change directory์˜ ์•ฝ์ž๋กœ

ํ˜„์žฌ directory์—์„œ ๋‹ค๋ฅธ directory๋กœ ์ด๋™ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

์ถ”์ถœ๋œ directory๋กœ ๋“ค์–ด๊ฐ€ ๋ณด๋‹ˆ ์ด 3๊ฐœ์˜ ํŒŒ์ผ๊ณผ 1๊ฐœ์˜ directory๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํŒŒ์ผ ์ด๋ฆ„์ด ์ˆซ์ž๋„ค์š”?? 70, 160090.squashfs..?

์•ž์„œ ์œ„์น˜ ์ •๋ณด๋ฅผ ์œ ์‹ฌํžˆ ๋ณด์‹  ๋ถ„์ด๋ผ๋ฉด ์ด๊ฒŒ ๋ฌด์—‡์ธ์ง€ ๋ˆˆ์น˜์ฑ„์…จ์„ ํ…๋ฐ์š”

binwalk์—์„œ๋Š” ํŒŒ์ผ ์ด๋ฆ„์„ ์ˆซ์ž๋กœ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ถ€์—ฌ๋œ ์ˆซ์ž๋Š”

5_) squashfs-root directory ํƒ๋ฐฉํ•˜๊ธฐ

ํŒŒ์ผ์€ ๊ทธ๋ ‡๋‹ค ์น˜๊ณ , ๋“ค์–ด๊ฐ€ ๋ณด๊ณ  ์‹ถ์€ directory์— ์นจ์ž…ํ•ด๋ด…์‹œ๋‹ค..!!

cd squashfs-root

squashfs-root directory์— ๋”ฑ ๋“ค์–ด๊ฐ”๋”๋‹ˆ..! ๊ต‰์žฅํžˆ ์ต์ˆ™ํ•œ ํด๋” ๊ตฌ์กฐ๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ƒ์œ„ directory(root directory)๋กœ ์ด๋™ํ•˜์—ฌ ๋™์ผํ•œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด

์œ ์‚ฌํ•œ ํด๋” ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ File System์„ ์ถ”์ถœํ•˜์—ฌ ๊ทธ ์•ˆ์˜ ๊ตฌ์„ฑ๋ฌผ์„ ํ™•์ธํ•ด ๋ณด๋ฉด

root directory์™€ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ์•ˆ์—์„œ ์–ด๋–ค ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์„๊นŒ์š”?!

์ฒ˜์Œ์—” /etc/passwd & /etc/shadow ํŒŒ์ผ์„ ์—ด์–ด ๋ณผ๊นŒ ํ–ˆ๋Š”๋ฐ ํ˜„์žฌ ๋‘ ํŒŒ์ผ์€ link๊ฐ€ ๊ฑธ๋ ค์žˆ๋Š” ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ถ€๋ถ„์€ ์ข€ ๋” ๊ณต๋ถ€ํ•œ ๋‹ค์Œ์— ๊ฑด๋“œ๋ ค๋ณด๋„๋ก ํ•˜์ฃ .

(broken symbolic link.. ๊ณ ์น˜๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ์š”!?)

๊ทธ๋Ÿผ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ด๋ƒ!! ์ˆจ๊ฒจ์ง„ ๊ณ„์ •์„ ํ•˜๋‚˜ ์ฐพ์•„๋ณผ๊นŒ ํ•˜๋Š”๋ฐ์š”,

์—ฌ๊ธฐ์„œ telnet ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ํ™œ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

grep -iRn "telnet" 

telnet ์ด๋ผ๋Š” ๊ธ€์ž์™€ ๊ฒน์น˜๋Š” ๋‚ด์šฉ์„ ์•Œ์•„๋‚ด๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด

์œ„์™€ ๊ฐ™์ด "telnet"์ด ๋นจ๊ฐ›๊ฒŒ ํ‘œ์‹œํ•ด ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

์ฃผ๋ฅด๋ฅต ์ฃผ๋ฅด๋ฅต ์ฝ๋‹ค ๋ณด๋ฉด ํฅ๋ฏธ๋กœ์›Œ ๋ณด์ด๋Š” ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š” .

๊ทธ ๋‚ด์šฉ์„ ์ข€ ๋” ์ž์„ธํžˆ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

telentd -l /usr/sbin/login -u Alphanetworks:$image_sign -i br0 &

๋Œ€์ถฉ ์ฝ”๋“œ ๋‚ด์šฉ์„ ์ถ”์ธกํ•ด ๋ณด๋ฉด /usr/sbin/login์œผ๋กœ Alphanetworks ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•˜๊ฒ ๋‹ค๋Š” ๊ฑฐ ๊ฐ™๋„ค์š”.

์ด๋•Œ ์ค‘์š”ํ•œ ๊ฑด user์˜ ๊ณ„์ •์ธ๋ฐ์š”

id๊ฐ€ Alphanetworks์ธ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๋Š”๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ $image_sign์— ๋‹ด์•„๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

$image_sign์— ์–ด๋–ค ๋‚ด์šฉ์ด ๋“ค์–ด๊ฐ€๋Š” ์ง€ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์ ํ˜€์žˆ๋Š” ํŒŒ์ผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์šด์ด ์ข‹๊ฒŒ๋„ image_sign์— ์–ด๋–ค ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š”์ง€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

/etc/config/image_sign ํŒŒ์ผ ๋‚ด์šฉ์„ ์ฝ์–ด์™€ image_sign์— ํ• ๋‹นํ•œ๋‹ค๋Š” ๊ฑด,

ํ•ด๋‹น ํŒŒ์ผ์— Alphanetworks์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ ํ˜€ ์žˆ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋˜๊ฒ ์ฃ ?

๋ฐ”๋กœ ํ•ด๋‹น ํŒŒ์ผ๋กœ ์ด๋™ํ•˜์—ฌ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด! Alphanetworks์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!!

๋‹ค๋ฅธ ํŒŒ์ผ์—๋„ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ดค๋Š”๋ฐ xml ํŒŒ์ผ ์—ฌ๊ธฐ์ €๊ธฐ์— ์ ํžŒ ๊ฑฐ ๋ง๊ณ ๋Š”

image_sign file์—๋งŒ ๋“ค์–ด์žˆ๋Š” ๋“ฏํ•˜๊ตฐ์š”!

์ฐธ๊ณ ๋กœ Alphanetworks ๊ณ„์ •์€ Dlink์™€ ๊ด€๋ จํ•ด ๋น„๊ต์  ์ตœ๊ทผ์— ๋ฐœ๊ฒฌ๋œ ์ทจ์•ฝ์  ๋‚ด์šฉ๊ณผ ์—ฐ๊ด€์ด ์žˆ๋‹ต๋‹ˆ๋‹ค!


์ž! ๊ทธ๋Ÿผ Alphanetworks ๊ณ„์ •์„ ์•Œ์•„๋‚ด๋Š” ๊ฑธ ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ค๋Š˜์˜ ๋‚ด์šฉ์€ ์ด ์ •๋„๋กœ ๋งˆ๋ฌด๋ฆฌํ•ด๋ณผ๊นŒ ํ•˜๋Š”๋ฐ์š”

File System์„ ์ถ”์ถœํ•˜๊ธฐ๊นŒ์ง€ ์–ด๋–ค ๊ณผ์ •์„ ๊ฑฐ์ณค๋Š”์ง€ ๋‹ค์‹œ ํ•œ ๋ฒˆ Remind!! ํ•ด๋ณด์‹œ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค!

๊ทธ๋Ÿผ ๋‹ค์Œ POST์—์„œ ๋งŒ๋‚˜์ฃ !

Last updated