Objection ट्यूटोरियल
Reading time: 9 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:
HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
परिचय
objection - रनटाइम मोबाइल अन्वेषण
Objection एक रनटाइम मोबाइल अन्वेषण टूलकिट है, जो Frida द्वारा संचालित है। इसे बिना किसी jailbroken या rooted मोबाइल डिवाइस की आवश्यकता के, मोबाइल एप्लिकेशन और उनकी सुरक्षा स्थिति का आकलन करने में मदद करने के उद्देश्य से बनाया गया था।
नोट: यह किसी भी प्रकार का jailbreak / root bypass नहीं है। objection का उपयोग करते समय, आप लागू sandbox द्वारा लगाए गए सभी प्रतिबंधों से अभी भी सीमित रहते हैं।
सारांश
objection का लक्ष्य उपयोगकर्ता को Frida द्वारा दी जाने वाली मुख्य कार्रवाइयों को कॉल करने देना है। अन्यथा, उपयोगकर्ता को हर उस एप्लिकेशन के लिए एक सिंगल स्क्रिप्ट बनानी होगी जिसे वह परीक्षण करना चाहता है।
ट्यूटोरियल
इस ट्यूटोरियल के लिए मैं उस APK का उपयोग करूँगा जिसे आप यहाँ से डाउनलोड कर सकते हैं:
या इसे इसके original repository (download app-release.apk) से भी डाउनलोड कर सकते हैं।
इंस्टॉलेशन
pip3 install objection
कनेक्शन
एक सामान्य ADB conection बनाएं और डिवाइस में frida सर्वर शुरू करें (और जांचें कि frida client और server दोनों में काम कर रहा है)।
यदि आप rooted device का उपयोग कर रहे हैं तो आपको उस application को चुनना होगा जिसे आप --gadget विकल्प के अंदर परीक्षण करना चाहते हैं। इस मामले में:
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
बुनियादी क्रियाएँ
objections के सभी संभावित कमांड इस ट्यूटोरियल में सूचीबद्ध नहीं किए गए हैं; केवल वे जिन्हें मैंने अधिक उपयोगी पाया हैं।
पर्यावरण
कुछ दिलचस्प जानकारी (जैसे passwords या paths) पर्यावरण के अंदर मिल सकती है।
env
.png)
Frida की जानकारी
frida
.png)
अपलोड/डाउनलोड
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
frida स्क्रिप्ट आयात करें
import <local path frida-script>
SSLPinning
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
Root का पता लगाना
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
Exec Command
android shell_exec whoami
Screenshots
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
Static analysis को Dynamic बनाया गया
एक वास्तविक एप्लिकेशन में objection का उपयोग करने से पहले हमें इस हिस्से में मिले सभी जानकारी static analysis की वजह से पता होनी चाहिए। वैसे भी, इस तरह आप शायद कुछ नया देख सकेंगे क्योंकि यहाँ आपको केवल classes, methods और exported objects की एक पूरी सूची ही मिलेगी।
यह भी उपयोगी है अगर किसी तरह आप ऐप का unable to get some readable source code प्राप्त करने में असमर्थ हों।
activities, receivers और services की सूची
android hooking list activities
.png)
android hooking list services
android hooking list receivers
यदि कोई नहीं मिला तो Frida त्रुटि फेंकेगा।
वर्तमान activity प्राप्त करना
android hooking get current_activity
.png)
क्लास खोजें
आइए हमारे एप्लिकेशन के अंदर क्लासों की तलाश शुरू करें
android hooking search classes asvid.github.io.fridaapp
.png)
किसी क्लास के मेथड्स खोजें
अब चलिए MainActivity: क्लास के अंदर के मेथड्स निकालते हैं।
android hooking search methods asvid.github.io.fridaapp MainActivity
.png)
किसी class के घोषित Methods को उनके parameters के साथ सूचीबद्ध करें
आइए पता करें कि class के methods को कौन से parameters चाहिए:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
.png)
क्लासों की सूची
आप वर्तमान एप्लिकेशन के भीतर लोड की गई सभी क्लासों की सूची भी प्रदर्शित कर सकते हैं:
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
यह बहुत उपयोगी है अगर आप hook the method of a class and you only know the name of the class. आप इस function का उपयोग search which module owns the class करने के लिए कर सकते हैं और फिर उसके method को hook कर सकते हैं।
Hooking being easy
Hooking (watching) a method
एप्लिकेशन के source code से हम जानते हैं कि function sum() from MainActivity is being run every second. आइए हर बार जब यह function कॉल हो तब dump all possible information करें (arguments, return value and backtrace):
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
.png)
Hooking (watching) एक पूरी class
असल में मुझे class MainActivity के सभी methods बहुत ही दिलचस्प लगते हैं, चलिए hook them all करते हैं। सावधान रहें, इससे एप्लिकेशन crash हो सकता है।
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
यदि आप application के साथ खेलते हैं जबकि class hooked है, तो आप देखेंगे कि प्रत्येक function कब call हो रहा है, उसके arguments और return value क्या हैं।
.png)
किसी function के boolean return value को बदलना
Source code से आप देख सकते हैं कि function checkPin को एक String argument के रूप में मिलता है और यह एक boolean return करता है। आइए इस function को हमेशा true return करने वाला बनाते हैं:
.png)
अब, यदि आप PIN code के लिए text box में कुछ भी लिखते हैं तो आप देखेंगे कि कोई भी value valid है:
.png)
Class instances
Search for and print live instances of a specific Java class, specified by a fully qualified class name. Out उस प्रयास का परिणाम है जिसमें किसी discovered objection के लिए string value प्राप्त करने की कोशिश की गई थी, जो आमतौर पर ऑब्जेक्ट के लिए property values को contain करेगा।
android heap print_instances <class>
.png)
Keystore/Intents
आप keystore और intents के साथ खेल सकते हैं:
android keystore list
android intents launch_activity
android intent launch_service
मेमोरी
डंप
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
सूची
memory list modules
.png)
सूची के नीचे आप frida देख सकते हैं:
.png)
आइए देखें frida क्या export कर रहा है:
.png)
खोज/लिखें
आप objection के साथ मेमोरी के अंदर खोज और लिख भी सकते हैं:
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)
SQLite
आप sqlite कमांड का उपयोग sqlite डेटाबेस के साथ इंटरैक्ट करने के लिए कर सकते हैं।
बाहर निकलें
exit
Objection में मुझे क्या कमी लगती है
- The hooking methods कभी-कभी application को crash कर देते हैं (यह भी Frida की वजह से है)।
- आप classes के instances का उपयोग उस instance के functions को कॉल करने के लिए नहीं कर सकते। और आप classes के नए instances नहीं बना सकते और उनका उपयोग functions कॉल करने के लिए नहीं कर सकते।
- एप्लिकेशन द्वारा उपयोग किए जा रहे सभी common crypto methods को hook करने के लिए कोई shortcut नहीं है (जैसे sslpinnin के लिए वाला) जिससे आप cyphered text, plain text, keys, IVs और उपयोग किए गए algorithms देख सकें।
संदर्भ
tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:
HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
HackTricks