๐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๋ฅผ ์์น ์์ผฐ์ต๋๋ค.
์๋ก์ด ํด๋(directory)๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ mkdir command๋ก ์์ฑํ ํด๋ ์ด๋ฆ์ ์ง์ ํ๋ฉด ๋ฉ๋๋ค.
mkdir command๋ make directory์ ์ฝ์๋ก ์์ ๊ฐ์ด directory๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด์ ๋๋ค.
์ ๊ฒฝํ ์ ์์ถ์ ํ๋ฉด ๊ทธ ์์ bin file์ด ๋ค์ด์๋๊ตฐ์!
3_) Binwalk
์ด์ ๋ถ์ํ ํ์ผ ์ค๋น๋ ๋๋ฌ์ผ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ ๋ณด ์์ง์ ๋ค์ด๊ฐ ๋ด ์๋ค.
์ฌ๊ธฐ์ ์ ๊น ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ๋๊ตฌ๋ฅผ ํ๋ ์๊ฐํ ๊น ํ๋๋ฐ์, ๋ฐ๋ก binwalk๋ผ๋ ์น๊ตฌ์ ๋๋ค.
ํฐ๋ฏธ๋ ์ฐฝ์ binwalk๋ฅผ ์ ๋ ฅํ๋ฉด binwalk๋ก ์คํํ ์ ์๋ ๋ค์ํ ์ต์ ์ ํ์ธํด๋ณผ ์ ์์ต๋๋ค.
binwalk๋ Firmware๋ฅผ ๋ถ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ํ์ ์ธ ๋๊ตฌ ์ค ํ๋๋ก
AttifyOS์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ด์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ค์นํด์ค ํ์๊ฐ ์์ต๋๋ค.
์ผ๋จ ๊ธฐ๋ณธ์ ์ผ๋ก Firmware๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋ ์ง ํ์ธํด๋ณด์ฃ .
ํฐ๋ฏธ๋์ ์์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ค๋๋ค.
๋ช ๋ น์ด ์คํ ๊ฒฐ๊ณผ, ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ํํธ๋ก ๋๋์ด์ง ์์น ์ ๋ณด์ ์ค๋ช ์ด ๋์ต๋๋ค.
๋งจ ์์ ๋ณด์ด๋ ๊ฐ์ด ์์น ์ ๋ณด์ธ๋ฐ์
header, data, file system ๋ฑ ์ํ๋ ๋ถ๋ถ๋ง ์ ๋ฝ์๋ด๊ณ ์ถ์ ๋ ํ์ฉํ ์ ์์ต๋๋ค.
Description์์๋ ๊ฐ ์์น์ ๋ค์ด์๋ ๊ฒ ๋ฌด์์ธ์ง ์๋ ค์ค๋๋ค. ์ฌ๊ธฐ์ ๋ ์ฌ๊ฒจ๋ณผ ๋จ์ด๋
LZMA compression๊ณผ Squashfs์ ๋๋ค.
LZMA๋ Firmware์์๋ ํํ ๋ณผ ์ ์๋ ์์ถ ๋ฐฉ์ ์ค ํ๋๋ก
๊ณผ ๊ฐ์ ์์ถ ๋ฐฉ์์ด ๋ํ์ ์ด๋ผ๊ณ ํ๋ค์.
๋ํ file system์ ๊ดํด์๋ Squashfs์ ๋๋ถ์ด
์ ๊ฐ์ File System์ด ๋ํ์ ์ด๋ผ ํฉ๋๋ค.
4_) File Extraction
์! ๊ทธ๋ผ ์ด์ Bin file์์ ์ถ์ถํ ๋งํ ๊ฑด ๋ชจ์กฐ๋ฆฌ ๋ฝ์๋ด ๋ด ์๋ค.
์ด๋ฒ์๋ binwalk๋ฅผ ์ฌ์ฉํ ๊ฑด๋ฐ์, ํ์ผ์ ์ถ์ถํ๊ธฐ ์ํด์ -e option์ ์ฌ์ฉํด์ค ๊ฒ๋๋ค.
๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด BIN_FILE_NAME.extracted/ ๋ผ๋ ์ด๋ฆ์ ์ directory๊ฐ ๋ง๋ค์ด์ง ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
๋ญ๊ฐ ๋ค์ด์๋ ์ง directory ์์ผ๋ก ๋ค์ด๊ฐ ๋ณผ๊น์?
directory๋ฅผ ์ด๋ํ๊ธฐ ์ํด์๋ cd command๋ฅผ ์ฌ์ฉํฉ๋๋ค. cd command๋ change directory์ ์ฝ์๋ก
ํ์ฌ directory์์ ๋ค๋ฅธ directory๋ก ์ด๋ํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด์ ๋๋ค.
์ถ์ถ๋ directory๋ก ๋ค์ด๊ฐ ๋ณด๋ ์ด 3๊ฐ์ ํ์ผ๊ณผ 1๊ฐ์ directory๋ฅผ ๋ณผ ์ ์์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ํ์ผ ์ด๋ฆ์ด ์ซ์๋ค์?? 70, 160090.squashfs..?
์์ ์์น ์ ๋ณด๋ฅผ ์ ์ฌํ ๋ณด์ ๋ถ์ด๋ผ๋ฉด ์ด๊ฒ ๋ฌด์์ธ์ง ๋์น์ฑ์ จ์ ํ ๋ฐ์
binwalk์์๋ ํ์ผ ์ด๋ฆ์ ์ซ์๋ก ๋ถ์ฌํฉ๋๋ค. ์ด๋ ๋ถ์ฌ๋ ์ซ์๋
5_) squashfs-root directory ํ๋ฐฉํ๊ธฐ
ํ์ผ์ ๊ทธ๋ ๋ค ์น๊ณ , ๋ค์ด๊ฐ ๋ณด๊ณ ์ถ์ directory์ ์นจ์ ํด๋ด ์๋ค..!!
squashfs-root directory์ ๋ฑ ๋ค์ด๊ฐ๋๋..! ๊ต์ฅํ ์ต์ํ ํด๋ ๊ตฌ์กฐ๊ฐ ๋ฑ์ฅํ์ต๋๋ค.
์ต์์ directory(root directory)๋ก ์ด๋ํ์ฌ ๋์ผํ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด
์ ์ฌํ ํด๋ ๊ตฌ์กฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ File System์ ์ถ์ถํ์ฌ ๊ทธ ์์ ๊ตฌ์ฑ๋ฌผ์ ํ์ธํด ๋ณด๋ฉด
root directory์ ์ ์ฌํ ๊ตฌ์กฐ์์ ์ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด ์์์ ์ด๋ค ์ ๋ณด๋ฅผ ์ป์ ์ ์์๊น์?!
์ฒ์์ /etc/passwd & /etc/shadow ํ์ผ์ ์ด์ด ๋ณผ๊น ํ๋๋ฐ ํ์ฌ ๋ ํ์ผ์ link๊ฐ ๊ฑธ๋ ค์๋ ๋ฏ ํฉ๋๋ค.
์ด ๋ถ๋ถ์ ์ข ๋ ๊ณต๋ถํ ๋ค์์ ๊ฑด๋๋ ค๋ณด๋๋ก ํ์ฃ .
(broken symbolic link.. ๊ณ ์น๋ ๋ฐฉ๋ฒ์ด ์์๊น์!?)
๊ทธ๋ผ ๋ฌด์์ ํ ๊ฒ์ด๋!! ์จ๊ฒจ์ง ๊ณ์ ์ ํ๋ ์ฐพ์๋ณผ๊น ํ๋๋ฐ์,
์ฌ๊ธฐ์ telnet ์ด๋ผ๋ ํค์๋๋ฅผ ํ์ฉํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
telnet ์ด๋ผ๋ ๊ธ์์ ๊ฒน์น๋ ๋ด์ฉ์ ์์๋ด๋ผ๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด
์์ ๊ฐ์ด "telnet"์ด ๋นจ๊ฐ๊ฒ ํ์ํด ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ค๋๋ค.
์ฃผ๋ฅด๋ฅต ์ฃผ๋ฅด๋ฅต ์ฝ๋ค ๋ณด๋ฉด ํฅ๋ฏธ๋ก์ ๋ณด์ด๋ ์ฝ๋๋ฅผ ํ ์ค ๋ฐ๊ฒฌํ ์ ์๋๋ฐ์ .
๊ทธ ๋ด์ฉ์ ์ข ๋ ์์ธํ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋์ถฉ ์ฝ๋ ๋ด์ฉ์ ์ถ์ธกํด ๋ณด๋ฉด /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