Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
carminat-tomtom-live-re — 르노에 탑재된 NavCore 9.884(코드명 beaumont) 리버스 엔지니어링 | Kitploit
도구/GitHubGitHub/andronedev/carminat-tomtom-live-re
Embedded Systems SecurityStatic AnalysisDynamic Analysis (Sandboxing)Reverse EngineeringHardware & IoT SecurityBinary AnalysisPapers & ResearchFirmware Analysis
GitHubandronedev/carminat-tomtom-live-re

carminat-tomtom-live-re

르노에 탑재된 NavCore 9.884(코드명 beaumont) 리버스 엔지니어링

저장소 보기
116개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Carminat TomTom LIVE: 리버스 엔지니어링

르노에 탑재된 NavCore 9.884의 리버스 엔지니어링 (코드명 beaumont)
테스트 대상: Renault Laguna 3 GT Monaco GP 2012 (참고로, 정말 멋진 차입니다)

flowchart TD
    A[Carminat TomTom LIVE] --> B[Samsung S5P6440<br/>Linux 2.6.28 verrouillé]
    
    B --> C[NAND interne]
    B --> D[Carte SD externe]
    
    C --> E[Verrouillé]
    D --> F[Modifiable]
    
    E -.->|UART| G[shell root théorique ?]
    F -.->|fichiers SD| H[Personnalisations<br/>splash · menus · POI]
    
    style A fill:#5B4FBE,color:#fff
    style E fill:#A32D2D,color:#fff
    style F fill:#3B6D11,color:#fff
    style G fill:#EF9F27,color:#000
    style H fill:#1D9E75,color:#fff

목차

  1. 배경 및 목적
  2. 시스템 식별
  3. 하드웨어
  4. 펌웨어 추출
  5. 파일시스템 구조
  6. 부트 체인
  7. 프로세스 및 서비스
  8. ttn 바이너리 분석
  9. GPRS 모뎀 및 연결성
  10. SD 카드로부터의 공격 표면
  11. UART root 접근
  12. UART 없이 커스터마이징
  13. 도구 및 리소스
  14. 이 프로젝트에서의 AI 활용
  15. 법적 고지

1. 배경 및 목적

Carminat TomTom LIVE는 2009-2014년 모델(Laguna 3, Mégane 3, Scénic 3, Espace 4, Fluence, Latitude, Koleos…)에 장착된 Renault의 차량 내장 내비게이션 시스템입니다. 비-Live 버전의 Carminat TomTom과 구별되는 특징은 다음과 같습니다:

  • 펌웨어가 (SD 카드가 아닌) 내부 NAND에 저장됨
  • 실시간 서비스(교통, 날씨, 과속단속 카메라)를 위한 내장 GPRS 모뎀
  • RSA 서명되고 잠긴 부트로더
  • 커뮤니티 보고에 따르면, 커널 모듈 **signedloop**이 Merkle 트리로 rootfs의 무결성을 검증한다고 하나, 본 분석에서는 확인되지 않음 (§3 참조)

이 저장소는 NavCore 9.884 beaumont 펌웨어 분석을 문서화하며, 파일시스템 매핑, NavCore 바이너리의 정적 분석, 그리고 QEMU/strace를 통한 런타임 분석을 포함합니다.

사용된 방법론:

  • 차량에서 추출한 SD 카드를 통한 시스템 식별 (ttgo.bif, loopdir/ext3_loopback 파일 읽기)
  • 공식 TomTom CDN을 통한 펌웨어 획득 (펌웨어 추출 섹션 참조)
  • CAB에서 추출한 rootfs의 정적 분석
  • ttn 바이너리의 동적 분석(시스템 호출 strace, 열린 파일 관찰, 런타임 동작)을 가능하게 하는 ARM/Linux 환경을 재현한 QEMU 에뮬레이터 구축

차량의 물리적 장치에는 어떠한 수정도 가해지지 않았습니다. 모든 분석은 SD 카드 파일과 다운로드한 펌웨어의 사본을 대상으로 수행되었습니다.

여기에 문서화된 모든 작업은 개인 SD 카드(분석을 위해 차량에서 추출)와 TomTom CDN에서 다운로드한 공식 펌웨어를 기반으로 수행되었습니다.

