.. | ||
exploiting-content-providers.md | ||
README.md |
Drozer Tutorial
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS & HackTricks swag प्राप्त करें
- हमारे विशेष NFTs कलेक्शन, The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- हैकिंग ट्रिक्स साझा करें और PRs सबमिट करके HackTricks और HackTricks Cloud github repos में।
बग बाउंटी टिप: Intigriti के लिए साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाया गया है! आज ही हमारे साथ शामिल हों https://go.intigriti.com/hacktricks और शुरू करें बाउंटी अप तक $100,000 तक कमाना!
{% embed url="https://go.intigriti.com/hacktricks" %}
APKs को टेस्ट करने के लिए
इस ट्यूटोरियल के कुछ हिस्से Drozer documentation pdf से निकाले गए थे।
स्थापना
अपने होस्ट के अंदर 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 पर चल रहा है, हमें Drozer Client और एजेंट के बीच संचार स्थापित करने के लिए पोर्ट फॉरवर्ड करने की आवश्यकता है, यहाँ इसके लिए कमांड है:
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 %}
आप adb से एक निर्यातित गतिविधि भी शुरू कर सकते हैं:
- पैकेज नाम है com.example.demo
- निर्यातित गतिविधि का नाम है com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
सामग्री प्रदाता
यह पोस्ट इतनी बड़ी थी कि आप इसको अपने खुद के पेज पर एक्सेस कर सकते हैं.
सेवाएं
एक निर्यातित सेवा Manifest.xml के अंदर घोषित की गई है:
<service android:name=".AuthService" android:exported="true" android:process=":remote"/>
{% endcode %}
कोड के अंदर check करें जिसमें **handleMessage
** फ़ंक्शन होगा जो message को receive करेगा:
सेवा की सूची
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
सेवा के साथ बातचीत
app.service.send Send a Message to a service, and display the reply
app.service.start Start Service
app.service.stop Stop Service
उदाहरण
drozer मदद के लिए app.service.send
देखें:
ध्यान दें कि आप पहले डेटा को "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
ब्रॉडकास्ट रिसीवर्स
एंड्रॉइड मूलभूत जानकारी खंड में आप देख सकते हैं कि ब्रॉडकास्ट रिसीवर क्या है।
इन ब्रॉडकास्ट रिसीवर्स को खोजने के बाद आपको उनके कोड की जांच करनी चाहिए। onReceive
फ़ंक्शन पर विशेष ध्यान दें क्योंकि यह प्राप्त संदेशों को हैंडल करेगा।
सभी ब्रॉडकास्ट रिसीवर्स का पता लगाएं
run app.broadcast.info #Detects all
ऐप के ब्रॉडकास्ट रिसीवर की जांच करें
#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 institute ने एक उत्कृष्ट लेख दिया है जिसमें अधिक जानकारी है जब आपकी एप्लिकेशन डीबग किया जा सकता है और रनटाइम कोड इंजेक्शन किया जा सकता है।
जब एक एप्लिकेशन डीबग किया जा सकता है, तो यह मैनिफेस्ट में दिखाई देगा:
<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" %}
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- प्राप्त करें आधिकारिक PEASS & HackTricks स्वैग
- खोजें The PEASS Family, हमारा विशेष NFTs संग्रह
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- अपने हैकिंग ट्रिक्स साझा करें HackTricks और HackTricks Cloud github repos में PR जमा करके।