7.0 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Tapjacking
{{#include ../../banners/hacktricks-training.md}}
Βασικές Πληροφορίες
Tapjacking είναι μια επίθεση όπου μια κακόβουλη εφαρμογή εκκινείται και τοποθετείται πάνω από μια εφαρμογή θύμα. Μόλις καλύψει ορατά την εφαρμογή θύμα, η διεπαφή χρήστη της είναι σχεδιασμένη με τέτοιο τρόπο ώστε να παραπλανήσει τον χρήστη να αλληλεπιδράσει με αυτήν, ενώ περνά την αλληλεπίδραση στην εφαρμογή θύμα.
Στην ουσία, τυφλώνει τον χρήστη από το να γνωρίζει ότι εκτελεί πραγματικά ενέργειες στην εφαρμογή θύμα.
Ανίχνευση
Για να ανιχνεύσετε εφαρμογές ευάλωτες σε αυτή την επίθεση, θα πρέπει να αναζητήσετε εξαγόμενες δραστηριότητες στο android manifest (σημειώστε ότι μια δραστηριότητα με intent-filter εξάγεται αυτόματα από προεπιλογή). Μόλις βρείτε τις εξαγόμενες δραστηριότητες, ελέγξτε αν απαιτούν κάποια άδεια. Αυτό συμβαίνει επειδή η κακόβουλη εφαρμογή θα χρειαστεί και αυτή την άδεια.
Προστασία
Android 12 (API 31,32) και ανώτερα
Σύμφωνα με αυτή την πηγή, οι επιθέσεις tapjacking αποτρέπονται αυτόματα από το Android από το Android 12 (API 31 & 30) και ανώτερα. Έτσι, ακόμη και αν η εφαρμογή είναι ευάλωτη, δεν θα μπορείτε να την εκμεταλλευτείτε.
filterTouchesWhenObscured
Αν android:filterTouchesWhenObscured είναι ρυθμισμένο σε true, το View δεν θα λαμβάνει αγγίγματα όποτε το παράθυρο της προβολής καλύπτεται από άλλο ορατό παράθυρο.
setFilterTouchesWhenObscured
Η ιδιότητα setFilterTouchesWhenObscured ρυθμισμένη σε true μπορεί επίσης να αποτρέψει την εκμετάλλευση αυτής της ευπάθειας αν η έκδοση Android είναι χαμηλότερη.
Αν ρυθμιστεί σε true, για παράδειγμα, ένα κουμπί μπορεί να απενεργοποιηθεί αυτόματα αν καλύπτεται:
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
Εκμετάλλευση
Tapjacking-ExportedActivity
Η πιο πρόσφατη εφαρμογή Android που εκτελεί μια επίθεση Tapjacking (+ καλώντας πριν από μια εξαγόμενη δραστηριότητα της επιτιθέμενης εφαρμογής) μπορεί να βρεθεί στο: https://github.com/carlospolop/Tapjacking-ExportedActivity.
Ακολουθήστε τις οδηγίες README για να τη χρησιμοποιήσετε.
FloatingWindowApp
Ένα παράδειγμα έργου που υλοποιεί το FloatingWindowApp, το οποίο μπορεί να χρησιμοποιηθεί για να τοποθετηθεί πάνω από άλλες δραστηριότητες για να εκτελέσει μια επίθεση clickjacking, μπορεί να βρεθεί στο FloatingWindowApp (λίγο παλιό, καλή τύχη με την κατασκευή του apk).
Qark
Caution
Φαίνεται ότι αυτό το έργο δεν συντηρείται πλέον και αυτή η λειτουργικότητα δεν λειτουργεί σωστά πια
Μπορείτε να χρησιμοποιήσετε qark με τις παραμέτρους --exploit-apk --sdk-path /Users/username/Library/Android/sdk για να δημιουργήσετε μια κακόβουλη εφαρμογή για να ελέγξετε πιθανές ευπάθειες Tapjacking.\
Η μείωση είναι σχετικά απλή καθώς ο προγραμματιστής μπορεί να επιλέξει να μην λαμβάνει γεγονότα αφής όταν μια προβολή καλύπτεται από άλλη. Χρησιμοποιώντας την Αναφορά Προγραμματιστή Android:
Μερικές φορές είναι απαραίτητο μια εφαρμογή να μπορεί να επαληθεύσει ότι μια ενέργεια εκτελείται με πλήρη γνώση και συναίνεση του χρήστη, όπως η χορήγηση ενός αιτήματος άδειας, η πραγματοποίηση μιας αγοράς ή το κλικ σε μια διαφήμιση. Δυστυχώς, μια κακόβουλη εφαρμογή θα μπορούσε να προσπαθήσει να παραπλανήσει τον χρήστη να εκτελέσει αυτές τις ενέργειες, χωρίς να το γνωρίζει, αποκρύπτοντας τον προορισμό της προβολής. Ως remedy, το πλαίσιο προσφέρει έναν μηχανισμό φιλτραρίσματος αφής που μπορεί να χρησιμοποιηθεί για να βελτιώσει την ασφάλεια των προβολών που παρέχουν πρόσβαση σε ευαίσθητη λειτουργικότητα.
Για να ενεργοποιήσετε το φιλτράρισμα αφής, καλέστε
setFilterTouchesWhenObscured(boolean)ή ορίστε την ιδιότητα διάταξης android:filterTouchesWhenObscured σε true. Όταν είναι ενεργοποιημένο, το πλαίσιο θα απορρίπτει τις αφές που λαμβάνονται όποτε το παράθυρο της προβολής καλύπτεται από άλλο ορατό παράθυρο. Ως αποτέλεσμα, η προβολή δεν θα λαμβάνει αφές όποτε εμφανίζεται ένα toast, διάλογος ή άλλο παράθυρο πάνω από το παράθυρο της προβολής.
{{#include ../../banners/hacktricks-training.md}}