Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
lg-webos-kexec — kexec를 통해 루팅된 LG webOS TV에서 커스텀 Linux 커널을 부팅하며, 리버스 엔지니어링된 SoC 워치독 지원, 프레임버퍼 페이로드 및 initramfs 커널 빌드 흐름을 포함합니다. | Kitploit
도구/GitHubGitHub/ggfuchsi-oss/lg-webos-kexec
Embedded Systems SecurityReverse EngineeringHardware HackingHardware & IoT SecurityFirmware Analysis
GitHubggfuchsi-oss/lg-webos-kexec

lg-webos-kexec

kexec를 통해 루팅된 LG webOS TV에서 커스텀 Linux 커널을 부팅하며, 리버스 엔지니어링된 SoC 워치독 지원, 프레임버퍼 페이로드 및 initramfs 커널 빌드 흐름을 포함합니다.

저장소 보기
6111일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

lg-webos-kexec

kexec를 통해 루팅된 LG webOS TV에서 커스텀 Linux 커널 부팅 — RAM에서 실행, secure-boot 우회 없음.

상태: 작업 진행 중. 커스텀 커널을 스테이징하여 userspace에 도달할 수 있지만, 아직 사용 가능한 OS로 유지되지는 않습니다.

대상

LG 50UP81009LR (webOS 6.5, Realtek RTD2875, armv7l). Homebrew Channel로 루팅됨; 스톡 서명 커널 + webOS userspace는 그대로 유지됩니다.

입증된 것 (실기기 검증 완료)

  • kexec -l이 (스톡 또는 소스 빌드) 커널을 스테이징하며, /sys/kernel/kexec_loaded가 1로 바뀝니다.
  • kexec -e가 실행 중인 커널을 교체합니다 (이후 TV는 스톡으로 리셋됩니다).
  • 소스 빌드 커널이 userspace에 도달합니다 — 사용자 모드 페이지 폴트로 검증됨 = /sbin/init이 실제 코드를 실행했습니다.
  • 작은 canary 페이로드가 framebuffer에 그림을 그립니다 (ring-0 + 디스플레이 접근 확인됨).
  • 전체 체인이 스톡 webOS startup.sh에서 실행됩니다 — 서명된 부트로더 / ATF / OP-TEE는 절대 건드리지 않습니다.

아직 부족한 것

  • Watchdog pet — 리버스 엔지니어링 완료 + 수정 코드 작성 완료, 실제 kexec 부팅에서는 아직 검증되지 않음. 아래 참조.

Watchdog pet — 찾았습니다 (2026-08-19)

리셋의 원인은 SoC watchdog (TC 블록)입니다. 스톡 커널의 micom_wdt_thread()가 세 개의 레지스터 쓰기로 이를 막아둡니다 (drivers/rtk_kdriver/platform/tv006/intmicom.c):

root@kitploit:~
TCWCR @ 0xFE062204 <- 0xA5         // unlock
TCWOV @ 0xFE062210 <- 0x0FFFFFFF   // max overflow => huge timeout
TCWTR @ 0xFE062208 <- 0x01         // kick

kexec 상태에서 드라이버의 raw *(volatile*)0xFE062208 = 0x01은 매핑되지 않은 VA에 기록되어 조용히 무시되므로 SoC watchdog이 작동합니다 (~10–21초). micom-pet.c는 이제 userspace에서 /dev/mem (CONFIG_DEVMEM=y)을 통해 동일한 쓰기를 수행하며 이는 올바르게 매핑됩니다. 추가로 심층 방어 차원에서 /dev/sys-intmicom에 0xB1 keepalive를 보냅니다.

