Android Task Hijacking
Reading time: 3 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Завдання, стек назад та активності на передньому плані
В Android, завдання - це, по суті, набір активностей, з якими користувачі взаємодіють для виконання конкретної роботи, організованих у стек назад. Цей стек упорядковує активності на основі того, коли вони були відкриті, причому найновіша активність відображається вгорі як активність на передньому плані. У будь-який момент часу лише ця активність видима на екрані, що робить її частиною завдання на передньому плані.
Ось швидкий огляд переходів між активностями:
- Активність 1 починається як єдина активність на передньому плані.
- Запуск Активності 2 переміщує Активність 1 у стек назад, виводячи Активність 2 на передній план.
- Запуск Активності 3 переміщує Активність 1 та Активність 2 далі назад у стеці, з Активністю 3 тепер попереду.
- Закриття Активності 3 повертає Активність 2 на передній план, демонструючи спрощений механізм навігації завданнями в Android.
Атака на афінність завдання
Огляд афінності завдання та режимів запуску
В Android-додатках, афінність завдання вказує на переважне завдання активності, зазвичай відповідне назві пакета програми. Ця настройка є важливою для створення демонстраційного додатка (PoC) для демонстрації атаки.
Режими запуску
Атрибут launchMode
визначає обробку екземплярів активностей у завданнях. Режим singleTask є ключовим для цієї атаки, визначаючи три сценарії на основі існуючих екземплярів активностей та відповідності афінності завдання. Експлуатація базується на здатності додатка зловмисника імітувати афінність завдання цільового додатка, вводячи в оману систему Android, щоб запустити додаток зловмисника замість цільового.
Детальні кроки атаки
- Встановлення шкідливого додатка: Жертва встановлює додаток зловмисника на своєму пристрої.
- Початкова активація: Жертва спочатку відкриває шкідливий додаток, готуючи пристрій до атаки.
- Спроба запуску цільового додатка: Жертва намагається відкрити цільовий додаток.
- Виконання захоплення: У якийсь момент додаток намагається відкрити вигляд singleTask. Завдяки відповідності афінності завдання, шкідливий додаток запускається замість цільового додатка.
- Оману: Шкідливий додаток показує фальшивий екран входу, що нагадує цільовий додаток, обманюючи користувача на введення чутливої інформації.
tip
Зверніть увагу, що для успішної атаки вразливий вигляд не повинен мати експортований в true і не повинен бути основною активністю.
Для практичної реалізації цієї атаки зверніться до репозиторію Task Hijacking Strandhogg на GitHub: 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 Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.