VIKIROOT
이것은 64비트 Android 6.0.1 Marshmallow(아마도 7.0?)용 CVE-2016-5195 PoC이자, 보편적이고 안정적인 임시 루트 도구입니다. SUID 실행 파일이나 파일 시스템 변경이 필요하지 않습니다.
Features
- SELinux 우회 (자세한 내용은 아래 참조).
- 메모리 전용: 파일 시스템을 수정하거나 특수 실행 파일이 필요하지 않습니다.
- 안정적: 기기 안정성에 영향을 미치지 않습니다.
- 확장 가능: 새 커널 및/또는 새 기기를 쉽게 추가할 수 있습니다.
- 가역적: 루트 셸이 종료된 후 백도어가 자동으로 제거되므로 사용 후 재부팅이 필요하지 않습니다.
Attention
"SELinux 우회"란 SELinux가 강제 모드(enforcing mode)에 있더라도 페이로드가 init 도메인에서 실행된다는 뜻입니다. 그러나 init 도메인을 제한되지 않은(unconfined) 상태로 만들기 위해서는 sepolicy 패치가 여전히 필요합니다. 일반적으로 이는 수정된 부트 이미지가 필요함을 의미합니다.
Prerequisite
- 아이작 아시모프의 『아이, 로봇』.
- "dirtycow" 가능 기기.
- 패치된 sepolicy.
Building
사전 빌드된 바이너리는 릴리스 페이지에서 확인할 수 있습니다. 그렇지 않으면 NDK 독립 실행형 툴체인을 PATH에 추가하고 make를 실행하기만 하면 됩니다.
Usage
adb 셸을 통해 실행하고(/data/local/tmp에 배치) 내장 터미널 또는 nc와 같은 원격 터미널 서버에서 루트 셸을 얻을 수 있습니다. 자세한 내용은 매개변수 없이 실행하세요.
Troubleshooting
- 먼저 위의 '주의' 부분을 읽어보세요.
- "페이로드 공간 부족" 또는 "알 수 없는 커널": 재부팅이 필요합니다.
- "리버스 커넥트 셸 대기 중": 기기를 깨우고, 시계/알람 앱을 열거나 블루투스 스위치를 전환하여 백도어를 트리거하세요.
- 여전히 해결되지 않으면 'dbg' 버전을 실행하고 생성된 파일을 제 이메일로 보내주세요. 이 파일은 커널 일부의 덤프일 뿐이며 개인 정보를 포함하지 않습니다.
Credits
- vDSO 패치 방법에 대한 scumjr.
- sepolicy 문제 디버깅을 도와준 Tzul.
- bionic과 함께 작동하도록 해준 RenaKunisaki.
TODO
- x86 지원 등을 위한 커널 데이터베이스 보강.
- Android 7 Nougat에서 테스트 (도움 요청!).