mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/tapjacking.md'
This commit is contained in:
parent
619016f2cc
commit
4f0abe05cb
@ -4,12 +4,12 @@
|
||||
|
||||
## **Temel Bilgiler**
|
||||
|
||||
**Tapjacking**, **kötü niyetli** bir **uygulamanın** başlatıldığı ve **bir kurban uygulamanın üzerine yerleştirildiği** bir saldırıdır. Kurban uygulamayı görünür şekilde gizlediğinde, kullanıcı arayüzü, kullanıcının onunla etkileşimde bulunmasını sağlamak için tasarlanmıştır, bu arada etkileşimi kurban uygulamaya iletmektedir.\
|
||||
**Tapjacking**, **kötü niyetli** bir **uygulamanın** başlatıldığı ve **bir kurban uygulamanın üzerine yerleştiği** bir saldırıdır. Kurban uygulamayı görünür şekilde gizlediğinde, kullanıcı arayüzü, kullanıcının onunla etkileşimde bulunmasını sağlamak için tasarlanmıştır, bu esnada etkileşim kurban uygulamaya iletilmektedir.\
|
||||
Sonuç olarak, bu durum **kullanıcının aslında kurban uygulamasında eylem gerçekleştirdiğini bilmesini engellemektedir**.
|
||||
|
||||
### Tespit
|
||||
|
||||
Bu saldırıya karşı savunmasız uygulamaları tespit etmek için, android manifestinde **dışa aktarılan aktiviteleri** aramalısınız (bir intent-filter ile bir aktivitenin varsayılan olarak otomatik olarak dışa aktarıldığını unutmayın). Dışa aktarılan aktiviteleri bulduktan sonra, **herhangi bir izin gerektirip gerektirmediğini kontrol edin**. Bunun nedeni, **kötü niyetli uygulamanın da bu izne ihtiyaç duymasıdır**.
|
||||
Bu saldırıya karşı savunmasız uygulamaları tespit etmek için, android manifestinde **dışa aktarılan aktiviteleri** aramalısınız (bir intent-filter ile bir aktivitenin varsayılan olarak otomatik olarak dışa aktarıldığını unutmayın). Dışa aktarılan aktiviteleri bulduktan sonra, **herhangi bir izin gerektirip gerektirmediğini kontrol edin**. Bunun nedeni, **kötü niyetli uygulamanın da o izne ihtiyaç duymasıdır**.
|
||||
|
||||
Ayrıca uygulamanın minimum SDK sürümünü kontrol edebilirsiniz, **`AndroidManifest.xml`** dosyasında **`android:minSdkVersion`** değerine bakarak. Değer **30'dan düşükse**, uygulama Tapjacking'e karşı savunmasızdır.
|
||||
|
||||
@ -39,26 +39,68 @@ android:filterTouchesWhenObscured="true">
|
||||
|
||||
### Tapjacking-ExportedActivity
|
||||
|
||||
En son **Android uygulaması** olan Tapjacking saldırısını gerçekleştiren (+ saldırıya uğrayan uygulamanın dışa aktarılan bir aktivitesinden önce çağırma) uygulama şu adreste bulunabilir: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||
En **son Android uygulaması** olan Tapjacking saldırısını gerçekleştiren uygulama (+ saldırıya uğrayan uygulamanın dışa aktarılan aktivitesinden önce çağırma) şu adreste bulunabilir: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||
|
||||
**Kullanım için README talimatlarını** takip edin.
|
||||
**Kullanmak için README talimatlarını** takip edin.
|
||||
|
||||
### FloatingWindowApp
|
||||
|
||||
Diğer aktivitelerin üzerine yerleştirilerek bir clickjacking saldırısı gerçekleştirmek için kullanılabilecek **FloatingWindowApp**'i uygulayan bir örnek proje [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) adresinde bulunabilir (biraz eski, apk oluşturma konusunda iyi şanslar).
|
||||
**FloatingWindowApp**'i uygulayan bir örnek proje, diğer aktivitelerin üzerine yerleştirilerek bir clickjacking saldırısı gerçekleştirmek için kullanılabilir, [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) adresinde bulunabilir (biraz eski, apk oluşturma konusunda iyi şanslar).
|
||||
|
||||
### Qark
|
||||
|
||||
> [!CAUTION]
|
||||
> Bu projenin artık bakımsız olduğu ve bu işlevselliğin düzgün çalışmadığı görünmektedir.
|
||||
> Bu projenin artık bakımsız olduğu ve bu işlevselliğin düzgün çalışmadığı görünüyor.
|
||||
|
||||
Olası **Tapjacking** zafiyetlerini test etmek için `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` parametreleri ile [**qark**](https://github.com/linkedin/qark) kullanabilirsiniz.\
|
||||
Kötü niyetli bir uygulama oluşturmak için [**qark**](https://github.com/linkedin/qark) kullanabilirsiniz, `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` parametreleri ile olası **Tapjacking** zafiyetlerini test etmek için.\
|
||||
|
||||
Zafiyetin giderilmesi oldukça basittir, çünkü geliştirici bir görünüm başka bir görünüm tarafından kaplandığında dokunma olaylarını almamayı seçebilir. [Android Geliştirici Referansı](https://developer.android.com/reference/android/view/View#security) kullanarak:
|
||||
|
||||
> Bazen bir uygulamanın, bir izin isteğini onaylama, bir satın alma yapma veya bir reklama tıklama gibi bir eylemin kullanıcının tam bilgisi ve rızasıyla gerçekleştirildiğini doğrulaması önemlidir. Ne yazık ki, kötü niyetli bir uygulama, görünümün niyet edilen amacını gizleyerek kullanıcının bu eylemleri bilmeden gerçekleştirmesini sağlamaya çalışabilir. Bir çözüm olarak, çerçeve, hassas işlevselliğe erişim sağlayan görünümlerin güvenliğini artırmak için kullanılabilecek bir dokunma filtreleme mekanizması sunar.
|
||||
> Bazen bir uygulamanın, bir izin isteği verme, bir satın alma yapma veya bir reklama tıklama gibi bir eylemin kullanıcının tam bilgisi ve rızasıyla gerçekleştirildiğini doğrulaması önemlidir. Ne yazık ki, kötü niyetli bir uygulama, görünümün niyet edilen amacını gizleyerek kullanıcının bu eylemleri gerçekleştirmesini sağlamak için onu kandırmaya çalışabilir. Bir çözüm olarak, çerçeve, hassas işlevselliğe erişim sağlayan görünümlerin güvenliğini artırmak için kullanılabilecek bir dokunma filtreleme mekanizması sunar.
|
||||
>
|
||||
> Dokunma filtrelemeyi etkinleştirmek için [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) çağrısını yapın veya android:filterTouchesWhenObscured düzenleme özniteliğini true olarak ayarlayın. Etkinleştirildiğinde, çerçeve, görünümün penceresi başka bir görünür pencere tarafından kaplandığında alınan dokunmaları yok sayacaktır. Sonuç olarak, bir toast, diyalog veya başka bir pencere görünümün penceresinin üzerinde belirdiğinde görünüm dokunmaları almayacaktır.
|
||||
> Dokunma filtrelemeyi etkinleştirmek için [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) çağrısını yapın veya android:filterTouchesWhenObscured düzenleme özniteliğini true olarak ayarlayın. Etkinleştirildiğinde, çerçeve, görünümün penceresi başka bir görünüm tarafından kaplandığında alınan dokunmaları atlayacaktır. Sonuç olarak, görünüm, bir toast, diyalog veya başka bir pencere görünümün penceresinin üzerinde belirdiğinde dokunmaları almayacaktır.
|
||||
|
||||
---
|
||||
|
||||
## Accessibility Overlay Phishing (Banking-Trojan Variant)
|
||||
|
||||
Klasik Tapjacking'in yanı sıra, modern Android bankacılık kötü amaçlı yazılım aileleri (örneğin, **ToxicPanda**, BrasDex, Sova, vb.) **Erişilebilirlik Hizmeti**'ni kötüye kullanarak meşru uygulamanın üzerine tam ekran bir WebView **kaplaması** yerleştirirken, kullanıcı girişini alttaki görünüme **iletme** yeteneğine de sahiptir. Bu, inandırıcılığı dramatik şekilde artırır ve saldırganların kimlik bilgilerini, OTP'leri çalmasına veya hatta dolandırıcılık işlemlerini otomatikleştirmesine olanak tanır.
|
||||
|
||||
### Nasıl çalışır
|
||||
1. Kötü niyetli APK, genellikle sahte bir Google/Chrome/PDF görüntüleyici diyalogunun arkasında gizlenen son derece hassas `BIND_ACCESSIBILITY_SERVICE` iznini talep eder.
|
||||
2. Kullanıcı hizmeti etkinleştirdiğinde, kötü amaçlı yazılım, ek tehlikeli izinleri vermek için gereken dokunuşları programatik olarak simüle eder (`READ_SMS`, `SYSTEM_ALERT_WINDOW`, `REQUEST_INSTALL_PACKAGES`, …).
|
||||
3. Bir **WebView** şişirilir ve **`TYPE_ACCESSIBILITY_OVERLAY`** pencere türü kullanılarak pencere yöneticisine eklenir. Kaplama tamamen opak veya yarı saydam olarak render edilebilir ve orijinal dokunuşların arka plandaki aktiviteye hala iletilmesi için *“geçiş”* olarak işaretlenebilir (böylece işlem gerçekten gerçekleşirken kurban yalnızca phishing formunu görür).
|
||||
```java
|
||||
WebView phishingView = new WebView(getApplicationContext());
|
||||
phishingView.getSettings().setJavaScriptEnabled(true);
|
||||
phishingView.loadUrl("file:///android_asset/bank_login.html");
|
||||
|
||||
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
|
||||
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY, // <-- bypasses SYSTEM_ALERT_WINDOW prompt
|
||||
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, // «through» flag → forward touches
|
||||
PixelFormat.TRANSLUCENT);
|
||||
wm.addView(phishingView, lp);
|
||||
```
|
||||
### Tipik bankacılık Trojanları tarafından kullanılan iş akışı
|
||||
* Hangi bankacılık / cüzdan uygulamasının şu anda açık olduğunu belirlemek için yüklü paketleri sorgulayın (`QUERY_ALL_PACKAGES`).
|
||||
* O belirli uygulamayı mükemmel bir şekilde taklit eden bir **HTML/JS overlay şablonu** C2'den indirin (Logo, renkler, i18n dizeleri…).
|
||||
* Overlay'i görüntüleyin, kimlik bilgilerini/PIN'i/deseni toplayın.
|
||||
* Arka planda transferleri otomatikleştirmek için **Erişilebilirlik API'sini** (`performGlobalAction`, `GestureDescription`) kullanın.
|
||||
|
||||
### Tespit ve Azaltma
|
||||
* Yüklü uygulamaların listesini `adb shell pm list packages -3 -e BIND_ACCESSIBILITY_SERVICE` ile denetleyin.
|
||||
* Uygulama tarafında (banka / cüzdan):
|
||||
- Hassas görünümler için **`android:accessibilityDataSensitive="accessibilityDataPrivateYes"`** (Android 14+) etkinleştirin, böylece Play Store dışındaki hizmetleri engelleyin.
|
||||
- `setFilterTouchesWhenObscured(true)` ve `FLAG_SECURE` ile birleştirin.
|
||||
* Sistem güçlendirme:
|
||||
- *Bilinmeyen Kaynaklardan Yükle* ve *Güvenilmeyen uygulamalar için Erişilebilirlik* seçeneklerini devre dışı bırakın.
|
||||
- PlayProtect'i zorlayın ve güncel cihazlar kullanın.
|
||||
|
||||
## Referanslar
|
||||
* [Bitsight – ToxicPanda Android Banking Malware 2025 Study](https://www.bitsight.com/blog/toxicpanda-android-banking-malware-2025-study)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user