커스텀 펌웨어
1. 개요
Custom Firmware
전자기기에 사용되는 펌웨어(통칭 순정)를 대체하는, 자작 혹은 편집된 펌웨어를 뜻한다. 커펌, 커롬이라고 하는 경우가 흔하다. 일반적으로는 보기 어려우나, '''특히 게임기'''와 같은 특정 기기류에서 종종 찾아볼 수 있다.
스마트폰이 대중화되면서 커스텀 펌웨어 혹은 커스텀 롬이라고 하면 대부분 스마트폰의 커스텀 펌웨어를 가리키는 경우가 많다.
2. 상세
다양한 기기에 미리 세팅되어 나온다.
- 하드웨어
데스크탑, 노트북, 스마트폰, 임베디드, 인터넷공유기, TV, 모니터, 메모리드라이브 등 거의 모든 디지털장치
- 부트로더 (일부 안드로이드 기기 등지에서 보안모듈 등이나 특수기능이 덧붙은 경우 ?MB까지.)
펌웨어 다운로드/업로드, 테스트 제조사가 정의한 프로그램.
주로 SoC의 롬 플래시 메모리에 들어간다. 제조 스펙에 따라 달라짐.
주로 SoC의 롬 플래시 메모리에 들어간다. 제조 스펙에 따라 달라짐.
- 펌웨어 (일부 Iot 기기나 별도 O/S가 없는 소규모 임베디드 서버/NAS의 경우 ?GB까지. 낸드플래쉬 칩이 따로 없고 SoC 다이 자체에 Nand플래쉬를 포함하여 대략 2GB정도까지의 펌웨어를 가진 장치들도 드물게 있음.)
- 운영체제
보조 메모리에 들어간다. 커널, 드라이버, 어플리케이션, 사용자 인터페이스 등 운영체제 제조사가 정의한 프로그램 외 제조사가 고친 프로그램.
칩 회사가 만들고 공급사가 제공하며 하드웨어 제조사가 최종 만들어 넣었지만 갈아엎는것도 다운로더라는것을 이용하면 가능하다.[1] 엄연히 스팩이 정의되어있으므로 전용 다운로더가 비싼탓에 흔한 상용 임베디드 장치에 프로그래밍하여 사용한다.[2]업그레이드를 용이하게 하기위한 관리나 A/S 목적으로 대개 부트로더, 펌웨어에는 USB등 데이터 연결기반으로 다운로드/업로드가 제조사가 정의한 기반으로 구현되어있다.
SoC 칩들은 이미 메인보드에 달려서 물리적으로 접근할 단자가 없으면 재 프로그래밍 하기가 아주 어렵다.[3] 영화처럼 USB달랑 꼽아서 재 프로그래밍 하는건 제조사가 막아놓은 것을 우회할 취약점이 있을때나 가능하다. 인텔 바이오스가드처럼 펌웨어 해킹방지 목적으로 걸어둘 수 있는데 모바일 계통의 상업적 이윤을 위해서 걸어둘 수도 있다는 점을 충분히 이해해야 한다.[4]
상관없이 제조사의 하드웨어만 쓰고자 하는경우 제품을 물리적으로 손상시켜야 하며, A/S는 유상 처리된다. 그뒤로 제조사에서 제품을 출시하기전 했을 똑같은 R&D 작업을 거쳐야 한다.[5]
2.1. 모바일
퀄컴, 브로드컴 등 제조사가 공급하는 칩을 쓴다. 펌웨어를 해킹해도 취약점이 없다면 뜯어도 소용없다.
관련 기초자료는 SoC를 검색해서 찾아보면 상세한 정보를 얻을 수 있다. AP의 경우 특별한 경우가 아닌한 메모리는 별도임. 관련칩의 데이터 시트가 있어야하고 전선도 직접 연결해야한다. 그리고 잘못 연결하면 기기를 태워먹는다.
과거에는 통신사의 제한[6] 을 해제하려고 커스텀 펌웨어를 설치하는 경우가 잦았다.
3. 예시
3.1. 스마트폰
3.1.1. 안드로이드
3.1.2. iOS
iOS는 특유의 폐쇄성으로 인해 커스텀 펌웨어가 거의 없다. 그나마 iPhone 3G까지는 부트롬의 취약점으로 인해 커펌 개발이 불가능하지는 않았으나, iPhone 3GS로 오면서 애플이 부트롬을 바꿔 버리는 바람에 커스텀 펌웨어를 사용하기 위해서는 최소 iPhone 3G 또는 그 이전 기기를 갖고 있어야 했다(...)
[7]
iOS 커스텀 펌웨어는 현재 기준으로 이것 밖에 없다Whited00r라고 하려고 했으나
Project Sandcastle이라는 프로젝트로 아이폰 7 한정으로 안드로이드는 설치가 아예 불가능하다라는 말은 옛말이 되었다.단 실사용은.........[8]
그런데
openiBoot가 아이폰 3GS 그 이상의 기기를 지원하면서 이제 다시 가능하게 되었다.
하지만 애플이 호환 명령어 세트를 사용하기 전의 CPU(Apple-A5)까지만 사용 가능하다.
3.1.3. 기타
국내 초창기에 노키아 5800 같은 심비안 OS 기종도 관련 인터넷 커뮤니티를 중심으로 커스텀 펌웨어가 만들어진 적이 있다. 오버클럭과 스크롤 향상, 테마 설치 등이 있다.
터치 다이아몬드, 옴니아 시리즈, 엑스페리아 X1등. 윈도우 모바일 기기들도 커펌이 꽤나 활성화됐었다. 윈도우 모바일 6.5 업데이트가 실시되지 않은 터치 다이아몬드나 엑스페리아 X1에 6.5를 올린다던가, 옴니아 2에 센스 UI를 올린다든가. OS의 특성상 안드로이드도 포팅할 수 있다. 제일 유명한 것은 일명 '후덜이'로 불린 HTC HD2이며 무려 안드로이드 킷캣버전도 포팅되었다. 엑스페리아 X1도 CM7까지 포팅되었다.
또한 구조상 커롬이 어려웠던 Windows Phone(Windows 10 Mobile) 계열에서도 루미아 950 XL에 한해 ARM에 포팅된 Windows 10 Pro를 설치할 수 있게 되었다! UEFI 위에 또 UEFI를 올리는, 즉 부팅이 두 번 되는 방식으로 만들었다. 정확히는 순정 UEFI를 전원용으로 불러온 후 커롬용으로 제작된 UEFI를 또 돌린다. 드라이버도 x86 에뮬레이션에 쓰인 개발킷에 있던 것을 넣었기 때문에 PDA마냥 사용이 가능한 것이다. 다만, 우측 하단에 '테스트 모드 Windows 10 Pro' 같은 문구가 들어간다는 게 거슬리긴 하다.
3.2. PlayStation Portable
3.3. PlayStation Vita
커스텀 펌웨어는 아니지만, 펌웨어의 취약점을 공격하여 인증되지 않은 홈브류를 구동 가능하게 하는 해킹이 존재한다.
3.4. 닌텐도 DSi
닌텐도 DSi도 커스텀 펌웨어가 존재한다. 흔히 닥터라고 불리는 게임 백업 디바이스를 사용하기 매우 쉬운 특수한 환경 탓에 3DS에 비해 비교적 늦게 커스텀 펌웨어가 나왔다. hiyaCFW등이 유명하다.
영문가이드
HiyaCFW설치
대충 작동 순서는 취약점 공격으로 홈브류 실행 → 낸드플래시 백업 → 낸드 백업파일 변조 → 내장 NAND를 SD 카드로 대체 후 동작 순으로 작동된다. 취약점은 Flipnote Lanny를 사용한다. Flipnote에서 SD 카드 안에 파일을 불러올수 있는 방법으로 비 정상적인 코드를 Flip노트에 적용시키므로서 다른 홈브류를 실행시킬 수 있도록 한다. 자세한 것은 HiyaCFW설치를 참조.
3.5. 닌텐도 3DS
[image] 커펌된 일판 닌텐도 3DS.
과거 DS에서 성행하던 닥터를 거의 막아 놔서 커스텀 펌웨어가 빨리 풀렸다. 닌텐도 3DS의 경우 기기에 사용되는 SD 카드를 사용해 게임, 브라우저 등의 취약점[9] 을 이용하여 홈브류를 구동시키면 커펌하는 것이 가능해진다.
커스텀 펌웨어를 설치하면 지역코드 해제는 물론, 홈브루를 통해서 수많은 게임, 브라우저의 사용이 가능하며, 콘솔을 커펌하는 가장 큰 목적인 불법 복제(...)도 당연히 가능하다. 아예 정품 카트리지의 롬이나 세이브 파일을 배포 가능한 상태로 덤프하는 홈브루 툴까지 있다. [10]
커스텀 펌웨어로는 rxTools, CakesFW, Luma3DS 등이 있으며[11] Decrypt9WIP이나 Hourglass9 등으로 카트리지를 덤프하는 것도 가능하게 된다.
Luma3DS를 설치할 경우에는 boot9strap을 이용하여 시스낸드에 커펌을 설치해 최신 버전으로 업데이트하더라도 커스텀 펌웨어를 계속 사용할 수 있게 하는 것이 일반적이다.
닌텐도 측에서는 이를 막기 위해 시스템 업데이트를 통해서 커스텀 펌웨어를 자주 막고 있다. 때문에 3DS는 의외로 상당히 강력한 보안을 지니게 되었는데, 오래된 펌웨어와 현재 펌웨어를 살펴보면 정말 차원이 다른 보안체계의 진화가 이루어져 있다. 닌텐도 측에서 NDS 시절 한 번 호되게 당한 경험을 살려서 커스텀 펌웨어 분야도 제대로 방지하려는 움직임을 보이고 있다고 한다. 하지만 닌텐도 스위치도 결국 뚫려 버렸다.
10.x.x 버전대의 기기들은 ARM11 취약점을 통해서 9.4버전으로 다운그레이드 가능했다. 3DS는 펌웨어 또한 하나의 애플리케이션으로 취급하기 때문에 설치, 삭제, 재설치 등등이 모두 가능했는데, 이를 통해서 특정 버전의 펌웨어 파일을 '''설치'''하는 것이 가능했다. 그러나 11.0.0 버전에서는 10.x.x 버전대에서 사용되던 ARM11 취약점까지 수정해 버렸다.
reddit의 /r/3dshacks 판에서 활동하는 3ds 콘솔 해커들이 많은데, 이들의 정보에 따르면 이미 11.1.0 버전의 다운그레이드 방법은 구현이 되었다고 한다. 3DS 두 대를 가지고 진행했던 방법을 1대만 가지고도 할 수 있게 개조한 것인데, DSiWare의 취약점을 11.1.0 버전에서 사용할 수 있었다고 한다. 이들은 크리스마스 즈음에 열리는 33c3에서 이를 공개하려고 준비 중이었는데 그 전에 닌텐도 측에서 공개한 11.2.0 버전에서 이미 이 방법을 막아버렸다고 한다(...). 2016년 11월 21일 33c3의 일정이 공개되었는데 이 중 Console Hacking 2016이라는 프리젠테이션에서 3DS 해킹의 거장들인 smea, derrek, Ned Williamson, naehrwert 등이 참여해서 최신 3DS 보안에 대해서 설명했다. 지금까지 가장 활발한 활동을 보인 해커인 plutoo의 경우에는 이번 취약점을 발견하는데 핵심 역할을 하지 않았기 때문에 당시 프리젠테이션에 참가하지 않았다.
버전 11.0.0 이상에서 다운그레이드하려면 몇몇 DSiWare 게임이 필요했는데, 이들 중 대부분이 닌텐도 e숍에서 모습을 감추었다. 2015년도의 32c3의 프레젠테이션 이후 닌텐도 3DS의 커스텀 펌웨어 시장이 폭발적으로 증가했던 만큼, 33c3이 코앞으로 다가온 시점에서 나름대로의 대비를 했던 것으로 보인다. 북미 e숍 기준으로 현재 취약점 실행이 가능한 DSi웨어는 Legends of Exidia밖에 남지 않았었는데, 사람들이 이것마저 e숍에서 사라지기 전에 다들 급하게 구매한 바람에 해당 게임은 발매된 지 7년 후에 뜬금없이 베스트 셀러 랭킹 30위까지 올라갔었다(...).
현재는 모든 DSiWare 게임이 뚫린 듯 보이며, 한국 정발 3DS도 펌웨어 버전 11에서 다운그레이드할 수 있을 것으로 보인다. 원래는 몇몇 DSiWare에서만 가능했는데, 그 DSiWare들이 모두 한국 e숍에는 없는 게임들이어서 버전 11에서의 다운그레이드는 해외 3DS에서만 가능했다.
2017년이 되지마자 모든 국가의 11.1/2/3 버전에서 사용 가능한 새로운 Arm9 익스플로잇인 Safehax가 발표되었다. Waithax(Slowhax), Fasthax(upspoit), Svchax 등으로 Arm11 커널 접근 권한을 얻은 후 사용할 수 있다. DSiWare를 사용하지 않고도 홈브류에서 바로 기동하여 커스텀 펌웨어까지 설치할 수 있는 것이다.
2017년 4월에 닌텐도 3DS의 펌웨어가 11.4.0로 버전업함에 따라 Soundhax 등 (치명적인) 취약점이 대부분 패치됨과 동시에 doodlebomb와 11.4에서 접속가능한 ninjhax가 출시되었다.
ntrboothax가 출시되면서 기기의 버전과 관계없이 커스텀 펌웨어 설치가 가능해졌다. 다만, 특정한 닥터 카트리지를 요구하기에 어느 정도 준비물은 필요. ntrboothax를 설치하는 방법은 ds, ds lite, dsi를 사용하는 방법과 3ds를 이용하는 방법이 있다.
NTRcardHax flasher여기, DS 플래시 카트리지호환되는 카트리지는 이 곳을 참고(영어)
2018년 8월 기준 Luma3ds를 사용할 때 업데이트 후 아래와 같이 '''소프트브릭이 걸리는''' 현상이 있었으나, 루마 9.1 버전이 나와서 해결되었다.
[image]
11.9 업데이트 이후 DSiWare의 취약점을 이용해서 이숍에서 아무 DSiware 게임 구매 후 fredtool을 이용해 bin 파일을 수정시키는 방식으로 DSi 인터넷설정에 들어가면 DSi플립노트를 실행시키고 특정 파일에다 몇 가지 복사 또는 붙여넣기 수정을 통하여 b9sinstaller에 진입해서 커펌하는 방법이 공개되었다. 상당히 쉽기 때문에 많이들 이용한다.
현재 11.13 버전 DSiWare를 구매하지 않고도 커펌하는 방법이 공개되었다. DSiWare 게임의 롬파일을 3DS로 옮겨 설치한 뒤 fredtool을 이용하는 방법인데, 상당히 쉬워서 많이 이용한다.
2020년 9월 중순 쯤 일본 닌텐도 사이트에서 해당 모델들의 상태를 생산 중지로 표기함과 동시에, 네트워크 샵 기능 조차 지원을 중단해 조용히 역사 속으로 사라지게 되었다. 이 때문인지, 해당 기기로 커스텀 펌웨어를 시도 하려는 사람들이 늘어났다.
3.6. Nintendo Switch
2018년도 초부터 Tegra X1의 Bootrom 취약점[12] 이 해커들에 의해 연속적으로 터지면서 불안 불안해 보이더니 결국 2018년 6월 18일에는 'Team Xecuter'에 의해 복돌이 가능한 최초의 커스텀 펌웨어 SX[13] 가 등장했으며, 무료로 배포되고 있는 Atmosphere는 지속적으로 개발되고 있는 중이다. 다만 워낙 일이 빠르게 진행되고 있어서 홈브류의 숫자는 대단히 적은 편이다.홈브류 모음 사이트 또한 복돌까지 가능하며 유료로 배포되고 있는 SX에 비해 Atmoshpere는 개발이 더딘 편이며 개발자인 SciresM은 복돌행위에 대해 부정적인 편.
다만 2018년 7월 경에 불가능하도록 하드웨어 패치가 되어 이후 기종들은 커스텀 펌웨어를 사용할 수 없다. 자세한 상황은 Nintendo Switch/문제점#s-3.1 참조
2020년 10월 쯤, 신형 모델도 전용 모드칩을 설치하는 개조를 거치면 커스텀 펌웨어를 이용할 수 있었으나 '''결국 닌텐도가 단단히 열이 뻗쳤는지 Team Xecuter 멤버 중 일부가 경찰에 체포되었다.'''
3.7. 디지털 카메라
캐논, 니콘, 샤오미 등 다양한 브랜드의 디지털 카메라들이 보안 취약점이나 기타 허점을 이용해 커스텀 펌웨어를 로드할 수 있다. DSLR의 경우 기본 펌웨어로는 불가능한 촬영 옵션을 제공하거나 보다 고성능의 자동 초점 기능, 영상 녹화 기능을 제공하는 것이 목표이며, 특히 매직랜턴이 유명하다. IOT 카메라의 경우 카메라의 원격 컨트롤 옵션을 추가제공하거나 스트리밍 기능, 기타 기기와의 호환성을 상승시키는 것이 목표이다.
3.8. 인터넷 공유기
인터넷 공유기의 펌웨어를 마개조해서 훨씬 다양한 기능을 추가하기도 한다. 초창기에는 Linksys의 WRT54G 모델의 커스텀 펌웨어가 유명했는데 지금은 OpenWRT https://openwrt.org/ 로 발전하여 지원하는 기종이 매우 다양해졌다. (지원 공유기 목록 http://wiki.openwrt.org/toh/start)
다만 전파법상 무선 출력이 200 mW까지 설정할 수 있다. 대부분의 공유기들은 한국 IP라면 해외직구로 샀더라도 80mW로 제한된다. 펌웨어를 조작해서 그 제한을 초과해서 출력을 높이는 것은 문제가 없으나, 그 출력 범위가 200 mW를 넘으면 전파법 위반으로 400만원~500만원의 벌금을 받을 수도 있다. 그리고 200 mW까지 출력하면 다른 가정집에서 주파수 간섭으로 고통을 받을 수 있기 때문에 단독주택 같은 곳에서 살지 않는다면 200 mW까지 올리지 않는게 좋다.
3.9. MP3 플레이어
한창 MP3 플레이어가 미니기기의 대세이던 2000년대 초~중반에는 일부 MP3 플레이어에 이러한 커스텀 펌웨어를 만드는 개발자도 있었다. 특히 코원 MP3는 들으라는 음악은 안듣고 펌웨어-UCI만 줄곧 제작하는 이들도 나올 정도로 개발 환경이 좋아 전세계적으로 네티즌들 사이에서 커스텀 콘텐츠 개발에 열풍이 돌았다. 풀스크린 터치를 지원하는 D2, S9[14] 시리즈와 이후 제품들에서 그러했는데, 워낙에 퀄리티가 좋은 것들이 쏟아져 나와 소비자들이 출시된 제품의 수명을 스스로 연장시키는 긍정적인 효과를 가져왔다. 펌웨어, UCI는 아니지만 S9는 이러한 두터운 사용자층에 힘입어 각종 유틸리티가 MP3에 내장된 어도비 플래시에서 구동될 수 있도록 포팅되었다. 단순한 플래시 게임은 물론 시중에 출시된 비주얼 노벨 게임까지 포팅되고, 심지어는 DJMAX TECHNIKA까지 단독 개발자에 의해 배포되었다.(...)
대표적인 곳으론 Rockbox 등이 있다. 구형 아이팟이나 아이리버제/코원제 HDD형 MP3 등을 작업했다. (전체 지원기기 목록) 사실 코원 같은 경우, 당시 디자인을 얼마나 효율적이고 예쁘게 하냐가 문제였지 펌웨어 자체는 제작이 쉽고 코원 측에서 가이드 자료를 배포하는 등 커스텀 문화가 조성되도록 독려하여 웬만한 중간급 이상의 유저들이라면 스스로가 전부 이것저것 시도해 본 개발자들이었다.
3.10. 자동차
내장 내비게이션 등의 펌웨어를 커스텀할 수 있다.# 이 행위를 흔히 "코딩"이라고 부른다. ECU 커스텀은 항목 참조.
[1] 완전히 해방되고 이걸 지우면 완전포멧된 백지상태가된다.[2] 루팅같이 소프트웨어적 접근이 아니라 물리적으로 고치는 작업.[3] 아마추어 임베디드 제품군은 이 단자를 종종 다른 용도로 써버려서 전문적으로 쓰지 못하는 경우도 있다.[4] 소프트웨어는 유료라는 인식을 가져야한다. 문제는 제조사의 하드웨어 판매가 주 목적이라서 돈을 내고도 소프트웨어를 업그레이드 못하거나 타사의 것으로 바꾸지 못한다.[5] 상용 개발킷이 있다.[6] SKT의 SCH-M600&PT-S8000T/PH-S8000T[7] 개발자가 포기[8] 아직 포팅중이고 버그가 아주 많다. 그리고 아이폰 7만 가능하고 유일하게 블루투스는 사용 가능하다... 이제는 와이파이도 된다! 하지만 나머지 기능은 거의 안된다고 보면 된다.[9] 3DBrew에 작성된 사용되는 홈브류 취약점 목록. '''Standalone Homebrew Launcher Exploits'''는 홈브류를 뚫을 기기 하나만 있어도 사용 가능한 취약점이며, '''Secondary Exploits'''는 이미 홈브류 취약점을 뚫은 기기가 하나 있어야 사용 가능한 취약점이다. 11.4가 나오기 전에는 11.3J/U/E에서도 사용 가능하고 오프라인에서 사용 가능하고 구/뉴다수를 지원했던 Soundhax가 각광받았지만, 11.4가 나오며 soundhax 시대는 막을 내렸다.[10] 게임에 따라 다르지만 기존 정품 카트리지의 세이브를 완전하게 삭제가 가능해진다. 특히 중고칩을 구매했으나 ABXYLR버튼을 누른채로 실행해도 세이브를 삭제할 수 없는 해외산 게임이 있기에 커펌을 사용하면 새것처럼 플레이가 가능해지는 순기능이 있긴 하다.[11] 보통 Luma3DS가 가장 많이 쓰인다.[12] 취약점을 이용해 리눅스를 설치 기동하는 영상[13] 유료 커스텀 펌웨어다. 대략 30달러 정도.[14] 요즘 학생들은 모르겠지만 D2와 S9는 거의 MP3계의 전설을 찍은 코원의 마스터피스다. 당연히 사용자가 많았으며, 특히 S9는 당시 출시된 아이팟의 대항마라고 칭송 받기도 했다.