Drozer Tutorial

Support HackTricks

Bug bounty tip: sign up for Intigriti, एक प्रीमियम bug bounty platform जो हैकर्स द्वारा, हैकर्स के लिए बनाई गई है! आज ही हमारे साथ जुड़ें https://go.intigriti.com/hacktricks पर, और $100,000 तक के बाउंटी कमाना शुरू करें!

APKs to test

इस ट्यूटोरियल के कुछ भाग Drozer documentation pdf** से निकाले गए हैं।**

Installation

Drozer Client को अपने होस्ट के अंदर इंस्टॉल करें। इसे latest releases से डाउनलोड करें।

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

Download और install करें drozer APK को latest releases से। इस समय यह यह है।

adb install drozer.apk

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

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

adb forward tcp:31415 tcp:31415

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

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

drozer console connect

Interesting Commands

Commands

Description

Help MODULE

चयनित मॉड्यूल की मदद दिखाता है

list

वर्तमान सत्र में निष्पादित किए जा सकने वाले सभी drozer मॉड्यूल की सूची दिखाता है। यह उन मॉड्यूल को छिपाता है जिनके लिए आपके पास उचित अनुमतियाँ नहीं हैं।

shell

एजेंट के संदर्भ में डिवाइस पर एक इंटरैक्टिव लिनक्स शेल शुरू करें।

clean

Android डिवाइस पर drozer द्वारा संग्रहीत अस्थायी फ़ाइलें हटा दें।

load

drozer कमांड वाले फ़ाइल को लोड करें और उन्हें अनुक्रम में निष्पादित करें।

module

इंटरनेट से अतिरिक्त drozer मॉड्यूल खोजें और स्थापित करें।

unset

एक नामित चर को हटा दें जिसे drozer किसी भी लिनक्स शेल में पास करता है जिसे यह उत्पन्न करता है।

set

एक मान को एक चर में संग्रहीत करें जिसे drozer द्वारा उत्पन्न किसी भी लिनक्स शेल में पर्यावरणीय चर के रूप में पास किया जाएगा।

shell

एजेंट के संदर्भ में डिवाइस पर एक इंटरैक्टिव लिनक्स शेल शुरू करें।

run MODULE

एक drozer मॉड्यूल निष्पादित करें

exploit

Drozer निर्णय में निष्पादित करने के लिए शोषण बना सकता है। drozer exploit list

payload

शोषण को एक पेलोड की आवश्यकता होती है। drozer payload list

Package

नाम का पता लगाएँ जो नाम के भाग द्वारा फ़िल्टर किया गया है:

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

पढ़ें Manifest:

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 या Path Traversal) का लाभ उठा सकते हैं।

  • सेवाएँ:

गतिविधियाँ

एक निर्यातित गतिविधि घटक का “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

गतिविधि शुरू करें:

शायद आप एक गतिविधि शुरू कर सकते हैं और कुछ प्रकार की प्राधिकरण को बायपास कर सकते हैं जो आपको इसे लॉन्च करने से रोकनी चाहिए।

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

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

  • PackageName com.example.demo है

  • Exported ActivityName com.example.test.MainActivity है

adb shell am start -n com.example.demo/com.example.test.MainActivity

Content Providers

यह पोस्ट यहाँ इतनी बड़ी थी कि आप इसे यहाँ अपनी पृष्ठ पर एक्सेस कर सकते हैं.

Services

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

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

कोड के अंदर 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

Example

Take a look to the drozer help for app.service.send:

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

In the following example:

  • 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

Broadcast Receivers

एंड्रॉइड बेसिक जानकारी अनुभाग में आप देख सकते हैं कि Broadcast Receiver क्या है

इन Broadcast Receivers का पता लगाने के बाद आपको उनका कोड चेक करना चाहिए। विशेष ध्यान दें 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!"

Is debuggeable

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

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

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

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

run app.package.debuggable

Tutorials

More info

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

Support HackTricks

Last updated