📌 진화하는 문서: 이 보고서는 본 분석에서 도출된 현재 지식 상태를 나타냅니다. 향후 발견, 커뮤니티 기여, 실제 하드웨어에서의 경험적 검증을 통해 개선, 수정 또는 보강될 수 있습니다. 기여, 수정 및 피드백을 환영합니다.


2. 시스템 식별

필드값
DeviceNameTomTom Carminat LIVE
하드웨어 코드명beaumont (rev 11)
NavCore 버전9.884, 빌드 9.884.1609031
공식 릴리스NFA2.8-RC06, 2014/06/27 Dieppe에서 컴파일
Linux 커널2.6.28.10-tt1574740
툴체인gcc 4.3.3 TomTom CipherWizardry 2009q1_203-474426
LibcuClibc
Init 시스템Upstart (셸 스크립트 /sbin/init → exec /sbin/upstart 경유)

이 정보는 SD 카드의 loopdir/ext3_loopback 이미지에서 추출한 ttgo.bif와 TomTom-Cfg/release.nfo 파일에서 비롯됩니다.

# Extrait ttgo.bif
[TomTomGo]
DeviceName=TomTom Carminat LIVE
DeviceVersionHW=beaumont
ApplicationVersionVersionNumber=9884
ApplicationVersion=1609031.550
RamDiskVersion=20140626
BootLoaderVersion=839378
LinuxVersion=1574740

3. 하드웨어

구성 요소식별 정보
SoCSamsung S5P6440 (/etc/udev/rules.d/20_local-s5p6440.rules를 통해 확인됨)
CPUARM1176JZF-S · ARMv6 · 리틀 엔디언 · EABI
RAM정적 분석으로는 확인되지 않음
내부 저장소NAND 플래시 · eMMC (/dev/mmcblk0)
사용자 SD 카드/dev/mmcblk1 (접근 가능한 슬롯)
화면Samsung LCD LTA058B3L0F (DTB 기준) · 480×272
프레임버퍼/dev/fb0 · RGB16/24
GPSSiRF3 PRIMA · /dev/ttySAC2
GSM/GPRS 모뎀Wavecom WISMO218 · /dev/ttyS0
RDS-TMC 튜너BCM4750 · bcm4750_spi
블루투스내장 · hci_uart · HFP + PBAP 전용 (A2DP 없음)
터치스크린libts · /dev/input/event0

로드된 커널 모듈 (/etc/modules 발췌)

unionfs · ppp_async · ppp_generic · slhc · hidp · hid · rfcomm
sco · hci_uart · l2cap · bluetooth · bcm4750_spi · vfat · msdos
fat · evdev

⚠️ signedloop 모듈은 커뮤니티(gpspower.net)에서 rootfs.img의 무결성을 검증하는 것으로 보고되었습니다. 추출된 rootfs에서는 관찰되지 않았습니다 (/etc/modules에도, /lib/modules/2.6.28.10-tt1574740/에도 없음). 확인이 필요합니다.


4. 펌웨어 추출

4.1 공식 CAB 다운로드

펌웨어는 TomTom의 Akamai CDN에서 인증 없이 다운로드할 수 있습니다:

curl -A "TomTom HOME/2.24.11.8" -O \
  "http://download.tomtom.com/sweet/navcore/9.884.1609031_RC06.CAB-Dieppe.cab"

# SHA256 de référence
a4d32daae2cdd6bc23a0660285c4e32e3a098034731eb257172ed7aaef9052d5

사용 가능한 다른 버전 (HTTP 200 테스트 완료):

버전URL
9.844http://download.tomtom.com/sweet/navcore/9844.634510.Carminat_TomTom.cab
9.845 RC10http://download.tomtom.com/sweet/navcore/9.845_1115399_RC10.CAB-Camiron-RC10.cab
9.846 RC12http://download.tomtom.com/sweet/navcore/9.846_1165624_RC12.CAB-Camiron-RC12.cab
9.847 RC14http://download.tomtom.com/sweet/navcore/9.847.1302316_RC14.CAB-Camiron-RC14.cab
9.884 RC06http://download.tomtom.com/sweet/navcore/9.884.1609031_RC06.CAB-Dieppe.cab

4.2 CAB 추출

