빠른 링크
- 전제 조건
- Samsung Galaxy 장치를 이용하여 시스템 셸 액세스를 얻는 방법
- 확인
- 결론
매월 첫 번째 월요일에 Google은 Android 보안 게시판. Android OS의 다양한 구성 요소에서 완화된 모든 보안 취약점을 다음과 같이 공개합니다. Google 자체 또는 기타 제3자가 제출한 Linux 커널 및 해당 패치도 포함됩니다. 날짜. 삼성과 같은 대형 OEM은 Android에 대한 자체적인 견해를 가지고 있으므로 자체 패치와 업데이트를 보안 업데이트에도 포함시키는 것을 선택합니다.
즉, 모든 허점을 처리하는 것은 매우 어렵습니다. 수많은 공격 벡터가 존재하며 때로는 다음을 기반으로 자신만의 익스플로잇 체인을 만들 수 있습니다. 이전에 알려진 취약점 중 하나를 우회할 수 있는 새로운 방법이 있다는 이유만으로 보호 장치. 이것이 바로 XDA 시니어 멤버입니다. K0mraid3 4년 된 취약점으로 인해 그는 최신 주력 제품을 포함하여 모든 Samsung Galaxy 장치에서 시스템 셸에 액세스할 수 있게 되었습니다. 같지는 않지만 루트 권한이 있는 것, 충분히 높은 로컬 권한 에스컬레이션입니다.
취약점의 주요 진입점은 Samsung Text-To-Speech(패키지 이름: com.samsung. SMT)는 모든 Samsung Galaxy 기기에서 찾을 수 있는 사전 로드된 시스템 앱입니다. 아이디어는 설치된 앱 버전을 특정 취약한 빌드(v3.0.02.2 정확히 말하면) 라이브러리를 강제로 로드하면 시스템 권한(UID 1000)으로 셸이 열립니다.
익스플로잇에 대해 더 자세히 알고 싶다면 다음을 확인하세요. XDA 수석 기술 편집자 Adam Conway의 설명자. 그는 이 공격의 전체 범위와 작동 방식을 파악하기 위해 K0mraid3와 대화했습니다.
- 다시 말하면, 이는 루트(UID 0) 액세스가 아니지만 시스템 셸 액세스는 달리 제한된 바이너리를 실행할 수 있을 만큼 강력합니다.
- K0mraid3의 개념 증명에는 도우미 APK가 필요하며 익스플로잇 체인을 시작하기 전에 최소한 한 번은 이를 실행해야 합니다.
- One UI, 즉 삼성의 맞춤형 Android 스킨에 내장된 절전 루틴은 TTS 앱, 도우미 APK 및 셸 간의 통신을 방해할 수 있으므로 문제가 될 수 있습니다. 따라서 사전에 앱의 절전 프로필을 "제한 없음"으로 설정하는 것이 좋습니다.
전제 조건
- 다음에서 미리 컴파일된 익스플로잇 빌드를 다운로드하세요. XDA 포럼 스레드 또는 아래 링크된 공식 GitHub 저장소: K0mraid3s 시스템 쉘 공격
- 어딘가에 아카이브를 추출하면 Samsung Text-To-Speech APK의 취약한 버전을 찾을 수 있습니다. (samsungTTSVULN2.apk), 도우미 앱(Komraid3s_POC_Vx.x.apk) 및 Windows 실행 파일 systemshell-vx.x.exe.
- 최신 버전인지 확인하세요. ADB PC/Mac/Chromebook에 설치됩니다. 또한 다음 사항을 기억하세요. 삼성 USB 드라이버 설치/업데이트 당신이 Windows 사용자라면.
Samsung Galaxy 장치를 이용하여 시스템 셸 액세스를 얻는 방법
수동 방법
- USB 디버깅을 켠 상태에서 대상 Galaxy 장치를 PC에 연결하고 ADB에서 검색 가능한지 확인한 다음 도우미 앱을 설치하세요.
adb install Komraid3s_POC_Vx.x.apk
- 앞서 언급했듯이 다음 단계로 진행하기 전에 도우미 앱을 한 번 이상 실행하세요.
- 이제 취약한 Samsung TTS 앱 버전을 /data/local/tmp로 푸시하고 권한을 변경하세요.
adb push samsungTTSVULN2.apk /data/local/tmp
adb shell chmod 777 /data/local/tmp/samsungTTSVULN2.apk
- 장치를 재부팅하십시오. 홈 화면에 표시되자마자 다음 명령을 실행하여 이미 설치된 Samsung TTS 앱 버전을 취약한 버전으로 교체하세요.
adb shell pm install -r -d -f -g --full --install-reason 3 --enable-rollback /data/local/tmp/samsungTTSVULN2.apk
- 모든 것이 올바르게 진행되면 콘솔에 "성공" 메시지가 표시됩니다.
- 다른 터미널 창을 열고 실행하여 대상 장치에서 셸을 엽니다. adb 쉘, Netcat 바이너리를 실행하고 다음 명령을 사용하여 9997 포트에서 들어오는 연결을 수신합니다.
adb shell nc -lp 9997
- 이 단계에서는 시스템 셸을 열어주는 Samsung TTS 앱의 특정 활동을 실행해야 합니다.
- 다음과 같은 타사 앱을 사용하세요. 이것 "com.samsung. SMT/.gui. 다운로드리스트' 활동.
- Android의 자체 활동 관리자(am)를 사용하여 동일한 작업을 수행할 수도 있습니다. 이 경우 ADB를 통해 실행할 수 있습니다(adb shell am start -n com.samsung. SMT/.gui. DownloadList) 또는 Termux와 같은 휴대폰/태블릿에서 터미널 에뮬레이터 앱을 사용하고 다음 명령을 실행합니다.
am start -n com.samsung.SMT/.gui.DownloadList
- 첫 번째 셸로 다시 전환하면 시스템(UID 1000) 권한이 있는 새 프롬프트가 표시됩니다.
자동화된 방법
작업을 더 쉽게 하기 위해 K0mraid3은 대부분의 작업을 자동화하는 사용하기 쉬운 GUI 응용 프로그램도 제공합니다. GUI 앱은 Windows 전용이므로 Linux/macOS 사용자라면 수동 방식을 고수하는 것이 좋습니다.
- USB 디버깅을 켠 상태에서 대상 Galaxy 장치를 PC에 연결하고 ADB에서 검색 가능한지 확인한 다음 도우미 앱을 설치하세요.
adb install Komraid3s_POC_Vx.x.apk
- 앞서 언급했듯이 다음 단계로 진행하기 전에 도우미 앱을 한 번 이상 실행하세요.
- ADB가 검색할 수 있는 대상 장치를 사용하여 호스트 PC에서 systemshell-vx.x.exe를 실행합니다.
- "SHELL 시작"버튼을 클릭하십시오. 앱이 자동으로 Samsung TTS 앱을 다운그레이드하고 시스템 셸을 열려고 시도합니다.
- 휴대폰/태블릿에서 일부 음성 데이터를 다운로드하라는 TTS 앱이 표시될 수 있습니다. 해당 옵션은 익스플로잇과 아무 관련이 없으므로 상호 작용할 필요가 없습니다.
- 앱이 멈추거나 일정 시간이 지난 후에도 셸 창을 열 수 없는 경우 앱을 닫고 대상 Galaxy 기기를 재부팅한 후 다시 시작하세요.
- 갤럭시 스토어 앱은 백그라운드에서 TTS 앱의 절전 프로필을 자동으로 업데이트 및/또는 재설정할 수 있으므로 처음부터 프로세스를 시작하기 전에 반드시 확인하세요.
확인
셸 액세스 권한이 있으면 아래 명령 중 하나를 사용하여 권한 수준을 확인할 수 있습니다.
-
whoami
- 출력은 "system"이어야 합니다.
-
id -u
- 출력은 "1000"이어야 합니다.
결론
Android 기기에서 루트 액세스를 얻는 일반적인 방법은 먼저 부트로더를 잠금 해제하여 타사 바이너리를 부팅하는 것입니다. Android의 보안 모델은 기본적으로 루트와 분리되므로 이 단계에서는 기기의 주요 보안 기능 중 하나를 의도적으로 비활성화합니다. 그렇기 때문에 사용자는 일반적으로 개발자 옵션에서 토글을 활성화한 다음 잠금 해제 명령을 실행하여 이러한 일이 발생하도록 명시적으로 허용해야 합니다. 부트로더. 부트로더가 잠금 해제되면 사용자는 시스템에 슈퍼유저 바이너리를 도입할 수 있으며, 슈퍼유저 관리 앱(Magisk 등)을 도입하여 어떤 프로세스가 루트에 액세스할 수 있는지 제어할 수 있습니다.
그러나 위에서 언급한 시스템 셸 익스플로잇을 사용하면 사용자는 에스컬레이션된 권한을 얻기 위해 부트로더를 잠금 해제할 필요가 없습니다. 루트 사용자는 아니지만 "시스템" 사용자는 여러 하위 수준 파티션(예: /efs로), 다양한 서비스 및 디버깅 도구를 시작하고 보호된 많은 prop 값을 변경합니다. 이 모든 작업이 중단되지 않고 이루어집니다. 녹스. 이 예에서는 몇 가지 방법만 다룹니다. 악의적인 행위자는 이를 다른 취약점과 결합하여 더 사악한 행동을 펼칠 수 있습니다.
우리는 구글과 삼성이 이 시나리오를 어떻게 다룰지 지켜봐야 할 것입니다. 어느 쪽이든 당분간 Samsung Text-To-Speech 앱을 비활성화하거나 제거해야 합니다.