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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
unisoc-su — CVE-2025-31710을 위한 방법 및 패치되지 않은 unisoc 모델에서 cmd_skt에 연결하여 루트 셸을 획득하는 방법 | Kitploit
도구/GitHubGitHub/skorpion96/unisoc-su
Android SecurityPrivilege EscalationVulnerability AnalysisExploitationPost-ExploitationPenetration TestingMobile SecurityCommand and ControlPayload DevelopmentBinary Exploitation
GitHubskorpion96/unisoc-su
127191개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

unisoc-su

CVE-2025-31710을 위한 방법 및 패치되지 않은 unisoc 모델에서 cmd_skt에 연결하여 루트 셸을 획득하는 방법

저장소 보기

unisoc-su

CVE-2025-31710에 대한 방법 및 패치되지 않은 unisoc 모델에서 cmd_skt 추상 소켓에 연결하여 루트 셸을 얻는 방법

모두가 소리치기 전에, Unisoc 자체가 CVE-2025-31710 게시 후 이를 공개하도록 허가했습니다. 조용히 하세요.

농담으로 시작하겠습니다

9u4d2i

네, 꿈이 아닙니다. 오늘은 com.sprd.engineermode 앱에서 시스템 셸을 위한 익스플로잇을 소개하고자 합니다. 그리고 그것이 cmd_skt의 신뢰할 수 있는 클라이언트 중 하나이기 때문에, 저도 그것에 접속할 수 있었습니다. 이 추상 소켓은 root로 실행되는 서비스(cmd_services)의 일부입니다. 그래서 네, unisoc-su를 발표하게 되어 기쁩니다. 여기 cmd_services 바이너리에서 ghidra로 추출한 cmd_skt의 신뢰할 수 있는 클라이언트 목록이 있으며, com.sprd.engineermode가 포함되어 있습니다:

cmd_services apps

이 익스플로잇을 위해 pascua28의 com.sammy.systools 앱과 TomKing062의 cli-pie가 사용됩니다. 이 앱에는 두 가지 버전이 있습니다. 하나는 시스템 셸에서 사용할 다양한 바이너리를 포함하고, 다른 하나는 cli-pie와 다른 여러 소켓에 연결하기 위한 일부 cli만 포함합니다(engpc의 경우 이제 시스템 셸에서 이것을 소싱할 수 있습니다. 먼저 tools.sh를 소싱하는 것이 좋습니다). 두 버전 모두 Android 9용 버전이 있습니다(구형 기기의 경우, Apktool M으로 앱을 리패키징하여 원하는 버전을 선택할 수 있습니다).

이 방법의 작동 방식: 먼저 adb 또는 shizuku rish로 UnisocEngSyshell_Enabler_Script.sh를 실행하여 com.sprd.engineermode 앱을 활성화합니다(새 모델에서만 필요). 그런 다음 지시에 따라 다이얼러에서 *#*#83781#*#*를 실행하여 메인 활동을 시작하고, 여기서 Adb shell 활동으로 들어갑니다. 그런 다음 한 줄에 전체 cli-pie 경로(애플릿 포함)를 입력하고, 다른 줄에 "setprop persist.sys.cmdservice.enable enable"을 입력한 다음, setprop에서 먼저 가능한 한 빨리 시작을 누르고, 그 다음 cli-pie 줄에서 시작을 누르면, 붐! 연결되었다고 표시됩니다. 그런 다음 setprop 활동에서 종료를 누르고 텍스트를 삭제한 다음, "nc -s 127.0.0.1 -p 1234 -L sh -l" 또는 리버스 셸을 실행하는 데 사용하는 것을 입력합니다. 그런 다음 터미널로 가서 해당 바이너리로 다시 연결합니다. 실행되지 않으면 해당 스크립트를 소싱하거나 간단히 "nc 127.0.0.1 1234"로 연결합니다. 그 후 "source /sdcard/Documents/unisoc-su.sh" (또는 스크립트를 배치한 위치, 단 시스템 셸에서 접근 가능해야 함). 그게 전부입니다. 모든 것이 올바르면 방금 루트 셸을 얻은 것입니다.

이제 이 익스플로잇에 대해 이야기해 봅시다. 이 컨텍스트는 selinux에 의해 강력하게 보호되며, 우리는 root를 가지고 있지만 모든 보호가 여전히 활성화되어 있습니다. 이 root는 다른 유사한 익스플로잇처럼 아무것도 비활성화하지 않았기 때문에 매우 중요합니다. 불행히도 이 컨텍스트는 selinux를 비활성화할 만한 충분한 권한이 없으며, 실행도 시스템 PATH에서만 작동하는 것으로 보입니다. 서비스 자체에 대해, Android 9에서는 (CVE-2022-47339 패치 이전) 서비스 rc에 그룹이 없어서 기본적으로 root로 실행되지만, 이후에는 그룹이 추가되고 (root gid/groups는 제거됨) 서비스가 더 제한되었습니다. 그러나 selinux가 활성화된 상태에서는 selinux가 여전히 규칙을 적용합니다. 서비스의 작동 방식: 최신 기기에서는 서비스가 누군가 사용하거나 연결할 때까지 실행되는 것으로 보입니다. 연결된 클라이언트가 없거나 명령이 발행되지 않으면 서비스가 꺼지고 setprop 속성이 필요합니다. 서비스는 거의 즉시 이 작업을 수행하므로, 이 방법에서는 setprop를 실행하고 빠르게 연결합니다. Android 9에서는 setprop 발행 후 서비스가 명령을 기다리는 것으로 보이며, 이것이 구형과 최신 기기의 차이점입니다. 실행 후 서비스가 꺼집니다. 물론 socat이나 cli-pie로 연결하거나 브리지를 실행할 수도 있습니다. 이 경우 서비스가 이 연결로 점유되므로 계속 켜져 있습니다. 명령이 제공되지 않으면 서비스는 무기한 대기합니다.