상태: micom-pet.c 재작성 완료, musl 툴체인으로 컴파일되며, 실기기에서 5초간의 무해한 스모크 테스트로 실행 및 breadcrumb 기록(0x52455814 = "REX"+beat)을 확인했습니다. 남은 유일한 검증은 ~21초를 넘겨 유지되는 kexec -e 부팅입니다 — 이는 TV를 재부팅하므로 입회 상태로 진행해야 하는 테스트입니다.

  • 디스플레이 — 패널이 tiled FBDC를 사용하므로 raw framebuffer 텍스트는 쓸모가 없습니다. 실제 출력에는 VCPU RPC(비디오 엔진에 그리기 명령 전송)가 필요합니다.
  • 네트워킹 — 스톡 wlan 모듈이 로드되려면 vermagic이 CONFIG_LOCALVERSION=""과 일치해야 합니다. 아직 initramfs에 연결되지 않았습니다.

동작 방식 (솔직한 버전)

root@kitploit:~
boot ROM → ATF → signed LG kernel (~2 s) → startup.sh
    → kexec -l <our zImage + dtb + initramfs>
    → kexec -e
    → OUR kernel runs in RAM (no eMMC writes)

전원 차단 = 스톡 복귀. 벽돌이 될 수 없습니다.

AI로 제작됨 (전체 공개)

이 저장소의 대부분은 Rex(AI 코딩 에이전트 인스턴스)가 사람이 자신의 거실에서 자신의 TV를 조작하는 것을 돕는 과정에서 만들어졌습니다. AI가 kexec PoC, 부트 체인, framebuffer canary, 그리고 이 리버스 엔지니어링 문서를 작성했습니다. 하지만 이 README의 주장은 언제나 사람이 TV를 켜고 화면을 확인한 후에만 기록되었습니다. 실제 하드웨어의 화면/사진/업타임 확인으로 뒷받침되지 않는 주장은 여기에 없습니다.

이 저장소를 만드는 과정에서 벽돌이 된 TV는 없습니다. 일부는 일시적으로 혼란스러웠을 뿐입니다 (watchdog pet이 없는 kexec 커널은 약 15초 후 TV를 리셋합니다), 이후 전원 사이클로 스톡에 복귀했습니다. /tmp는 모든 리셋 때마다 지워지므로 TV는 우리가 한 모든 것을 잊어버립니다 — 그것이 바로 핵심입니다.

저장소 구조

  • rexos/ — 커스텀 OS: 부트 훅, 커널 빌드, initramfs, RexBus 스텁.
  • kexec-poc/ — 로드 전용 개념 증명 + framebuffer canary 페이로드.
  • docs/ — 리버스 엔지니어링 문서 (boot/security, SAM 앱 로딩, surface map, luna2 스키마).

직접 확인하기 (정확히 동일한 TV가 필요합니다: 50UP81009LR, 루팅, LAN 연결)

다음 단계는 정확히 동일한 하드웨어에서 우리가 수행한 작업을 재현합니다. 조작된 것은 없습니다.

0. 사전 요구사항

  • LG 50UP81009LR, Homebrew Channel로 루팅, root SSH 활성화, LAN 연결 상태.
  • 아래 예시에서 TV IP는 192.168.2.103입니다. 다르면 수정하세요.
  • 일회성: LG K7LP GPL 커널 소스 트리 — KERNEL_SRC=/path/to/linux-4.4.3 설정 (LG 오픈소스 사이트에서 03.53.45 K7LP GPL tarball 다운로드), 또는 ~/lgtv-toolkit/kernel-src/kernel/linux-4.4.3에 심링크.

1. 툴체인 + 정적 kexec 빌드 (TV 불필요, 약 2분)

root@kitploit:~
git clone https://github.com/ggfuchsi-oss/lg-webos-kexec
cd lg-webos-kexec/kexec-poc && ./build.sh

예상 결과: kexec-arm에 정적 ARM kexec 바이너리 생성 (168K, file 결과 ELF 32-bit LSB ... ARM ... statically linked).

2. TV에서 안전한 PoC 재현 (스테이징 + 언로드 — 부팅 없음)

root@kitploit:~
cd ../kexec-poc
./run-poc.sh 192.168.2.103 ~/.ssh/tv_key

예상 결과:

root@kitploit:~
staged before      : 0
staged after load  : 1   <- kernel accepted, DTB wired, segments allocated
staged after unload: 0   <- cleared, TV untouched

이 과정은 TV 자신의 현재 커널을 kexec로 스테이징한 후 즉시 언로드합니다. /sys/kernel/kexec_loaded가 1로 바뀌었다가 다시 0으로 돌아갑니다. 재부팅 없음, 커널 전환 없음, 영속되는 것 없음. 플러그를 뽑으면 스톡으로 복귀합니다.

3. (입회) 직접 만든 커널 부팅 — TV를 재부팅함

TV가 켜져 있고 곁에 누군가 있을 때만 수행하세요:

root@kitploit:~
cd ../rexos
make                            # builds rexos-kernel.zImage + rexos-initramfs.cpio.gz into out/
./boot/rexos-kexec --load-only   # stage, do NOT fire (same safe state as step 2)
# then, when ready to actually jump:
./boot/rexos-kexec               # kexec -e -> our kernel runs in RAM (TV will reset)

3단계의 솔직한 주의사항 (숨기는 버그가 아니라 공개하는 사항입니다):

  • kexec -e 이후 새 커널은 userspace에 도달하지만 micom/SOC watchdog이 pet되지 않아 약 10–21초 후 TV가 리셋됩니다. 이것은 크래시 버그가 아니라 현재의 벽입니다. rexos/initramfs/micom-pet.c가 이 문제를 해결할 데몬입니다 (아직 연결 중).
  • 디스플레이는 tiled FBDC — 텍스트 콘솔이 없으며 단색 비콘만 표시됩니다 (kexec-poc/canary/ 참조). 실제 그래픽은 VCPU RPC 경로가 필요합니다 (미구현).
  • 잘못된 커널/DTB는 전원 사이클 전까지 블랙 스크린일 뿐입니다. 벽돌이 될 수 없습니다: kexec는 RAM에만 쓰며 eMMC에는 절대 쓰지 않습니다.

TL;DR 상태 (솔직하게)

  • 커널 스테이징/실행 프리미티브: 검증됨 (2단계). ✅
  • 커스텀 커널 부팅 + userspace 도달: 검증됨 (3단계). ✅
  • 사용 가능한 OS로 유지: 아직 아님 — watchdog + 디스플레이가 남은 벽입니다. ⏳

의존성 (외부 요소에 대해 정직하게)

이 저장소에는 소스 + 문서 + TV에서 캡처한 빌드 입력물 (커널 .config, wifi 모듈 + 펌웨어, rootfs 라이브러리)이 포함되어 있지만, 약 390MB의 LG K7LP GPL 커널 소스 트리 자체는 포함되어 있지 않습니다 — 그것은 LG가 배포할 것이며 우리가 재호스팅할 것이 아닙니다.

커널 트리가 없으면 make는 명확한 KERNEL_SRC missing 오류와 함께 실패합니다 — 조용히 반쯤 빌드되는 일은 없습니다.

새로움 / 선행 기술

우리가 아는 한, 이것은 LG webOS TV를 위한 최초의 공개 kexec 기반 커스텀 커널 부팅입니다. 프리미티브(kexec, 루팅된 webOS, RTD2875)는 각각 이미 알려져 있지만, 이 잠긴 소비자 TV에의 적용은 새로운 것으로 보입니다. 우리는 secure-boot 우회를 주장하는 것이 아닙니다 — 우리는 이를 비켜갑니다.

라이선스

GPL-2.0 (커널 작업물; LG의 GPL 커널 소스는 GPL입니다). 우리의 스크립트는 GPL 호환입니다. 업스트림 저작자 표기는 CREDITS를 참조하세요.

도구 다운로드
의존성획득 방법
LG K7LP GPL linux-4.4.3 (RTD2875)LG 오픈소스 사이트 → 03.53.45 K7LP GPL tarball → kernel
musl armv7 크로스 툴체인 (~98 MB)kexec-poc/build.sh가 자동으로 가져옴 (자체 포함)
루팅된 TV (50UP81009LR)처음에만 필요하며 .config 캡처용으로만 사용 — 하지만 해당 설정은 이제 rexos/kernel/rexos-tv.config에 커밋되어 있으므로 클론만으로 오프라인 빌드 가능