80 KiB
Android Applications Pentesting
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Εγγραφείτε στον HackenProof Discord server για να επικοινωνήσετε με έμπειρους hackers και κυνηγούς bug bounty!
Hacking Insights
Συμμετάσχετε σε περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking
Real-Time Hack News
Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και πληροφοριών σε πραγματικό χρόνο
Latest Announcements
Μείνετε ενημερωμένοι με τις πιο πρόσφατες bug bounties που ξεκινούν και κρίσιμες ενημερώσεις πλατφορμών
Εγγραφείτε μαζί μας στο Discord και ξεκινήστε να συνεργάζεστε με κορυφαίους hackers σήμερα!
Android Applications Basics
Είναι πολύ σημαντικό να ξεκινήσετε διαβάζοντας αυτή τη σελίδα για να γνωρίσετε τα πιο σημαντικά μέρη που σχετίζονται με την ασφάλεια του Android και τα πιο επικίνδυνα στοιχεία σε μια εφαρμογή Android:
{% content-ref url="android-applications-basics.md" %} android-applications-basics.md {% endcontent-ref %}
ADB (Android Debug Bridge)
Αυτό είναι το κύριο εργαλείο που χρειάζεστε για να συνδεθείτε σε μια συσκευή android (εξομοιωμένη ή φυσική).
ADB επιτρέπει τον έλεγχο συσκευών είτε μέσω USB είτε μέσω Δικτύου από έναν υπολογιστή. Αυτή η χρησιμότητα επιτρέπει την αντιγραφή αρχείων και στις δύο κατευθύνσεις, εγκατάσταση και απεγκατάσταση εφαρμογών, εκτέλεση εντολών shell, δημιουργία αντιγράφων ασφαλείας δεδομένων, ανάγνωση καταγραφών, μεταξύ άλλων λειτουργιών.
Ρίξτε μια ματιά στη λίστα με τις ADB Commands για να μάθετε πώς να χρησιμοποιείτε το adb.
Smali
Μερικές φορές είναι ενδιαφέρον να τροποποιήσετε τον κώδικα της εφαρμογής για να αποκτήσετε πρόσβαση σε κρυφές πληροφορίες (ίσως καλά κρυμμένους κωδικούς ή σημαίες). Στη συνέχεια, μπορεί να είναι ενδιαφέρον να αποσυμπιέσετε το apk, να τροποποιήσετε τον κώδικα και να το ξανασυμπιέσετε.
Σε αυτό το tutorial μπορείτε να μάθετε πώς να αποσυμπιέσετε ένα APK, να τροποποιήσετε τον κώδικα Smali και να ξανασυμπιέσετε το APK με τη νέα λειτουργικότητα. Αυτό μπορεί να είναι πολύ χρήσιμο ως εναλλακτική για πολλές δοκιμές κατά τη διάρκεια της δυναμικής ανάλυσης που θα παρουσιαστούν. Στη συνέχεια, κρατήστε πάντα στο μυαλό σας αυτή την πιθανότητα.
Other interesting tricks
- Spoofing your location in Play Store
- Download APKs: https://apps.evozi.com/apk-downloader/, https://apkpure.com/es/, https://www.apkmirror.com/, https://apkcombo.com/es-es/apk-downloader/, https://github.com/kiber-io/apkd
- Extract APK from device:
adb shell pm list packages
com.android.insecurebankv2
adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
- Συγχωνεύστε όλα τα διαχωρισμένα και βασικά apks με APKEditor:
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
java -jar ../APKEditor.jar m -i splits/ -o merged.apk
# after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner
java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
Στατική Ανάλυση
Πρώτα απ' όλα, για να αναλύσετε ένα APK θα πρέπει να ρίξετε μια ματιά στον κώδικα Java χρησιμοποιώντας έναν decompiler.
Παρακαλώ, διαβάστε εδώ για να βρείτε πληροφορίες σχετικά με διάφορους διαθέσιμους decompilers.
Αναζητώντας ενδιαφέροντα στοιχεία
Απλά ρίχνοντας μια ματιά στις αλφαβητικές σειρές του APK μπορείτε να αναζητήσετε κωδικούς πρόσβασης, URLs (https://github.com/ndelphit/apkurlgrep), api κλειδιά, κρυπτογράφηση, bluetooth uuids, tokens και οτιδήποτε άλλο ενδιαφέρον... κοιτάξτε ακόμα και για εκτέλεση κώδικα backdoors ή backdoors αυθεντικοποίησης (σκληρά κωδικοποιημένα διαπιστευτήρια διαχειριστή στην εφαρμογή).
Firebase
Δώστε ιδιαίτερη προσοχή σε firebase URLs και ελέγξτε αν είναι κακώς ρυθμισμένα. Περισσότερες πληροφορίες σχετικά με το τι είναι το Firebase και πώς να το εκμεταλλευτείτε εδώ.
Βασική κατανόηση της εφαρμογής - Manifest.xml, strings.xml
Η εξέταση των αρχείων _Manifest.xml** και **strings.xml_** μπορεί να αποκαλύψει πιθανές ευπάθειες ασφαλείας**. Αυτά τα αρχεία μπορούν να προσπελαστούν χρησιμοποιώντας decompilers ή με την αλλαγή της επέκτασης του αρχείου APK σε .zip και στη συνέχεια αποσυμπιέζοντάς το.
Ευπάθειες που εντοπίζονται από το Manifest.xml περιλαμβάνουν:
- Debuggable Εφαρμογές: Οι εφαρμογές που έχουν οριστεί ως debuggable (
debuggable="true"
) στο αρχείο Manifest.xml θέτουν σε κίνδυνο καθώς επιτρέπουν συνδέσεις που μπορεί να οδηγήσουν σε εκμετάλλευση. Για περαιτέρω κατανόηση σχετικά με το πώς να εκμεταλλευτείτε debuggable εφαρμογές, ανατρέξτε σε ένα tutorial για την εύρεση και εκμετάλλευση debuggable εφαρμογών σε μια συσκευή. - Ρυθμίσεις Αντιγράφων Ασφαλείας: Το χαρακτηριστικό
android:allowBackup="false"
θα πρέπει να ορίζεται ρητά για εφαρμογές που ασχολούνται με ευαίσθητες πληροφορίες για να αποτραπεί η μη εξουσιοδοτημένη δημιουργία αντιγράφων ασφαλείας μέσω adb, ειδικά όταν είναι ενεργοποιημένη η αποσφαλμάτωση usb. - Ασφάλεια Δικτύου: Οι προσαρμοσμένες ρυθμίσεις ασφάλειας δικτύου (
android:networkSecurityConfig="@xml/network_security_config"
) στο res/xml/ μπορούν να καθορίσουν λεπτομέρειες ασφαλείας όπως πιστοποιητικά και ρυθμίσεις HTTP traffic. Ένα παράδειγμα είναι η επιτρεπόμενη HTTP traffic για συγκεκριμένα domains. - Εξαγόμενες Δραστηριότητες και Υπηρεσίες: Η αναγνώριση εξαγόμενων δραστηριοτήτων και υπηρεσιών στο manifest μπορεί να αναδείξει στοιχεία που μπορεί να κακοποιηθούν. Περαιτέρω ανάλυση κατά τη διάρκεια δυναμικής δοκιμής μπορεί να αποκαλύψει πώς να εκμεταλλευτείτε αυτά τα στοιχεία.
- Content Providers και FileProviders: Οι εκτεθειμένοι content providers θα μπορούσαν να επιτρέψουν μη εξουσιοδοτημένη πρόσβαση ή τροποποίηση δεδομένων. Η ρύθμιση των FileProviders θα πρέπει επίσης να εξεταστεί προσεκτικά.
- Broadcast Receivers και URL Schemes: Αυτά τα στοιχεία θα μπορούσαν να χρησιμοποιηθούν για εκμετάλλευση, με ιδιαίτερη προσοχή στο πώς διαχειρίζονται τα URL schemes για ευπάθειες εισόδου.
- Εκδόσεις SDK: Τα χαρακτηριστικά
minSdkVersion
,targetSDKVersion
, καιmaxSdkVersion
υποδεικνύουν τις υποστηριζόμενες εκδόσεις Android, τονίζοντας τη σημασία της μη υποστήριξης παλαιών, ευάλωτων εκδόσεων Android για λόγους ασφαλείας.
Από το αρχείο strings.xml, ευαίσθητες πληροφορίες όπως API κλειδιά, προσαρμοσμένα σχήματα και άλλες σημειώσεις προγραμματιστών μπορούν να ανακαλυφθούν, υπογραμμίζοντας την ανάγκη για προσεκτική ανασκόπηση αυτών των πόρων.
Tapjacking
Tapjacking είναι μια επίθεση όπου μια κακόβουλη εφαρμογή εκκινείται και τοποθετείται πάνω από μια εφαρμογή θύμα. Μόλις καλύψει ορατά την εφαρμογή θύμα, η διεπαφή χρήστη της είναι σχεδιασμένη με τέτοιο τρόπο ώστε να παραπλανήσει τον χρήστη να αλληλεπιδράσει με αυτήν, ενώ περνά την αλληλεπίδραση στην εφαρμογή θύμα.
Στην ουσία, τυφλώνει τον χρήστη από το να γνωρίζει ότι εκτελεί ενέργειες στην εφαρμογή θύμα.
Βρείτε περισσότερες πληροφορίες στο:
{% content-ref url="tapjacking.md" %} tapjacking.md {% endcontent-ref %}
Hijacking Εργασίας
Μια δραστηριότητα με το launchMode
ρυθμισμένο σε singleTask
χωρίς καμία καθορισμένη taskAffinity
είναι ευάλωτη σε hijacking εργασίας. Αυτό σημαίνει ότι μια εφαρμογή μπορεί να εγκατασταθεί και αν εκκινείται πριν από την πραγματική εφαρμογή, θα μπορούσε να υφαρπάξει την εργασία της πραγματικής εφαρμογής (έτσι ο χρήστης θα αλληλεπιδρά με την κακόβουλη εφαρμογή νομίζοντας ότι χρησιμοποιεί την πραγματική).
Περισσότερες πληροφορίες στο:
{% content-ref url="android-task-hijacking.md" %} android-task-hijacking.md {% endcontent-ref %}
Ανασφαλής αποθήκευση δεδομένων
Εσωτερική Αποθήκευση
Στο Android, τα αρχεία που αποθηκεύονται στην εσωτερική αποθήκευση είναι σχεδιασμένα να είναι προσβάσιμα αποκλειστικά από την εφαρμογή που τα δημιούργησε. Αυτό το μέτρο ασφαλείας είναι επιβεβλημένο από το λειτουργικό σύστημα Android και είναι γενικά επαρκές για τις ανάγκες ασφάλειας των περισσότερων εφαρμογών. Ωστόσο, οι προγραμματιστές μερικές φορές χρησιμοποιούν τρόπους όπως MODE_WORLD_READABLE
και MODE_WORLD_WRITABLE
για να επιτρέψουν τα αρχεία να μοιράζονται μεταξύ διαφορετικών εφαρμογών. Ωστόσο, αυτοί οι τρόποι δεν περιορίζουν την πρόσβαση σε αυτά τα αρχεία από άλλες εφαρμογές, συμπεριλαμβανομένων πιθανώς κακόβουλων.
- Στατική Ανάλυση:
- Βεβαιωθείτε ότι η χρήση των
MODE_WORLD_READABLE
καιMODE_WORLD_WRITABLE
είναι προσεκτικά εξετασμένη. Αυτοί οι τρόποι μπορούν να εκθέσουν τα αρχεία σε μη προγραμματισμένη ή μη εξουσιοδοτημένη πρόσβαση.
- Δυναμική Ανάλυση:
- Επαληθεύστε τις άδειες που έχουν οριστεί στα αρχεία που δημιουργούνται από την εφαρμογή. Συγκεκριμένα, ελέγξτε αν οποιαδήποτε αρχεία είναι ρυθμισμένα να είναι αναγνώσιμα ή εγγράψιμα παγκοσμίως. Αυτό μπορεί να θέσει σε σημαντικό κίνδυνο την ασφάλεια, καθώς θα επιτρέπει σε οποιαδήποτε εφαρμογή εγκατασταθεί στη συσκευή, ανεξαρτήτως προέλευσης ή προθέσεων, να διαβάσει ή να τροποποιήσει αυτά τα αρχεία.
Εξωτερική Αποθήκευση
Όταν ασχολείστε με αρχεία σε εξωτερική αποθήκευση, όπως οι κάρτες SD, θα πρέπει να ληφθούν ορισμένες προφυλάξεις:
- Προσβασιμότητα:
- Τα αρχεία στην εξωτερική αποθήκευση είναι παγκοσμίως αναγνώσιμα και εγγράψιμα. Αυτό σημαίνει ότι οποιαδήποτε εφαρμογή ή χρήστης μπορεί να έχει πρόσβαση σε αυτά τα αρχεία.
- Ανησυχίες Ασφαλείας:
- Δεδομένης της ευκολίας πρόσβασης, συνιστάται να μην αποθηκεύετε ευαίσθητες πληροφορίες στην εξωτερική αποθήκευση.
- Η εξωτερική αποθήκευση μπορεί να αφαιρεθεί ή να προσπελαστεί από οποιαδήποτε εφαρμογή, καθιστώντας την λιγότερο ασφαλή.
- Διαχείριση Δεδομένων από Εξωτερική Αποθήκευση:
- Πάντα εκτελέστε έλεγχο εισόδου στα δεδομένα που ανακτώνται από την εξωτερική αποθήκευση. Αυτό είναι κρίσιμο καθώς τα δεδομένα προέρχονται από μια μη αξιόπιστη πηγή.
- Η αποθήκευση εκτελέσιμων ή αρχείων κλάσης στην εξωτερική αποθήκευση για δυναμική φόρτωση αποθαρρύνεται έντονα.
- Εάν η εφαρμογή σας πρέπει να ανακτήσει εκτελέσιμα αρχεία από την εξωτερική αποθήκευση, βεβαιωθείτε ότι αυτά τα αρχεία είναι υπογεγραμμένα και κρυπτογραφικά επαληθευμένα πριν φορτωθούν δυναμικά. Αυτό το βήμα είναι ζωτικής σημασίας για τη διατήρηση της ασφάλειας της εφαρμογής σας.
Η εξωτερική αποθήκευση μπορεί να προσεγγιστεί στο /storage/emulated/0
, /sdcard
, /mnt/sdcard
{% hint style="info" %} Αρχίζοντας από το Android 4.4 (API 17), η κάρτα SD έχει μια δομή καταλόγου που περιορίζει την πρόσβαση από μια εφαρμογή στον κατάλογο που είναι ειδικά για αυτή την εφαρμογή. Αυτό αποτρέπει την κακόβουλη εφαρμογή από το να αποκτήσει πρόσβαση για ανάγνωση ή εγγραφή στα αρχεία άλλης εφαρμογής. {% endhint %}
Ευαίσθητα δεδομένα αποθηκευμένα σε καθαρό κείμενο
- Κοινές ρυθμίσεις: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα αρχεία xml στη διαδρομή
/data/data/<packagename>/shared_prefs/
και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο. - Βάσεις Δεδομένων: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα βάσεις δεδομένων sqlite στη διαδρομή
/data/data/<packagename>/databases/
και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο.
Σπασμένο TLS
Αποδοχή Όλων των Πιστοποιητικών
Για κάποιο λόγο, μερικές φορές οι προγραμματιστές αποδέχονται όλα τα πιστοποιητικά ακόμα και αν, για παράδειγμα, το hostname δεν ταιριάζει με γραμμές κώδικα όπως η παρακάτω:
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
A good way to test this is to try to capture the traffic using some proxy like Burp without authorising Burp CA inside the device. Also, you can generate with Burp a certificate for a different hostname and use it.
Broken Cryptography
Κακές διαδικασίες διαχείρισης κλειδιών
Some developers save sensitive data in the local storage and encrypt it with a key hardcoded/predictable in the code. This shouldn't be done as some reversing could allow attackers to extract the confidential information.
Χρήση ανασφαλών και/ή παρωχημένων αλγορίθμων
Developers shouldn't use παρωχημένους αλγορίθμους to perform authorisation checks, store or send data. Some of these algorithms are: RC4, MD4, MD5, SHA1... If hashes are used to store passwords for example, hashes brute-force resistant should be used with salt.
Other checks
- It's recommended to obfuscate the APK to difficult the reverse engineer labour to attackers.
- If the app is sensitive (like bank apps), it should perform it's own checks to see if the mobile is rooted and act in consequence.
- If the app is sensitive (like bank apps), it should check if an emulator is being used.
- If the app is sensitive (like bank apps), it should check it's own integrity before executing it to check if it was modified.
- Use APKiD to check which compiler/packer/obfuscator was used to build the APK
React Native Application
Read the following page to learn how to easily access javascript code of React applications:
{% content-ref url="react-native-application.md" %} react-native-application.md {% endcontent-ref %}
Xamarin Applications
Read the following page to learn how to easily access C# code of a xamarin applications:
{% content-ref url="../xamarin-apps.md" %} xamarin-apps.md {% endcontent-ref %}
Superpacked Applications
According to this blog post superpacked is a Meta algorithm that compress the content of an application into a single file. The blog talks about the possibility of creating an app that decompress these kind of apps... and a faster way which involves to execute the application and gather the decompressed files from the filesystem.
Automated Static Code Analysis
The tool mariana-trench is capable of finding vulnerabilities by scanning the code of the application. This tool contains a series of known sources (that indicates to the tool the places where the input is controlled by the user), sinks (which indicates to the tool dangerous places where malicious user input could cause damages) and rules. These rules indicates the combination of sources-sinks that indicates a vulnerability.
With this knowledge, mariana-trench will review the code and find possible vulnerabilities on it.
Secrets leaked
An application may contain secrets (API keys, passwords, hidden urls, subdomains...) inside of it that you might be able to discover. You could us a tool such as https://github.com/dwisiswant0/apkleaks
Bypass Biometric Authentication
{% content-ref url="bypass-biometric-authentication-android.md" %} bypass-biometric-authentication-android.md {% endcontent-ref %}
Other interesting functions
- Code execution:
Runtime.exec(), ProcessBuilder(), native code:system()
- Send SMSs:
sendTextMessage, sendMultipartTestMessage
- Native functions declared as
native
:public native, System.loadLibrary, System.load
- Read this to learn how to reverse native functions
Other tricks
{% content-ref url="content-protocol.md" %} content-protocol.md {% endcontent-ref %}
Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!
Hacking Insights
Engage with content that delves into the thrill and challenges of hacking
Real-Time Hack News
Keep up-to-date with fast-paced hacking world through real-time news and insights
Latest Announcements
Stay informed with the newest bug bounties launching and crucial platform updates
Join us on Discord and start collaborating with top hackers today!
Dynamic Analysis
First of all, you need an environment where you can install the application and all the environment (Burp CA cert, Drozer and Frida mainly). Therefore, a rooted device (emulated or not) is extremely recommended.
Online Dynamic analysis
You can create a free account in: https://appetize.io/. This platform allows you to upload and execute APKs, so it is useful to see how an apk is behaving.
You can even see the logs of your application in the web and connect through adb.
Thanks to the ADB connection you can use Drozer and Frida inside the emulators.
Local Dynamic Analysis
Using an emulator
- Android Studio (You can create x86 and arm devices, and according to this latest x86 versions support ARM libraries without needing an slow arm emulator).
- Learn to set it up in this page:
{% content-ref url="avd-android-virtual-device.md" %} avd-android-virtual-device.md {% endcontent-ref %}
- Genymotion (Free version: Personal Edition, you need to create an account. It's recommend to download the version WITH VirtualBox to avoid potential errors.)
- Nox (Free, but it doesn't support Frida or Drozer).
{% hint style="info" %} When creating a new emulator on any platform remember that the bigger the screen is, the slower the emulator will run. So select small screens if possible. {% endhint %}
To install google services (like AppStore) in Genymotion you need to click on the red marked button of the following image:
Also, notice that in the configuration of the Android VM in Genymotion you can select Bridge Network mode (this will be useful if you will be connecting to the Android VM from a different VM with the tools).
Use a physical device
You need to activate the debugging options and it will be cool if you can root it:
- Settings.
- (FromAndroid 8.0) Select System.
- Select About phone.
- Press Build number 7 times.
- Go back and you will find the Developer options.
Once you have installed the application, the first thing you should do is to try it and investigate what does it do, how does it work and get comfortable with it.
I will suggest to perform this initial dynamic analysis using MobSF dynamic analysis + pidcat, so we will be able to learn how the application works while MobSF captures a lot of interesting data you can review later on.
Unintended Data Leakage
Logging
Developers should be cautious of exposing debugging information publicly, as it can lead to sensitive data leaks. The tools pidcat and adb logcat
are recommended for monitoring application logs to identify and protect sensitive information. Pidcat is favored for its ease of use and readability.
{% hint style="warning" %}
Note that from later newer than Android 4.0, applications are only able to access their own logs. So applications cannot access other apps logs.
Anyway, it's still recommended to not log sensitive information.
{% endhint %}
Copy/Paste Buffer Caching
Android's clipboard-based framework enables copy-paste functionality in apps, yet poses a risk as other applications can access the clipboard, potentially exposing sensitive data. It's crucial to disable copy/paste functions for sensitive sections of an application, like credit card details, to prevent data leaks.
Crash Logs
If an application crashes and saves logs, these logs can assist attackers, particularly when the application cannot be reverse-engineered. To mitigate this risk, avoid logging on crashes, and if logs must be transmitted over the network, ensure they are sent via an SSL channel for security.
As pentester, try to take a look to these logs.
Analytics Data Sent To 3rd Parties
Applications often integrate services like Google Adsense, which can inadvertently leak sensitive data due to improper implementation by developers. To identify potential data leaks, it's advisable to intercept the application's traffic and check for any sensitive information being sent to third-party services.
SQLite DBs
Most of the applications will use internal SQLite databases to save information. During the pentest take a look to the databases created, the names of tables and columns and all the data saved because you could find sensitive information (which would be a vulnerability).
Databases should be located in /data/data/the.package.name/databases
like /data/data/com.mwr.example.sieve/databases
If the database is saving confidential information and is encrypted but you can find the password inside the application it's still a vulnerability.
Enumerate the tables using .tables
and enumerate the columns of the tables doing .schema <table_name>
Drozer (Exploit Activities, Content Providers and Services)
From Drozer Docs: Drozer allows you to assume the role of an Android app and interact with other apps. It can do anything that an installed application can do, such as make use of Android’s Inter-Process Communication (IPC) mechanism and interact with the underlying operating system. .
Drozer is s useful tool to exploit exported activities, exported services and Content Providers as you will learn in the following sections.
Exploiting exported Activities
Read this if you want to refresh what is an Android Activity.
Also remember that the code of an activity starts in the onCreate
method.
Authorisation bypass
When an Activity is exported you can invoke its screen from an external app. Therefore, if an activity with sensitive information is exported you could bypass the authentication mechanisms to access it.
Learn how to exploit exported activities with Drozer.
You can also start an exported activity from adb:
- PackageName is com.example.demo
- Exported ActivityName is com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
ΣΗΜΕΙΩΣΗ: Το MobSF θα ανιχνεύσει ως κακόβουλη τη χρήση του singleTask/singleInstance ως android:launchMode
σε μια δραστηριότητα, αλλά λόγω αυτού, προφανώς αυτό είναι επικίνδυνο μόνο σε παλιές εκδόσεις (API εκδόσεις < 21).
{% hint style="info" %} Σημειώστε ότι μια παράκαμψη εξουσιοδότησης δεν είναι πάντα ευπάθεια, θα εξαρτηθεί από το πώς λειτουργεί η παράκαμψη και ποιες πληροφορίες εκτίθενται. {% endhint %}
Διαρροή ευαίσθητων πληροφοριών
Οι δραστηριότητες μπορούν επίσης να επιστρέφουν αποτελέσματα. Εάν καταφέρετε να βρείτε μια εξαγόμενη και μη προστατευμένη δραστηριότητα που καλεί τη μέθοδο setResult
και επιστρέφει ευαίσθητες πληροφορίες, υπάρχει διαρροή ευαίσθητων πληροφοριών.
Tapjacking
Εάν δεν προληφθεί το tapjacking, θα μπορούσατε να εκμεταλλευτείτε τη εξαγόμενη δραστηριότητα για να κάνετε τον χρήστη να εκτελέσει απροσδόκητες ενέργειες. Για περισσότερες πληροφορίες σχετικά με τι είναι το Tapjacking ακολουθήστε τον σύνδεσμο.
Εκμετάλλευση Παρόχων Περιεχομένου - Πρόσβαση και χειρισμός ευαίσθητων πληροφοριών
Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι ένας Πάροχος Περιεχομένου.
Οι πάροχοι περιεχομένου χρησιμοποιούνται βασικά για να μοιράζονται δεδομένα. Εάν μια εφαρμογή έχει διαθέσιμους παρόχους περιεχομένου, μπορεί να είστε σε θέση να εξάγετε ευαίσθητα δεδομένα από αυτούς. Είναι επίσης ενδιαφέρον να δοκιμάσετε πιθανές SQL injections και Path Traversals καθώς θα μπορούσαν να είναι ευάλωτοι.
Μάθετε πώς να εκμεταλλευτείτε τους Παρόχους Περιεχομένου με το Drozer.
Εκμετάλλευση Υπηρεσιών
Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι μια Υπηρεσία.
Θυμηθείτε ότι οι ενέργειες μιας Υπηρεσίας ξεκινούν στη μέθοδο onStartCommand
.
Μια υπηρεσία είναι βασικά κάτι που μπορεί να λάβει δεδομένα, να τα επεξεργαστεί και να επιστρέψει (ή όχι) μια απάντηση. Έτσι, εάν μια εφαρμογή εξάγει κάποιες υπηρεσίες, θα πρέπει να ελέγξετε τον κώδικα για να κατανοήσετε τι κάνει και να δοκιμάσετε το δυναμικά για να εξάγετε εμπιστευτικές πληροφορίες, παρακάμπτοντας μέτρα αυθεντικοποίησης...
Μάθετε πώς να εκμεταλλευτείτε τις Υπηρεσίες με το Drozer.
Εκμετάλλευση Δέκτες Εκπομπών
Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι ένας Δέκτης Εκπομπών.
Θυμηθείτε ότι οι ενέργειες ενός Δέκτη Εκπομπών ξεκινούν στη μέθοδο onReceive
.
Ένας δέκτης εκπομπών θα περιμένει για έναν τύπο μηνύματος. Ανάλογα με το πώς ο δέκτης χειρίζεται το μήνυμα, θα μπορούσε να είναι ευάλωτος.
Μάθετε πώς να εκμεταλλευτείτε τους Δέκτες Εκπομπών με το Drozer.
Εκμετάλλευση Σχημάτων / Deep links
Μπορείτε να αναζητήσετε deep links χειροκίνητα, χρησιμοποιώντας εργαλεία όπως το MobSF ή σενάρια όπως αυτό.
Μπορείτε να ανοίξετε ένα δηλωμένο σχήμα χρησιμοποιώντας adb ή έναν περιηγητή:
{% code overflow="wrap" %}
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
{% endcode %}
Σημειώστε ότι μπορείτε να παραλείψετε το όνομα πακέτου και το κινητό θα καλέσει αυτόματα την εφαρμογή που θα πρέπει να ανοίξει αυτόν τον σύνδεσμο.
{% code overflow="wrap" %}
<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>
{% endcode %}
Κώδικας που εκτελείται
Για να βρείτε τον κώδικα που θα εκτελείται στην εφαρμογή, πηγαίνετε στη δραστηριότητα που καλείται από το deeplink και αναζητήστε τη συνάρτηση onNewIntent
.
Ευαίσθητες πληροφορίες
Κάθε φορά που βρίσκετε ένα deep link ελέγξτε ότι δεν λαμβάνει ευαίσθητα δεδομένα (όπως κωδικούς πρόσβασης) μέσω παραμέτρων URL, γιατί οποιαδήποτε άλλη εφαρμογή θα μπορούσε να προσποιηθεί το deep link και να κλέψει αυτά τα δεδομένα!
Παράμετροι στη διαδρομή
Πρέπει να ελέγξετε επίσης αν κάποιο deep link χρησιμοποιεί μια παράμετρο μέσα στη διαδρομή του URL όπως: https://api.example.com/v1/users/{username}
, σε αυτή την περίπτωση μπορείτε να αναγκάσετε μια διαδρομή traversal αποκτώντας πρόσβαση σε κάτι όπως: example://app/users?username=../../unwanted-endpoint%3fparam=value
.
Σημειώστε ότι αν βρείτε τα σωστά endpoints μέσα στην εφαρμογή μπορεί να είστε σε θέση να προκαλέσετε μια Open Redirect (αν μέρος της διαδρομής χρησιμοποιείται ως όνομα τομέα), κατάληψη λογαριασμού (αν μπορείτε να τροποποιήσετε λεπτομέρειες χρηστών χωρίς CSRF token και το ευάλωτο endpoint χρησιμοποίησε τη σωστή μέθοδο) και οποιαδήποτε άλλη ευπάθεια. Περισσότερες πληροφορίες σχετικά με αυτό εδώ.
Περισσότερα παραδείγματα
Ένα ενδιαφέρον bug bounty report σχετικά με συνδέσμους (/.well-known/assetlinks.json).
Αποτυχίες Επιθεώρησης και Επαλήθευσης Επίπεδου Μεταφοράς
- Οι πιστοποιήσεις δεν ελέγχονται πάντα σωστά από τις εφαρμογές Android. Είναι συνηθισμένο αυτές οι εφαρμογές να παραβλέπουν προειδοποιήσεις και να αποδέχονται αυτο-υπογεγραμμένες πιστοποιήσεις ή, σε ορισμένες περιπτώσεις, να επιστρέφουν στη χρήση HTTP συνδέσεων.
- Οι διαπραγματεύσεις κατά τη διάρκεια του SSL/TLS handshake είναι μερικές φορές αδύναμες, χρησιμοποιώντας ανασφαλείς κρυπτογραφικές σουίτες. Αυτή η ευπάθεια καθιστά τη σύνδεση ευάλωτη σε επιθέσεις man-in-the-middle (MITM), επιτρέποντας στους επιτιθέμενους να αποκρυπτογραφήσουν τα δεδομένα.
- Διαρροή ιδιωτικών πληροφοριών είναι ένας κίνδυνος όταν οι εφαρμογές πιστοποιούν χρησιμοποιώντας ασφαλείς διαύλους αλλά στη συνέχεια επικοινωνούν μέσω μη ασφαλών διαύλων για άλλες συναλλαγές. Αυτή η προσέγγιση αποτυγχάνει να προστατεύσει ευαίσθητα δεδομένα, όπως cookies συνεδρίας ή λεπτομέρειες χρηστών, από την παρεμβολή κακόβουλων οντοτήτων.
Επαλήθευση Πιστοποιητικού
Θα επικεντρωθούμε στην επαλήθευση πιστοποιητικού. Η ακεραιότητα του πιστοποιητικού του διακομιστή πρέπει να επαληθεύεται για να ενισχυθεί η ασφάλεια. Αυτό είναι κρίσιμο γιατί οι ανασφαλείς ρυθμίσεις TLS και η μετάδοση ευαίσθητων δεδομένων μέσω μη κρυπτογραφημένων καναλιών μπορεί να θέσουν σημαντικούς κινδύνους. Για λεπτομερείς οδηγίες σχετικά με την επαλήθευση πιστοποιητικών διακομιστή και την αντιμετώπιση ευπαθειών, αυτή η πηγή παρέχει εκτενή καθοδήγηση.
SSL Pinning
Το SSL Pinning είναι ένα μέτρο ασφαλείας όπου η εφαρμογή επαληθεύει το πιστοποιητικό του διακομιστή με μια γνωστή αντίγραφο που αποθηκεύεται μέσα στην ίδια την εφαρμογή. Αυτή η μέθοδος είναι απαραίτητη για την αποτροπή επιθέσεων MITM. Συνιστάται έντονα η εφαρμογή SSL Pinning για εφαρμογές που χειρίζονται ευαίσθητες πληροφορίες.
Επιθεώρηση Κίνησης
Για να επιθεωρήσετε την κίνηση HTTP, είναι απαραίτητο να εγκαταστήσετε το πιστοποιητικό του εργαλείου proxy (π.χ., Burp). Χωρίς την εγκατάσταση αυτού του πιστοποιητικού, η κρυπτογραφημένη κίνηση μπορεί να μην είναι ορατή μέσω του proxy. Για οδηγίες σχετικά με την εγκατάσταση ενός προσαρμοσμένου πιστοποιητικού CA, κάντε κλικ εδώ.
Οι εφαρμογές που στοχεύουν API Level 24 και άνω απαιτούν τροποποιήσεις στη Ρύθμιση Ασφαλείας Δικτύου για να αποδεχτούν το πιστοποιητικό CA του proxy. Αυτό το βήμα είναι κρίσιμο για την επιθεώρηση κρυπτογραφημένης κίνησης. Για οδηγίες σχετικά με την τροποποίηση της Ρύθμισης Ασφαλείας Δικτύου, ανατρέξτε σε αυτό το tutorial.
Παράκαμψη SSL Pinning
Όταν εφαρμόζεται το SSL Pinning, η παράκαμψή του γίνεται απαραίτητη για την επιθεώρηση της κίνησης HTTPS. Διατίθενται διάφορες μέθοδοι για αυτόν τον σκοπό:
- Αυτόματα τροποποιήστε το apk για να παράκαμψετε το SSLPinning με apk-mitm. Το καλύτερο πλεονέκτημα αυτής της επιλογής είναι ότι δεν θα χρειαστείτε root για να παρακάμψετε το SSL Pinning, αλλά θα χρειαστεί να διαγράψετε την εφαρμογή και να εγκαταστήσετε τη νέα, και αυτό δεν θα λειτουργήσει πάντα.
- Μπορείτε να χρησιμοποιήσετε Frida (που συζητείται παρακάτω) για να παρακάμψετε αυτή την προστασία. Εδώ έχετε έναν οδηγό για τη χρήση Burp+Frida+Genymotion: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
- Μπορείτε επίσης να προσπαθήσετε να παρακάμψετε αυτόματα το SSL Pinning χρησιμοποιώντας objection:
objection --gadget com.package.app explore --startup-command "android sslpinning disable"
- Μπορείτε επίσης να προσπαθήσετε να παρακάμψετε αυτόματα το SSL Pinning χρησιμοποιώντας MobSF dynamic analysis (εξηγείται παρακάτω)
- Αν νομίζετε ότι υπάρχει κάποια κίνηση που δεν καταγράφετε, μπορείτε να προσπαθήσετε να προωθήσετε την κίνηση στο burp χρησιμοποιώντας iptables. Διαβάστε αυτό το blog: https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62
Αναζητώντας Κοινές Ευπάθειες Ιστού
Είναι σημαντικό να αναζητήσετε επίσης κοινές ευπάθειες ιστού μέσα στην εφαρμογή. Λεπτομερείς πληροφορίες σχετικά με την αναγνώριση και την αντιμετώπιση αυτών των ευπαθειών είναι πέρα από το πεδίο αυτής της σύνοψης αλλά καλύπτονται εκτενώς αλλού.
Frida
Frida είναι ένα εργαλείο δυναμικής οργάνωσης για προγραμματιστές, αναλυτές αντίστροφης μηχανικής και ερευνητές ασφαλείας.
Μπορείτε να αποκτήσετε πρόσβαση σε εκτελούμενες εφαρμογές και να συνδέσετε μεθόδους σε πραγματικό χρόνο για να αλλάξετε τη συμπεριφορά, να αλλάξετε τιμές, να εξάγετε τιμές, να εκτελέσετε διαφορετικό κώδικα...
Αν θέλετε να κάνετε pentest σε εφαρμογές Android πρέπει να ξέρετε πώς να χρησιμοποιείτε το Frida.
- Μάθετε πώς να χρησιμοποιείτε το Frida: Frida tutorial
- Μερικά "GUI" για ενέργειες με το Frida: https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security
- Ojection είναι εξαιρετικό για την αυτοματοποίηση της χρήσης του Frida: https://github.com/sensepost/objection , https://github.com/dpnishant/appmon
- Μπορείτε να βρείτε μερικά καταπληκτικά σενάρια Frida εδώ: https://codeshare.frida.re/
- Προσπαθήστε να παρακάμψετε μηχανισμούς anti-debugging / anti-frida φορτώνοντας το Frida όπως υποδεικνύεται στο https://erfur.github.io/blog/dev/code-injection-without-ptrace (εργαλείο linjector)
Dump Memory - Fridump
Ελέγξτε αν η εφαρμογή αποθηκεύει ευαίσθητες πληροφορίες μέσα στη μνήμη που δεν θα έπρεπε να αποθηκεύει όπως κωδικούς πρόσβασης ή μνημονικά.
Χρησιμοποιώντας Fridump3 μπορείτε να κάνετε dump τη μνήμη της εφαρμογής με:
# With PID
python3 fridump3.py -u <PID>
# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"
Αυτό θα εκτυπώσει τη μνήμη στον φάκελο ./dump, και εκεί μπορείτε να κάνετε grep με κάτι όπως:
{% code overflow="wrap" %}
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
{% endcode %}
Ευαίσθητα δεδομένα στο Keystore
Στο Android, το Keystore είναι το καλύτερο μέρος για να αποθηκεύσετε ευαίσθητα δεδομένα, ωστόσο, με αρκετά δικαιώματα είναι ακόμα δυνατό να αποκτηθεί πρόσβαση σε αυτό. Καθώς οι εφαρμογές τείνουν να αποθηκεύουν εδώ ευαίσθητα δεδομένα σε καθαρό κείμενο, οι pentests θα πρέπει να ελέγχουν γι' αυτό ως χρήστης root ή κάποιος με φυσική πρόσβαση στη συσκευή θα μπορούσε να είναι σε θέση να κλέψει αυτά τα δεδομένα.
Ακόμα και αν μια εφαρμογή αποθηκεύει δεδομένα στο keystore, τα δεδομένα θα πρέπει να είναι κρυπτογραφημένα.
Για να αποκτήσετε πρόσβαση στα δεδομένα μέσα στο keystore, μπορείτε να χρησιμοποιήσετε αυτό το σενάριο Frida: https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
Απαγόρευση Δακτυλικών Αποτυπωμάτων/Βιομετρικών
Χρησιμοποιώντας το παρακάτω σενάριο Frida, θα μπορούσε να είναι δυνατό να παρακαμφθεί η αυθεντικοποίηση δακτυλικών αποτυπωμάτων που ενδέχεται να εκτελούν οι εφαρμογές Android προκειμένου να προστατεύσουν ορισμένες ευαίσθητες περιοχές:
{% code overflow="wrap" %}
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
{% endcode %}
Εικόνες Φόντου
Όταν βάζετε μια εφαρμογή στο παρασκήνιο, το Android αποθηκεύει μια στιγμιότυπο της εφαρμογής έτσι ώστε όταν ανακτηθεί στο προσκήνιο να αρχίσει να φορτώνει την εικόνα πριν από την εφαρμογή, ώστε να φαίνεται ότι η εφαρμογή φορτώθηκε πιο γρήγορα.
Ωστόσο, αν αυτό το στιγμιότυπο περιέχει ευαίσθητες πληροφορίες, κάποιος με πρόσβαση στο στιγμιότυπο μπορεί να κλέψει αυτές τις πληροφορίες (σημειώστε ότι χρειάζεστε root για να έχετε πρόσβαση σε αυτό).
Τα στιγμιότυπα συνήθως αποθηκεύονται γύρω από: /data/system_ce/0/snapshots
Το Android παρέχει έναν τρόπο να αποτρέψει την καταγραφή οθόνης ρυθμίζοντας την παράμετρο διάταξης FLAG_SECURE. Χρησιμοποιώντας αυτή τη σημαία, το περιεχόμενο του παραθύρου θεωρείται ασφαλές, αποτρέποντας την εμφάνιση σε στιγμιότυπα οθόνης ή την προβολή σε μη ασφαλείς οθόνες.
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
Android Application Analyzer
Αυτό το εργαλείο μπορεί να σας βοηθήσει να διαχειριστείτε διάφορα εργαλεία κατά τη διάρκεια της δυναμικής ανάλυσης: https://github.com/NotSoSecure/android_application_analyzer
Intent Injection
Οι προγραμματιστές συχνά δημιουργούν proxy components όπως activities, services και broadcast receivers που χειρίζονται αυτά τα Intents και τα περνούν σε μεθόδους όπως startActivity(...)
ή sendBroadcast(...)
, κάτι που μπορεί να είναι επικίνδυνο.
Ο κίνδυνος έγκειται στο να επιτρέπεται στους επιτιθέμενους να ενεργοποιούν μη εξαγόμενα components εφαρμογών ή να έχουν πρόσβαση σε ευαίσθητους content providers παραπλανώντας αυτά τα Intents. Ένα αξιοσημείωτο παράδειγμα είναι το component WebView
που μετατρέπει URLs σε αντικείμενα Intent
μέσω Intent.parseUri(...)
και στη συνέχεια τα εκτελεί, ενδεχομένως οδηγώντας σε κακόβουλες εισαγωγές Intents.
Essential Takeaways
- Intent Injection είναι παρόμοιο με το πρόβλημα Open Redirect του ιστού.
- Οι εκμεταλλεύσεις περιλαμβάνουν την παράδοση αντικειμένων
Intent
ως extras, τα οποία μπορούν να ανακατευθυνθούν για να εκτελέσουν μη ασφαλείς λειτουργίες. - Μπορεί να εκθέσει μη εξαγόμενα components και content providers σε επιτιθέμενους.
- Η μετατροπή URL σε
Intent
τουWebView
μπορεί να διευκολύνει ακούσιες ενέργειες.
Android Client Side Injections and others
Πιθανώς γνωρίζετε για αυτούς τους τύπους ευπαθειών από τον Ιστό. Πρέπει να είστε ιδιαίτερα προσεκτικοί με αυτές τις ευπάθειες σε μια εφαρμογή Android:
- SQL Injection: Όταν ασχολείστε με δυναμικά queries ή Content-Providers, βεβαιωθείτε ότι χρησιμοποιείτε παραμετροποιημένα queries.
- JavaScript Injection (XSS): Ελέγξτε ότι η υποστήριξη JavaScript και Plugin είναι απενεργοποιημένη για οποιαδήποτε WebViews (απενεργοποιημένη από προεπιλογή). Περισσότερες πληροφορίες εδώ.
- Local File Inclusion: Οι WebViews θα πρέπει να έχουν την πρόσβαση στο σύστημα αρχείων απενεργοποιημένη (ενεργοποιημένη από προεπιλογή) -
(webview.getSettings().setAllowFileAccess(false);)
. Περισσότερες πληροφορίες εδώ. - Eternal cookies: Σε πολλές περιπτώσεις, όταν η εφαρμογή android ολοκληρώνει τη συνεδρία, το cookie δεν ανακαλείται ή μπορεί ακόμη και να αποθηκευτεί στον δίσκο.
- Secure Flag στα cookies
Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!
Hacking Insights
Engage with content that delves into the thrill and challenges of hacking
Real-Time Hack News
Keep up-to-date with fast-paced hacking world through real-time news and insights
Latest Announcements
Stay informed with the newest bug bounties launching and crucial platform updates
Join us on Discord and start collaborating with top hackers today!
Automatic Analysis
MobSF
Static analysis
Vulnerability assessment of the application using a nice web-based frontend. You can also perform dynamic analysis (but you need to prepare the environment).
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
Notice that MobSF can analyse Android(apk), IOS(ipa) and Windows(apx) applications (Οι εφαρμογές Windows πρέπει να αναλύονται από ένα MobSF εγκατεστημένο σε έναν υπολογιστή Windows).
Also, if you create a ZIP file with the source code if an Android or an IOS app (go to the root folder of the application, select everything and create a ZIPfile), it will be able to analyse it also.
MobSF also allows you to diff/Compare analysis and to integrate VirusTotal (you will need to set your API key in MobSF/settings.py and enable it: VT_ENABLED = TRUE
VT_API_KEY = <Your API key>
VT_UPLOAD = TRUE
). You can also set VT_UPLOAD
to False
, then the hash will be upload instead of the file.
Assisted Dynamic analysis with MobSF
MobSF can also be very helpful for dynamic analysis in Android, but in that case you will need to install MobSF and genymotion in your host (a VM or Docker won't work). Σημείωση: Πρέπει να ξεκινήσετε πρώτα μια VM στο genymotion και μετά το MobSF.
The MobSF dynamic analyser can:
- Dump application data (URLs, logs, clipboard, screenshots made by you, screenshots made by "Exported Activity Tester", emails, SQLite databases, XML files, and other created files). All of this is done automatically except for the screenshots, you need to press when you want a screenshot or you need to press "Exported Activity Tester" to obtain screenshots of all the exported activities.
- Capture HTTPS traffic
- Use Frida to obtain runtime information
From android versions > 5, it will automatically start Frida and will set global proxy settings to capture traffic. It will only capture traffic from the tested application.
Frida
By default, it will also use some Frida Scripts to bypass SSL pinning, root detection and debugger detection and to monitor interesting APIs.
MobSF can also invoke exported activities, grab screenshots of them and save them for the report.
To start the dynamic testing press the green bottom: "Start Instrumentation". Press the "Frida Live Logs" to see the logs generated by the Frida scripts and "Live API Monitor" to see all the invocation to hooked methods, arguments passed and returned values (this will appear after pressing "Start Instrumentation").
MobSF also allows you to load your own Frida scripts (to send the results of your Friday scripts to MobSF use the function send()
). It also has several pre-written scripts you can load (you can add more in MobSF/DynamicAnalyzer/tools/frida_scripts/others/
), just select them, press "Load" and press "Start Instrumentation" (you will be able to see the logs of that scripts inside "Frida Live Logs").
Moreover, you have some Auxiliary Frida functionalities:
- Enumerate Loaded Classes: It will print all the loaded classes
- Capture Strings: It will print all the capture strings while using the application (super noisy)
- Capture String Comparisons: Could be very useful. It will show the 2 strings being compared and if the result was True or False.
- Enumerate Class Methods: Put the class name (like "java.io.File") and it will print all the methods of the class.
- Search Class Pattern: Search classes by pattern
- Trace Class Methods: Trace a whole class (see inputs and outputs of all methods of th class). Remember that by default MobSF traces several interesting Android Api methods.
Once you have selected the auxiliary module you want to use you need to press "Start Intrumentation" and you will see all the outputs in "Frida Live Logs".
Shell
Mobsf also brings you a shell with some adb commands, MobSF commands, and common shell commands at the bottom of the dynamic analysis page. Some interesting commands:
help
shell ls
activities
exported_activities
services
receivers
HTTP εργαλεία
Όταν η κίνηση http καταγράφεται, μπορείτε να δείτε μια άσχημη εικόνα της καταγεγραμμένης κίνησης στο "HTTP(S) Traffic" κάτω ή μια πιο ωραία εικόνα στο "Start HTTPTools" πράσινο κουμπί. Από τη δεύτερη επιλογή, μπορείτε να στείλετε τα καταγεγραμμένα αιτήματα σε proxy όπως το Burp ή το Owasp ZAP.
Για να το κάνετε αυτό, ενεργοποιήστε το Burp --> απενεργοποιήστε την Παρεμβολή --> στο MobSB HTTPTools επιλέξτε το αίτημα --> πατήστε "Send to Fuzzer" --> επιλέξτε τη διεύθυνση proxy (http://127.0.0.1:8080\).
Αφού ολοκληρώσετε την δυναμική ανάλυση με το MobSF, μπορείτε να πατήσετε το "Start Web API Fuzzer" για να fuzz http αιτήματα και να αναζητήσετε ευπάθειες.
{% hint style="info" %} Μετά την εκτέλεση μιας δυναμικής ανάλυσης με το MobSF, οι ρυθμίσεις του proxy μπορεί να είναι λανθασμένες και δεν θα μπορείτε να τις διορθώσετε από το GUI. Μπορείτε να διορθώσετε τις ρυθμίσεις του proxy κάνοντας:
adb shell settings put global http_proxy :0
{% endhint %}
Assisted Dynamic Analysis with Inspeckage
Μπορείτε να αποκτήσετε το εργαλείο από το Inspeckage.
Αυτό το εργαλείο θα χρησιμοποιήσει μερικά Hooks για να σας ενημερώσει τι συμβαίνει στην εφαρμογή ενώ εκτελείτε μια dynamic analysis.
Yaazhini
Αυτό είναι ένα υπέροχο εργαλείο για να εκτελέσετε στατική ανάλυση με GUI
Qark
Αυτό το εργαλείο έχει σχεδιαστεί για να αναζητά αρκετές ευπάθειες σχετικές με την ασφάλεια εφαρμογών Android, είτε στον κώδικα πηγής είτε σε πακεταρισμένα APKs. Το εργαλείο είναι επίσης ικανό να δημιουργεί ένα "Proof-of-Concept" deployable APK και ADB commands, για να εκμεταλλευτεί ορισμένες από τις βρεθείσες ευπάθειες (Εκτεθειμένες δραστηριότητες, intents, tapjacking...). Όπως και με το Drozer, δεν υπάρχει ανάγκη να κάνετε root τη συσκευή δοκιμής.
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java
ReverseAPK
- Εμφανίζει όλα τα εξαγόμενα αρχεία για εύκολη αναφορά
- Αυτόματα αποσυμπιέζει τα αρχεία APK σε μορφή Java και Smali
- Αναλύει το AndroidManifest.xml για κοινές ευπάθειες και συμπεριφορές
- Στατική ανάλυση πηγαίου κώδικα για κοινές ευπάθειες και συμπεριφορές
- Πληροφορίες συσκευής
- και άλλα
reverse-apk relative/path/to/APP.apk
SUPER Android Analyzer
SUPER είναι μια εφαρμογή γραμμής εντολών που μπορεί να χρησιμοποιηθεί σε Windows, MacOS X και Linux, που αναλύει .apk αρχεία αναζητώντας ευπάθειες. Το κάνει αυτό αποσυμπιέζοντας τα APK και εφαρμόζοντας μια σειρά κανόνων για να ανιχνεύσει αυτές τις ευπάθειες.
Όλοι οι κανόνες είναι κεντραρισμένοι σε ένα αρχείο rules.json
, και κάθε εταιρεία ή δοκιμαστής θα μπορούσε να δημιουργήσει τους δικούς της κανόνες για να αναλύσει ό,τι χρειάζεται.
Κατεβάστε τα τελευταία δυαδικά από τη σελίδα λήψης
super-analyzer {apk_file}
StaCoAn
Το StaCoAn είναι ένα crossplatform εργαλείο που βοηθά προγραμματιστές, κυνηγούς bugbounty και ηθικούς χάκερ να εκτελούν στατική ανάλυση κώδικα σε κινητές εφαρμογές.
Η έννοια είναι ότι σύρετε και αποθέτετε το αρχείο της κινητής σας εφαρμογής (ένα αρχείο .apk ή .ipa) στην εφαρμογή StaCoAn και θα δημιουργήσει μια οπτική και φορητή αναφορά για εσάς. Μπορείτε να προσαρμόσετε τις ρυθμίσεις και τις λίστες λέξεων για να αποκτήσετε μια εξατομικευμένη εμπειρία.
Κατεβάστε την τελευταία έκδοση:
./stacoan
AndroBugs
Το AndroBugs Framework είναι ένα σύστημα ανάλυσης ευπαθειών Android που βοηθά τους προγραμματιστές ή τους χάκερ να βρουν πιθανές ευπάθειες ασφαλείας σε εφαρμογές Android.
Windows releases
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
Androwarn
Androwarn είναι ένα εργαλείο του οποίου ο κύριος στόχος είναι να ανιχνεύσει και να προειδοποιήσει τον χρήστη για πιθανές κακόβουλες συμπεριφορές που αναπτύσσονται από μια εφαρμογή Android.
Η ανίχνευση πραγματοποιείται με την στατική ανάλυση του Dalvik bytecode της εφαρμογής, που αναπαρίσταται ως Smali, με τη βιβλιοθήκη androguard
.
Αυτό το εργαλείο αναζητά συνηθισμένες συμπεριφορές "κακών" εφαρμογών όπως: Εξαγωγή τηλεφωνικών αναγνωριστικών, Παρεμβολή ροής ήχου/βίντεο, Τροποποίηση δεδομένων PIM, Εκτέλεση αυθαίρετου κώδικα...
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
MARA Framework
MARA είναι ένα Mobile Application Reverse engineering και Analysis Framework. Είναι ένα εργαλείο που συγκεντρώνει κοινώς χρησιμοποιούμενα εργαλεία αντίστροφης μηχανικής και ανάλυσης εφαρμογών κινητών, για να βοηθήσει στη δοκιμή εφαρμογών κινητών ενάντια στις απειλές ασφάλειας κινητών του OWASP. Σκοπός του είναι να διευκολύνει αυτή την εργασία και να την κάνει πιο φιλική προς τους προγραμματιστές εφαρμογών κινητών και τους επαγγελματίες ασφάλειας.
Είναι ικανό να:
- Εξάγει κώδικα Java και Smali χρησιμοποιώντας διάφορα εργαλεία
- Αναλύει APKs χρησιμοποιώντας: smalisca, ClassyShark, androbugs, androwarn, APKiD
- Εξάγει ιδιωτικές πληροφορίες από το APK χρησιμοποιώντας regexps.
- Αναλύει το Manifest.
- Αναλύει βρέθηκαν τομείς χρησιμοποιώντας: pyssltest, testssl και whatweb
- Αποκωδικοποιεί APK μέσω apk-deguard.com
Koodous
Χρήσιμο για την ανίχνευση κακόβουλου λογισμικού: https://koodous.com/
Obfuscating/Deobfuscating code
Σημειώστε ότι ανάλογα με την υπηρεσία και τη διαμόρφωση που χρησιμοποιείτε για να αποκρύψετε τον κώδικα. Τα μυστικά μπορεί να είναι ή να μην είναι αποκρυπτογραφημένα.
ProGuard
Από Wikipedia: ProGuard είναι ένα εργαλείο γραμμής εντολών ανοιχτού κώδικα που μειώνει, βελτιστοποιεί και αποκρύπτει τον κώδικα Java. Είναι ικανό να βελτιστοποιεί τον bytecode καθώς και να ανιχνεύει και να αφαιρεί μη χρησιμοποιούμενες εντολές. Το ProGuard είναι δωρεάν λογισμικό και διανέμεται υπό την άδεια GNU General Public License, έκδοση 2.
Το ProGuard διανέμεται ως μέρος του Android SDK και εκτελείται κατά την κατασκευή της εφαρμογής σε λειτουργία κυκλοφορίας.
DexGuard
Βρείτε έναν οδηγό βήμα προς βήμα για να αποκωδικοποιήσετε το apk στο https://blog.lexfo.fr/dexguard.html
(Από αυτόν τον οδηγό) Την τελευταία φορά που ελέγξαμε, η λειτουργία του Dexguard ήταν:
- φορτώστε έναν πόρο ως InputStream;
- τροφοδοτήστε το αποτέλεσμα σε μια κλάση που κληρονομεί από FilterInputStream για να το αποκρυπτογραφήσετε;
- κάντε κάποια άχρηστη απόκρυψη για να σπαταλήσετε λίγα λεπτά χρόνου από έναν αναλυτή;
- τροφοδοτήστε το αποκρυπτογραφημένο αποτέλεσμα σε ένα ZipInputStream για να αποκτήσετε ένα αρχείο DEX;
- τελικά φορτώστε το προκύπτον DEX ως Πόρο χρησιμοποιώντας τη μέθοδο
loadDex
.
DeGuard
Το DeGuard αντιστρέφει τη διαδικασία απόκρυψης που εκτελούν τα εργαλεία απόκρυψης Android. Αυτό επιτρέπει πολλές αναλύσεις ασφάλειας, συμπεριλαμβανομένης της επιθεώρησης κώδικα και της πρόβλεψης βιβλιοθηκών.
Μπορείτε να ανεβάσετε ένα αποκρυπτογραφημένο APK στην πλατφόρμα τους.
Simplify
Είναι ένα γενικό android deobfuscator. Το Simplify εκτελεί εικονικά μια εφαρμογή για να κατανοήσει τη συμπεριφορά της και στη συνέχεια προσπαθεί να βελτιστοποιήσει τον κώδικα ώστε να συμπεριφέρεται ταυτόχρονα αλλά να είναι πιο εύκολο για έναν άνθρωπο να κατανοήσει. Κάθε τύπος βελτιστοποίησης είναι απλός και γενικός, οπότε δεν έχει σημασία ποιος είναι ο συγκεκριμένος τύπος απόκρυψης που χρησιμοποιείται.
APKiD
Το APKiD σας δίνει πληροφορίες για πώς δημιουργήθηκε ένα APK. Αναγνωρίζει πολλούς μεταγλωττιστές, πακεταριστές, εργαλεία απόκρυψης, και άλλα περίεργα πράγματα. Είναι το PEiD για Android.
Manual
Labs
Androl4b
Το AndroL4b είναι μια εικονική μηχανή ασφάλειας Android βασισμένη στο ubuntu-mate που περιλαμβάνει τη συλλογή των τελευταίων πλαισίων, tutorials και εργαστηρίων από διάφορους ειδικούς και ερευνητές ασφάλειας για αντίστροφη μηχανική και ανάλυση κακόβουλου λογισμικού.
References
- https://owasp.org/www-project-mobile-app-security/
- https://appsecwiki.com/#/ Είναι μια εξαιρετική λίστα πόρων
- https://maddiestone.github.io/AndroidAppRE/ Γρήγορος οδηγός Android
- https://manifestsecurity.com/android-application-security/
- https://github.com/Ralireza/Android-Security-Teryaagh
- https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec
Yet to try
Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!
Hacking Insights
Engage with content that delves into the thrill and challenges of hacking
Real-Time Hack News
Keep up-to-date with fast-paced hacking world through real-time news and insights
Latest Announcements
Stay informed with the newest bug bounties launching and crucial platform updates
Join us on Discord and start collaborating with top hackers today!
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.