차이점을 보여주는 Android 13 사용자 ROM과 Android 9 엔지니어링 ROM의 cmd_services.rc cmd_services_android13 (user) rc cmd_services_android9 (eng) rc

이 방법에 영감을 준 CVE: Lewei Qu(曲乐炜)의 CVE-2022-47339 (cmd_services)와 본인의 CVE-2025-31710 (com.sprd.engineermode 시스템 셸). 비록 Lewei Qu(曲乐炜)가 com.sprd.engineermode에 유사한 CVE를 가지고 있었던 것으로 보이지만, 본인이 발견한 이후에 알게 되었습니다.

또한 나중에 세 가지 특별한 경우가 있습니다. 이들은 영감을 준 CVE 목록에 포함되지 않습니다. 첫 번째는 재도입된 취약점입니다. 정리를 위해 여기에 추가합니다: CVE-2025-67264 (Doogee의 새로운 unisoc 모델에 대한 잘못된 패치, 여기에 설명됨). 역시 본인이 발견했습니다. 두 번째 경우는 ZTE의 새로운 모델에 관한 것입니다. 모든 모델에 적용되는지 일부에만 적용되는지는 불분명합니다. com.sprd.engineermode의 Adb shell 활동이 유지되었습니다. ZTE Blade V70 Vita에서 CVE-2025-67264와 동일한 문제가 발생하지만, 이후 ZTE가 활동을 userdebug/eng으로 잠그는 방식으로 패치했습니다(CVE 없음, 자체 발견). 그 결과 활동이 앱 UI에 표시되지만 사용자 빌드에서는 열 수 없다는 메시지가 표시됩니다. 취약한 기기(이 변경 이전으로 추정): ZTE/EEA_P606F17/P606F17:14/UP1A.231005.007/20241231.044538:user/release-keys, 패치된 기기: ZTE/EEA_P606F17/P606F17:14/UP1A.231005.007/20250527.224618:user/release-keys. 유사한 현상이 ZTE Blade A55에서 발생합니다. 이 모델들은 Android 14를 실행하며, cmd_services가 다시 작성되어 tool_service로 이름이 변경되었고(접근 가능한 서비스는 com.sprd.engineermode, com.sprd.autoslt, com.sprd.runtime, com.spreadtrum.sgps, com.sprd.validationtools로 축소됨), 이 새 버전은 항상 활성화되어 있으며 setprop가 필요하지 않습니다. 세 번째 경우는 이 리포지토리의 취약점과 유사한 구형 unisoc 모델에 영향을 미치는 취약점으로, 여기에 설명되어 있습니다.

다음은 unisoc-su를 위한 다양한 스크립트입니다. 튜토리얼이 없는 것: unisoc-su.sh, 시스템 셸만으로 루트 셸에 진입하는 방법을 안내하는 것(이 방법이 더 쉽고 오프라인에서 작동하며 shizuku/adb가 필요 없음): unisoc-su-syshell-only-tut.sh, shizuku/adb를 사용하여 루트 셸에 진입하는 방법을 안내하는 것(setprop 부분 실행에만 사용): unisoc-su-adb-shizuku-tut.sh. 또한 다양한 소켓에 연결하기 위한 버전이 있으며, 터미널에서 원하는 것을 소싱하세요. unisoc-su.sh와 이 마지막 버전은 시스템 셸에서 소싱해야 합니다. 또한 ghostroot 폴더에 PATH에 다양한 디렉토리를 추가하는 tools.sh 스크립트가 있으며, adb/시스템/root와 호환됩니다. 또한 시스템에 어떤 nc가 있는지 모를 경우 시스템 셸을 실행하기 위한 multi 스크립트가 있으며, 연결이 성공할 때까지 다양한 가능한 바이너리에서 nc를 시도합니다.

이제 작은 poc 앱도 추가되었습니다. cmd_services 루트 셸에 연결하는 버튼, 시스템 셸에 연결하는 버튼, 도움말 버튼, 출력 지우기 버튼, 미니 터미널이 있는 앱입니다. 준비는 수동으로 해야 하므로 사용해도 안전합니다.

GhostRoot 정보 (익스플로잇 후 루트 채널) 파일 기반 I/O를 통해 RAM에 유지되며 권한이 없는 앱의 입력을 받는 은밀한 익스플로잇 후 명령 채널입니다.

익스플로잇은 Android 13까지 작동합니다. 이후 버전에서는 unisoc가 EngineerMode 앱에서 sharedUserId 태그를 제거하여 일반 사용자 앱이 되었기 때문에, Android 14 이상에서는 selinux가 cli-pie 실행을 거부합니다.

SharedUid-NormalUid_Compare-Patch 이미지 제공: TomKing062

시스템 셸과 루트 셸의 스크린샷

r00t_script6_new_version

cmd_services 루트 셸에 진입하는 비디오 튜토리얼

https://github.com/user-attachments/assets/225165d9-fd8b-4558-849a-7b00895ce894

https://github.com/user-attachments/assets/953ed696-f3a1-4556-8756-07bbe555b3ae

더 쉬운 방법으로 루트 셸에 진입하기 (com.sprd.engineermode가 백그라운드에서 열려 있어야 함)

https://github.com/user-attachments/assets/d3eb19db-befa-4136-9bd4-b6bdf9bb8bc7

가능하면 이 내용을 다른 곳에 재게시하지 말아 주세요.

앱 아이콘은 여기에서 가져왔습니다:icon-link, 라이선스는 여기:license-link

도구 다운로드