hacktricks/mobile-pentesting/android-app-pentesting/drozer-tutorial
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00
..
exploiting-content-providers.md Translated to Hindi 2023-11-06 08:38:02 +00:00
README.md Translated to Hindi 2023-11-06 08:38:02 +00:00

Drozer ट्यूटोरियल

☁️ HackTricks क्लाउड ☁️ -🐦 ट्विटर 🐦 - 🎙️ ट्विच 🎙️ - 🎥 यूट्यूब 🎥

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

{% embed url="https://go.intigriti.com/hacktricks" %}

परीक्षण के लिए APKs

स्थापना

अपने होस्ट के अंदर Drozer Client स्थापित करें। इसे नवीनतम रिलीज़ से डाउनलोड करें।

pip install drozer-2.4.4-py2-none-any.whl
pip install twisted
pip install service_identity

ड्रोज़र APK को नवीनतम रिलीज़ से डाउनलोड और इंस्टॉल करें। इस समय यह यह है।

adb install drozer.apk

सर्वर शुरू करना

एजेंट 31415 पोर्ट पर चल रहा है, हमें ड्रोज़र क्लाइंट और एजेंट के बीच संचार स्थापित करने के लिए पोर्ट फ़ॉरवर्ड करने की आवश्यकता होती है, यहां इसके लिए आवश्यक कमांड है:

adb forward tcp:31415 tcp:31415

अंत में, एप्लिकेशन को लॉन्च करें और "ON" बटन दबाएं।

और इससे कनेक्ट करें:

drozer console connect

दिलचस्प आदेश

आदेश विवरण
Help MODULE चयनित मॉड्यूल की मदद दिखाता है
list वर्तमान सत्र में निष्पादित किए जा सकने वाले सभी drozer मॉड्यूल की सूची दिखाता है। यह मॉड्यूल छिपाता है जिनके लिए आपके पास उचित अनुमतियाँ नहीं हैं।
shell उपकरण पर एक इंटरैक्टिव लिनक्स शेल शुरू करें, एजेंट के संदर्भ में।
clean एंड्रॉइड उपकरण पर drozer द्वारा संचित अस्थायी फ़ाइलें हटाएं।
load drozer आदेश समेत करने वाली एक फ़ाइल लोड करें और उन्हें क्रमबद्धता से निष्पादित करें।
module इंटरनेट से अतिरिक्त drozer मॉड्यूल खोजें और स्थापित करें।
unset drozer द्वारा उत्पन्न किसी भी लिनक्स शेल को हटाएं जिसे यह उत्पन्न करता है।
set drozer द्वारा उत्पन्न किसी भी लिनक्स शेल को पास किए जाने वाले पर्यावरणीय चर के रूप में एक मान संग्रहीत करें।
shell उपकरण पर एक इंटरैक्टिव लिनक्स शेल शुरू करें, एजेंट के संदर्भ में।
run MODULE एक drozer मॉड्यूल निष्पादित करें
exploit Drozer उपकरण में निष्पादित करने के लिए उत्पन्न कर सकता है। drozer exploit list
payload उत्पन्न करने के लिए उत्पन्न करने की आवश्यकता होती है। drozer payload list

पैकेज

नाम के हिस्से के द्वारा पैकेज का नाम ढूंढें:

dz> run app.package.list -f sieve
com.mwr.example.sieve

पैकेज की मूलभूत जानकारी:

dz> run app.package.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
Process Name: com.mwr.example.sieve
Version: 1.0
Data Directory: /data/data/com.mwr.example.sieve
APK Path: /data/app/com.mwr.example.sieve-2.apk
UID: 10056
GID: [1028, 1015, 3003]
Shared Libraries: null
Shared User ID: null
Uses Permissions:
- android.permission.READ_EXTERNAL_STORAGE
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.INTERNET
Defines Permissions:
- com.mwr.example.sieve.READ_KEYS
- com.mwr.example.sieve.WRITE_KEYS

पढ़ें मैनिफेस्ट:

run app.package.manifest jakhar.aseem.diva

पैकेज का हमला सतह:

