0x01 本来の目的と適用可能なシナリオ
Android の USB デバッグ モードは、開発者がアプリケーション開発プロセス中にアプリケーションをデバッグまたはテストするために使用できるように設計されています。
adb は、アプリケーションのインストールとアンインストール、バックアップとリカバリ、ログ出力とフィルタリングなど、開発に役立つ一連の機能を提供し、また、かなりの権限を備えた非常に使いやすい adb シェルも提供します。
開発者に加えて、リバース アナリストも、アプリケーションのリバース分析や動的デバッグを実行するときに adb インターフェイスを使用します。たとえば、このインターフェイスを通じて、so または smali を動的にデバッグおよび追跡したり、一部の機能コードを動的にデバッグしたりできます。すぐ。
しかし、その豊富な機能の裏には、利便性とセキュリティはある程度反比例します。
0x02 adb情報漏洩と権限漏洩問題
アプリケーションリリース時にlogcatが出力したデバッグ情報を削除しないと、軽微なケースではlogcatが出力するなど機密情報が漏洩する可能性が非常に高いです。訪問した Web ページのリンクやその他の中間変数によって、アカウントのパスワードが漏洩する可能性もあります。結局のところ、Android 開発の敷居は低く、開発者のレベルには必然的にばらつきがあります。
デバッグを容易にするために、開発者は次のように記述することもあります:
Android の logcat 情報の漏洩は、次のように過去に何度も明らかにされています:
WooYun: Tuniu.com アプリの logcat 情報がユーザー グループに漏洩チャットの内容
WooYun: サーフィン ブラウザ logcat がユーザーのテキスト メッセージを出力します
WooYun: 杭州銀行 Android クライアントのログイン アカウントとパスワード情報がローカルに漏洩します
さらに、現在市場に出ている多くの Android アプリケーション脆弱性スキャン プラットフォームも logcat に焦点を当てています。 Tencent King Kong Audit System、Alibaba Security、360 Risk Mirror (旧 Bug Hunter) などの不正行為がスキャンされ、レポートに表示されます。これは、この問題の普遍性を側面から反映するものでもあります。
開発者の間違いに加えて、adb 自体の設計にもいくつかの欠陥があります。かつて、この問題を具体的に研究した論文「Bittersweet ADB: Attacks and Defenses」がありました。
ADB または ADB 権限を申請した Android アプリケーションを通じて、権限を申請せずにテキスト メッセージや通話記録などの個人情報を監視したり、画面クリック イベントを監視/シミュレートしたり、他のアプリケーションのプライベート ディレクトリにアクセスしたり、Android デバイスを監視したりできます. DoS攻撃などを行う。
上記の動作のほとんどは、adb Shell dumpsys コマンドを通じて取得できます。詳細については、参考リンク [2] を参照してください。
0x03 Android バックアップの問題
これは非常に古い問題で、低バージョンの Android システムでは、アプリケーションをバックアップするときにそのプライベート データがバックアップされ、次に示すように特定のツールでそれらを抽出できます。
それでは、アプリケーションのプライベートデータとは何でしょうか? まず第一に、個人のアイデンティティの認証情報、またはアカウントのパスワードやその他の認証情報が存在します。結局のところ、それは「プライベート」と呼ばれるものです。 「データ」を作成するため、多くのアプリケーションはそれをプレーン テキストで直接保存します。暗号化されているものもありますが、データはアプリケーションの逆分析を通じて復号化できます。たとえば、クライアントにバックアップされたコンテンツには次のファイルが含まれています: APK をリバースエンジニアリングすることで復号プロセスを見つけることができ、復号クラスとメソッドをコピーすることで復号することができます: 別の例は WeChat のデータベースです。いくつかの記事では WeChat データベースの暗号化プロセスを分析しています暗号化キーの生成方法が指定されている場合、WeChat ローカル データベース、uin、imei を同時に取得すると、後者の 2 つに基づいてデータベースの暗号化キーを計算し、暗号化されたデータベースを復号化できます。そのうち、すべてのチャット記録が直接日光にさらされることになります。 データを手動で直接復号化することに加えて、adb 復元を通じてデータをそのままの状態で別の携帯電話に復元することもできます。これにより、droidsec の記事「あなたの周りの女神の Weibo アカウントを 2 分で盗む」(リンク [4] を参照してください) adb バックアップを使用する場合、バックアップする前に手動で確認をクリックする必要があることに気づいた人もいますが、攻撃者が画面をクリックする機会がない場合は問題ありません。 , Androidには入出力サブシステムと呼ばれる仕組みがあり、シェルの下でsendeventコマンドを実行することができ、各モデルでは以下のイベントを送信することでクリックをシミュレートして操作を許可することができます。 :#EV_KEY BTN_TOUCH DOWN sendevent /dev/input/event7 1 330 1 #EV_ABS ABS_MT_POSITION_X 366 sendevent /dev/input/event7 3 53 366 #EV_ABS ABS_MT_POSITION_Y 690 sendevent /dev/input/event7 3 54 690 #EV_SYN SYN_REPORT 00000000 sendevent /dev/input/event7 0 0 0 #EV_KEY BTN_TOUCH UP sendevent /dev/input/event7 1 330 0 #EV_SYN SYN_REPORT 00000000 sendevent /dev/input/event7 0 0 0
ただし、通常の馬には発見される可能性を高めるためのアイコンやインターフェースがない場合があり、起動されていないアプリケーションは実行できないため、登録したBroadcastReceiverは何も受信できません。覚醒のプロセスが必要です。
幸いなことに、adb シェルはこのウェイクアップ プロセスを実現することもでき、adb シェル am コマンドは特定のアプリケーション パッケージの特定のコンポーネントを開始できるため、ポニーは正常に実行できます。
もちろん、攻撃者が直接 adb でエクスプロイトをプッシュし、権限を root に昇格させるなど、より強力な方法を持っている場合は、より単純かつ粗雑なものになります。
0x05 悪意のあるコードの挿入
この方法は比較的洗練されており、USB デバッグに接続すると、一連のコマンドを使用して、携帯電話にインストールされているアプリケーションにカスタムの悪意のあるコードを挿入できます。このコードは、再生するのと同じくらい簡単です。挨拶だったり、非常に複雑なリモコンだったりします。
さらに信頼性を高めるために、たとえば、アドレス帳管理ソフトウェアを挿入した後、連絡先リストの読み取りを要求するアプリケーションを選択することもできますが、これは問題ないようです。
学界や産業界では再パッケージ化を防ぐための多くの対策が講じられていますが、実際のテストでは、この攻撃方法の成功率は決して低くはなく、たとえアプリケーションへのインジェクションが失敗したとしても、最も粗雑な方法である pm list パッケージが引き続き使用される可能性があります。 -3 すべてのパッケージをリストし、再試行します。
以下では、USB デバッグをオンにして携帯電話上のアプリケーションにメタスプロイト メータープリッター http リバース シェル ペイロードを挿入する簡単なプログラムを作成しました。一般的なプロセス中に携帯電話で操作を実行する必要はありません。ワークフローは次のとおりです:
挿入されたアプリケーションを再度クリックすると、リスニングサーバー上で開かれたハンドラー上でmeterpreterシェルを受け取ります:
上記により、Androidをリモート制御できますサーバー側のアプリケーションでは、Android meterpreter シェルを取得すると、プライバシーの盗用、テキスト メッセージの送信、Web ページを開く、スクリーンショットの取得、写真の撮影など、さまざまなことができるようになります。
さらに、リアルタイム監視のためにフロントカメラとリアカメラを呼び出すこともできます。
サポートされているコマンドの一部は次のとおりです:
0x06 最後に
4.4 以降の Android バージョンでは、Android デバイスで adbd に接続する場合は、ホスト マシンのフィンガープリントを検証する必要があります。これらの方法によって攻撃される可能性が大幅に減少します。ただし、現在 PC 上の Android 管理ソフトウェアは USB デバッグを有効にすることを強く推奨しており、有効にする方法も段階的に説明しているため、かなりの数の人が依然としてこのリスクにさらされています。
上記からわかるように、adb を通じて実行できることはまだたくさんあります。これらは、上記の攻撃を完全に防ぎたい場合によく使用されるいくつかの小さな方法です。最も簡単で効果的な方法は、USB デバッグをオフにして、通常のアプリケーション マーケットから信頼できるアプリケーションをダウンロードしてみることです。
結局のところ、あなたが駅や公共の場所で、誰かがそこに置いた公共の充電ソケットを使用していて、その背後に悪意のあるコンピュータがあり、たまたまそれを開けてしまったか、あるいはそれに誘導された場合を想像してみてください。 USB デバッグを開きます...