Android Task Hijacking

Support HackTricks

Task, Back Stack and Foreground Activities

안드로이드에서 task는 사용자가 특정 작업을 완료하기 위해 상호작용하는 활동의 집합으로, back stack 내에 조직됩니다. 이 스택은 활동이 열린 순서에 따라 활동을 정렬하며, 가장 최근의 활동이 가장 위에 표시되어 foreground activity가 됩니다. 언제든지 이 활동만 화면에 표시되어 foreground task의 일부가 됩니다.

활동 전환에 대한 간단한 요약은 다음과 같습니다:

  • Activity 1은 전면에서 유일한 활동으로 시작됩니다.

  • Activity 2를 시작하면 Activity 1이 백 스택으로 밀려나고, Activity 2가 전면으로 나옵니다.

  • Activity 3을 시작하면 Activity 1Activity 2가 스택에서 더 뒤로 밀려나고, Activity 3이 이제 앞에 위치합니다.

  • Activity 3을 닫으면 Activity 2가 다시 전면으로 나와 안드로이드의 간소화된 작업 탐색 메커니즘을 보여줍니다.

Task affinity attack

Overview of Task Affinity and Launch Modes

안드로이드 애플리케이션에서 task affinity는 활동의 선호 작업을 지정하며, 일반적으로 앱의 패키지 이름과 일치합니다. 이 설정은 공격을 시연하기 위한 개념 증명(PoC) 앱을 만드는 데 중요합니다.

Launch Modes

launchMode 속성은 작업 내에서 활동 인스턴스를 처리하는 방법을 지시합니다. singleTask 모드는 이 공격에 중추적이며, 기존 활동 인스턴스와 작업 친화성 일치에 따라 세 가지 시나리오를 지시합니다. 이 공격은 공격자의 앱이 대상 앱의 작업 친화성을 모방할 수 있는 능력에 의존하여, 안드로이드 시스템이 의도한 대상을 대신하여 공격자의 앱을 실행하도록 유도합니다.

Detailed Attack Steps

  1. 악성 앱 설치: 피해자가 자신의 장치에 공격자의 앱을 설치합니다.

  2. 초기 활성화: 피해자가 처음으로 악성 앱을 열어 공격을 위한 장치를 설정합니다.

  3. 대상 앱 실행 시도: 피해자가 대상 앱을 열려고 시도합니다.

  4. 하이재킹 실행: 일치하는 작업 친화성으로 인해 악성 앱이 대상 앱 대신 실행됩니다.

  5. 기만: 악성 앱이 대상 앱과 유사한 가짜 로그인 화면을 표시하여 사용자가 민감한 정보를 입력하도록 속입니다.

이 공격의 실제 구현을 위해 GitHub의 Task Hijacking Strandhogg 리포지토리를 참조하십시오: Task Hijacking Strandhogg.

Prevention Measures

이러한 공격을 방지하기 위해 개발자는 taskAffinity를 빈 문자열로 설정하고 singleInstance 실행 모드를 선택하여 자신의 앱이 다른 앱과 격리되도록 할 수 있습니다. onBackPressed() 함수를 사용자 정의하면 작업 하이재킹에 대한 추가 보호를 제공합니다.

References

Support HackTricks

Last updated