dz> run app.package.attacksurface com.mwr.example.sieve
Attack Surface:
3 activities exported
0 broadcast receivers exported
2 content providers exported
2 services exported
is debuggable
  • गतिविधियाँ: शायद आप एक गतिविधि शुरू कर सकते हैं और कुछ प्रकार की प्रमाणीकरण को अनदेखा कर सकते हैं जो आपको इसे लॉन्च करने से रोकना चाहिए।
  • सामग्री प्रदाता: शायद आप निजी डेटा तक पहुंच सकते हैं या कुछ संकट का उपयोग कर सकते हैं (SQL Injection या पथ ट्रावर्सल).
  • सेवाएं:
  • is debuggable: और अधिक जानें

गतिविधियाँ

एक निर्यातित गतिविधि घटक का "android:exported" मान AndroidManifest.xml फ़ाइल में "true" पर सेट किया गया है:

<activity android:name="com.my.app.Initial" android:exported="true">
</activity>

सूची निर्यातित गतिविधियाँ:

dz> run app.activity.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.FileSelectActivity
com.mwr.example.sieve.MainLoginActivity
com.mwr.example.sieve.PWList

एक्टिविटी शुरू करें:

शायद आप एक्टिविटी शुरू कर सकते हैं और उसे लॉन्च करने से रोकने वाली किसी प्रकार की प्रमाणीकरण को छल सकते हैं।

{% code overflow="wrap" %}

dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList

{% endcode %}

आप एडीबी से एक निर्यातित गतिविधि भी शुरू कर सकते हैं:

  • पैकेज का नाम com.example.demo है
  • निर्यातित गतिविधि का नाम com.example.test.MainActivity है
adb shell am start -n com.example.demo/com.example.test.MainActivity

सामग्री प्रदाता

यह पोस्ट इतनी बड़ी है कि आप इसे यहां अपने खुद के पृष्ठ में एक्सेस कर सकते हैं

सेवाएं

एक निर्यातित सेवा Manifest.xml में घोषित की जाती है:

{% code overflow="wrap" %}

<service android:name=".AuthService" android:exported="true" android:process=":remote"/>

{% endcode %}

कोड के अंदर check करें और **handleMessage** फ़ंक्शन की जांच करें जो संदेश को प्राप्त करेगा:

dz> run app.service.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.AuthService
Permission: null
com.mwr.example.sieve.CryptoService
Permission: null

एक सेवा के साथ संवाद करें

To interact with a service, you can use the run command in drozer. This command allows you to execute various actions on the target service.

To use the run command, you need to specify the package name of the target application and the action you want to perform. For example, if you want to send an SMS from the target application, you can use the following command:

run app.package.name action_name --extra string_key string_value

Here, app.package.name is the package name of the target application, action_name is the name of the action you want to perform, and string_key and string_value are the key-value pairs of any extra data required for the action.

You can find the available actions and their corresponding parameters in the application's manifest file or by using the drozer command manifest package_name.

Once you have identified the action and its required parameters, you can use the run command to interact with the service and perform the desired action.

Note: Interacting with a service requires appropriate permissions. Make sure you have the necessary permissions to perform the desired action.

app.service.send            Send a Message to a service, and display the reply
app.service.start           Start Service
app.service.stop            Stop Service

उदाहरण

app.service.send के लिए drozer मदद को देखें:

ध्यान दें कि आप पहले "msg.what" के भीतर डेटा भेज रहे हैं, फिर "msg.arg1" और "msg.arg2", आपको जांचना चाहिए कि कौन सी जानकारी का उपयोग किया जा रहा है और कहां।
--extra विकल्प का उपयोग करके आप "_msg.replyTo" द्वारा व्याख्या किया जाने वाला कुछ भेज सकते हैं, और --bundle-as-obj का उपयोग करके आप प्रदान की गई विवरणों के साथ एक ऑब्जेक्ट बना सकते हैं।

निम्न उदाहरण में:

  • what == 2354
  • arg1 == 9234
  • arg2 == 1
  • replyTo == object(string com.mwr.example.sieve.PIN 1337)
run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj

ब्रॉडकास्ट रिसीवर

एंड्रॉइड ऐप्स एंड्रॉइड सिस्टम और अन्य एंड्रॉइड ऐप्स से ब्रॉडकास्ट संदेश भेज सकते हैं या प्राप्त कर सकते हैं, पब्लिश-सब्सक्राइब डिजाइन पैटर्न के तरह। ये ब्रॉडकास्ट उस समय भेजे जाते हैं जब कोई रुचि की घटना होती है। उदाहरण के लिए, एंड्रॉइड सिस्टम विभिन्न सिस्टम घटनाओं के होने पर ब्रॉडकास्ट भेजता है, जैसे कि सिस्टम बूट होता है या डिवाइस चार्ज होना शुरू होता है। ऐप्स अन्य ऐप्स को भी कस्टम ब्रॉडकास्ट भेज सकते हैं, उदाहरण के लिए, किसी नई डेटा के डाउनलोड होने की सूचना देने के लिए।

ऐप्स विशेष ब्रॉडकास्ट प्राप्त करने के लिए पंजीकृत हो सकते हैं। जब एक ब्रॉडकास्ट भेजा जाता है, सिस्टम स्वचालित रूप से उस प्रकार के ब्रॉडकास्ट प्राप्त करने के लिए पंजीकृत ऐप्स को भेजता है।

यह Manifest.xml फ़ाइल में शामिल हो सकता है:

<receiver android:name=".MyBroadcastReceiver"  android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
</intent-filter>
</receiver>

यहां सभी Broadcast Receivers का पता लगाएं

run app.broadcast.info #Detects all

एक ऐप के ब्रॉडकास्ट रिसीवर्स की जांच करें

एक ऐप के ब्रॉडकास्ट रिसीवर्स की जांच करने के लिए निम्नलिखित कमांड का उपयोग करें:

run app.broadcast.info -a <package_name>

यह कमांड एक ऐप के ब्रॉडकास्ट रिसीवर्स की सूची प्रदर्शित करेगा, जिन्हें ऐप द्वारा प्राप्त किए जा सकते हैं। इसके अलावा, आप इन रिसीवर्स के लिए विस्तृत जानकारी भी प्राप्त कर सकते हैं।

#Check one negative
run app.broadcast.info -a jakhar.aseem.diva
Package: jakhar.aseem.diva
No matching receivers.

# Check one positive
run app.broadcast.info -a com.google.android.youtube
Package: com.google.android.youtube
com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver
Permission: null
com.google.android.apps.youtube.app.common.notification.GcmBroadcastReceiver
Permission: com.google.android.c2dm.permission.SEND
com.google.android.apps.youtube.app.PackageReplacedReceiver
Permission: null
com.google.android.libraries.youtube.account.AccountsChangedReceiver
Permission: null
com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver
Permission: null

प्रसारण संवाद

app.broadcast.info          Get information about broadcast receivers
app.broadcast.send          Send broadcast using an intent
app.broadcast.sniff         Register a broadcast receiver that can sniff particular intents

संदेश भेजें

इस उदाहरण में FourGoats apk Content Provider का दुरुपयोग करके आप बिना उपयोगकर्ता की अनुमति के किसी भी गैर-प्रीमियम गंतव्य पर एक अनियमित SMS भेज सकते हैं

यदि आप कोड पढ़ते हैं, तो "phoneNumber" और "message" पैरामीटर को Content Provider को भेजना चाहिए।

run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!"

क्या डीबग किया जा सकता है

एक प्रोडक्शन APK को कभी डीबग किया नहीं जाना चाहिए। इसका मतलब है कि आप चल रहे एप्लिकेशन में जावा डीबगर को जोड़ सकते हैं, इसे रनटाइम में जांच सकते हैं, ब्रेकपॉइंट सेट कर सकते हैं, कदम से कदम जा सकते हैं, चर मानों को इकट्ठा कर सकते हैं और उन्हें बदल सकते हैं। InfoSec संस्थान में एक उत्कृष्ट लेख है जो आपको बताता है कि जब आपका एप्लिकेशन डीबग किया जा सकता है और रनटाइम कोड इंजेक्शन करने के लिए और गहराई में खोजने के लिए कैसे आगे बढ़ें।

जब एक एप्लिकेशन डीबग किया जा सकता है, तो यह मैनिफेस्ट में दिखाई देगा:

<application theme="@2131296387" debuggable="true"

आप Drozer के साथ सभी डिबग करने योग्य एप्लिकेशन ढूंढ सकते हैं:

run app.package.debuggable

ट्यूटोरियल

अधिक जानकारी

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

{% embed url="https://go.intigriti.com/hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