Objection Tutorial

Support HackTricks

Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!

Introduction

objection - Runtime Mobile Exploration

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

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

Resume

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

Tutorial

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

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

Installation

pip3 install objection

Connection

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

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

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

Basic Actions

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

Environment

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

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.

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

If you play with the application while the class is hooked you will see when प्रत्येक फ़ंक्शन को कॉल किया जा रहा है, इसके आर्गुमेंट्स और रिटर्न वैल्यू।

फ़ंक्शन के बूलियन रिटर्न वैल्यू को बदलना

स्रोत कोड से आप देख सकते हैं कि फ़ंक्शन checkPin एक String को आर्गुमेंट के रूप में लेता है और एक boolean लौटाता है। चलिए फ़ंक्शन को हमेशा true लौटाने के लिए बनाते हैं:

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

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

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

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

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

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

खोजें/लिखें

आप 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 और उपयोग किए गए एल्गोरिदम देख सकें।

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

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

Last updated