hacktricks/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md

265 lines
18 KiB
Markdown
Raw Normal View History

# Objection Tutorial
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
2022-10-27 23:22:18 +00:00
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**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**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
2022-10-27 23:22:18 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
## **Introduction**
**objection - Runtime Mobile Exploration**
[**Objection**](https://github.com/sensepost/objection) एक रनटाइम मोबाइल अन्वेषण टूलकिट है, जो [Frida](https://www.frida.re) द्वारा संचालित है। इसे मोबाइल अनुप्रयोगों और उनकी सुरक्षा स्थिति का आकलन करने में मदद करने के उद्देश्य से बनाया गया था, बिना किसी जेलब्रोकन या रूटेड मोबाइल डिवाइस की आवश्यकता के।
**Note:** यह जेलब्रेक / रूट बाईपास का कोई रूप नहीं है। `objection` का उपयोग करके, आप अभी भी उस लागू सैंडबॉक्स द्वारा लगाए गए सभी प्रतिबंधों से सीमित हैं जिनका आप सामना कर रहे हैं।
### Resume
**objection** का **लक्ष्य** उपयोगकर्ता को **Frida द्वारा प्रदान की जाने वाली मुख्य क्रियाओं** को कॉल करने देना है। **अन्यथा**, उपयोगकर्ता को हर अनुप्रयोग के लिए एक **एकल स्क्रिप्ट** बनानी होगी जिसे वह परीक्षण करना चाहता है।
## Tutorial
इस ट्यूटोरियल के लिए मैं उस APK का उपयोग करने जा रहा हूँ जिसे आप यहाँ डाउनलोड कर सकते हैं:
{% file src="../../../.gitbook/assets/app-release.zip" %}
या इसके [मूल भंडार से](https://github.com/asvid/FridaApp)(app-release.apk डाउनलोड करें)
### Installation
```bash
pip3 install objection
```
### Connection
एक **सामान्य ADB कनेक्शन** बनाएं और डिवाइस में **frida** सर्वर **शुरू** करें (और जांचें कि frida क्लाइंट और सर्वर दोनों में काम कर रहा है)।
यदि आप एक **रूटेड डिवाइस** का उपयोग कर रहे हैं, तो _**--gadget**_ विकल्प के अंदर उस एप्लिकेशन का चयन करना आवश्यक है जिसे आप परीक्षण करना चाहते हैं। इस मामले में:
```bash
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
```
### Basic Actions
इस ट्यूटोरियल में सभी संभावित आदेशों की सूची नहीं दी जाएगी, केवल वे जो मुझे अधिक उपयोगी लगे हैं।
#### Environment
कुछ दिलचस्प जानकारी (जैसे पासवर्ड या पथ) वातावरण के अंदर मिल सकती है।
```bash
env
```
![](<../../../.gitbook/assets/image (220).png>)
#### फ्रिडा जानकारी
```bash
frida
```
![](<../../../.gitbook/assets/image (1093).png>)
2023-11-06 08:38:02 +00:00
#### अपलोड/डाउनलोड
2021-04-12 10:24:17 +00:00
```bash
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
```
#### फ्रिडा स्क्रिप्ट आयात करें
2021-04-12 10:24:17 +00:00
```bash
import <local path frida-script>
```
#### SSLPinning
2021-04-12 10:24:17 +00:00
```bash
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
```
#### रूट पहचान
2021-04-12 10:24:17 +00:00
```bash
android root disable #Attempts to disable root detection on Android devices.
2021-01-13 09:35:52 +00:00
android root simulate #Attempts to simulate a rooted Android environment.
```
#### Exec Command
2023-11-06 08:38:02 +00:00
```bash
android shell_exec whoami
```
#### स्क्रीनशॉट्स
2021-04-12 10:24:17 +00:00
```bash
android ui screenshot /tmp/screenshot
2021-04-12 10:24:17 +00:00
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
```
### स्थैतिक विश्लेषण को गतिशील बनाना
एक वास्तविक एप्लिकेशन में, हमें इस भाग में खोजी गई सभी जानकारी का ज्ञान होना चाहिए, इससे पहले कि हम objection का उपयोग करें, धन्यवाद **स्थैतिक विश्लेषण**। खैर, इस तरीके से आप शायद **कुछ नया** देख सकें क्योंकि यहाँ आपके पास केवल कक्षाओं, विधियों और निर्यातित वस्तुओं की एक पूर्ण सूची होगी।
यह भी उपयोगी है यदि किसी तरह आप ऐप का **पढ़ने योग्य स्रोत कोड प्राप्त करने में असमर्थ** हैं।
#### गतिविधियों, रिसीवर्स और सेवाओं की सूची
```bash
android hooking list activities
```
![](<../../../.gitbook/assets/image (1016).png>)
```bash
android hooking list services
android hooking list receivers
```
Frida कोई त्रुटि लॉन्च करेगा यदि कोई नहीं पाया गया
2023-11-06 08:38:02 +00:00
#### वर्तमान गतिविधि प्राप्त करना
```bash
android hooking get current_activity
```
![](<../../../.gitbook/assets/image (813).png>)
#### क्लासेस खोजें
आइए अपने एप्लिकेशन के अंदर क्लासेस की खोज करना शुरू करें।
```bash
android hooking search classes asvid.github.io.fridaapp
```
![](<../../../.gitbook/assets/image (507).png>)
#### किसी क्लास के खोजने के तरीके
अब हम _MainActivity:_ क्लास के अंदर के तरीकों को निकालते हैं:
```bash
android hooking search methods asvid.github.io.fridaapp MainActivity
```
![](<../../../.gitbook/assets/image (929).png>)
#### एक क्लास के घोषित मेथड्स की सूची उनके पैरामीटर्स के साथ
आइए पता करते हैं कि क्लास के मेथड्स को कौन से पैरामीटर्स की आवश्यकता है:
```bash
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
```
![](<../../../.gitbook/assets/image (299).png>)
#### क्लासेस की सूची
आप वर्तमान एप्लिकेशन के अंदर लोड की गई सभी क्लासेस की सूची भी बना सकते हैं:
```bash
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
```
यह बहुत उपयोगी है यदि आप **किसी क्लास के मेथड को हुक करना चाहते हैं और आपको केवल क्लास का नाम पता है**। आप इस फ़ंक्शन का उपयोग **यह खोजने के लिए कर सकते हैं कि क्लास का मालिक कौन सा मॉड्यूल है** और फिर उसके मेथड को हुक कर सकते हैं।
### हुकिंग आसान है
#### एक मेथड को हुक करना (देखना)
ऐप्लिकेशन के [स्रोत कोड](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt) से हमें पता है कि **फंक्शन** _**sum()**_ **से** _**MainActivity**_ **हर सेकंड** चल रहा है। चलिए कोशिश करते हैं कि **हर बार जब फंक्शन को कॉल किया जाए तो सभी संभावित जानकारी को डंप करें** (आर्गुमेंट्स, रिटर्न वैल्यू और बैकट्रेस):
```bash
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
```
![](<../../../.gitbook/assets/image (1086).png>)
#### एक पूरी क्लास को हुक करना (देखना)
वास्तव में, मुझे क्लास MainActivity के सभी मेथड्स बहुत दिलचस्प लगते हैं, चलो **उन्हें सभी हुक करें**। सावधान रहें, यह एक एप्लिकेशन को **क्रैश** कर सकता है।
```bash
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 **प्रत्येक फ़ंक्शन को कॉल किया जा रहा है**, इसके **आर्गुमेंट्स** और **रिटर्न** वैल्यू।
![](<../../../.gitbook/assets/image (861).png>)
#### फ़ंक्शन के बूलियन रिटर्न वैल्यू को बदलना
स्रोत कोड से आप देख सकते हैं कि फ़ंक्शन _checkPin_ एक _String_ को आर्गुमेंट के रूप में लेता है और एक _boolean_ लौटाता है। चलिए फ़ंक्शन को **हमेशा true लौटाने** के लिए बनाते हैं:
![](<../../../.gitbook/assets/image (883).png>)
अब, यदि आप PIN कोड के लिए टेक्स्ट बॉक्स में कुछ भी लिखते हैं, तो आप देखेंगे कि कुछ भी मान्य है:
![](<../../../.gitbook/assets/image (228).png>)
### क्लास इंस्टेंस
एक विशेष Java क्लास के **लाइव इंस्टेंस** के लिए खोजें और प्रिंट करें, जिसे पूर्ण रूप से योग्य क्लास नाम द्वारा निर्दिष्ट किया गया है। यह एक खोजे गए ऑब्जेक्शन के लिए एक स्ट्रिंग वैल्यू प्राप्त करने के प्रयास का परिणाम है, जो आमतौर पर **ऑब्जेक्ट के लिए प्रॉपर्टी वैल्यूज़** को **शामिल** करेगा।
```
android heap print_instances <class>
```
![](<../../../.gitbook/assets/image (1095).png>)
2023-11-06 08:38:02 +00:00
### कीस्टोर/इंटेंट्स
आप कीस्टोर और इंटेंट्स के साथ खेल सकते हैं:
```bash
android keystore list
android intents launch_activity
android intent launch_service
```
### मेमोरी
2023-11-06 08:38:02 +00:00
#### डंप
2021-02-20 13:33:50 +00:00
```bash
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
```
2023-11-06 08:38:02 +00:00
#### सूची
```bash
memory list modules
```
![](<../../../.gitbook/assets/image (286).png>)
सूची के नीचे आप फ्रिडा देख सकते हैं:
![](<../../../.gitbook/assets/image (1097).png>)
चलो देखते हैं कि फ्रिडा क्या निर्यात कर रहा है:
![](<../../../.gitbook/assets/image (298).png>)
#### खोजें/लिखें
आप objection के साथ मेमोरी के अंदर खोज और लिख भी सकते हैं:
```bash
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)
```
2022-09-01 21:06:19 +00:00
### SQLite
आप `sqlite` कमांड का उपयोग sqlite डेटाबेस के साथ इंटरैक्ट करने के लिए कर सकते हैं।
### Exit
```bash
exit
```
## मुझे Objection में क्या कमी लगती है
* हुकिंग विधियाँ कभी-कभी एप्लिकेशन को क्रैश कर देती हैं (यह Frida के कारण भी है)।
* आप कक्षाओं के उदाहरणों का उपयोग करके उदाहरण के कार्यों को कॉल नहीं कर सकते। और आप कक्षाओं के नए उदाहरण नहीं बना सकते और उनका उपयोग करके कार्यों को कॉल नहीं कर सकते।
* एप्लिकेशन द्वारा उपयोग किए जा रहे सभी सामान्य क्रिप्टो विधियों को हुक करने के लिए कोई शॉर्टकट नहीं है (जैसे sslpinnin) ताकि आप सिफर टेक्स्ट, प्लेन टेक्स्ट, कुंजी, IVs और उपयोग किए गए एल्गोरिदम देख सकें।
2022-04-28 16:01:33 +00:00
2022-10-27 23:22:18 +00:00
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**बग बाउंटी टिप**: **Intigriti** के लिए **साइन अप करें**, एक प्रीमियम **बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा, हैकर्स के लिए बनाया गया है**! आज ही [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) पर हमारे साथ जुड़ें, और **$100,000** तक की बाउंटी कमाना शुरू करें!
2022-10-27 23:22:18 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
<summary>HackTricks का समर्थन करें</summary>
2022-04-28 16:01:33 +00:00
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}