Objection Tutorial

Reading time: 8 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

परिचय

objection - रनटाइम मोबाइल अन्वेषण

Objection एक रनटाइम मोबाइल अन्वेषण टूलकिट है, जो Frida द्वारा संचालित है। इसे मोबाइल अनुप्रयोगों और उनकी सुरक्षा स्थिति का आकलन करने में मदद करने के उद्देश्य से बनाया गया था, बिना किसी जेलब्रोकन या रूटेड मोबाइल डिवाइस की आवश्यकता के।

नोट: यह किसी प्रकार का जेलब्रेक / रूट बाईपास नहीं है। objection का उपयोग करके, आप अभी भी उस लागू सैंडबॉक्स द्वारा लगाए गए सभी प्रतिबंधों से सीमित हैं जिनका आप सामना कर रहे हैं।

फिर से शुरू करें

objection का लक्ष्य उपयोगकर्ता को Frida द्वारा प्रदान किए गए मुख्य क्रियाओं को कॉल करने देना है। अन्यथा, उपयोगकर्ता को हर अनुप्रयोग के लिए एकल स्क्रिप्ट बनानी होगी जिसे वह परीक्षण करना चाहता है।

ट्यूटोरियल

इस ट्यूटोरियल के लिए मैं उस APK का उपयोग करने जा रहा हूँ जिसे आप यहाँ डाउनलोड कर सकते हैं:

या इसके मूल भंडार से (app-release.apk डाउनलोड करें)

स्थापना

bash
pip3 install objection

Connection

एक नियमित ADB कनेक्शन बनाएं और डिवाइस में frida सर्वर शुरू करें (और जांचें कि frida क्लाइंट और सर्वर दोनों में काम कर रहा है)।

यदि आप एक रूटेड डिवाइस का उपयोग कर रहे हैं, तो --gadget विकल्प के अंदर उस एप्लिकेशन का चयन करना आवश्यक है जिसे आप परीक्षण करना चाहते हैं। इस मामले में:

bash
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore

Basic Actions

इस ट्यूटोरियल में objections के सभी संभावित कमांड सूचीबद्ध नहीं किए जाएंगे, केवल वे जो मुझे अधिक उपयोगी लगे हैं।

Environment

कुछ दिलचस्प जानकारी (जैसे पासवर्ड या पथ) वातावरण के अंदर मिल सकती है।

bash
env

Frida जानकारी

bash
frida

अपलोड/डाउनलोड

bash
file download <remote path> [<local path>]
file upload <local path> [<remote path>]

फ्रिडा स्क्रिप्ट आयात करें

bash
import <local path frida-script>

SSLPinning

bash
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.

रूट डिटेक्शन

bash
android root disable  #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.

Exec Command

bash
android shell_exec whoami

स्क्रीनशॉट

bash
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false  #This may enable you to take screenshots using the hardware keys

स्थैतिक विश्लेषण को गतिशील बनाना

एक वास्तविक एप्लिकेशन में, हमें इस भाग में खोजी गई सभी जानकारी का ज्ञान होना चाहिए, इससे पहले कि हम objection का उपयोग करें, धन्यवाद स्थैतिक विश्लेषण। फिर भी, इस तरीके से आप शायद कुछ नया देख सकते हैं क्योंकि यहाँ आपके पास केवल कक्षाओं, विधियों और निर्यातित वस्तुओं की एक पूर्ण सूची होगी।

यह भी उपयोगी है यदि किसी तरह आप ऐप का पढ़ने योग्य स्रोत कोड प्राप्त करने में असमर्थ हैं।

गतिविधियों, रिसीवर्स और सेवाओं की सूची

bash
android hooking list activities

bash
android hooking list services
android hooking list receivers

Frida कोई त्रुटि लॉन्च करेगा यदि कोई नहीं पाया गया

वर्तमान गतिविधि प्राप्त करना

bash
android hooking get current_activity

क्लासेस खोजें

आइए अपने एप्लिकेशन के अंदर क्लासेस की खोज करना शुरू करें।

bash
android hooking search classes asvid.github.io.fridaapp

किसी क्लास के मेथड्स खोजें

अब हम MainActivity: क्लास के अंदर के मेथड्स को निकालते हैं:

bash
android hooking search methods asvid.github.io.fridaapp MainActivity

एक क्लास के घोषित मेथड्स की सूची उनके पैरामीटर्स के साथ

आइए पता करते हैं कि क्लास के मेथड्स को कौन से पैरामीटर्स की आवश्यकता है:

bash
android hooking list class_methods asvid.github.io.fridaapp.MainActivity

क्लासेस की सूची

आप वर्तमान एप्लिकेशन के अंदर लोड की गई सभी क्लासेस की सूची भी बना सकते हैं:

bash
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.

यह बहुत उपयोगी है यदि आप क्लास के मेथड को हुक करना चाहते हैं और आपको केवल क्लास का नाम पता है। आप इस फ़ंक्शन का उपयोग यह खोजने के लिए कर सकते हैं कि क्लास का मालिक कौन सा मॉड्यूल है और फिर इसके मेथड को हुक कर सकते हैं।

हुकिंग आसान है

एक मेथड को हुक करना (देखना)

ऐप्लिकेशन के स्रोत कोड से हमें पता है कि फंक्शन sum() से MainActivity हर सेकंड चल रहा है। चलिए कोशिश करते हैं कि हर बार जब फंक्शन को कॉल किया जाए तो सभी संभावित जानकारी को डंप करें (आर्गुमेंट्स, रिटर्न वैल्यू और बैकट्रेस):

bash
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return

एक पूरी क्लास को हुक करना (देखना)

वास्तव में, मुझे क्लास MainActivity के सभी मेथड्स बहुत दिलचस्प लगते हैं, चलो उन्हें सभी हुक करें। सावधान रहें, यह एक एप्लिकेशन को क्रैश कर सकता है।

bash
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

आप कीस्टोर और इंटेंट्स के साथ खेल सकते हैं:

bash
android keystore list
android intents launch_activity
android intent launch_service

मेमोरी

डंप

bash
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part

सूची

bash
memory list modules

सूची के नीचे आप frida देख सकते हैं:

चलो देखते हैं कि frida क्या निर्यात कर रहा है:

खोजें/लिखें

आप objection के साथ मेमोरी के अंदर भी खोज और लिख सकते हैं:

bash
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

bash
exit

मुझे Objection में क्या कमी लगती है

  • हुकिंग विधियाँ कभी-कभी एप्लिकेशन को क्रैश कर देती हैं (यह Frida के कारण भी है)।
  • आप इंस्टेंस के फ़ंक्शंस को कॉल करने के लिए क्लास के इंस्टेंस का उपयोग नहीं कर सकते। और आप क्लास के नए इंस्टेंस नहीं बना सकते और उन्हें फ़ंक्शंस को कॉल करने के लिए उपयोग नहीं कर सकते।
  • एप्लिकेशन द्वारा उपयोग किए जा रहे सभी सामान्य क्रिप्टो विधियों को हुक करने के लिए कोई शॉर्टकट नहीं है (जैसे sslpinnin के लिए) ताकि आप सिफर टेक्स्ट, प्लेन टेक्स्ट, कीज़, IVs और उपयोग किए गए एल्गोरिदम देख सकें।

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें