65 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Tapjacking
{{#include ../../banners/hacktricks-training.md}}
## **बुनियादी जानकारी**
**Tapjacking** एक हमला है जहाँ एक **दुष्ट** **अनुप्रयोग** लॉन्च किया जाता है और यह **पीड़ित अनुप्रयोग के ऊपर खुद को स्थिति में रखता है**। जब यह स्पष्ट रूप से पीड़ित ऐप को ढक देता है, तो इसका उपयोगकर्ता इंटरफ़ेस इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता इसके साथ बातचीत करने के लिए धोखा खा जाए, जबकि यह बातचीत को पीड़ित ऐप के पास भेज रहा है।\
इसका प्रभाव यह है कि यह **उपयोगकर्ता को यह जानने से अंधा कर देता है कि वे वास्तव में पीड़ित ऐप पर क्रियाएँ कर रहे हैं**
### पहचान
इस हमले के प्रति संवेदनशील ऐप्स का पता लगाने के लिए, आपको एंड्रॉइड मैनिफेस्ट में **निर्यातित गतिविधियों** की खोज करनी चाहिए (ध्यान दें कि एक गतिविधि जिसमें एक इरादा-फिल्टर है, डिफ़ॉल्ट रूप से स्वचालित रूप से निर्यातित होती है)। एक बार जब आप निर्यातित गतिविधियों को ढूंढ लेते हैं, तो **जांचें कि क्या उन्हें कोई अनुमति चाहिए**। इसका कारण यह है कि **दुष्ट अनुप्रयोग को भी उस अनुमति की आवश्यकता होगी**
आप ऐप के न्यूनतम SDK संस्करण की भी जांच कर सकते हैं, **`android:minSdkVersion`** के मान की जांच करते हुए **`AndroidManifest.xml`** फ़ाइल में। यदि मान **30 से कम है**, तो ऐप Tapjacking के प्रति संवेदनशील है।
### सुरक्षा
#### Android 12 (API 31,32) और उच्चतर
[**इस स्रोत के अनुसार**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** Tapjacking हमलों को Android 12 (API 31 & 30) और उच्चतर से स्वचालित रूप से रोका जाता है। इसलिए, भले ही अनुप्रयोग संवेदनशील हो, आप **इसे शोषण नहीं कर पाएंगे**
#### `filterTouchesWhenObscured`
यदि **`android:filterTouchesWhenObscured`** को **`true`** पर सेट किया गया है, तो `View` को तब भी स्पर्श नहीं मिलेगा जब दृश्य की विंडो किसी अन्य दृश्य विंडो द्वारा ढकी हुई हो।
#### **`setFilterTouchesWhenObscured`**
गुण **`setFilterTouchesWhenObscured`** को सत्य पर सेट करने से इस संवेदनशीलता का शोषण रोकने में मदद मिल सकती है यदि Android संस्करण कम है।\
यदि इसे **`true`** पर सेट किया गया है, तो उदाहरण के लिए, एक बटन को स्वचालित रूप से **अक्षम किया जा सकता है यदि यह ढका हुआ है**:
```xml
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
```
## शोषण
### Tapjacking-ExportedActivity
सबसे **हाल का Android एप्लिकेशन** जो Tapjacking हमला करता है (+ हमले के एप्लिकेशन की निर्यातित गतिविधि से पहले सक्रिय करना) यहाँ पाया जा सकता है: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
इसे उपयोग करने के लिए **README निर्देशों का पालन करें**.
### FloatingWindowApp
एक उदाहरण प्रोजेक्ट जो **FloatingWindowApp** को लागू करता है, जिसे अन्य गतिविधियों के ऊपर क्लिकजैकिंग हमले को करने के लिए रखा जा सकता है, यहाँ पाया जा सकता है [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (थोड़ा पुराना, apk बनाने में शुभकामनाएँ).
### Qark
> [!CAUTION]
> ऐसा लगता है कि यह प्रोजेक्ट अब बनाए नहीं रखा गया है और यह कार्यक्षमता अब ठीक से काम नहीं कर रही है
आप [**qark**](https://github.com/linkedin/qark) का उपयोग `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` पैरामीटर के साथ एक दुर्भावनापूर्ण एप्लिकेशन बनाने के लिए कर सकते हैं ताकि संभावित **Tapjacking** कमजोरियों का परीक्षण किया जा सके।\
निवारण अपेक्षाकृत सरल है क्योंकि डेवलपर यह चुन सकता है कि जब एक दृश्य दूसरे द्वारा ढका होता है तो स्पर्श घटनाएँ प्राप्त न करें। [Android Developers Reference](https://developer.android.com/reference/android/view/View#security) का उपयोग करते हुए:
> कभी-कभी यह आवश्यक होता है कि एक एप्लिकेशन यह सत्यापित कर सके कि कोई क्रिया पूरी जानकारी और उपयोगकर्ता की सहमति के साथ की जा रही है, जैसे कि अनुमति अनुरोध को स्वीकार करना, खरीदारी करना या विज्ञापन पर क्लिक करना। दुर्भाग्यवश, एक दुर्भावनापूर्ण एप्लिकेशन उपयोगकर्ता को इन क्रियाओं को करने के लिए धोखा देने की कोशिश कर सकता है, बिना जानें, दृश्य के इरादे को छिपाकर। एक उपाय के रूप में, ढांचा एक स्पर्श फ़िल्टरिंग तंत्र प्रदान करता है जिसका उपयोग संवेदनशील कार्यक्षमता तक पहुँच प्रदान करने वाले दृश्यों की सुरक्षा में सुधार के लिए किया जा सकता है।
>
> स्पर्श फ़िल्टरिंग सक्षम करने के लिए, [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) को कॉल करें या android:filterTouchesWhenObscured लेआउट विशेषता को true पर सेट करें। जब सक्षम किया जाता है, तो ढांचा उन स्पर्शों को अस्वीकार कर देगा जो तब प्राप्त होते हैं जब दृश्य की विंडो किसी अन्य दृश्य विंडो द्वारा ढकी होती है। परिणामस्वरूप, दृश्य तब स्पर्श प्राप्त नहीं करेगा जब भी एक टोस्ट, संवाद या अन्य विंडो दृश्य की विंडो के ऊपर प्रकट होती है।
{{#include ../../banners/hacktricks-training.md}}