brew install cabextract  # macOS
mkdir extracted && cabextract 9.884.1609031_RC06.CAB-Dieppe.cab -d extracted/
ls extracted/
# → splashw.bmp  ttsystem  TomTom-Cfg/release.nfo

ttsystem은 비-Live 버전과 달리 ext2 이미지입니다(TTBL이 아님).

4.3 전체 rootfs 추출

cd extracted/
mkdir rootfs && 7z x ttsystem -o rootfs/

# Le rootfs réel est dans userfs_partition.tar.gz
cd rootfs/
tar xzf userfs_partition.tar.gz

# Contenu :
# _zImage       → Linux kernel ARM zImage
# rootfs.img    → filesystem Linux complet (ext2, 67 MB)
# WISMO218_*.cla → firmwares modem

mkdir rootfs_mnt
# Sur Linux :
sudo mount -o loop rootfs.img rootfs_mnt/
# Sur macOS (lecture seule) :
7z x rootfs.img -o rootfs_mnt/

4.4 추출된 펌웨어의 구조

rootfs_mnt/
├── bin/
│   ├── ttn          ← NavCore principal (11.7 MB, ELF ARM dynamique)
│   ├── telttn       ← wrapper IPC vers ttn
│   ├── fakettn      ← fallback si ttn absent
│   └── gprscomd     ← daemon GPRS
├── etc/
│   ├── inittab
│   ├── fstab
│   ├── passwd       ← root:Twu6z6F/voF0Q (DES crypt)
│   ├── init/jobs.d/ ← 20+ jobs Upstart
│   └── udev/
├── lib/
│   ├── libosal.so.0 ← TomTom OS Abstraction Layer
│   ├── libhal.so.0  ← Hardware Abstraction (pilote fb0)
│   ├── libttmp.so.0 ← TomTom Multimedia
│   └── LoquendoTTS/ ← moteur TTS Loquendo
├── sbin/
│   ├── init         ← script shell → exec /sbin/upstart
│   ├── mount_sd_loopback
│   ├── mount_sd
│   ├── run_gprscomd
│   └── ttsystem_present
└── (sur partition userfs au runtime)
    └── /mnt/sdcard/script/
        ├── TTTaskList.lua  ← liste complète des TASK_* (300+)
        └── liblua.so       ← VM Lua chargée par ttn via dlopen

5. 파일시스템 아키텍처

5.1 eMMC 파티션 테이블 (mmcblk0)

파티션마운트포인트유형옵션
mmcblk0p3/mnt/flashext3defaults,sync,noauto
mmcblk0p5/contentext3defaults,sync,noauto
(fstab 아님)/mnt/sdcardext3정확한 메커니즘 미검증

/mnt/sdcard는 내부 NAND이며, 외부 SD가 아닙니다. 이는 "sdcard"가 내장 스토리지를 지칭하던 TomTom 명명 방식의 유산입니다. 정확한 마운트 메커니즘(아마도 /sbin/init 셸 이전 단계의 부트로더/initramfs)은 이 분석에서 검증되지 않았습니다. 이는 /content에 대한 mount_internal의 remount,rw가 사전 마운트를 암시한다는 점에서 시사됩니다.

5.2 외부 SD 카드 (mmcblk1)

SD는 다음 구성으로 unionfs를 통해 /mnt/movi에 마운트됩니다:

# Script /sbin/mount_sd_loopback (simplifié)
sd_mount="/media/sdcard"        # FAT32, RO
loop_mount="/media/loopback"    # ext3_loopback, RW upper
union_mount="/mnt/movi"         # unionfs des deux

mount -t vfat /dev/mmcblk1p1 $sd_mount \
  -o rw,noatime,nodiratime,nosuid,nodev,noexec,sync

mount -o loop $sd_mount/loopdir/ext3_loopback $loop_mount \
  -o rw,noexec,data=journal,commit=3600,async

mount -t unionfs unionfs $union_mount \
  -o rw,async,noexec,dirs=$loop_mount:$sd_mount=ro

⚠️ noexec 이중 보호: FAT32의 mount에 명시된 옵션 + unionfs 전파. 커뮤니티는 또한 모든 비-loop FS에 noexec를 강제하는 커널 훅 post_mount()를 보고합니다(gpspower.net): 이 분석에서는 검증되지 않았습니다.

5.3 SD 카드 내용 (FAT32)

도구 다운로드