Firmware Analysis Report
- ๋ถ์ ๋์: ๊ตญ๋ด ์ค์๊ธฐ์
(SyncView) IP ์นด๋ฉ๋ผ ํ์จ์ด (
74.2.64.31-libPPPP_API_20160721.bin) - ๋ชจ๋ธ๋ช
:
SVR-700A - ์ด๋ฆ: ๊น๋ณ์ค
- ํ๋ฒ: 2021024057
- ์์ฑ์ผ: 2025๋ 11์ 23์ผ
1. ๋ถ์ ๋์ ํ์จ์ด ๋ฐ ๋ค์ด๋ก๋ ๊ฒฝ๋ก
๋ณธ ๋ณด๊ณ ์์์๋ ๊ตญ๋ด ์ค์๊ธฐ์
(SyncView)์์ ํ๋งค๋ IP ์นด๋ฉ๋ผ ๋ชจ๋ธ(SVR-700A)์ ๊ณต์ ์
๋ฐ์ดํธ ํ์ผ์ธ 74.2.64.31-libPPPP_API_20160721.bin์ ๋ถ์ ๋์์ผ๋ก ์ ์ ํ์๋ค. ํด๋น ํ์ผ์ ์ ์์ฌ ์๋ฃ์ค/๋ค์ด๋ก๋/ํ๋ก๊ทธ๋จ ํ์ด์ง์์ ๋ค์ด๋ก๋ํ ์ ์์์ผ๋ฉฐ,
http://syncview.co.kr/atboard.php?lm=64&grp1=support&grp2=download&sch_tab_option=2&page_uid=67
ํ์ฅ์๋ .bin์ด์ง๋ง ์ค์ ๋ก๋ ZIP ๊ธฐ๋ฐ์ ์์ถ ํ์ผ์์ ํ์ธํ ์ ์์๋ค.
2. ๋ถ์ ์ ์ฐจ (Procedure)
2.1 ํ์ผ ์๋ณ (File Identification)
์ฒ์์๋ ํ์ฅ์๊ฐ .bin์ด์์ผ๋, ๋ด๋ถ ํค๋์ PK\x03\x04 ์๊ทธ๋์ฒ๊ฐ ์กด์ฌํด ZIP ๊ตฌ์กฐ๋ก ๋์ด์์์ ํ๋จํ์๋ค.
[์คํฌ๋ฆฐ์ท ์ฒจ๋ถ 1: binwalk ๋๋ file ๋ช ๋ น ๊ฒฐ๊ณผ]
์ดํ ํ์ฅ์๋ฅผ .zip์ผ๋ก ๋ณ๊ฒฝํ ๋ค ์์ถ ํด์ ๋ฅผ ์๋ํ๋ ๋ฐฉ์์ผ๋ก file system์ ์ถ์ถํ ์ ์์๋ค.
2.2 ํ์ผ ์์คํ ์ถ์ถ (Filesystem Extraction)
ํ์จ์ด ์์ถ ํด์ ๊ฒฐ๊ณผ, ๋ค์๊ณผ ๊ฐ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ์ธํ ์ ์์๋ค.
/init
โโ ipcam.sh
/system
โโ bin
โ โโ encoder
โ โโ gmail_thread
โ โโ jpeg
โ โโ daemon.v5.14
โโ drivers (๋น์ด ์์)
โโ lib (๋น์ด ์์)
/www (๋น์ด ์์)
/Wireless (๋น์ด ์์)
์ด๋ linux ๊ธฐ๋ฐ IP ์นด๋ฉ๋ผ ํ์จ์ด์์ ํํ ๋ฐ๊ฒฌ๋๋ ๊ตฌ์กฐ์ด๋ฉฐ, ์น UI, ์ค์ ํ์ผ, ์ด๊ธฐํ ์คํฌ๋ฆฝํธ ๋ฑ์ด ํฌํจ๋์ด ์์๋ค.

