SlideShare a Scribd company logo
1 of 36
Android Task hijacking
Evgeny Blashko
Yury Shabalin
Отдел Тестирования Информационной Безопасности приложений
«Сбербанк Технологии»
whoami
• Evgeny Blashko
VTB24, 2A-SOFT
- Developing Mobile Applications
- Mobile application security analysis
• Yury Shabalin
Positive Technologies, Alfa-Bank
– SSDL integration, source code analysis
– Mobile application security analysis
– Developing
History
• USENIX Security Symposium 2015,
Towards Discovering and Understanding Task Hijacking in Android
In our research we find more interesting features…
Some Theory
Some Theory
Standard Behavior
Standard Behavior
Standard Behavior
What is "taskAffinity“ means
How "taskAffinity" works
Task hijacking
Magic
How to spread?
Transition #1 Demo example
Press Intro Press Back
Hijacking state transition #1
Возврат к “исходному” приложению
Useful advance to solve the problem
• Transition #1
– Don’t specify launchMode = “singleTask”
– Don’t set FLAG_ACTIVITY_NEW_TASK
If it necessary, use it with:
FLAG_ACTIVITY_CLEAR_TASK
Transition #2 Demo example
Press Фото
Hijacking state transition #2
Заменяем любое приложение малварью
Transition #3 Demo example
Press Фото
Hijacking state transition #3
Весьма вероятный случай
Useful advance to solve the problem
• Transition #2 and #3
– May be it’s good idea to create service, that would
check another task with “taskAffinity” of your
application
– Or create service that will compare certificate of
application that run with taskAffinity of your
application
Hijacking state transition #4
Редкий случай
Useful advance to solve the problem
• Transition #4
– Don’t specify allowReparenting
– Don’t specify taskAffinity
Transition #5 Demo example
Hijacking state transition #5
Развитие Activity Hijacking
Useful advance to solve the problem
• Transition #5
– Use explicit Intents if the destination Activity is
predetermined
– Verify the destination Activity if linking with another
application
Hijacking state transition #6
Prevent App uninstallation
- Is my application vulnerable?
- Yes.
Vulnerability % of apps*
Run malware from Launcher instead of legitim App 100
Send implicit intent for exported activities 93,9
Send implicit intent for exported activities and use intent
FLAG_ACTIVITY_NEW_TASK
65,5
Contains public exported activity and
launchMode=“singleTask”
14,2
Contains public exported activity and
allowTaskReparenting=“true”
1,4
* Statistics from research in 2015
Android versions & devices vulnerable to spoof from launcher
Android version Vulnerable
Android 5.x Yes
Android 6.x Yes
Android 7.x Yes
CyanogenMod 12.1 No
MIUI Yes
Device Vulnerable
Nexus x.x Yes
Xiaomi Yes
Samsung Yes
LG Yes
* No permission needed
* System Apps also vulnerable
Android Security Team
90 days left, so we can publish results
Useful advance to solve the problem
• Transition #1
– Don’t specify launchMode = “singleTask”
– Don’t set FLAG_ACTIVITY_NEW_TASK
If it necessary, use it with:
FLAG_ACTIVITY_CLEAR_TASK
• Transition #4
– Don’t specify allowReparenting
– Don’t specify taskAffinity
Useful advance to solve the problem
• Transition #5
– Use explicit Intents if the destination Activity is
predetermined
– Verify the destination Activity if linking with another
application
• Transition #2 , #3 and #6
– May be it’s good idea to create service, that would
check another task with “taskAffinity” of your
application
And you installed "calculator for an accountant"?
Questions?
AppSec Need You!
iOS Android Java developer Pentest
Telegram:
@R1p4eg
Mail:
Yury.shabalin@gmail.com
Mail:
30russian@gmail.com
Telegram:
@jd7drw

More Related Content

What's hot

Android Navigation Component
Android Navigation ComponentAndroid Navigation Component
Android Navigation ComponentŁukasz Ciupa
 
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo SilvaAndroid | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo SilvaJAX London
 
Supporting multiple screens on android
Supporting multiple screens on androidSupporting multiple screens on android
Supporting multiple screens on androidLi SUN
 
Android graphics
Android graphicsAndroid graphics
Android graphicsKrazy Koder
 
Class object method constructors in java
Class object method constructors in javaClass object method constructors in java
Class object method constructors in javaRaja Sekhar
 
