๐Firmware Analysis Process 3
DATE : 2024/05/24
์๋ ํ์ธ์, ํํ์ ๋๋ค.
์ค๋๋ ์์ ์ดํด๋ดค๋ Firmware์ ๋ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง Firmware๋ฅผ ๊ฐ์ ธ์ ๋ดค์ต๋๋ค!
๋ณธ๋ก ์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์ Firmware Analysis Process& Firmware Analysis Process 2 ๋ด์ฉ์
๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณผ๊น์?
์ฐ๋ฆฌ๊ฐ ์ด์ POST๋ฅผ ํตํด ์ดํด๋ณธ Firmware ๋ถ์ ๊ณผ์ ์ Firmware๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋๋! ์ ๋ฐ๋ผ
๋ฐฉ์์ด ์กฐ๊ธ ๋ฌ๋ผ์ก์ ๋ฟ ์ ๋ฐ์ ์ธ ํ๋ฆ์ ๋์ผํฉ๋๋ค.
[1] ์ฒซ ๋ฒ์งธ Step์ผ๋ก ๋ถ์ํ๊ณ ์ถ์ Firmware๋ฅผ ์ค๋นํ์์ฃ !
์ ๊ฐ ์ฌ์ฉํ Firmware๋ ๋๋ถ๋ถ ์นด๋ฉ๋ผ, Router ๋ฑ์ ์ ์ํ๋ ํ์ฌ์์ ์์ฒด ์ ๊ณตํ๋ ํ์ผ์ด์์ต๋๋ค.
(POST์์ Firmware๋ฅผ ์ป๋ ๊ณผ์ ์ ๋ํด์๋ ์์ธํ๊ฒ ๋ค๋ฃจ์ง ์์์ง๋ง,
์ ์ฒ๋ผ ๊ณต๊ฐ๋ firmware๋ฅผ ๋ค์ด ๋ฐ๊ฑฐ๋ ์ฅ์น๋ฅผ ๊ตฌ๋งคํด ์ง์ firmware๋ฅผ ์ถ์ถํ ์๋ ์์ต๋๋ค.
์ด ๋ฐ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค๋ ์ ์ ์๊ณ ๋์ด๊ฐ๋ ์ ๋๋ก ๋น ๋ฅด๊ฒ ์ง๋๊ฐ๋๋ก ํ์ฃ )
[2] Firmware ๊ตฌ์กฐ ํ์ ํ๊ธฐ
firmware๋ฅผ ์ค๋นํ ๋ค์ ํ์ธํ๋ ๊ฑด, firmware๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์๋๊ฐ ์ด์์ต๋๋ค.
์ฒ์ ์ดํด๋ดค๋ firmware๋ squashfs๋ฅผ ๋ฐ๋ก ์ฐพ์๋ณผ ์ ์์๋ ๋ฐ๋ฉด,
๋ ๋ฒ์งธ๋ก ์ดํด๋ดค๋ firmware๋ LZMA ์์ถ ๋ฐ์ดํฐ ์์ file system์ด ์จ๊ฒจ์ ธ ์์์ต๋๋ค.
์ด๋ฅผ ํตํด firmware๋ ์ ๊ฐ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋๋ค๋ ๊ฑธ ํ์ธํ ์ ์์์ฃ !!
[3] File System ์ถ์ถํ๊ธฐ
firmware๋ฅผ ์ด์ด๋ณธ ๊ทผ๋ณธ์ ์ธ ๋ชฉ์ ์ file system์ ์ถ์ถํ๊ธฐ ์ํจ์ด์์ต๋๋ค.
์ด ๊ณผ์ ์์ binwalk๋ ์ฃผ์ด์ง binary file์์ file system์ ์ถ์ถํด ๋ณ๋์ ํด๋๋ฅผ ๋ง๋ค์ด์คฌ๊ณ
firmware์ ํน์ ๋ถ๋ถ๋ง ๋ฐ๋ก ๋ฝ์๋ด๊ณ ์ถ์ ๊ฒฝ์ฐ์ dd command๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ์ผ๋ถ๋ฅผ ๋ณต์ ํ ๋ค์,
๋ณต์ ํ ํ์ผ์์ file system์ ์ถ์ถํ ์ ์์์ต๋๋ค.
์ด์ฒ๋ผ file system์ firmware๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋๋, file system์ด ์ด๋ ์์น์ ์๋๋,
์ด๋ค file system์ธ๊ฐ ์ ๋ฐ๋ผ ์ถ์ถ ๋ฐฉ์์ด ์กฐ๊ธ์ฉ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
๊ทธ๋ฆฌํ์ฌ ์ค๋์ ์ง๊ธ๊น์ง ์ดํด๋ดค๋ firmware์ ๋ค๋ฅด๊ฒ file system์ด ์ฌ๋ฌ ๊ฐ ๋ค์ด์๋ ๊ฒฝ์ฐ๋ฅผ
์ดํด๋ณผ๊น ํฉ๋๋ค. file system์ด ์ฌ๋ฌ ๊ฐ๋ผ๊ณ ํด์ ํน๋ณํ ๋ ์ด๋ ค์์ง๋ ๋ด์ฉ์ ์์ต๋๋ค!!
์ง๊ธ๊น์ง ์ตํ์จ ๋ฐฉ๋ฒ ๊ทธ๋๋ก ํ๋ฉด ๋๊ฑฐ๋ ์! ๐
๊ทธ๋ผ ์ด์ ๋ณธ๋ก ์ผ๋ก ๋ค์ด๊ฐ ๋ด ์๋ค!
1_ ) Firmware ์ค๋น
์ค๋ ์ ๊ฐ ๊ฐ์ ธ์จ firmware๋ camera firmware์ ๋๋ค.
firmware๋ฅผ ๋ค์ด ๋ฐ์ ๋ณด๋ ์์ถ๋์ด ์์ด์ unzip command๋ก ์์ถ์ ํ์ด์คฌ์ต๋๋ค.
2_) Firmware ๊ตฌ์กฐ ํ์ธ
firmware๋ฅผ ์ค๋นํ์ผ๋ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
-t ์ต์ ์ ์ฌ์ฉํ์ฌ ํฐ๋ฏธ๋ ํฌ๊ธฐ์ ์๋ง๊ฒ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
๋ช ๋ น์ด ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์ด๋ฒ firmware๋ file system์ด ๋ฌด๋ ค 3๊ฐ๋ผ๊ณ ๋์ค๋ค์!
์ฌ๋ ๋์ ๊ฐ์ด binwalk๋ฅผ ์ด์ฉํ์ฌ ์ถ์ถํ ์๋ ์์ง๋ง
์ฌ์ง ์ Squashfs ์ฒ๋ผ firmware ์ค๊ฐ์ ์์นํ ์ ๋ณด๋ง ๋ฝ์๋ด ์ง์ file system์ ์ถ์ถํ ์๋ ์์ต๋๋ค.
์ค๋์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋ ์๋ํด๋ณด๋๋ก ํ์ฃ .
3_) file system extraction : binwalk
์ฐ์ ์ฐ๋ฆฌ์๊ฒ ์ต์ํ binwalk๋ก ๋น ๋ฅด๊ฒ file system์ ์ถ์ถํด๋ณด๊ณ ๊ฐ๊ฒ ์ต๋๋ค.
firmware์์ file system์ ์ถ์ถํ๊ธฐ ์ํด์ extraction์ ๋ปํ๋ -e ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
์ถ์ถ์ ์๋ํ๋ฉด ์์ ๊ฐ์ด binary file ์ด๋ฆ์ extracted๋ฅผ ๋ถ์ธ ํด๋๊ฐ ์์ฑ๋ฉ๋๋ค.
ํด๋น ํด๋๋ก ๋ค์ด๊ฐ ๋ณด๊ฒ ์ต๋๋ค.
ํด๋ ์์ผ๋ก ์ด๋ํด ๋ด์ฉ๋ฌผ์ ํ์ธํด ๋ณด๋, ์์์ ํ์ธํ๋ 3๊ฐ์ file system์ด ๋ชจ๋ ์ถ์ถ๋์ด ์๋ค์!!
๊ฐ ํด๋ ์์ ๋ญ๊ฐ ๋ค์ด์๋ ์ง ๊ถ๊ธํ์์ฃ !?
์ด๋ฒ์๋ ls command๋ก ํด๋๋ฅผ ์ด์ด๋ณด๋ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์์ต๋๋ค.
4_) file system extraction : python code
"์~ binwalk๊ฐ ๋ง๋ฅ ํด๊ฒฐ์ฌ์ ๋๋ค. file system ์ถ์ถํ๊ธฐ? ๋๋ฌด ์ฝ๋ค์ ์ฌ์!!"
๋ผ๊ณ ์ง๋ฃจํด ํ์ค ๋ถ๋ค์ ์ํด ์ง์ python code๋ก ์์ ์ด ์ํ๋ ํ์ผ ๋ด์ฉ๋ง ๊ฐ์ ธ์ ์๋์ผ๋ก
file system์ ์ถ์ถํ๋ ๋ฐฉ๋ฒ์ ์์๋ณผ๊น ํฉ๋๋ค. ๐
python์ ์ต์ํ์ง ์์ผ์ ๋ถ๋ค๋ ์ฝ๊ฒ ๋ฐ๋ผํ์ค ์ ์๋ ์-์ฒญ ๋จ์ํ๊ณ ์งง์ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์
์๊ฐ๋ณด๋ค ๋ง๋งํ์ค ๊ฒ๋๋ค!!
์ฐ์ ์๋์ผ๋ก ์์ ํ ํ๊ฒฝ์ ๋ฐ๋ก ๋ง๋ค์ด ์ฃผ๊ฒ ์ต๋๋ค. mkdir command๋ก ํด๋๋ฅผ ํ๋ ๋ง๋ค๊ณ
ํด๋น ๊ฒฝ๋ก๋ก binary file์ ๋ณต์ฌํด์ค๋๋ค.
cp command๋ coyp์ ์ฝ์๋ก
์์ ๊ฐ์ ํํ๋ก ์ด๋ค ํ์ผ์ ์ด๋๋ก ๋ณต์ฌํ ๊ฑด์ง ์๋ ค์ฃผ๋ฉด ์์ฝ๊ฒ ํ์ผ์ ๋ณต์ฌํ ์ ์์ต๋๋ค.
์ ๊ทธ๋ผ! firmware์์ ํน์ ๋ถ๋ถ๋ง ์ ๋ฒ ๊ปด ์ธ python ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
์ฒ์ ์คํํ๋ binwalk -t ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด offset ๊ฐ์ ํ์ธํ ์ ์๋๋ฐ์,
์ด ์ ๋ณด๋ฅผ ํ์ฉํด ์ด๋ ์์น๋ถํฐ ํ์ผ ๋ด์ฉ์ ์ฝ์ผ๋ฉด ๋๋์ง ์์ ์์น๋ฅผ ์ง์ ํด์ค ๊ฒ๋๋ค.
๋ํ ํ์ฌ 3๊ฐ์ file system์ด ์ฐ๋ฌ์ ๋ถ์ด์๊ธฐ ๋๋ฌธ์ ๊ฐ ์์ญ์ด ๋๋๋ ์ง์ ๋ ์ ํํ ์๋ ค์ค์ผ ํ๋๋ฐ์
์ด๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด์ ๋ค์ file system์ ์์ ์์น์์ ์์ ์ ์์ ์์น๋ฅผ ๋นผ๋ฉด size๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค!
๋ง์ง๋ง์ผ๋ก ํ์ผ ๋ด์ฉ์ ์ฝ์ด์จ ๋ค์, ์ด๋ฅผ ์ ์ฅํ ํ์ผ ์ด๋ฆ๊น์ง ๋ฐ์์ฃผ๋ฉด ์ค๋น๋ ๋๋ฉ๋๋ค.
์ด์ firmware์์ ํ์ผ ๋ด์ฉ์ ์ฝ์ด์ฌ 2๊ฐ์ squashfs์ jffs ์ ๋ณด๋ก ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด๋ก๋๋ค.
์ฐ๋ฆฌ๊ฐ ํ๊ณ ์ ํ๋ ์๋ณธ firmware์์ ๊ฐ file system ๋ด์ฉ์ ์ฝ์ด์ ๋ณ๋์ ํ์ผ๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ firmware_segments ์์ ๋ฃ์ด๋ file system ์ ๋ณด๋ฅผ ํ๋์ฉ ๊บผ๋ด๋ณด๋ฉด์
์๋ณธ์ผ๋ก๋ถํฐ offset์์ size๊น์ง ๋ด์ฉ์ ๊ธ์ด์ ํ์ผ์ ์์ฑํ ๊ฒ๋๋ค. (ํ์ผ ์ด๋ฆ์ name ๊ฐ์ด ๋๊ฒ ์ฃ ?)
์ฐ๋ฆฌ๊ฐ ์์ฑํ python ์ฝ๋๋ "firmware ํ์ดํค์ณ! ์ฌ๊ธฐ๋ถํฐ ์ ๊ธฐ๊น์ง ๋ด์ฉ ์ฝ์ด์!" ๋ผ๋ ๋๋์ผ๋ก
unpack ์ด๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฃผ์ด์ง ํ์ผ์ ์ฝ๊ธฐ ๋ชจ๋๋ก ์ด๊ณ
์ฝ์ด์จ ๋ด์ฉ์ ๊ทธ๋๋ก ๋ฒ ๊ปด ์ธ ํ์ผ๋ ํ๋ ์ด์ด์ค๋๋ค. (๊ฐ๋จํ ๋ณต์ฌ๋ณธ์ด๋ผ ๋ถ๋ฅด๊ฒ ์ต๋๋ค.)
๊ทธ๋ฐ ๋ค์, offset์ผ๋ก ์์ ์์น๋ฅผ ์ฐพ์ size๋งํผ ์ฝ์ด ๋ณต์ฌ๋ณธ์ด ๋ ํ์ผ์ ์ ์ด์ฃผ๋ ๊ฒ๋๋ค.
์ด๋ ๊ฒ ์์ฑํ ์ฝ๋์ ์คํ ๊ถํ์ ๋ถ์ฌํ ๋ค์, ์๋์ ๊ฐ์ด ์ ๋ ฅํ์ฌ file system์ ๊ฐ๊ฐ์ ํ์ผ๋ก
๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
์ฝ๋๋ฅผ ์คํํ๊ณ ๋๋ฉด..! ์ฑ๊ณต์ ์ผ๋ก file system ๋ด์ฉ๋ง ๋ฝ์์จ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
์ด์ ๊ฐ ํ์ผ๋ก๋ถํฐ file system์ ์ถ์ถํด๋ด๊ธฐ๋ง ํ๋ฉด ๋๋๋ฐ์,
Squashfs์ jffs2๋ ์๋ก ๋ค๋ฅธ file system์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ ๋ช ๋ น์ด๋ ๋น์ฐํ ๋ค๋ฆ ๋๋ค!
5_) ๊ฒฐ๊ณผ ๋น๊ต
์ฌ๊ธฐ๊น์ง ์งํํ์ จ๋ค๋ฉด ์ฌ์ง๊ณผ ๊ฐ์ด file system์ด ์ถ์ถ๋ directory 3๊ฐ๋ฅผ ํ์ธํ์ค ์ ์์ผ์ค ๊ฒ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ฐ directory์ ๋ด์ฉ๋ฌผ์ ํ์ธํด ๋ณด์ฃ !
์ง ! ์ด๋ค๊ฐ์!? ๋ญ๊ฐ ์ต์ํ์ง ์์ผ์ ๊ฐ์??
์์ binwalk๋ก file system์ ์ถ์ถํ์ ๋์ ๋์ผํ ๊ฒฐ๊ณผ์์ ๋์น์ฑ์ จ์ ๊ฒ๋๋ค!
๋น์ฐํ์ฃ ! ๊ฐ์ firmware์์ ์ถ์ถํ file system์ด๋๊น์ ๐
"๊ฒฐ๊ณผ๋ฌผ์ด ๊ฐ์ผ๋ฉด ๊ทธ๋ฅ ํธํ๊ฒ binwalk ์ฐ๋ฉด ๋์์์!?" ๋ผ๊ณ ํ์๊ฒ ์ง๋ง
์์์ ์์ฑํ python code๋ ์ด๋ป๊ฒ ํ์ฉํ๋๋์ ๋ฐ๋ผ ๊ต์ฅํ ์ ์ฉํ ์ํฉ์ ๋ง์ฃผํ๊ฒ ๋ ์ง๋ ๋ชจ๋ฆ ๋๋ค.
์ค์ ๋ก ์ฐ๋ฆฌ๋ ์์ฑํ ์ฝ๋๋ก file system๋ง ๋ฝ์๋์ผ๋๊น์!
๋ง์ฝ 3๊ฐ ๋ชจ๋ ์ถ์ถํ์ง ์๊ณ ๋ฑ ํ๋๋ง ๋ฝ์๋ด๊ณ ์ถ์๋ค๋ฉด ์ด๋ ์๊น์?
๊ทผ๋ฐ ๊ทธ๊ฒ firmware ์ค๊ฐ์ ์์นํ๋ค?
dd command๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์ํ๋ ์์น์ ๋ด์ฉ๋ง ๋ณต์ฌํ ์๋ ์์ง๋ง block size๋ฅผ ์ง์ ํ๊ณ
์๋ง์ ํฌ๊ธฐ๋ก ๊ณ์ฐํ๋ ๊ฒ ์๊ทผํ ๋จธ๋ฆฌ๊ฐ ์ํ๋๋ค.. ๊ทธ๋์ ์ข ๋ ์ฝ๊ฒ ์ํ๋ ๋ด์ฉ๋ง ์ป์ด๋ผ ์ ์๋
๋ฐฉ๋ฒ์ ์์๋๋ฉด ์ข๊ฒ ๋ค ์ถ์ด python code๋ก ๊ฐ์ ธ์ ๋ณธ ๊ฒ๋๋ค!!
์ด๋ ๊ฒ ํด์ ์ค๋์ file system์ด ์ฌ๋ฌ ๊ฐ๋ก ๋ค์ด์๋ firmware๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ํ๋ ๋ด์ฉ๋ง
์ถ์ถํด๋ด๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์์ต๋๋ค. ๊ฒฐ๊ณผ๋ฌผ์ ๊ฐ์๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ๊ตฌ์ฌํ ์ค ์๋ค๋ ๊ฑด ์ข์ ๊ฑฐ๋๊น์!
์ด POST๊ฐ ์ฌ๋ฌ๋ถ๊ป ์กฐ๊ธ์ด๋ผ๋ ์ ์ตํ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ ์ค๋ ๋ด์ฉ์ ์ฌ๊ธฐ์ ๋ง์น๊ฒ ์ต๋๋ค. ๐๏ธ
(๋ง์ฝ ์ฒซ ๋ฒ์งธ Squashfs๋ง ์ถ์ถํ๊ณ ์ถ๋ค๋ฉด ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์์ ํ๋ฉด ๋ ๊น์? ๐ค)
Last updated