.. | ||
exploiting-content-providers.md | ||
README.md |
Drozer ट्यूटोरियल
☁️ HackTricks क्लाउड ☁️ -🐦 ट्विटर 🐦 - 🎙️ ट्विच 🎙️ - 🎥 यूट्यूब 🎥
- क्या आप किसी साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
- The PEASS Family की खोज करें, हमारा एकल NFT संग्रह!
- आधिकारिक PEASS & HackTricks swag प्राप्त करें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह में या मुझे ट्विटर पर फ़ॉलो करें 🐦@carlospolopm.
- अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करें hacktricks repo और hacktricks-cloud repo को
बग बाउंटी टिप: 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
ट्यूटोरियल
- https://resources.infosecinstitute.com/android-penetration-tools-walkthrough-series-drozer/#gref
- https://github.com/mgcfish/mobiletools/blob/master/_posts/2016-08-01-Using-Drozer-for-application-security-assessments.md
- https://www.hackingarticles.in/android-penetration-testing-drozer/
- https://medium.com/@ashrafrizvi3006/how-to-test-android-application-security-using-drozer-edc002c5dcac
अधिक जानकारी
बग बाउंटी टिप: साइन अप करें Intigriti के लिए, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाई गई है! हमारे साथ शामिल हों https://go.intigriti.com/hacktricks आज ही और शुरू करें बाउंटी कमाना जो तकनीकी त्रुटियों तक $100,000 तक पहुंचता है!
{% embed url="https://go.intigriti.com/hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित करना चाहते हैं? या क्या आपको PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की अनुमति चाहिए? सदस्यता योजनाएं की जांच करें!
- खोजें The PEASS Family, हमारा विशेष संग्रह NFTs
- प्राप्त करें आधिकारिक PEASS & HackTricks swag
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह या मुझे ट्विटर पर फ़ॉलो करें 🐦@carlospolopm.
- अपने हैकिंग ट्रिक्स साझा करें hacktricks repo और hacktricks-cloud repo को PR जमा करके।