Tapjacking
Reading time: 3 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Temel Bilgiler
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ıyı onunla etkileşime girmeye kandıracak şekilde tasarlanmıştır, bu arada etkileşimi kurban uygulamaya iletmektedir.
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 o izne ihtiyaç duymasıdır.
Koruma
Android 12 (API 31,32) ve üzeri
Bu kaynağa göre, tapjacking saldırıları Android 12 (API 31 & 30) ve üzeri sürümlerde Android tarafından otomatik olarak engellenmektedir. Bu nedenle, uygulama savunmasız olsa bile onu istismar edemezsiniz.
filterTouchesWhenObscured
Eğer android:filterTouchesWhenObscured
true
olarak ayarlandıysa, View
, görünür bir başka pencere tarafından gizlendiğinde dokunuşları almayacaktır.
setFilterTouchesWhenObscured
setFilterTouchesWhenObscured
özelliği true olarak ayarlandığında, Android sürümü daha düşükse bu açığın istismarını da engelleyebilir.
Örneğin, true
olarak ayarlandığında, bir buton otomatik olarak gizlendiğinde devre dışı bırakılabilir:
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
Sömürü
Tapjacking-ExportedActivity
En son Android uygulaması olan Tapjacking saldırısını gerçekleştiren (ve saldırıya uğrayan uygulamanın dışa aktarılan bir aktivitesinden önce çağrılan) uygulama şu adreste bulunabilir: https://github.com/carlospolop/Tapjacking-ExportedActivity.
Kullanmak için README talimatlarını izleyin.
FloatingWindowApp
FloatingWindowApp'i uygulayan bir örnek proje, tıklama saldırısı gerçekleştirmek için diğer aktivitelerin üzerine yerleştirilebilecek bir proje olarak FloatingWindowApp adresinde bulunabilir (biraz eski, apk oluşturma konusunda iyi şanslar).
Qark
di̇kkat
Bu projenin artık bakımsız olduğu ve bu işlevselliğin düzgün çalışmadığı görünmektedir.
Olası Tapjacking zafiyetlerini test etmek için kötü niyetli bir uygulama oluşturmak üzere qark kullanabilirsiniz; --exploit-apk
--sdk-path /Users/username/Library/Android/sdk
parametreleri ile.
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ı kullanarak:
Bazen bir uygulamanın, bir izin talebini 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ğlamak için kullanıcıyı 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)
ç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.
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.