Tapjacking

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Grundlegende Informationen

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 weitergibt. Im Wesentlichen blendet es den Benutzer aus, 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, überprüfen Sie, ob sie Berechtigungen erfordern. Dies liegt daran, dass die bösartige Anwendung auch diese Berechtigung benötigen wird.

Schutz

Android 12 (API 31,32) und höher

Laut dieser Quelle, werden Tapjacking-Angriffe von Android automatisch ab Android 12 (API 31 & 30) und höher verhindert. Selbst wenn die Anwendung also anfällig ist, können Sie sie nicht ausnutzen.

filterTouchesWhenObscured

Wenn android:filterTouchesWhenObscured auf true gesetzt ist, empfängt die View keine Berührungen, wenn das Fenster der Ansicht von einem anderen sichtbaren Fenster verdeckt ist.

setFilterTouchesWhenObscured

Das Attribut setFilterTouchesWhenObscured, das auf true gesetzt ist, 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:

<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>

Ausbeutung

Tapjacking-ExportedActivity

Die neueste Android-Anwendung, die einen Tapjacking-Angriff durchführt (+ Aufruf vor einer exportierten Aktivität der angegriffenen Anwendung), kann unter folgendem Link gefunden werden: https://github.com/carlospolop/Tapjacking-ExportedActivity.

Befolgen Sie die README-Anweisungen, um sie zu verwenden.

FloatingWindowApp

Ein Beispielprojekt, das FloatingWindowApp implementiert, das verwendet werden kann, um über anderen Aktivitäten platziert zu werden und einen Clickjacking-Angriff durchzuführen, finden Sie unter FloatingWindowApp (etwas veraltet, viel Glück beim Erstellen der APK).

Qark

Es scheint, dass dieses Projekt jetzt nicht mehr gepflegt wird und diese Funktionalität nicht mehr ordnungsgemäß 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 und auf mögliche Tapjacking-Schwachstellen zu testen.

Die Abwehrmaßnahme ist relativ einfach, da der Entwickler wählen kann, keine Touch-Ereignisse zu empfangen, wenn eine Ansicht von einer anderen verdeckt wird. Verwenden Sie das Android Developer’s Reference:

Manchmal ist es unerlässlich, dass eine Anwendung überprüfen kann, dass eine Aktion mit dem vollen Wissen und Einverständnis des Benutzers ausgeführt wird, wie das Gewähren einer Berechtigungsanfrage, das Tätigen eines Kaufs oder das Klicken auf eine Anzeige. Leider könnte eine bösartige Anwendung versuchen, den Benutzer dazu zu bringen, 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 Zugriff auf sensible Funktionen bieten.

Um den Touch-Filter zu aktivieren, rufen Sie setFilterTouchesWhenObscured(boolean) auf oder setzen Sie das android:filterTouchesWhenObscured-Layoutattribut auf true. Wenn aktiviert, verwirft das Framework Berührungen, die empfangen werden, wenn das Fenster der Ansicht von einem anderen sichtbaren Fenster verdeckt ist. Als Ergebnis erhält die Ansicht keine Berührungen, wenn ein Toast, ein Dialog oder ein anderes Fenster über dem Fenster der Ansicht erscheint.

Last updated