Objection Tutorial
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
Connection
एक सामान्य ADB कनेक्शन बनाएं और डिवाइस में frida सर्वर शुरू करें (और जांचें कि frida क्लाइंट और सर्वर दोनों में काम कर रहा है)।
यदि आप एक रूटेड डिवाइस का उपयोग कर रहे हैं, तो --gadget विकल्प के अंदर उस एप्लिकेशन का चयन करना आवश्यक है जिसे आप परीक्षण करना चाहते हैं। इस मामले में:
Basic Actions
इस ट्यूटोरियल में सभी संभावित आदेशों की सूची नहीं दी जाएगी, केवल वे जो मुझे अधिक उपयोगी लगे हैं।
Environment
कुछ दिलचस्प जानकारी (जैसे पासवर्ड या पथ) वातावरण के अंदर मिल सकती है।
फ्रिडा जानकारी
अपलोड/डाउनलोड
फ्रिडा स्क्रिप्ट आयात करें
SSLPinning
रूट पहचान
Exec Command
स्क्रीनशॉट्स
स्थैतिक विश्लेषण को गतिशील बनाना
एक वास्तविक एप्लिकेशन में, हमें इस भाग में खोजी गई सभी जानकारी का ज्ञान होना चाहिए, इससे पहले कि हम objection का उपयोग करें, धन्यवाद स्थैतिक विश्लेषण। खैर, इस तरीके से आप शायद कुछ नया देख सकें क्योंकि यहाँ आपके पास केवल कक्षाओं, विधियों और निर्यातित वस्तुओं की एक पूर्ण सूची होगी।
यह भी उपयोगी है यदि किसी तरह आप ऐप का पढ़ने योग्य स्रोत कोड प्राप्त करने में असमर्थ हैं।
गतिविधियों, रिसीवर्स और सेवाओं की सूची
Frida कोई त्रुटि लॉन्च करेगा यदि कोई नहीं पाया गया
वर्तमान गतिविधि प्राप्त करना
क्लासेस खोजें
आइए अपने एप्लिकेशन के अंदर क्लासेस की खोज करना शुरू करें।
किसी क्लास के खोजने के तरीके
अब हम MainActivity: क्लास के अंदर के तरीकों को निकालते हैं:
एक क्लास के घोषित मेथड्स की सूची उनके पैरामीटर्स के साथ
आइए पता करते हैं कि क्लास के मेथड्स को कौन से पैरामीटर्स की आवश्यकता है:
क्लासेस की सूची
आप वर्तमान एप्लिकेशन के अंदर लोड की गई सभी क्लासेस की सूची भी बना सकते हैं:
यह बहुत उपयोगी है यदि आप किसी क्लास के मेथड को हुक करना चाहते हैं और आपको केवल क्लास का नाम पता है। आप इस फ़ंक्शन का उपयोग यह खोजने के लिए कर सकते हैं कि क्लास का मालिक कौन सा मॉड्यूल है और फिर उसके मेथड को हुक कर सकते हैं।
हुकिंग आसान है
एक मेथड को हुक करना (देखना)
ऐप्लिकेशन के स्रोत कोड से हमें पता है कि फंक्शन sum() से MainActivity हर सेकंड चल रहा है। चलिए कोशिश करते हैं कि हर बार जब फंक्शन को कॉल किया जाए तो सभी संभावित जानकारी को डंप करें (आर्गुमेंट्स, रिटर्न वैल्यू और बैकट्रेस):
एक पूरी क्लास को हुक करना (देखना)
वास्तव में, मुझे क्लास MainActivity के सभी मेथड्स बहुत दिलचस्प लगते हैं, चलो उन्हें सभी हुक करें। सावधान रहें, यह एक एप्लिकेशन को क्रैश कर सकता है।
If you play with the application while the class is hooked you will see when प्रत्येक फ़ंक्शन को कॉल किया जा रहा है, इसके आर्गुमेंट्स और रिटर्न वैल्यू।
फ़ंक्शन के बूलियन रिटर्न वैल्यू को बदलना
स्रोत कोड से आप देख सकते हैं कि फ़ंक्शन checkPin एक String को आर्गुमेंट के रूप में लेता है और एक boolean लौटाता है। चलिए फ़ंक्शन को हमेशा true लौटाने के लिए बनाते हैं:
अब, यदि आप PIN कोड के लिए टेक्स्ट बॉक्स में कुछ भी लिखते हैं, तो आप देखेंगे कि कुछ भी मान्य है:
क्लास इंस्टेंस
एक विशेष Java क्लास के लाइव इंस्टेंस के लिए खोजें और प्रिंट करें, जिसे पूर्ण रूप से योग्य क्लास नाम द्वारा निर्दिष्ट किया गया है। यह एक खोजे गए ऑब्जेक्शन के लिए एक स्ट्रिंग वैल्यू प्राप्त करने के प्रयास का परिणाम है, जो आमतौर पर ऑब्जेक्ट के लिए प्रॉपर्टी वैल्यूज़ को शामिल करेगा।
कीस्टोर/इंटेंट्स
आप कीस्टोर और इंटेंट्स के साथ खेल सकते हैं:
मेमोरी
डंप
सूची
सूची के नीचे आप फ्रिडा देख सकते हैं:
चलो देखते हैं कि फ्रिडा क्या निर्यात कर रहा है:
खोजें/लिखें
आप objection के साथ मेमोरी के अंदर खोज और लिख भी सकते हैं:
SQLite
आप sqlite
कमांड का उपयोग sqlite डेटाबेस के साथ इंटरैक्ट करने के लिए कर सकते हैं।
Exit
मुझे Objection में क्या कमी लगती है
हुकिंग विधियाँ कभी-कभी एप्लिकेशन को क्रैश कर देती हैं (यह Frida के कारण भी है)।
आप कक्षाओं के उदाहरणों का उपयोग करके उदाहरण के कार्यों को कॉल नहीं कर सकते। और आप कक्षाओं के नए उदाहरण नहीं बना सकते और उनका उपयोग करके कार्यों को कॉल नहीं कर सकते।
एप्लिकेशन द्वारा उपयोग किए जा रहे सभी सामान्य क्रिप्टो विधियों को हुक करने के लिए कोई शॉर्टकट नहीं है (जैसे sslpinnin) ताकि आप सिफर टेक्स्ट, प्लेन टेक्स्ट, कुंजी, IVs और उपयोग किए गए एल्गोरिदम देख सकें।
बग बाउंटी टिप: Intigriti के लिए साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा, हैकर्स के लिए बनाया गया है! आज ही https://go.intigriti.com/hacktricks पर हमारे साथ जुड़ें, और $100,000 तक की बाउंटी कमाना शुरू करें!
Last updated