- ํ์จ์ด๊ฐ ์ต์ข
์ ์ผ๋ก ํธ์ง๋ ๋ ์ง๊ฐ
2016๋ 7์ 21์ผ๋ก ํ์ธ๋์ด, ํด๋น ์ ํ์ ํ์ฌ๋ ๋์ด์ ํ๋งค๋์ง ์๋ ๋จ์ข ๋ ์ ํ์ผ๋ก ์ถ์ ๋๋ค.
3. ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ๋ถ์ (Directory Hierarchy Analysis)
3.1 /init/
ipcam.sh ํ๋๋ง ์กด์ฌํ๋ฉฐ, ์นด๋ฉ๋ผ ๋ถํ
์ ์คํ๋๋ ์ด๊ธฐํ ์คํฌ๋ฆฝํธ๋ก ์ถ์ ๋๋ค. ๋ถํ
๊ณผ์ ์์ ๋คํธ์ํฌ ์ค์ , ํ๋ก์ธ์ค ์์, ์ฅ์น ์ด๊ธฐํ ๋ฑ์ ๋ด๋นํ์ ๊ฒ์ผ๋ก ํ๋จ๋๋ค.
3.2 /system/bin/
์ค์ง์ ์ผ๋ก ์ฅ์น์ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ํต์ฌ ์คํํ์ผ๋ค์ด ์ด ๋๋ ํ ๋ฆฌ์ ์ง์ค๋์ด ์๋ค๊ณ ํ ์ ์๋ค.
encoder: ์์ ์ธ์ฝ๋ฉ + ์น ์๋ฒ + ๊ณ์ ์ธ์ฆ ๋ฃจํด๊น์ง ํตํฉ๋ ๋ฉ์ธ ๋ฐ์ด๋๋ฆฌdaemon.v5.14: ๋ฐฑ๊ทธ๋ผ์ด๋ ์๋น์ค ๊ด๋ฆฌjpeg:JPEG์ฝ๋ฑ ๊ธฐ๋ฅgmail_thread: ์ด๋ฉ์ผ ์๋ฆผ ๊ธฐ๋ฅ
์ด ๋๋ ํ ๋ฆฌ ๋ด๋ถ์ encoder๊ฐ ๋ถ์์ ํต์ฌ์ด๋ฉฐ, ์ค์ ๋ก ๋ฌธ์์ด ๋ถ์ ๊ฒฐ๊ณผ ํ๋์ฝ๋ฉ๋ root ๊ณ์ ์ ๋ณด๊ฐ ์กด์ฌํ์๋ค.
3.3 /system/drivers, /system/lib
๋ ํด๋๋ ์กด์ฌ๋ง ํ๊ณ ํ์ผ์ด ๋น์ด ์์. ์ด๋ ํด๋น ์ฅ์น ์ปค๋์ด๋ ๋๋ผ์ด๋ฒ๊ฐ ๋ณ๋์ ํํฐ์ ์ ์กด์ฌํ๊ฑฐ๋ ROM์ ๋ด์ฅ๋ ํํ์์ ์๋ฏธํ๋ค.
3.4 /www/, /Wireless/
๋ ๋๋ ํ ๋ฆฌ๋ ๋น์ด ์์๋ค. ๋ณดํต IP ์นด๋ฉ๋ผ ํ์จ์ด์์๋ /www/ ๋ด๋ถ์ HTML/JS/CGI ์น UI๊ฐ ์กด์ฌํ ์ ์์ง๋ง, ๋ณธ ํ์จ์ด์์๋ ์ด๋ฌํ ์น UI ์์๊ฐ ์ ๋ถ encoder ๋ฐ์ด๋๋ฆฌ ๋ด๋ถ์ ํตํฉ๋ ํํ๋ก ๊ตฌ์ฑ๋์ด ์์์ด ํ์ธ๋์๋ค.
์ด๋ ์ ์กฐ์ฌ๊ฐ ์ ์ฅ ๊ณต๊ฐ์ ์ค์ด๊ธฐ ์ํด ์น UI๋ฅผ ๊ฐ๋ณ ํ์ผ์ด ์๋ ๋ด์ฅ๋ ์น์๋ฒ ์ฝ๋(embedded web server)๋ก ์ฒ๋ฆฌํ ๊ตฌ์กฐ์ด๋ค.
4. ํ๋์ฝ๋ฉ๋ ์ ๋ณด ๋ถ์ (Hardcoded Credentials Analysis)
๋ณธ ๋ถ์์ ํต์ฌ์ ํ์จ์ด ๋ด๋ถ์ ํ๋์ฝ๋ฉ๋ ๊ณ์ ยทํจ์ค์๋ยท๊ทธ ํด์๊ฐ์ด ์กด์ฌํ๋์ง ํ์ธํ๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ํด strings ๋ช
๋ น์ผ๋ก ์คํ ๋ฐ์ด๋๋ฆฌ ๋ด๋ถ ๋ฌธ์์ด์ ์ถ์ถํ์๋ค.
4.1 /system/system/bin/encoder ๋ฌธ์์ด ๋ถ์
๋ฌธ์์ด ์ถ์ถ ๊ฒฐ๊ณผ, ๋ช
๋ฐฑํ root ๊ณ์ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์์ ํ์ธํ์๋ค.
๋ฐ๊ฒฌ๋ hard-coded๋ /etc/passwd ์ ๋ณด
/etc/passwd
root:vRNT.4lCplkng:0:0:Adminstrator:/:/bin/sh
- ์ด๋ ์ฅ์น์ root ๊ณ์ ์ด ๊ณ ์ ๋ ๊ฐ์ผ๋ก ํ์จ์ด์ ํฌํจ๋์ด ์์์ ์๋ฏธํ๋ฉฐ,
ํจ์ค์๋ ํด์(vRNT.4lCplkng)๋ ํน์ ํด์ ์๊ณ ๋ฆฌ์ฆ(์ฃผ๋ก DES ๊ธฐ๋ฐcrypt()ํจ์)์ผ๋ก ์ํธํ๋ ๊ฐ์ด๋ค. - ์ฌ๊ธฐ์ ์์ ๋ ๊ธ์(
vR)์ salt๊ฐ์ ํด๋นํ๋ค. - ๋จ๋ฐฉํฅ ์๊ณ ๋ฆฌ์ฆ์ ์ํด hash๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ณตํธํํ์ฌ ์๋ password๋ฅผ ์ง์ ์ป์ด๋ด๊ธฐ์๋ ์ด๋ ค์์ด ์์๋ค.
- 4์๋ฆฌ ์ซ์(
0000~9999)๋ฅผ Brute-force ๋ฐฉ์์ผ๋ก ์๋ํด๋ดค์ผ๋ ์คํจํ์๋ค. - 6์๋ฆฌ ์ซ์(
000000~999999)๋ฅผ Brute-force ๋ฐฉ์์ผ๋ก ์๋ํด๋ดค์ผ๋ ์คํจํ์๋ค. - ๋ค๋ง, ํด๋น ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ฌ๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์ค๋๋ ๋ฐฉ์์ ์ทจ์ฝํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๋ ค์ ธ ์๊ธฐ ๋๋ฌธ์, ์ ์ถ๋ password ๊ธฐ๋ฐ์ dictionary attack์ ์๋ํ๋ค๋ฉด ์๋ password๋ฅผ ์์๋ผ ๊ฐ๋ฅ์ฑ๋ ์๋ค.
- 4์๋ฆฌ ์ซ์(
4.2 ์ธ๋ถ ์๋ฒ๋ก username/password๋ฅผ ํ๋ฌธ ์ ์กํ๋ ์ฝ๋ ๋ฐ๊ฒฌ
encoder ๋ฐ์ด๋๋ฆฌ์๋ ์๋์ ๊ฐ์ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์์๋ค.
GET /api/userip.asp?username=%s&userpwd=%s&vertype=924 ...
GET /api/v2/ddns?ddnsname=%s&ddnspwd=%s ...
์ด๋ ์ฌ์ฉ์ ๊ณ์ ์ ๋ณด(username/password)๋ฅผ ํ๋ฌธ์ผ๋ก ์ธ๋ถ ์๋ฒ๋ก ์ ์กํ๋ ์ฝ๋์ด๋ฉฐ, ๋ณด์์ ์ผ๋ก ๋งค์ฐ ์ํํ ์ค๊ณ์ด๋ค.
- HTTPS๊ฐ ์๋ HTTP ์ฌ์ฉ โ ์ค๊ฐ์ ๊ณต๊ฒฉ์ ์ทจ์ฝ
- ์ธ์ฆ ์ ๋ณด ํ์ทจ ๊ฐ๋ฅ
- DDNS ์๋ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ์ ์ธ๊ณ IP์บ ๊ณ์ ์ ์ ์ถ ์ํ
4.3 admin ๋ฌธ์์ด ์กด์ฌ
encoder.txt์๋ admin ๋ฌธ์์ด์ด ๋ค์ ๋ฑ์ฅํ๋ค. ์ด๋ ์น UI ๊ธฐ๋ณธ ๊ณ์ ์ด admin์ผ ๊ฐ๋ฅ์ฑ์ด ๋์์ ์์ฌํ๋ค.
5. ๋ณด์์ ํจ์ (Security Implications)
๋ณธ ํ์จ์ด๊ฐ ๊ฐ์ง๋ ๋ณด์ ์ทจ์ฝ์ฑ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
5.1. ๋ฃจํธ ๊ณ์ ์ด ํ์จ์ด์ ๊ณ ์
ํ์จ์ด ๋ด๋ถ์ root ๊ณ์ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ด, ํ์จ์ด ์ ์ถ ์ ๋๊ตฌ๋ ํด์๋ฅผ crackingํด ์ฅ์น ๊ด๋ฆฌ์ ๊ถํ์ ํ์ทจํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
5.2. ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๊ฐ ํ๋ฌธ์ผ๋ก ์ ์ก๋จ
username/password๊ฐ HTTP GET ์์ฒญ์ ์ง์ ํฌํจ๋์ด ์์ด, ์ํธํ๋์ง ์์ ์ฑ ์ธ๋ถ๋ก ์ ์ถ๋๋ค.
5.3. ๊ธฐ๋ณธ admin ๊ณ์ ์ด ์ ๊ฑฐ๋์ง ์์
์น UI ๋ด๋ถ์์ ๊ธฐ๋ณธ ๊ณ์ (admin)์ด ์กด์ฌํ๋ ๊ฒ์ผ๋ก ํ์ธ๋๋ฉฐ, ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ๊ฐ์ ๊ธฐ๋ฅ๋ ์กด์ฌํ์ง ์๋๋ค.
5.4. ๋ฐ์ด๋๋ฆฌ ๋ด๋ถ์ ์ธ์ฆ ๊ด๋ จ ๋ฌธ์์ด์ด ๋ ธ์ถ
๋ฌธ์์ด ๋ถ์๋ง์ผ๋ก ๊ณ์ ๊ด๋ฆฌ ๊ตฌ์กฐ, CGI ํธ์ถ ๋ฐฉ์, DDNS ์ธ์ฆ ๋ฃจํด์ด ๋ชจ๋ ๋ ธ์ถ๋๋ ๊ตฌ์กฐ๋ก reverse engineering์ ์ง๋์น๊ฒ ์ทจ์ฝํ๋ค.
6. ๊ฒฐ๋ก (Conclusion)
์ด๋ฒ ๋ถ์์ ํตํด ํ์ธํ ๋ฐ,
- ํ์จ์ด๋
ZIP๊ธฐ๋ฐ์ผ๋ก ํจํค์ง๋์ด ์์ด ์์ถ ํ๋ก๊ทธ๋จ๋ง์ผ๋ก file system์ ์ถ์ถํ ์ ์์์. - encoder ๋ฐ์ด๋๋ฆฌ ์์
rootํ๋์ฝ๋ฉ ๊ณ์ ์ด ์กด์ฌํ์์. username/password๋ฅผ ํ๋ฌธ์ผ๋ก ์ธ๋ถ ์๋ฒ๋ก ์ ์กํ๋ ์ทจ์ฝ ์ค๊ณ๊ฐ ์กด์ฌํ์์.- ์น UI ๊ธฐ๋ฐ admin ๊ณ์ ํ์ ์ด ๋ค์ ํฌ์ฐฉ๋จ.
- ์ข ํฉ์ ์ผ๋ก, ๋ณด์ ์์ค์ด ๋ฎ๊ณ ์ฌ์ฉ์ ์ ๋ณด ๋ณดํธ ์ธก๋ฉด์์๋ ์ํ์ฑ์ด ์๋ค.
์ด์์ผ๋ก, ๋ณธ ํ์จ์ด๋ ๋ณด์์ ์ผ๋ก ์ทจ์ฝํ๋ฉฐ ํ๋์ฝ๋ฉ ๊ณ์ ยทํ๋ฌธ ์ธ์ฆ ์ ๋ณด ์ ์ก ๋ฑ ์ฌ๊ฐํ ๊ตฌ์กฐ์ ๋ฌธ์ ๊ฐ ์กด์ฌํจ์ ํ์ธํ ์ ์์๋ค.

