15

suLinuxカーネルでいくつかのコマンドを実行するために使用するアプリを書いています。SuperUserが、アプリケーションがroot権限を要求していることをどのように把握するのか疑問に思いましたか?また、このチェックをバイパスできる既知の方法(難読化による)はありますか?

言い換えると、Android /(SuperUser)は、Androidマニフェストファイルで明示的に要求された権限がないにもかかわらず、アプリにroot権限が必要であることをどのように認識しますか。

私はセキュリティの観点からこの質問をしています。悪意のあるアプリがSuperUserをバイパスできないようにするために、これがどのように機能するかについて詳しく知りたいです。

4

3 に答える 3

18

スーパーユーザー システムには、スーパーユーザー バイナリ(端末上の su) とSuperUser.apk (su を使用してアプリを管理する Android アプリ) の 2 つの部分があります。su バイナリのソースコードを見ると、su アクセスをリクエストすると、

Process p = Runtime.getRuntime().exec("su");

アプリケーションがスーパーユーザー アクセスを要求した Android メッセージング マネージャーを介してインテントを発行します。

sprintf(command, "/system/bin/am broadcast -a '%s' --es socket '%s' --ei caller_uid '%d' --ei allow '%d' --ei version_code '%d' > /dev/null",action, socket_path, ctx->from.uid, allow, VERSION_CODE);  

マネージャー アプリはこのインテントをリッスンし、ユーザーに要求を処理するように求めます (許可/拒否)。

于 2012-11-14T04:49:26.210 に答える
15

これを実行すると:

Process p = Runtime.getRuntime().exec("su");

スーパーユーザー権限を持つアプリのみが実行できる「su」を実行しようとしています! そのため、Android が「su」を実行しようとしていることを検出するたびに、アプリにスーパーユーザーのアクセス許可が必要であることがわかります。

また、Android には、Android システムのみがアクセスできる領域が予約されています。アプリがそこで何かにアクセスしようとすると、Android はスーパーユーザーが必要であることを認識します。

たとえば、ホスト ファイルを変更したり、DHCP などのネットワーク構成を変更したりしようとしているとします。または、システム領域からファイルにアクセスしようとしています。たとえば/data、Android はアプリにスーパーユーザー権限があるかどうかを確認し、そのようなものへのアクセスのみを許可します。

悪意のあるソフトウェアについては、アプリがスーパーユーザー アクセスを必要とするたびに、システムはユーザーにアプリへのスーパーユーザー アクセス許可を付与または拒否するように求めます。そうして初めて、アプリは root アクセスを取得できます。そのため、アプリのルート アクセスを許可するか拒否するかは、ユーザーが決定する必要があります。(特定のアプリの承認または拒否の選択をシステムに記憶させるようにシステムに指示しない限り、ルート アクセスが必要なものにアプリがアクセスしようとするたびに、システムはユーザーにプロンプ​​トを表示します。)

PS: Superuser app の Web サイトをチェックすることを検討してください。

于 2012-10-30T12:46:05.547 に答える
6

実際、それは非常に簡単です。suバニラ Android にはまたはさえありませんsuperuser。デバイスをルート化すると、ルートとしてシェルが実行されます。次に、suバイナリとsuperuser.apk. インストール後、シェルを通常のアクセス許可に戻します。これらすべてのルート専用アプリを呼び出しsuて、ルート アクセスを要求できるようになりました。

su実行されるsuperuser.apkと、権限を昇格するかどうかを尋ねるメッセージが表示されます。suバイナリであり、Androidsuperuser.apkの通常のサンドボックス化によって保護されています。アプリにルート権限を与えると、 su を独自のバージョンで上書きするなど、アプリが必要とすることは何でも自由になることに注意してください。

于 2012-11-14T04:31:20.817 に答える