VIKIROOT
Это PoC для CVE-2016-5195 для 64-битной Android 6.0.1 Marshmallow (возможно, 7.0 ?), а также универсальный и стабильный инструмент временного рута. Не требует SUID-исполняемого файла или изменений в файловой системе.
Особенности
- Обход SELinux (подробности ниже).
- Только в памяти: не изменяет файловую систему и не требует специального исполняемого файла.
- Стабильность: не влияет на стабильность вашего устройства.
- Масштабируемость: легко добавлять новые ядра и/или устройства.
- Обратимость: бэкдор автоматически очищается после завершения рут-оболочки, то есть перезагрузка после использования не требуется.
Внимание
Под «обходом SELinux» я подразумеваю, что полезная нагрузка будет запускаться в домене init, даже если SELinux находится в принудительном режиме, однако для того, чтобы сделать домен init неограниченным, всё равно требуется патч sepolicy. Обычно это означает необходимость модифицированного загрузочного образа.
Предварительные требования
- Я, робот Айзека Азимова.
- Устройство, поддерживающее dirtycow.
- Пропатченный sepolicy.
Сборка
Предварительно собранные бинарники доступны на странице релизов. Или просто добавьте NDK standalone toolchain в PATH и запустите make.
Использование
Вы можете запустить его через adb shell (поместив в /data/local/tmp) и получить рут-оболочку либо во встроенном терминале, либо на удалённом терминальном сервере, таком как nc. Подробности — запустите без параметров.
Устранение неполадок
- сначала внимательно прочитайте раздел «Внимание» выше.
- «insufficient place for payload» или «unknown kernel»: требуется перезагрузка.
- «waiting for reverse connect shell»: пожалуйста, разблокируйте устройство, откройте приложение часов/будильника или переключите Bluetooth, чтобы активировать бэкдор.
- всё ещё не работает: запустите версию «dbg» и отправьте мне по электронной почте сгенерированные файлы (это просто дамп некоторых частей ядра, они не содержат личных данных).
Благодарности
- scumjr за метод патчинга vDSO.
- Tzul за помощь в отладке проблемы с sepolicy.
- RenaKunisaki за то, что заставил это работать с bionic.
TODO
- Обогатить базу данных ядер для поддержки x86 и т.д.
- Протестировать на Android 7 Nougat (требуется помощь!).