Getting started with Spring Security
Getting started with Spring SecurityGetting started with Spring Security
Getting started with Spring SecurityKnoldus Inc.
 
Android animation
Android animationAndroid animation
Android animationKrazy Koder
 
Manipulating Android tasks and back stack
Manipulating Android tasks and back stackManipulating Android tasks and back stack
Manipulating Android tasks and back stackRan Nachmany
 
What is Dependency Injection in Spring Boot | Edureka
What is Dependency Injection in Spring Boot | EdurekaWhat is Dependency Injection in Spring Boot | Edureka
What is Dependency Injection in Spring Boot | EdurekaEdureka!
 
Native, Web or Hybrid Mobile App Development?
Native, Web or Hybrid Mobile App Development?Native, Web or Hybrid Mobile App Development?
Native, Web or Hybrid Mobile App Development?Sura Gonzalez
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework tola99
 
Solid design principles
Solid design principlesSolid design principles
Solid design principlesMahmoud Asadi
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
 

What's hot (20)

Android Navigation Component
Android Navigation ComponentAndroid Navigation Component
Android Navigation Component
 
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo SilvaAndroid | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
 
Supporting multiple screens on android
Supporting multiple screens on androidSupporting multiple screens on android
Supporting multiple screens on android
 
Android graphics
Android graphicsAndroid graphics
Android graphics
 
Android Threading
Android ThreadingAndroid Threading
Android Threading
 
Class object method constructors in java
Class object method constructors in javaClass object method constructors in java
Class object method constructors in java
 
Getting started with Spring Security
Getting started with Spring SecurityGetting started with Spring Security
Getting started with Spring Security
 
Android animation
Android animationAndroid animation
Android animation
 
Manipulating Android tasks and back stack
Manipulating Android tasks and back stackManipulating Android tasks and back stack
Manipulating Android tasks and back stack
 
iOS Application Pentesting
iOS Application PentestingiOS Application Pentesting
iOS Application Pentesting
 
Database in Android
Database in AndroidDatabase in Android
Database in Android
 
SQLITE Android
SQLITE AndroidSQLITE Android
SQLITE Android
 
Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674
 
Android pentesting
Android pentestingAndroid pentesting
Android pentesting
 
What is Dependency Injection in Spring Boot | Edureka
What is Dependency Injection in Spring Boot | EdurekaWhat is Dependency Injection in Spring Boot | Edureka
What is Dependency Injection in Spring Boot | Edureka
 
Native, Web or Hybrid Mobile App Development?
Native, Web or Hybrid Mobile App Development?Native, Web or Hybrid Mobile App Development?
Native, Web or Hybrid Mobile App Development?
 
Vue, vue router, vuex
Vue, vue router, vuexVue, vue router, vuex
Vue, vue router, vuex
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Solid design principles
Solid design principlesSolid design principles
Solid design principles
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
 

Similar to Android Task Hijacking

The Future of Software Security Assurance
The Future of Software Security AssuranceThe Future of Software Security Assurance
The Future of Software Security AssuranceRafal Los
 
How to Develop a Secure Web Application and Stay in Mind? (PHDays 3)
How to Develop a Secure Web Application and Stay in Mind? (PHDays 3)How to Develop a Secure Web Application and Stay in Mind? (PHDays 3)
How to Develop a Secure Web Application and Stay in Mind? (PHDays 3)Vladimir Kochetkov
 
Essentials of Web Application Security: what it is, why it matters and how to...
Essentials of Web Application Security: what it is, why it matters and how to...Essentials of Web Application Security: what it is, why it matters and how to...
Essentials of Web Application Security: what it is, why it matters and how to...Cenzic
 
Building an AppSec Team Extended Cut
Building an AppSec Team Extended CutBuilding an AppSec Team Extended Cut
Building an AppSec Team Extended CutMike Spaulding
 
Mike Spaulding - Building an Application Security Program
Mike Spaulding - Building an Application Security ProgramMike Spaulding - Building an Application Security Program
Mike Spaulding - Building an Application Security Programcentralohioissa
 
Best Effort Security Testing for Mobile Applications - 2015 #ISC2CONGRESS
Best Effort Security Testing for Mobile Applications -  2015 #ISC2CONGRESSBest Effort Security Testing for Mobile Applications -  2015 #ISC2CONGRESS
Best Effort Security Testing for Mobile Applications - 2015 #ISC2CONGRESSLostar
 
