Tapjacking
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
基本情報
Tapjacking は、悪意のある アプリケーション が起動し、被害者アプリケーションの上に位置する 攻撃です。被害者アプリを視覚的に隠すと、そのユーザーインターフェースは、ユーザーがそれと対話するように騙すように設計されており、同時にその対話を被害者アプリに渡します。 実際には、ユーザーが実際に被害者アプリでアクションを実行していることを知らないようにしています。
検出
この攻撃に対して脆弱なアプリを検出するには、Androidマニフェスト内のエクスポートされたアクティビティを検索する必要があります(インテントフィルターを持つアクティビティはデフォルトで自動的にエクスポートされることに注意してください)。エクスポートされたアクティビティを見つけたら、それらが何らかの権限を必要とするかどうかを確認してください。これは、悪意のあるアプリケーションもその権限を必要とするためです。
保護
Android 12 (API 31,32) 以降
この情報源によると、 tapjacking攻撃は、Android 12 (API 31 & 30) 以降、Androidによって自動的に防止されます。したがって、アプリケーションが脆弱であっても、それを悪用することはできません。
filterTouchesWhenObscured
filterTouchesWhenObscured
android:filterTouchesWhenObscured
が true
に設定されている場合、View
は別の可視ウィンドウによってウィンドウが隠されているときにタッチを受け取ることはありません。
setFilterTouchesWhenObscured
setFilterTouchesWhenObscured
属性 setFilterTouchesWhenObscured
を true に設定することでも、この脆弱性の悪用を防ぐことができます。
例えば、true
に設定されている場合、ボタンは自動的に 隠されている場合は無効化される ことがあります:
攻撃
Tapjacking-ExportedActivity
最も最近のAndroidアプリケーションでTapjacking攻撃を実行するもの(+ 攻撃対象アプリケーションのエクスポートされたアクティビティの前に呼び出すこと)が見つかるのは: https://github.com/carlospolop/Tapjacking-ExportedActivity。
READMEの指示に従って使用してください。
FloatingWindowApp
FloatingWindowAppを実装した例のプロジェクトは、他のアクティビティの上に置いてクリックジャッキング攻撃を実行するために使用できるもので、FloatingWindowAppにあります(少し古いですが、apkのビルドを頑張ってください)。
Qark
このプロジェクトは現在メンテナンスされていないようで、この機能は正しく動作していないようです。
qarkを--exploit-apk
--sdk-path /Users/username/Library/Android/sdk
パラメータで使用して、悪意のあるアプリケーションを作成し、可能なTapjackingの脆弱性をテストできます。\
緩和策は比較的簡単で、開発者は別のビューに覆われているときにタッチイベントを受け取らないことを選択できます。Android Developer’s Referenceを使用して:
時には、アプリケーションがユーザーの完全な知識と同意のもとでアクションが実行されていることを確認することが不可欠です。たとえば、権限リクエストを承認したり、購入を行ったり、広告をクリックしたりする場合です。残念ながら、悪意のあるアプリケーションは、ビューの意図された目的を隠すことによって、ユーザーにこれらのアクションを無自覚に実行させようとする可能性があります。これに対する対策として、フレームワークは、機密機能へのアクセスを提供するビューのセキュリティを向上させるために使用できるタッチフィルタリングメカニズムを提供します。
タッチフィルタリングを有効にするには、
setFilterTouchesWhenObscured(boolean)
を呼び出すか、android:filterTouchesWhenObscuredレイアウト属性をtrueに設定します。有効にすると、フレームワークは、ビューのウィンドウが別の可視ウィンドウによって覆われているときに受信したタッチを破棄します。その結果、トースト、ダイアログ、または他のウィンドウがビューのウィンドウの上に表示されるとき、ビューはタッチを受け取らなくなります。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Last updated