Samsung Galaxy デバイスでシステム シェル アクセスを取得する方法

click fraud protection

クイックリンク

  • 前提条件
  • Samsung Galaxy デバイスを悪用してシステム シェルにアクセスする方法
  • 検証
  • 結論

毎月第 1 月曜日に、Google は Android セキュリティ速報. Android OS のさまざまなコンポーネントにわたる軽減されたセキュリティ脆弱性をすべて公開します。 Google 自身またはその他のサードパーティによって提出された Linux カーネルとそのパッチ 日付。 Samsung などの大手 OEM は、Android に対して独自の見解を持っているため、独自のパッチやアップデートをセキュリティ アップデートに含めることを選択しています。

そうは言っても、すべての抜け穴に対処するのは非常に困難です。 攻撃ベクトルは多数存在しており、場合によっては、次のような攻撃に基づいて独自のエクスプロイト チェーンを作成することもできます。 既知の脆弱性の 1 つを回避する新しい方法があるというだけの理由で、 保障措置。 これはまさに XDA 上級メンバーです K0mraid3 彼は 4 年前から存在する脆弱性を利用し、最新の主力製品を含むすべての Samsung Galaxy デバイスでシステム シェルにアクセスできるようにしていました。 それは同じではありませんが、 root権限を持っていること、これは十分に高いローカル権限昇格です。

この脆弱性の主な侵入ポイントは、Samsung Text-To-Speech (パッケージ名: com.samsung. SMT) は、すべての Samsung Galaxy デバイスに搭載されているプリロードされたシステム アプリです。 このアイデアは、インストールされているアプリのバージョンを特定の脆弱なビルドにダウングレードすることです (v3.0.02.2 正確には)、ライブラリを強制的にロードします。これにより、システム権限 (UID 1000) でシェルが開きます。

このエクスプロイトについて詳しく知りたい場合は、必ずチェックしてください。 XDA 主任テクニカルエディター、Adam Conway の解説者. 彼は、このエクスプロイトの全範囲とその仕組みを把握するために、K0mraid3 に話を聞きました。

  1. 繰り返しになりますが、これはルート (UID 0) アクセスではありませんが、システム シェル アクセスは、制限されている多数のバイナリを実行するのに十分強力です。
  2. K0mraid3 の概念実証にはヘルパー APK が必要であり、エクスプロイト チェーンを起動する前に少なくとも 1 回実行する必要があります。
  3. 1 つの UI、つまり Samsung のカスタム Android スキンの組み込み省電力ルーチンは、TTS アプリ、ヘルパー APK、シェル間の通信を妨げる可能性があるため、問題になる可能性があります。 そのため、事前にアプリの省電力プロファイルを「無制限」に設定することをお勧めします。

前提条件

  1. エクスプロイトのコンパイル済みビルドを次の場所からダウンロードします。 XDAフォーラムのスレッド または、以下にリンクされている公式 GitHub リポジトリ: K0mraid3s システム シェルのエクスプロイト
  2. アーカイブをどこかに解凍すると、脆弱なバージョンの Samsung Text-To-Speech APK が見つかるはずです。 (samsungTTSVULN2.apk)、ヘルパー アプリ (Komraid3s_POC_Vx.x.apk)、およびという名前の Windows 実行可能ファイル システムシェル-vx.x.exe。
  3. 最新バージョンであることを確認してください ADB は PC/Mac/Chromebook にインストールされます。 また、忘れずに Samsung USB ドライバーをインストール/更新する Windows ユーザーの場合。

Samsung Galaxy デバイスを悪用してシステム シェルにアクセスする方法

