Как использовать эксплойт Dirty COW?

Я получил Sony Xperia M4 Aqua с заблокированным загрузчиком, Android 6.01 и патчем безопасности от 1 июля 2016 года, но без подтверждения DM. Я хотел бы заморозить несколько заводских приложений с помощью pm disableкоманды ADB (или любым другим возможным способом). Я пытался запустить, su pm disable package.nameно suкоманда почему-то не распознается.

Я новичок в Linux, но у меня есть Android Studio с SDK и NDK, установленными на машине с lubuntu (также есть на машине с Windows 7).

Может ли кто-нибудь объяснить мне шаги, которые нужно предпринять, чтобы получить доступ к корневой оболочке с помощью эксплойта Dirty COW (или любым другим способом), чтобы иметь возможность замораживать приложения?

Вы рутировали свое устройство? Вы не можете вызвать su, если ваше устройство не рутировано. Кроме того, вы можете отключить любой пакет вместо удаления с помощью pm hide package_name, и для этого не требуется root.
Нет, мое устройство не рутировано. Мне нужна корневая оболочка, чтобы установить SuperSu apk. Я пытаюсь получить доступ к корневой оболочке, используя эксплойт dirtyCow, но я не знаю, как это сделать (я не очень хорошо разбираюсь в Linux).
На XDA-Developers есть ветка о рутировании Sony M4 Aqua: forum.xda-developers.com/m4-aqua/general/root-t3421932 .
Я видел, это только для устройств с разблокированным загрузчиком. У меня заблокировано, поэтому я не могу прошить рекавери или заменить загрузчик.
Кажется, это проблема XY . Разве ваш настоящий вопрос не в том, как получить root права на ваше устройство? Разве вы не согласились бы с другими методами, если бы они были доступны?
Также везде есть руководства по разблокировке загрузчика, например вот это: forum.xda-developers.com/m4-aqua/general/…
Я пробовал это, не работает, потому что на моем устройстве производитель установил «Разблокировка загрузчика разрешена: НЕТ».

Ответы (3)

Причина, по которой команда не работает для вас, заключается в том, что «su» — это двоичный файл, который устанавливается путем рутирования вашего устройства. Без надлежащего рута у вас нет команды «su».

Чтобы использовать эксплойт Dirty COW, вам необходимо скомпилировать двоичный файл для архитектуры вашего устройства.

  • Перейдите на https://github.com/timwr/CVE-2016-5195 и загрузите или клонируйте файлы с помощью git.

  • (Необязательно) Если вы не знаете архитектуру своего устройства, установите на телефоне приложение «Информация об оборудовании Droid» из Play Store, откройте его и проведите пальцем влево, чтобы перейти на вкладку «Система». Рядом с меткой «Наборы инструкций» будет указана поддерживаемая вами архитектура.

  • На вашем компьютере откройте терминал и перейдите туда, где находятся файлы Dirty COW (при необходимости извлеките). Затем просто введите make (insert architecture here). Это создаст два двоичных файла внутри папки с libs/(your_architecture)/именем dirtycow& run-as. В качестве альтернативы, если у вас включена отладка по USB, просто подключите устройство и введите make root, и он отправит двоичные файлы на ваше устройство по адресу /data/local/tmp, а затем автоматизирует несколько команд ADB для использования и предоставления вам ограниченной корневой оболочки.

  • Если вы не видите значок пользователя терминала, а #вместо него видите значок $, значит, в какой-то момент эксплойт не сработал. Поскольку файлы все еще находятся на устройстве, я бы предложил попробовать вручную исправить run-as, используя adb shellи набрав следующее...

    chmod 777 /data/local/tmp/*
    dirtycow /data/local/tmp/run-as /system/bin/run-as
    /system/bin/run-as
    

    Если это не запрашивает вас как пользователя root (#), то эксплойт не будет работать для вашего устройства таким образом, и вам нужно немного разобраться, почему это не так. Если это произойдет, попробуйте открыть вопрос в репозитории Github, он все еще довольно активен, поэтому вы должны получить ответ в ближайшее время.

Мне удалось получить ОГРАНИЧЕННУЮ корневую оболочку, но она не может выполнить ни одну команду, которую я ввожу, она просто показывает #root... Знаете ли вы, как я могу использовать эту корневую оболочку для замораживания или удаления системных приложений, а также знаете ли вы, что цель этой ограниченной корневой оболочки на Android?
Я не совсем тот парень, которого стоит спрашивать... Я просто немного знаю, как это использовать. НО тот факт, что он работает достаточно, чтобы получить ограниченную корневую оболочку, означает, что ваше устройство можно использовать. На этом этапе вам не нужно использовать оболочку для удаления системных приложений. Посмотрите мое видео об использовании dirtycow для обхода блокировки FRP, и вы увидите прекрасный пример того, как удалить системные приложения с помощью dirtycow youtu.be/iSsjeI7DV-k

В дополнение к ответу therealjayvi обратите внимание, что для компиляции и использования CVE-2016-5195 из timwr требуется также установить ADB и NDK до make [architecture]и make root, и это должно быть сделано из среды Linux.

Все либо предполагали, что пререквизиты были получены до этого, пререквизиты могли быть добавлены после комментария, либо об эксплойте CVE-2016-5195 было мало известно или ничего не было известно от человека, который оставил комментарий.

В любом случае, все это можно сделать следующим образом: во-первых, находясь в Linux (Ubuntu, Debian, Mint, доб.) и предполагая, что adbон есть в вашем списке репозиториев apt, как обычно по умолчанию, но не всегда. Если sudoнет, используйте su.

sudo apt-get install android-tools-adb

Загрузите последнюю версию Linux отсюда , затем распакуйте и запустите:

export PATH=$PATH:/root/directory/of/ndk/

Вам может потребоваться повторный запуск export, если вы закроете текущий терминал, так как я не могу найти решение, которое остается.

Как только все это будет сделано, вы сможете последовать примеру @therealjayvi.

Dirty COW на Marshmallow ничего не может сделать из-за ограничений SELinux.

ответ therealjayvi - хорошее объяснение того, «как скомпилировать доказательство концепции Dirty COW». Но он не может даже lsтекущую папку, в которой он запущен.

/data/local/tmp$ run-as
/data/local/tmp# ls
opendir failed, permission denied
dirtycow работает на любом телефоне Android, на котором установлено исправление безопасности от 5 октября 2016 г. и старше. Версия Android (LP, MM, нуга и т. д.) для грязной коровы вообще не имеет значения. но нет, вероятно, не так, как вы хотите его использовать. dirtycow позволяет перезаписывать файлы «только для чтения». Так что, пока ваша прошивка уязвима и вы можете «видеть» файл с lsрасширением , вы можете записать поверх этого файла любой другой файл, двоичный файл, apk, что угодно, и он будет вести себя так, как если бы он был оригиналом, если вы вызвать оригинал по команде/имени.
@therealjayvi Я думаю, что для Android 6 и выше, если вы используете эксплойт грязной коровы напрямую, чтобы получить root-доступ и изменить /systemраздел или любой другой раздел, например boot, подпись которого проверяется «проверенной загрузкой Android», устройство не загрузится, когда вы перезагружаетесь, так как проверенная загрузка завершится ошибкой при изменении корневого хэша раздела. Думаю, это то, что @MetNP пытался передать своим заявлением.
@GokulNC Вы определенно правы насчет цепочки загрузки, хотя dcow хорош тем, что он изменяет только файлы в памяти. Вот почему существует такая проблема с рутированием устройства с его помощью, потому что любые изменения удаляются при перезагрузке без использования других встроенных функций для этого. В LG V20 есть пример использования встроенных функций, а также мое видео, предоставленное выше. MetNP никто не говорил, что вы сможете использовать оболочку для чтения областей, в которых вы ограничены, независимо от того. сделай домашнее задание йо ;)