VIKIROOT
これは、64ビットAndroid 6.0.1 Marshmallow(おそらく7.0?)向けのCVE-2016-5195 PoCであり、汎用的で安定した一時的なルートツールでもあります。SUID実行ファイルやファイルシステムの変更は必要ありません。
特徴
- SELinuxバイパス(詳細は以下参照)。
- メモリのみ:ファイルシステムを変更したり、特別な実行ファイルは不要。
- 安定:デバイスの安定性に影響を与えません。
- スケーラブル:新しいカーネルや新しいデバイスを簡単に追加可能。
- 元に戻せる:ルートシェル終了後にバックドアが自動的にクリアされるため、使用後の再起動は不要。
注意
「SELinuxバイパス」とは、SELinuxが強制モードであってもペイロードがinitドメインで実行されることを意味しますが、initドメインを制限なしにするにはsepolicyへのパッチが依然として必要です。通常、これは改変されたブートイメージが必要であることを意味します。
前提条件
- アイザック・アシモフのわれはロボット。
- dirtycow対応デバイス。
- パッチ適用済みsepolicy。
ビルド
プリビルドのバイナリはリリースページから入手可能です。それ以外の場合は、NDKスタンドアロンツールチェーンをPATHに追加し、makeを実行してください。
使用方法
adbシェル経由で実行し(/data/local/tmpに配置)、内蔵ターミナルまたはncなどのリモートターミナルサーバーでルートシェルを取得できます。詳細は、パラメータなしで実行してください。
トラブルシューティング
- まずは上記の「注意」の部分をよくお読みください。
- 「ペイロードのスペース不足」または「不明なカーネル」:再起動が必要です。
- 「リバースコネクトシェル待機中」:デバイスを起動し、時計/アラームアプリを開くか、Bluetoothスイッチを切り替えてバックドアをトリガーしてください。
- それでもダメな場合:'dbg'バージョンを実行し、生成されたファイル(カーネルの一部のダンプで個人情報は含まれていません)を添付して私にメールをお送りください。
クレジット
- vDSOパッチ手法を提供してくれたscumjr
- sepolicy問題のデバッグを手伝ってくれたTzul
- bionicで動作するようにしてくれたRenaKunisaki
TODO
- x86サポートなどのためのカーネルデータベースを充実させる。
- Android 7 Nougatでテストする(協力者募集中!)。