Objection Tutorial

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

बग बाउंटी टिप: Intigriti के लिए साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाई गई है! आज हमारे साथ शामिल हों https://go.intigriti.com/hacktricks और शुरू करें बाउंटी अप टू $100,000 तक कमाना!

परिचय

objection - रनटाइम मोबाइल एक्सप्लोरेशन

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

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

रिज्यूम

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

ट्यूटोरियल

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

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

pip3 install objection

कनेक्शन

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

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

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

मूल एक्शन

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

पर्यावरण

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

env

फ्रिडा जानकारी

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.

कमांड निष्पादित

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.

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

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

एक विधि को हुक करना (देखना)

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

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 रिटर्न करने के लिए:

अब, यदि आप पिन कोड के लिए पाठ बॉक्स में कुछ भी लिखते हैं तो आप देखेंगे कि कुछ भी मान्य है:

क्लास इंस्टेंसेस

एक विशिष्ट जावा क्लास की लाइव इंस्टेंसेस की खोज और प्रिंट करें, जिसे पूरी तरह से योग्य क्लास नाम द्वारा निर्दिष्ट किया गया है। आउट एक प्रयास का परिणाम है जिसमें एक पाए गए आपत्ति के लिए एक स्ट्रिंग मान प्राप्त करने की कोशिश की गई है जिसमें सामान्य रूप से ऑब्जेक्ट के लिए संपत्ति मान होती है।

android heap print_instances <class>

कीस्टोर/इंटेंट्स

आप निम्नलिखित का उपयोग करके कीस्टोर और इंटेंट्स के साथ खेल सकते हैं:

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

सूची के निचले हिस्से में आप फ्रिडा देख सकते हैं:

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

खोज/लिखें

आप विरोध में मेमोरी के अंदर भी खोज सकते हैं और लिख सकते हैं।

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

  • हुकिंग विधियाँ कभी-कभी एप्लिकेशन को क्रैश कर देती हैं (यह भी फ्रिडा की वजह से है)।

  • आप क्लासेस के इंस्टेंस का उपयोग करके उनकी फ़ंक्शन को कॉल करने के लिए नहीं कर सकते। और आप नए क्लासेस के इंस्टेंस बना कर उन्हें उपयोग करके फ़ंक्शन को कॉल नहीं कर सकते।

  • एक शॉर्टकट (जैसे sslpinnin के लिए एक) नहीं है जो एप्लिकेशन द्वारा उपयोग की जाने वाली सभी सामान्य क्रिप्टो विधियों को हुक करने के लिए उपयोग किया जा सकता है ताकि चिपर टेक्स्ट, सादा टेक्स्ट, कुंजी, IVs और एल्गोरिदम्स देख सकें।

बग बाउंटी टिप: Intigriti के लिए साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफ़ॉर्म जो हैकर्स द्वारा बनाया गया है, हैकर्स के लिए! हमारे साथ जुड़ें https://go.intigriti.com/hacktricks आज ही, और शुरू करें बाउंटी कमाना तक $100,000 तक!

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated