Objection Tutorial
Reading time: 8 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
परिचय
objection - रनटाइम मोबाइल अन्वेषण
Objection एक रनटाइम मोबाइल अन्वेषण टूलकिट है, जो Frida द्वारा संचालित है। इसे मोबाइल अनुप्रयोगों और उनकी सुरक्षा स्थिति का आकलन करने में मदद करने के उद्देश्य से बनाया गया था, बिना किसी जेलब्रोकन या रूटेड मोबाइल डिवाइस की आवश्यकता के।
नोट: यह किसी प्रकार का जेलब्रेक / रूट बाईपास नहीं है। objection
का उपयोग करके, आप अभी भी उस लागू सैंडबॉक्स द्वारा लगाए गए सभी प्रतिबंधों से सीमित हैं जिनका आप सामना कर रहे हैं।
फिर से शुरू करें
objection का लक्ष्य उपयोगकर्ता को Frida द्वारा प्रदान किए गए मुख्य क्रियाओं को कॉल करने देना है। अन्यथा, उपयोगकर्ता को हर अनुप्रयोग के लिए एकल स्क्रिप्ट बनानी होगी जिसे वह परीक्षण करना चाहता है।
ट्यूटोरियल
इस ट्यूटोरियल के लिए मैं उस APK का उपयोग करने जा रहा हूँ जिसे आप यहाँ डाउनलोड कर सकते हैं:
या इसके मूल भंडार से (app-release.apk डाउनलोड करें)
स्थापना
pip3 install objection
Connection
एक नियमित ADB कनेक्शन बनाएं और डिवाइस में frida सर्वर शुरू करें (और जांचें कि frida क्लाइंट और सर्वर दोनों में काम कर रहा है)।
यदि आप एक रूटेड डिवाइस का उपयोग कर रहे हैं, तो --gadget विकल्प के अंदर उस एप्लिकेशन का चयन करना आवश्यक है जिसे आप परीक्षण करना चाहते हैं। इस मामले में:
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
Basic Actions
इस ट्यूटोरियल में objections के सभी संभावित कमांड सूचीबद्ध नहीं किए जाएंगे, केवल वे जो मुझे अधिक उपयोगी लगे हैं।
Environment
कुछ दिलचस्प जानकारी (जैसे पासवर्ड या पथ) वातावरण के अंदर मिल सकती है।
env
Frida जानकारी
frida
अपलोड/डाउनलोड
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
फ्रिडा स्क्रिप्ट आयात करें
import <local path frida-script>
SSLPinning
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
रूट डिटेक्शन
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
स्क्रीनशॉट
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
स्थैतिक विश्लेषण को गतिशील बनाना
एक वास्तविक एप्लिकेशन में, हमें इस भाग में खोजी गई सभी जानकारी का ज्ञान होना चाहिए, इससे पहले कि हम objection का उपयोग करें, धन्यवाद स्थैतिक विश्लेषण। फिर भी, इस तरीके से आप शायद कुछ नया देख सकते हैं क्योंकि यहाँ आपके पास केवल कक्षाओं, विधियों और निर्यातित वस्तुओं की एक पूर्ण सूची होगी।
यह भी उपयोगी है यदि किसी तरह आप ऐप का पढ़ने योग्य स्रोत कोड प्राप्त करने में असमर्थ हैं।
गतिविधियों, रिसीवर्स और सेवाओं की सूची
android hooking list activities
android hooking list services
android hooking list receivers
Frida कोई त्रुटि लॉन्च करेगा यदि कोई नहीं पाया गया
वर्तमान गतिविधि प्राप्त करना
android hooking get current_activity
क्लासेस खोजें
आइए अपने एप्लिकेशन के अंदर क्लासेस की खोज करना शुरू करें।
android hooking search classes asvid.github.io.fridaapp
किसी क्लास के मेथड्स खोजें
अब हम MainActivity: क्लास के अंदर के मेथड्स को निकालते हैं:
android hooking search methods asvid.github.io.fridaapp MainActivity
एक क्लास के घोषित मेथड्स की सूची उनके पैरामीटर्स के साथ
आइए पता करते हैं कि क्लास के मेथड्स को कौन से पैरामीटर्स की आवश्यकता है:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
क्लासेस की सूची
आप वर्तमान एप्लिकेशन के अंदर लोड की गई सभी क्लासेस की सूची भी बना सकते हैं:
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
यह बहुत उपयोगी है यदि आप क्लास के मेथड को हुक करना चाहते हैं और आपको केवल क्लास का नाम पता है। आप इस फ़ंक्शन का उपयोग यह खोजने के लिए कर सकते हैं कि क्लास का मालिक कौन सा मॉड्यूल है और फिर इसके मेथड को हुक कर सकते हैं।
हुकिंग आसान है
एक मेथड को हुक करना (देखना)
ऐप्लिकेशन के स्रोत कोड से हमें पता है कि फंक्शन sum() से MainActivity हर सेकंड चल रहा है। चलिए कोशिश करते हैं कि हर बार जब फंक्शन को कॉल किया जाए तो सभी संभावित जानकारी को डंप करें (आर्गुमेंट्स, रिटर्न वैल्यू और बैकट्रेस):
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
एक पूरी क्लास को हुक करना (देखना)
वास्तव में, मुझे क्लास MainActivity के सभी मेथड्स बहुत दिलचस्प लगते हैं, चलो उन्हें सभी हुक करें। सावधान रहें, यह एक एप्लिकेशन को क्रैश कर सकता है।
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
यदि आप क्लास को हुक करते समय एप्लिकेशन के साथ खेलते हैं, तो आप देखेंगे कि प्रत्येक फ़ंक्शन कब कॉल किया जा रहा है, इसके आर्गुमेंट्स और रिटर्न मान।
फ़ंक्शन के बूलियन रिटर्न मान को बदलना
स्रोत कोड से आप देख सकते हैं कि फ़ंक्शन checkPin एक String को आर्गुमेंट के रूप में लेता है और एक boolean लौटाता है। चलिए फ़ंक्शन को हमेशा true लौटाने के लिए बनाते हैं:
अब, यदि आप PIN कोड के लिए टेक्स्ट बॉक्स में कुछ भी लिखते हैं, तो आप देखेंगे कि कुछ भी मान्य है:
क्लास उदाहरण
एक विशेष Java क्लास के लाइव उदाहरणों की खोज करें और प्रिंट करें, जिसे पूर्ण रूप से योग्य क्लास नाम द्वारा निर्दिष्ट किया गया है। यह एक खोजे गए ऑब्जेक्शन के लिए एक स्ट्रिंग मान प्राप्त करने के प्रयास का परिणाम है, जो आमतौर पर ऑब्जेक्ट के लिए प्रॉपर्टी मानों को शामिल करेगा।
android heap print_instances <class>
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
सूची के नीचे आप frida देख सकते हैं:
चलो देखते हैं कि frida क्या निर्यात कर रहा है:
खोजें/लिखें
आप 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
exit
मुझे Objection में क्या कमी लगती है
- हुकिंग विधियाँ कभी-कभी एप्लिकेशन को क्रैश कर देती हैं (यह Frida के कारण भी है)।
- आप इंस्टेंस के फ़ंक्शंस को कॉल करने के लिए क्लास के इंस्टेंस का उपयोग नहीं कर सकते। और आप क्लास के नए इंस्टेंस नहीं बना सकते और उन्हें फ़ंक्शंस को कॉल करने के लिए उपयोग नहीं कर सकते।
- एप्लिकेशन द्वारा उपयोग किए जा रहे सभी सामान्य क्रिप्टो विधियों को हुक करने के लिए कोई शॉर्टकट नहीं है (जैसे sslpinnin के लिए) ताकि आप सिफर टेक्स्ट, प्लेन टेक्स्ट, कीज़, IVs और उपयोग किए गए एल्गोरिदम देख सकें।
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।