Navigating agile automotive software development
Navigating agile automotive software development Navigating agile automotive software development
Navigating agile automotive software development Rogue Wave Software
 
BsidesMCR_2016-what-can-infosec-learn-from-devops
BsidesMCR_2016-what-can-infosec-learn-from-devopsBsidesMCR_2016-what-can-infosec-learn-from-devops
BsidesMCR_2016-what-can-infosec-learn-from-devopsJames '​-- Mckinlay
 
Applicaiton Security - Building The Audit Program
Applicaiton Security - Building The Audit ProgramApplicaiton Security - Building The Audit Program
Applicaiton Security - Building The Audit ProgramMichael Davis
 
Applying formal methods to existing software by B.Monate
Applying formal methods to existing software by B.MonateApplying formal methods to existing software by B.Monate
Applying formal methods to existing software by B.MonateMahaut Gouhier
 
Mitigating data theft_in_android
Mitigating data theft_in_androidMitigating data theft_in_android
Mitigating data theft_in_androidRashmi Bhandari
 
Are We Secure? Answering the Unanswerable
Are We Secure? Answering the UnanswerableAre We Secure? Answering the Unanswerable
Are We Secure? Answering the UnanswerableJustin Berman
 
How to Perform Continuous Vulnerability Management
How to Perform Continuous Vulnerability ManagementHow to Perform Continuous Vulnerability Management
How to Perform Continuous Vulnerability ManagementIvanti
 
The Dynamic Application Security Testing Process: A Step-by-Step Guide
The Dynamic Application Security Testing Process: A Step-by-Step GuideThe Dynamic Application Security Testing Process: A Step-by-Step Guide
The Dynamic Application Security Testing Process: A Step-by-Step GuideDev Software
 
Security Testing.pptx
Security Testing.pptxSecurity Testing.pptx
Security Testing.pptxosandadeshan
 
Introduction To Mobile-Automation
Introduction To Mobile-AutomationIntroduction To Mobile-Automation
Introduction To Mobile-AutomationMindfire Solutions
 
Software Engineering-Part 1
Software Engineering-Part 1Software Engineering-Part 1
Software Engineering-Part 1Shrija Madhu
 

Similar to Android Task Hijacking (20)

The Future of Software Security Assurance
The Future of Software Security AssuranceThe Future of Software Security Assurance
The Future of Software Security Assurance
 
Mobile App Security Testing -2
Mobile App Security Testing -2Mobile App Security Testing -2
Mobile App Security Testing -2
 
How to Develop a Secure Web Application and Stay in Mind? (PHDays 3)
How to Develop a Secure Web Application and Stay in Mind? (PHDays 3)How to Develop a Secure Web Application and Stay in Mind? (PHDays 3)
How to Develop a Secure Web Application and Stay in Mind? (PHDays 3)
 
Essentials of Web Application Security: what it is, why it matters and how to...
Essentials of Web Application Security: what it is, why it matters and how to...Essentials of Web Application Security: what it is, why it matters and how to...
Essentials of Web Application Security: what it is, why it matters and how to...
 
Building an AppSec Team Extended Cut
Building an AppSec Team Extended CutBuilding an AppSec Team Extended Cut
Building an AppSec Team Extended Cut
 
Mike Spaulding - Building an Application Security Program
Mike Spaulding - Building an Application Security ProgramMike Spaulding - Building an Application Security Program
Mike Spaulding - Building an Application Security Program
 
Best Effort Security Testing for Mobile Applications - 2015 #ISC2CONGRESS
Best Effort Security Testing for Mobile Applications -  2015 #ISC2CONGRESSBest Effort Security Testing for Mobile Applications -  2015 #ISC2CONGRESS
Best Effort Security Testing for Mobile Applications - 2015 #ISC2CONGRESS
 
Navigating agile automotive software development
Navigating agile automotive software development Navigating agile automotive software development
Navigating agile automotive software development
 
BsidesMCR_2016-what-can-infosec-learn-from-devops
BsidesMCR_2016-what-can-infosec-learn-from-devopsBsidesMCR_2016-what-can-infosec-learn-from-devops
BsidesMCR_2016-what-can-infosec-learn-from-devops
 
Applicaiton Security - Building The Audit Program
Applicaiton Security - Building The Audit ProgramApplicaiton Security - Building The Audit Program
Applicaiton Security - Building The Audit Program
 
