Android Task Hijacking

Reading time: 4 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Task, Back Stack and Foreground Activities

Στο Android, μια task είναι ουσιαστικά ένα σύνολο δραστηριοτήτων με τις οποίες οι χρήστες αλληλεπιδρούν για να ολοκληρώσουν μια συγκεκριμένη εργασία, οργανωμένες μέσα σε ένα back stack. Αυτό το stack παραγγέλνει τις δραστηριότητες με βάση το πότε άνοιξαν, με την πιο πρόσφατη δραστηριότητα να εμφανίζεται στην κορυφή ως foreground activity. Σε οποιαδήποτε στιγμή, μόνο αυτή η δραστηριότητα είναι ορατή στην οθόνη, κάνοντάς την μέρος της foreground task.

Ακολουθεί μια γρήγορη ανάλυση των μεταβάσεων δραστηριοτήτων:

  • Activity 1 ξεκινά ως η μοναδική δραστηριότητα στο προσκήνιο.
  • Η εκκίνηση της Activity 2 σπρώχνει την Activity 1 στο back stack, φέρνοντας την Activity 2 στο προσκήνιο.
  • Η εκκίνηση της Activity 3 μετακινεί την Activity 1 και την Activity 2 πιο πίσω στο stack, με την Activity 3 τώρα μπροστά.
  • Το κλείσιμο της Activity 3 φέρνει την Activity 2 πίσω στο προσκήνιο, επιδεικνύοντας τον απλοποιημένο μηχανισμό πλοήγησης εργασιών του Android.

https://developer.android.com/images/fundamentals/diagram_backstack.png

Task affinity attack

Overview of Task Affinity and Launch Modes

Στις εφαρμογές Android, η task affinity καθορίζει την προτιμώμενη εργασία μιας δραστηριότητας, ευθυγραμμισμένη συνήθως με το όνομα πακέτου της εφαρμογής. Αυτή η ρύθμιση είναι καθοριστική για τη δημιουργία μιας εφαρμογής proof-of-concept (PoC) για την επίδειξη της επίθεσης.

Launch Modes

Το χαρακτηριστικό launchMode κατευθύνει τη διαχείριση των περιπτώσεων δραστηριοτήτων μέσα σε εργασίες. Η λειτουργία singleTask είναι καθοριστική για αυτή την επίθεση, καθορίζοντας τρία σενάρια με βάση τις υπάρχουσες περιπτώσεις δραστηριοτήτων και τις αντιστοιχίες task affinity. Η εκμετάλλευση βασίζεται στην ικανότητα της εφαρμογής του επιτιθέμενου να μιμείται την task affinity της στοχευμένης εφαρμογής, παραπλανώντας το σύστημα Android να εκκινήσει την εφαρμογή του επιτιθέμενου αντί για την προοριζόμενη στόχο.

Detailed Attack Steps

  1. Malicious App Installation: Το θύμα εγκαθιστά την εφαρμογή του επιτιθέμενου στη συσκευή του.
  2. Initial Activation: Το θύμα ανοίγει πρώτα την κακόβουλη εφαρμογή, προετοιμάζοντας τη συσκευή για την επίθεση.
  3. Target App Launch Attempt: Το θύμα προσπαθεί να ανοίξει την στοχευμένη εφαρμογή.
  4. Hijack Execution: Σε κάποιο σημείο, η εφαρμογή προσπαθεί να ανοίξει την singleTask προβολή. Λόγω της αντιστοιχίας task affinity, η κακόβουλη εφαρμογή εκκινείται στη θέση της στοχευμένης εφαρμογής.
  5. Deception: Η κακόβουλη εφαρμογή παρουσιάζει μια ψεύτικη οθόνη σύνδεσης που μοιάζει με την στοχευμένη εφαρμογή, παραπλανώντας τον χρήστη να εισάγει ευαίσθητες πληροφορίες.

tip

Σημειώστε ότι για να λειτουργήσει αυτή η επίθεση, η ευάλωτη προβολή δεν χρειάζεται να έχει εξαγωγή σε true ούτε χρειάζεται να είναι η κύρια δραστηριότητα.

Για μια πρακτική εφαρμογή αυτής της επίθεσης, ανατρέξτε στο αποθετήριο Task Hijacking Strandhogg στο GitHub: Task Hijacking Strandhogg.

Prevention Measures

Για να αποτρέψουν τέτοιες επιθέσεις, οι προγραμματιστές μπορούν να:

  • Ορίσουν το taskAffinity της singleTask προβολής σε κενή συμβολοσειρά (android:taskAffinity="")
  • Επιλέξουν τη λειτουργία εκκίνησης singleInstance, διασφαλίζοντας την απομόνωση της εφαρμογής τους από άλλες.
  • Προσαρμόσουν τη λειτουργία onBackPressed() για επιπλέον προστασία κατά της κατάληψης εργασιών.

References

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks