Android Task Hijacking
Reading time: 6 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
タスク、バックスタックとフォアグラウンドアクティビティ
Androidにおいて、タスクはユーザーが特定の作業を完了するために対話するアクティビティのセットであり、バックスタック内に整理されています。このスタックはアクティビティが開かれた順に並べられ、最も最近のアクティビティが最上部に表示され、フォアグラウンドアクティビティとなります。どの瞬間でも、このアクティビティだけが画面に表示され、フォアグラウンドタスクの一部となります。
アクティビティの遷移の簡単な内訳は以下の通りです:
- アクティビティ 1 はフォアグラウンドの唯一のアクティビティとして開始されます。
- アクティビティ 2 を起動すると、アクティビティ 1 はバックスタックに押し出され、アクティビティ 2 がフォアグラウンドに来ます。
- アクティビティ 3 を開始すると、アクティビティ 1 と アクティビティ 2 はスタックのさらに後ろに移動し、アクティビティ 3 が前面に出ます。
- アクティビティ 3 を閉じると、アクティビティ 2 が再びフォアグラウンドに戻り、Androidの効率的なタスクナビゲーションメカニズムを示します。
タスクアフィニティ攻撃
タスクアフィニティと起動モードの概要
Androidアプリケーションにおいて、タスクアフィニティはアクティビティの好ましいタスクを指定し、通常はアプリのパッケージ名に一致します。この設定は、攻撃を示すための概念実証(PoC)アプリを作成するのに重要です。
起動モード
launchMode
属性は、タスク内のアクティビティインスタンスの処理を指示します。singleTaskモードはこの攻撃にとって重要であり、既存のアクティビティインスタンスとタスクアフィニティの一致に基づいて3つのシナリオを指示します。攻撃者のアプリがターゲットアプリのタスクアフィニティを模倣する能力に依存し、Androidシステムを誤導して攻撃者のアプリを起動させます。
詳細な攻撃手順
- 悪意のあるアプリのインストール: 被害者は攻撃者のアプリをデバイスにインストールします。
- 初期アクティベーション: 被害者は最初に悪意のあるアプリを開き、攻撃の準備をします。
- ターゲットアプリの起動試行: 被害者はターゲットアプリを開こうとします。
- ハイジャックの実行: ある時点でアプリがsingleTaskビューを開こうとします。タスクアフィニティが一致するため、悪意のあるアプリがターゲットアプリの代わりに起動されます。
- 欺瞞: 悪意のあるアプリはターゲットアプリに似た偽のログイン画面を表示し、ユーザーを騙して機密情報を入力させます。
tip
この攻撃が機能するためには、脆弱なビューがexported to trueである必要はなく、メインアクティビティである必要もありません。
この攻撃の実践的な実装については、GitHubのTask Hijacking Strandhoggリポジトリを参照してください: Task Hijacking Strandhogg。
予防策
このような攻撃を防ぐために、開発者は以下を行うことができます:
taskAffinity
をsingleTaskビューの空文字列に設定する (android:taskAffinity=""
)- **
singleInstance
**起動モードを選択し、他のアプリからの隔離を確保する。 - **
onBackPressed()
**関数をカスタマイズして、タスクハイジャックに対する追加の保護を提供する。
参考文献
- https://blog.dixitaditya.com/android-task-hijacking/
- https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。