手動による方法

  1. USB デバッグをオンにして対象の Galaxy デバイスを PC に接続し、ADB によって検出可能であることを確認してから、ヘルパー アプリをインストールします。
    adb install Komraid3s_POC_Vx.x.apk
    • 前述したように、次の手順に進む前に、ヘルパー アプリを少なくとも 1 回開いてください。
  2. 次に、Samsung TTS アプリの脆弱なバージョンを /data/local/tmp にプッシュし、その権限を変更します。
    adb push samsungTTSVULN2.apk /data/local/tmp
    adb shell chmod 777 /data/local/tmp/samsungTTSVULN2.apk
  3. デバイスを再起動します。 ホーム画面に表示されたらすぐに次のコマンドを実行して、すでにインストールされているバージョンの Samsung TTS アプリを脆弱なバージョンに置き換えます。
    adb shell pm install -r -d -f -g --full --install-reason 3 --enable-rollback /data/local/tmp/samsungTTSVULN2.apk
    • すべてが正常に完了すると、コンソールに「成功」​​というメッセージが表示されるはずです。
  4. 別のターミナル ウィンドウを開いて次を実行して、ターゲット デバイス上でシェルを開きます。 adbシェル次に、Netcat バイナリを実行し、次のコマンドを使用して 9997 ポートで受信接続をリッスンします。
    adb shell nc -lp 9997
  5. この段階では、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
  6. 最初のシェルに戻ると、システム (UID 1000) 権限を持つ新しいプロンプトが表示されます。

自動化された方法

作業を容易にするために、K0mraid3 は、ほとんどのタスクを自動化する使いやすい GUI アプリケーションも提供します。 GUI アプリは Windows 専用であるため、Linux/macOS ユーザーの場合は、手動の方法を使用することをお勧めします。

  1. USB デバッグをオンにして対象の Galaxy デバイスを PC に接続し、ADB によって検出可能であることを確認してから、ヘルパー アプリをインストールします。
    adb install Komraid3s_POC_Vx.x.apk
    • 前述したように、次の手順に進む前に、ヘルパー アプリを少なくとも 1 回開いてください。
  2. ADB によってターゲット デバイスが検出可能になった状態で、ホスト PC 上で systemshell-vx.x.exe を実行します。
  3. 「シェルを開始」ボタンをクリックします。 アプリは Samsung TTS アプリを自動的にダウングレードし、システム シェルを開こうとします。
    • 携帯電話/タブレットでは、音声データのダウンロードを求める TTS アプリが表示される場合があります。 これらのオプションはエクスプロイトとは関係がないため、操作する必要はありません。
    • アプリがハングするか、しばらくしてもシェル ウィンドウを開けない場合は、アプリを閉じ、対象の Galaxy デバイスを再起動して、最初からやり直してください。
    • Galaxy Store アプリは、TTS アプリの省電力プロファイルをバックグラウンドで自動的に更新および/またはリセットできるため、プロセスを最初から開始する前に必ず確認してください。

検証

シェルにアクセスしたら、以下のコマンドのいずれかを使用して特権レベルを確認できます。

  • whoami
    • 出力は「system」である必要があります
  • id -u
    • 出力は「1000」になるはずです

結論

Android デバイスで root アクセスを実現する一般的な方法は、まずブートローダーのロックを解除することです。これにより、サードパーティのバイナリを起動できるようになります。 Android のセキュリティ モデルは基本的に root で崩壊するため、この手順ではデバイス上の主要なセキュリティ機能の 1 つを意図的に無効にします。 このため、ユーザーは通常、開発者向けオプションでトグルを有効にしてからロック解除コマンドを発行することで、この問題の発生を明示的に許可する必要があります。 ブートローダー。 ブートローダーのロックが解除されると、ユーザーはシステムにスーパーユーザー バイナリを導入し、どのプロセスがルートにアクセスできるかを制御するスーパーユーザー管理アプリ (Magisk など) を導入することもできます。

ただし、上記のシステム シェル エクスプロイトを使用すると、ユーザーは昇格された権限を取得するためにブートローダーのロックを解除する必要がありません。 root には程遠いですが、「system」ユーザーは、多数の下位レベルのパーティション (たとえば、 /efs として)、さまざまなサービスやデバッグ ツールを開始し、多くの保護された prop 値を変更します。これらはすべてトリップすることなく行われます。 ノックス。 これらの例では、いくつかの方法についてのみ触れています。 悪意のある攻撃者は、これを他の脆弱性と組み合わせて、より悪質なアクションを思いつく可能性があります。

Google と Samsung がこのシナリオにどのように取り組むのかを見守る必要があります。 いずれにせよ、当面は Samsung Text-To-Speech アプリを無効にするか削除する必要があります。