GN⁺: 삼성 WB850F 펌웨어 리버스 엔지니어링
(op-co.de)삼성 WB850F 펌웨어 리버스 엔지니어링
WB850F_FW_210086.zip - 외부 컨테이너
- WB850F는 삼성에서 iLauncher 애플리케이션을 중단한 후에도 펌웨어와 지원 파일을 계속 제공하는 몇 안 되는 모델 중 하나임.
- WB850F_FW_210086.zip 아카이브에는 여러 파일이 포함되어 있음:
-
GPS_FW/BASEBAND_FW_Flash.mbin
: 데이터 -
GPS_FW/BASEBAND_FW_Ram.mbin
: 데이터 -
GPS_FW/Config.BIN
: 데이터 -
GPS_FW/flashBurner.mbin
: 데이터 -
FWUP
: ASCII 텍스트, CRLF 라인 종결자 포함 -
partialImage.o.map
: ASCII 텍스트 -
WB850-FW-SR-210086.bin
: 데이터 -
wb850f_adj.txt
: ASCII 텍스트, CRLF 라인 종결자 포함
-
-
FWUP
파일은 펌웨어 테스트/자동화 모듈을 위한 스크립트인 "upgrade all" 문자열을 포함하고 있음. -
wb850f_adj.txt
파일은 GPS 펌웨어를 업그레이드하고 해당 파일을 삭제하는 복잡한 스크립트임.
partialImage.o.map - 링커 덤프
-
partialImage.o.map
은 30만 줄 이상의 텍스트 파일로,partialImage.o
의 링커 출력과 전체 메모리 맵을 포함하고 있음:- 예시:
-
output input virtual section section address size file
-
.text 00000000 01301444 .text 00000000 000001a4 sysALib.o
-
DevHTTPResponseStart 00321a84 000002a4
-
DevHTTPResponseData 00321d28 00000100
-
DevHTTPResponseEnd 00321e28 00000170
-
- 예시:
- 이 파일은 펌웨어 분석에 매우 유용한 정보들을 제공함.
WB850-FW-SR-210086.bin - 헤더 분석
-
WB850-FW-SR-210086.bin
파일을 binwalk로 분석한 결과, 파일 헤더(HTML, PNG, JPEG 등), VxWorks 헤더, 여러 Unix 경로 등이 발견되었으나 파티션이나 파일 시스템은 발견되지 않음. - 첫 번째 1KB를 헥스 덤프한 결과:
-
00000000: 3231 3030 3836 0006 4657 5f55 502f 4f4e 210086..FW_UP/ON
-
00000010: 424c 312e 6269 6e00 0000 0000 0000 0000 BL1.bin.........
-
00000020: 0000 0000 0000 0000 c400 0000 0008 0000 ................
-
00000030: 4f4e 424c 3100 0000 0000 0000 0000 0000 ONBL1...........
-
00000040: 0000 0000 4657 5f55 502f 4f4e 424c 322e ....FW_UP/ONBL2.
-
00000050: 6269 6e00 0000 0000 0000 0000 0000 0000 bin.............
-
- 이를 통해 파일 이름과 파티션 이름을 포함한 파티션 테이블을 재구성할 수 있음:
-
File name size offset partition name
-
FW_UP/ONBL1.bin 196 (0xc4) 0x0000800 ONBL1
-
FW_UP/ONBL2.bin 46 KB (0xb630) 0x00008c4 ONBL2
-
[WB850]DSC_5KEY_WB850 30 MB (0x1d1f438) 0x000bef4 Main_Image
-
RomFS/SPID.Rom 48 MB (0x2f4ac00) 0x1d2b32c Resource
-
FW_UP/WB850.HEX 19 KB (0x4d86) 0x4c75f2c OIS
-
FW_UP/skin.bin 36 MB (0x22fd048) 0x4c7acb2 SKIN
-
WB850-FW-SR-210086.bin - 코드 및 데이터 파티션
- 파티션 추출 도구를 사용하여 파티션을 추출한 결과:
-
ONBL1.bin
: 데이터 -
ONBL2.bin
: 데이터 -
Main_Image.bin
: OpenPGP 비밀 키 (오탐) -
Resource.bin
: MIPSEB-LE MIPS-III ECOFF 실행 파일 -
OIS.bin
: 데이터 -
SKIN.bin
: 데이터
-
-
ONBL1
과ONBL2
는 부트로더의 1단계와 2단계로 추정됨. -
Main_Image
는 실제 펌웨어로, ARM 함수 프롤로그가 다수 포함됨. -
Resource
와SKIN
은 SoC 제조업체가 제공한 UI 스킨일 가능성이 있음. -
OIS
는 광학 이미지 안정화 장치의 펌웨어일 가능성이 있음.
Ghidra에 코드 로드하기
-
ONBL1
,ONBL2
,Main_Image
파티션은 실제 ARM 코드가 포함되어 있음. -
Main_Image
를 올바른 메모리 주소에 매핑하기 위해 Ghidra에서 분석을 시작함. -
partialImage.o.map
에서 함수 이름을 로드하여 Ghidra에 매핑함.
DevHTTPResponseStart 리버스 엔지니어링
-
DevHTTPResponseStart
함수는 핫스팟 감지를 수행함. - 요약:
- HTTP 200 OK 응답 시, 서버는 "yahoo.something" 또는 "kr.yahoo.something" 도메인에 쿠키를 설정해야 함.
- HTTP 301/302/307 리다이렉트 시, URL에 "yahoo." 문자열이 포함되어야 함.
- 핫스팟 감지를 우회하기 위해, DNS 레코드를 다른 서버로 포인팅하거나 HTTP 리다이렉트를 사용하여 쿠키를 설정해야 함.
요약: 진정한 보물
- 이 분석을 통해 삼성 WB850F WiFi 카메라의 핫스팟 감지를 이해하고 우회할 수 있었음.
- 결과적으로 작은 패치를 통해 카메라가 실제로 연결되고 사진을 업로드할 수 있게 되었음.
-
Main_Image
에는 77,000개 이상의 함수가 포함되어 있어, 디지털 카메라의 작동 방식을 더 잘 이해하기 위해 탐험할 가치가 있음.
GN⁺의 의견
- 기술적 도전과 학습 기회: 이 기사는 펌웨어 리버스 엔지니어링의 실제 사례를 제공하여 기술적 도전과 학습 기회를 제공함. 초급 소프트웨어 엔지니어에게 매우 유익함.
- 보안 및 프라이버시 고려: 핫스팟 감지 우회는 보안 및 프라이버시 측면에서 중요한 고려 사항임. 이러한 기술을 사용할 때는 윤리적 측면을 항상 고려해야 함.
- Ghidra 사용법: Ghidra와 같은 도구를 사용하여 복잡한 펌웨어를 분석하는 방법을 배울 수 있음. 이는 리버스 엔지니어링 및 보안 분석에 매우 유용함.
- 펌웨어 업데이트의 중요성: 펌웨어 업데이트는 장치의 기능과 보안을 유지하는 데 중요함. 이 기사는 펌웨어 업데이트의 복잡성을 잘 보여줌.
- 다른 카메라 모델 적용 가능성: 이 기법은 다른 삼성 카메라 모델에도 적용 가능하며, 이는 다양한 장치에서 유사한 문제를 해결하는 데 도움이 될 수 있음.
Hacker News 의견
해커뉴스 댓글 모음
-
I liked this link more. Absolute astonishing firmware "crypto" fail
- 삼성 NX 카메라의 펌웨어 암호화 실패 사례를 다룬 링크를 좋아함.
-
Amazing work! Have you thought about doing a tutorial on how to do reverse engineering?
- 놀라운 작업임. 리버스 엔지니어링 튜토리얼을 만들어볼 생각이 있는지 궁금함.
-
All I want is a dSLR that, when I take a picture on the camera with its button, moments later, the image is in Apple Photos.
- 사진을 찍으면 바로 Apple Photos에 이미지가 저장되는 DSLR 카메라를 원함.
-
[dead]
- 댓글이 삭제되었음.