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 Security & Penetration Testing
Android Security & Penetration TestingAndroid Security & Penetration Testing
Android Security & Penetration TestingSubho Halder
 
OWASP Secure Coding
OWASP Secure CodingOWASP Secure Coding
OWASP Secure Codingbilcorry
 
Mobile Application Security
Mobile Application SecurityMobile Application Security
Mobile Application Securitycclark_isec
 
01 software test engineering (manual testing)
01 software test engineering (manual testing)01 software test engineering (manual testing)
01 software test engineering (manual testing)Siddireddy Balu
 
SOFTWARE TESTING UNIT-4
SOFTWARE TESTING UNIT-4  SOFTWARE TESTING UNIT-4
SOFTWARE TESTING UNIT-4 Mohammad Faizan
 
Getting Started with Amazon Inspector
Getting Started with Amazon InspectorGetting Started with Amazon Inspector
Getting Started with Amazon InspectorAmazon Web Services
 
Software Testing - A sneak preview By Srikanth
Software Testing - A sneak preview By SrikanthSoftware Testing - A sneak preview By Srikanth
Software Testing - A sneak preview By SrikanthSrikanth Krishnamoorthy
 
OWASP Mobile Top 10
OWASP Mobile Top 10OWASP Mobile Top 10
OWASP Mobile Top 10NowSecure
 
우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 SangIn Choung
 
Test Automation Architecture
Test Automation ArchitectureTest Automation Architecture
Test Automation ArchitectureApplitools
 
Security Testing
Security TestingSecurity Testing
Security TestingQualitest
 
Owasp top 10 vulnerabilities
Owasp top 10 vulnerabilitiesOwasp top 10 vulnerabilities
Owasp top 10 vulnerabilitiesOWASP Delhi
 

What's hot (20)

Android Security & Penetration Testing
Android Security & Penetration TestingAndroid Security & Penetration Testing
Android Security & Penetration Testing
 
OWASP Secure Coding
OWASP Secure CodingOWASP Secure Coding
OWASP Secure Coding
 
Mobile App Security Testing -2
Mobile App Security Testing -2Mobile App Security Testing -2
Mobile App Security Testing -2
 
Threat Hunting on AWS using Azure Sentinel
Threat Hunting on AWS using Azure SentinelThreat Hunting on AWS using Azure Sentinel
Threat Hunting on AWS using Azure Sentinel
 
Mobile Application Security
Mobile Application SecurityMobile Application Security
Mobile Application Security
 
01 software test engineering (manual testing)
01 software test engineering (manual testing)01 software test engineering (manual testing)
01 software test engineering (manual testing)
 
SOFTWARE TESTING UNIT-4
SOFTWARE TESTING UNIT-4  SOFTWARE TESTING UNIT-4
SOFTWARE TESTING UNIT-4
 
Getting Started with Amazon Inspector
Getting Started with Amazon InspectorGetting Started with Amazon Inspector
Getting Started with Amazon Inspector
 
Software Testing - A sneak preview By Srikanth
Software Testing - A sneak preview By SrikanthSoftware Testing - A sneak preview By Srikanth
Software Testing - A sneak preview By Srikanth
 
OWASP Mobile Top 10
OWASP Mobile Top 10OWASP Mobile Top 10
OWASP Mobile Top 10
 
우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료
 
Testing fundamentals
Testing fundamentalsTesting fundamentals
Testing fundamentals
 
Cloud Security (AWS)
Cloud Security (AWS)Cloud Security (AWS)
Cloud Security (AWS)
 
Test Automation Architecture
Test Automation ArchitectureTest Automation Architecture
Test Automation Architecture
 
Postman
PostmanPostman
Postman
 
Junit
JunitJunit
Junit
 
Security Testing
Security TestingSecurity Testing
Security Testing
 
Blacklist3r
Blacklist3rBlacklist3r
Blacklist3r
 
Owasp top 10 vulnerabilities
Owasp top 10 vulnerabilitiesOwasp top 10 vulnerabilities
Owasp top 10 vulnerabilities
 
Penetration Testing AWS
Penetration Testing AWSPenetration Testing AWS
Penetration Testing AWS
 

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
 
Cloak and Dagger Attacks - Android
Cloak and Dagger Attacks - Android Cloak and Dagger Attacks - Android
Cloak and Dagger Attacks - Android Sudara Fernando
 

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
 
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
 
Cloak and Dagger Attacks - Android
Cloak and Dagger Attacks - Android Cloak and Dagger Attacks - Android
Cloak and Dagger Attacks - Android
 

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

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

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 вашего приложения. На данный момент эту уязвимость нельзя закрыть.