Applying formal methods to existing software by B.Monate
Applying formal methods to existing software by B.MonateApplying formal methods to existing software by B.Monate
Applying formal methods to existing software by B.Monate
 
Mitigating data theft_in_android
Mitigating data theft_in_androidMitigating data theft_in_android
Mitigating data theft_in_android
 
Are We Secure? Answering the Unanswerable
Are We Secure? Answering the UnanswerableAre We Secure? Answering the Unanswerable
Are We Secure? Answering the Unanswerable
 
How to Perform Continuous Vulnerability Management
How to Perform Continuous Vulnerability ManagementHow to Perform Continuous Vulnerability Management
How to Perform Continuous Vulnerability Management
 
The Dynamic Application Security Testing Process: A Step-by-Step Guide
The Dynamic Application Security Testing Process: A Step-by-Step GuideThe Dynamic Application Security Testing Process: A Step-by-Step Guide
The Dynamic Application Security Testing Process: A Step-by-Step Guide
 
Security Testing.pptx
Security Testing.pptxSecurity Testing.pptx
Security Testing.pptx
 
Introduction To Mobile-Automation
Introduction To Mobile-AutomationIntroduction To Mobile-Automation
Introduction To Mobile-Automation
 
Software Engineering-Part 1
Software Engineering-Part 1Software Engineering-Part 1
Software Engineering-Part 1
 
Ownux global March 2023.pdf
Ownux global March 2023.pdfOwnux global March 2023.pdf
Ownux global March 2023.pdf
 
Software testing career
Software testing careerSoftware testing career
Software testing career
 

More from Positive Hack Days

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive Hack Days
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Positive Hack Days
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для ApproofPositive Hack Days
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Positive Hack Days
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложенийPositive Hack Days
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложенийPositive Hack Days
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application SecurityPositive Hack Days
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Hack Days
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиPositive Hack Days
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОPositive Hack Days
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Hack Days
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CorePositive Hack Days
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опытPositive Hack Days
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterPositive Hack Days
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиPositive Hack Days
 

More from Positive Hack Days (20)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

Recently uploaded (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Android Task Hijacking

Editor's Notes

  1. Когда мы начали развивать инициативу анализа мобильных приложений, искали гайды, изучали чеклисты и наткнулись на уязвимость, назваемую Activity Hijacking. Начали копать дальше и нашли доклад, представленный на одной из конференций. К сожалению, широкой огласки он не получил, и упоминаний о Task Hijacking больше нигде не встречалось. Прочитав, нам стало интересно и мы провели своё исследование на основе этого доклада. При этом выяснились интересные подробности и новые уязвимости, о которых мы расскажем сегодня. В рамках доклада расскажем частично материалы, которые мы почерпнули и адаптировали из доклада, а так же результаты своего исследования.
  2. Немного теории для дальнейшего понимания происходящего и того, как устроены приложения и процессы в Андроид. Основные компоненты, о которых пойдет речь в дальнейшей презентации: Активити – один из возможных компонентов приложения. Каждая активити – это отдельный графический экран со своими элементами, то, что пользователь видит на экране устройства. Каждое приложение имеет несколько активити для различных действий пользователя, то есть каждый новый экран – это Активити. Все Активити описаны в файле манифеста приложения. Таск – это коллекция активити, с которыми взаимодействовал пользователь во время работы приложения.
  3. Activity в task хранятся в виде стека, называемого back stack. Каждая новая Activity, запускаемая пользователем, располагается системой на верхушке этого стека. Таким образом, при нажатии на кнопку back – Activity, которая была на верху стека закрывается (уничтожается) и отображается Activity, которая была под ней. Отсюда и название – Back Stack.
  4. В дальнейшем будем использовать несколько понятий: Foreground Activity - Activity отображаемая на экране, т.е. находящаяся на верхушке стэка. Foreground Task – это task, в котором располагается foreground Activity. В системе может быть только одна foreground task, все остальные background. При переключении на задачу, находящуюся в background, все активити в таске останавливаются и остаются нетронутыми до тех пор, пока пользователь не вернется в приложение. Таким образом они попадают именно в то место и с тем backstack, на котором остановились в прошлый раз.
  5. Activity внутри back stack могут относится не только к запущенному приложению, но и к другим приложениям. Таким образом в Android построена бесшовная интеграция между различными приложениями. Рассмотрим ситуацию, когда в приложении осуществлена возможность просмотра видео Имеем следующее: На устройстве установлено приложение, которое позволяет просматривать видео. В другом приложении, с которым работает пользователь, есть видео-ролик При нажатии на кнопку просмотра видео, приложение запускает Activity, но не свою (зачем разрабатывать и тратить силы, когда уже всё готово), а Activity стороннего приложения, которое умеет воспроизводить видео. Запускается Activity видео-плеера, и эта Активити запускается в back stack`е нашего приложения, оказавшись на его верхушке. При нажатии на кнопку «Назад», Activity видео-плеера закрывается и мы возвращаемся экран нашего приложения. Это сделано для того, чтобы для пользователя создавалось ощущение работы с единым приложением и не было необходимости переключаться между приложениями для выполнения разовой функции.
  6. Каждая task в системе характеризуется таким атрибутом как taskAffinity. Он объявляет, к какому task`у должна присоединиться Activity при запуске. Это строка, которая либо определяется в манифесте приложения свойством android:taskAffinity=“application_1", либо по умолчанию равна ID приложения в системе (applicationId). Affinity task`а определяется значением taskAffinity его root-Activity (нижней в стэке). Если явно указывать значение taskAffinity, то можно заставить запускаться Activity в рамках произвольного таска.
  7. Итак, Android API при определении Activity позволяет задать произвольное значение для taskAffinity, таким образом указав task, к которой будет относиться эта Activity. Таким образом, каждое приложение в Android может породить несколько task.
  8. В т.ч. task, с taskAffinity стороннего приложения.
  9. А теперь немножко магии, чтобы стало понятно, о чем мы будем рассказывать и как это вообще работает
  10. Когда мы только опубликовали приложение, возник резонный вопрос, а кто же его будет скачивать, оно же находится черти-где и как его вообще найти.. Но тут на помощь пришёл незнакомец и предложил воспользоваться его услугами)
  11. Итак, давайте я попробую объяснить каким образом произошло то, что вы сейчас видели. Для начала, разберемся, как происходит запуск Activity в Android вообще: За загрузку Activity в Android отвечает Activity Manager Service. Покопавшись немного в исходниках, стало понятно, что при определенном launchMode=“singleTask” или интенте с FLAG_ACTIVITY_NEW_TASK сервис действует следующим образом: Для начала, если instance Activity уже существует, то Андроид выводит его на передний план, а не запускает новый Если же всё-таки требуется создание Activity, то AMS выбирает task в который необходимо «положить» созданную Activity при помощи поиска «совпадения» со всеми имеющимися task. Activity «совпадает» c task, если у них указано одинаковое taskaffinity. После найденного совпадения сервис кладет новый Activity на верхушку в «совпавший» task. Если же совпадений не найдено, сервис создаёт task и созданная Activity становится root-Activity Итак, попробуем теперь разобраться, что же происходило на самом деле: Первое. На нашем устройстве запущено вредоносное приложение, которое находится в background и исключено из списка недавних приложений (то есть пользователь никак его не видит) Второе, мы запускаем наше банковское приложение, в котором есть кнопка Intro, по нажатию на которую происходит проигрывание видео. При этом запуск Activity с проигрывателем видео осуществляется с помощью Intent с флагом FLAG_ACTIVITY_NEW_TASK или в Activity Player указан launchMode=“singleTask”. А у вредоносного приложения указан taskAffinity плеера. Таким образом, исходя из работы AMS – он нашёл «совпадающий» task, и положил плеер на верхушку его стека. В результате, вместо того, чтобы присоединиться к банковскому таску или запуститься в новом таске, приложение видеоплеера помещается на верхушку стэка вредоносного Task. После просмотра видео при нажатии на кнопку Back пользователь попадет уже в банковское приложение, во вредосное Mal-Activity 2.
  12. Для предотвращения уязвимостей, связанных с TaskHijacking, можно придерживаться следующих правил: Случай 1: Не указывать для activity launchMode = singleTask Не использовать FLAG_ACTIVITY_NEW_TASK. Если же его использование необходимо, то использовать его вместе с флагом FLAG_ACTIVITY_CLEAR_TOP Случай 4: Желательно не использовать allowReparenting и указания taskAffinity
  13. Рассмотрим самый интересный из приведенных примеров, подмена приложения из Launcher, которому подвержено любое приложение
  14. А вот тут самое интересное. Как мы помним из предыдущего примера, если в системе существует task с taskAffinity = taskAffinity запускаемого Activity, то сервис по управлению Activity должен положить вновь запускаемую активити на верхушку стека существующего приложения. То есть, в нормальном случае, согласно документации, должна запускаться Activity вызываемого приложения, AMS проверяет, если task с таким affinity и кладёт на верхушку стека этогого task. Пользователь видит нормальную активити, под которой лежит вредоносная. Но из-за бага в Android этого не происходит, а вместо этого восстанавливается уже запущенная ранее вредоносная Activity.
  15. Существует ещё один способ подменить приложение при запуске из Launcher. По умолчанию, как только Activity запускается и ассоциируется с Task, эта связь сохраняется на всём протяжении жизненного цикла Activity. Однако Android API позволяет указать такое свойство активити при её определении в манифесте как allowTaskReparenting, который работает следующим образом. Одновременно с этим свойством для активити указывается taskAffinity той задачи, на которую нужно пересадить эту активити при появлении указанной task. Пока в системе не будет этой task activity будет запускаться в таске своего приложения, т.е. с taskAffinity=applicationId. Как только в системе появится tasks с указанной affinity, activity тут же будет пересажена на верхушку её бэкстека. Таким образом для проведения атаки вредоносное приложение должно объявить для той активити, которую нужно отобразить пользователю вместо целевого приложения, соотв. св-ва – allowTaskReparenting и taskAffinity целевого приложения. Когда пользователь запустить целевое приложение, система тут же пересадит вредоносную активити на верхушку бекстека целевого приложения и отобразит её. ----- Однако, в Android существует флаг с названием allowTaskReparenting, который позволяет уже существующей Activity «перемещаться\пересаживаться» на созданный в системе task с таким же taskAffinity Как это происходит. В системе создаётся background task, который имеет 2 Activity (root Activity Mal-Activity 1) и Activity с настройкой allowTaskReparenting и taskAffinity необходимого приложения. Пользователь запускает приложение, создаётся новый task с taskAffinity, указанной в Mal-Activity 2 Во время запуска Mal-Activity 2 «пересаживается» на верхушку нового task и пользователь уже видит вредоносную Activity вместо обычной
  16. Случай 5: Использовать явные интенты, если известна конечная Activity Проверять, какая из Activity запущена при привязке к другому приложению Во всех остальных случаях, ждем исправления от AndroidTeam, но наша идея на данный момент заключается в том, что можно сделать сервис, который бы мониторил список task в системе и определял в нем наличие task с taskaffinity = id вашего приложения. Или сделать сервис, который бы проверял цифровую подпись приложения, от имени которого запущена root-Activity и куда «пересаживаются» созданные вашим приложением Activity
  17. В обратном случае, если необходимо поддержать бесшовную интеграцию между двумя приложениями, разработчики могут указать в валидном приложении allowTaskReparenting и указать taskAffinity другого легитимного приложения. Что произойдет в случае, если на устройстве есть malware: В background запущен вредоносный task с taskAffinity = taskAffinity, указанным в одной из Activity легитимного приложения Пользователь работает с приложением, запускает Activity, например чат, который по задумке разработчиков должен пересаживаться на другой таск AMS проверяет, что уже есть task с таким taskAffinity и пересаживает легитимную Activity на верхушку стека вредоносного task. Теперь, если пользователь захочет вернуться назад, то при нажатии на кнопку back попадёт во вредоносную Activity
  18. Для предотвращения уязвимостей, связанных с TaskHijacking, можно придерживаться следующих правил: Случай 1: Не указывать для activity launchMode = singleTask Не использовать FLAG_ACTIVITY_NEW_TASK. Если же его использование необходимо, то использовать его вместе с флагом FLAG_ACTIVITY_CLEAR_TOP Случай 4: Желательно не использовать allowReparenting и указания taskAffinity
  19. Возможен ещё один путь перенаправления пользователя на свою вредоносную Activity. Предположим следующее: В системе есть вредоносное приложение, одно из Activity которого выполняет вполне легитимную функцию, к примеру просмотр видео. При этом оно маскируется (имеет иконку) похожую на иконку искомого приложения. К примеру, у нас есть банковское приложение BankApp и мы делаем видео плеер с такойже иконкой и названием – BankApp Player Пользователь из легитимного приложения выбирает опцию просмотра видео, при этом это реализовано неявным интентом (то есть ему представляется выбор), каким приложением открыть данный файл. Пользователь видит, что среди программ есть приложение с аналогичной иконкой и похожим названием и выбирает его Вредоносная Activity запускается, оказывается на верхушке стека легитимного приложения и проигрывает файл Во вредоносной Activity переопределен метод onBackPressed, то есть переопределено поведение при нажатии кнопки Back. Его функция – перенаправлять пользователя во вредоносное приложение Пользователь посмотрел видео, нажимает на кнопку back, и попадает во вредоносное приложение. ???? Profit!
  20. Случай 5: Использовать явные интенты, если известна конечная Activity Проверять, какая из Activity запущена при привязке к другому приложению Во всех остальных случаях, ждем исправления от AndroidTeam, но наша идея на данный момент заключается в том, что можно сделать сервис, который бы мониторил список task в системе и определял в нем наличие task с taskaffinity = id вашего приложения. На данный момент эту уязвимость нельзя закрыть.
  21. Системные приложения по сути, не отличаются от устанавливаемых пользователем. Попробуем защититься от удаления нашего приложения. Что мы имеем: В системе запущена background task с affinity = com.android.settings (то есть, с приложением настроек) Пользователь хочет зайти в настройки и удалить приложение. Запускает из Launcher приложение настроек. AMS ищет в системе task с affinity=com.settings.android, находит и кладёт на верхушку стека Malware task Пользователь ходит по меню, заходит в удаление приложений, выбирает зловред и нажимает «Удалить». После этого ему выпадает диалоговое окно с просьбой подтвердить удаление. Это диалоговое окно является ничем иным, как еще одной Activity («Uninstaller» на слайде). В это время вредонос запускает свою Activity, с таким же taskAffinity и она попадает на верхушку стека, перекрывая собой диалоговое окно (Mal-Activity 2 на слайде) При этом у вредоносной Activity переопределен метод OnBackPressed, который снова запускает “Mal-Activity 1” в background и очищает stack, что приводит нас к состоянию 1 А как же удаление через adb? Всё очень просто, чтобы подлючить adb нужно сначала включить usb-debugging в настройках. Дальнейшее развитие вполне понятно =)
  22. В приведенной статье было проанализировано достаточно большое количество приложений из разных магазинов, на слайде приведен дополненный нами результат. Стоит добавить, что вредоносному приложению для реализации подобного вида атак не требуется каких-либо повышенных привилегий и не нужно запрашивать какие-либо permissions. Из-за того, что приложение использует только стандартные разрешенные способы взаимодействия с приложениями, Google без каких либо проблем и ограничений пропускает такие приложения в Play Market. Время проверки нашего приложения перед его публикацией составило 3 часа. 
  23. После выкладывания приложения в google play энтузиасты стали присылать информацию о версиях ОС и устройствах на которых это всё работает. За что им огромный респект. Но одновременно стало ясно что всё плохо и работает это практически везде. Единственным исключением на данный момент стал cyanogenmod, на котором не заработала подмена приложения из лаунчера. Стоит добавить, что вредоносному приложению для реализации подобного вида атак не требуется каких-либо повышенных привилегий и не нужно запрашивать какие-либо permissions. Кроме того, как ранее сказал Юрий уязвимы все приложения, в том числе системные.
  24. По итогам нашего исследования, был заведен баг в команду Android, он подтвержден, сейчас находится в работе. Но, прошло уже 90 дней с момента публикации уязвимости и в соответствии с политикой google можем рассказать про найденную уязвимость. Кстати, Anfroid определил эту уязвимость, как уязвимость среднего уровня. Ну что же, конечно, возможность подменить любое приложение, в том числе и системное – это конечно не серьёзная уязвимость.
  25. Для предотвращения уязвимостей, связанных с TaskHijacking, можно придерживаться следующих правил: Случай 1: Не указывать для activity launchMode = singleTask Не использовать FLAG_ACTIVITY_NEW_TASK. Если же его использование необходимо, то использовать его вместе с флагом FLAG_ACTIVITY_CLEAR_TOP Случай 4: Желательно не использовать allowReparenting и указания taskAffinity
  26. Случай 5: Использовать явные интенты, если известна конечная Activity Проверять, какая из Activity запущена при привязке к другому приложению Во всех остальных случаях, ждем исправления от AndroidTeam, но наша идея на данный момент заключается в том, что можно сделать сервис, который бы мониторил список task в системе и определял в нем наличие task с taskaffinity = id вашего приложения. На данный момент эту уязвимость нельзя закрыть.