Tapjacking
Grundinformationen
Tapjacking ist ein Angriff, bei dem eine bösartige Anwendung gestartet wird und sich über einer Opferanwendung positioniert. Sobald sie die Opfer-App sichtbar verdeckt, ist ihre Benutzeroberfläche so gestaltet, dass sie den Benutzer dazu verleitet, mit ihr zu interagieren, während sie die Interaktion an die Opfer-App weiterleitet. In der Tat blindet es den Benutzer, sodass er nicht weiß, dass er tatsächlich Aktionen auf der Opfer-App ausführt.
Erkennung
Um Apps zu erkennen, die anfällig für diesen Angriff sind, sollten Sie nach exportierten Aktivitäten im Android-Manifest suchen (beachten Sie, dass eine Aktivität mit einem Intent-Filter standardmäßig automatisch exportiert wird). Sobald Sie die exportierten Aktivitäten gefunden haben, prüfen Sie, ob sie Berechtigungen benötigen. Dies liegt daran, dass die bösartige Anwendung auch diese Berechtigung benötigt.
Schutz
Android 12 (API 31,32) und höher
Laut dieser Quelle, werden Tapjacking-Angriffe von Android ab Android 12 (API 31 & 30) und höher automatisch verhindert. Selbst wenn die Anwendung anfällig ist, werden Sie sie nicht ausnutzen können.
filterTouchesWhenObscured
filterTouchesWhenObscured
Wenn android:filterTouchesWhenObscured
auf true
gesetzt ist, erhält die View
keine Berührungen, wenn das Fenster der Ansicht von einem anderen sichtbaren Fenster verdeckt wird.
setFilterTouchesWhenObscured
setFilterTouchesWhenObscured
Das Attribut setFilterTouchesWhenObscured
kann auch die Ausnutzung dieser Schwachstelle verhindern, wenn die Android-Version niedriger ist.
Wenn es auf true
gesetzt ist, kann beispielsweise ein Button automatisch deaktiviert werden, wenn er verdeckt ist:
Ausnutzung
Tapjacking-ExportedActivity
Die aktuellste Android-Anwendung, die einen Tapjacking-Angriff durchführt (+ Aufruf vor einer exportierten Aktivität der angegriffenen Anwendung), ist zu finden unter: https://github.com/carlospolop/Tapjacking-ExportedActivity.
Befolgen Sie die README-Anweisungen zur Verwendung.
FloatingWindowApp
Ein Beispielprojekt, das FloatingWindowApp implementiert, welches verwendet werden kann, um über anderen Aktivitäten zu liegen und einen Clickjacking-Angriff durchzuführen, ist zu finden unter FloatingWindowApp (ein bisschen alt, viel Glück beim Erstellen der apk).
Qark
Es scheint, dass dieses Projekt jetzt nicht mehr gewartet wird und diese Funktionalität nicht mehr richtig funktioniert.
Sie können qark mit den Parametern --exploit-apk
--sdk-path /Users/username/Library/Android/sdk
verwenden, um eine bösartige Anwendung zu erstellen, um mögliche Tapjacking-Schwachstellen zu testen.\
Die Minderung ist relativ einfach, da der Entwickler wählen kann, keine Touch-Ereignisse zu empfangen, wenn eine Ansicht von einer anderen verdeckt wird. Mit dem Android Developer’s Reference:
Manchmal ist es wichtig, dass eine Anwendung überprüfen kann, dass eine Aktion mit vollem Wissen und Einverständnis des Benutzers durchgeführt wird, wie z.B. das Gewähren einer Berechtigungsanfrage, das Tätigen eines Kaufs oder das Klicken auf eine Werbung. Leider könnte eine bösartige Anwendung versuchen, den Benutzer zu täuschen, diese Aktionen unwissentlich auszuführen, indem sie den beabsichtigten Zweck der Ansicht verbirgt. Als Abhilfe bietet das Framework einen Touch-Filtermechanismus, der verwendet werden kann, um die Sicherheit von Ansichten zu verbessern, die Zugang zu sensibler Funktionalität bieten.
Um die Touch-Filterung zu aktivieren, rufen Sie
setFilterTouchesWhenObscured(boolean)
auf oder setzen Sie das Layoutattribut android:filterTouchesWhenObscured auf true. Wenn aktiviert, wird das Framework Berührungen ignorieren, die empfangen werden, wenn das Fenster der Ansicht von einem anderen sichtbaren Fenster verdeckt wird. Infolgedessen erhält die Ansicht keine Berührungen, wenn ein Toast, Dialog oder ein anderes Fenster über dem Fenster der Ansicht erscheint.
Last updated