diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index f33ae1298..1b1bd7b85 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -1,10 +1,11 @@ -# Android Applications Pentesting +# Pentesting Εφαρμογών Android {{#include ../../banners/hacktricks-training.md}} -## Android Applications Basics +## Βασικά στοιχεία Εφαρμογών Android + +Συνιστάται έντονα να ξεκινήσετε διαβάζοντας αυτή τη σελίδα για να μάθετε σχετικά με τα **πιο σημαντικά μέρη που σχετίζονται με την ασφάλεια Android και τα πιο επικίνδυνα components σε μια εφαρμογή Android**: -Συνιστάται ανεπιφύλακτα να ξεκινήσετε να διαβάζετε αυτή τη σελίδα για να γνωρίσετε τα **πιο σημαντικά μέρη που σχετίζονται με την ασφάλεια του Android και τα πιο επικίνδυνα στοιχεία σε μια εφαρμογή Android**: {{#ref}} android-applications-basics.md @@ -12,24 +13,24 @@ android-applications-basics.md ## ADB (Android Debug Bridge) -Αυτό είναι το κύριο εργαλείο που χρειάζεστε για να συνδεθείτε σε μια συσκευή android (εξομοιωμένη ή φυσική).\ -**ADB** επιτρέπει τον έλεγχο συσκευών είτε μέσω **USB** είτε μέσω **Δικτύου** από έναν υπολογιστή. Αυτή η χρησιμότητα επιτρέπει την **αντιγραφή** αρχείων και στις δύο κατευθύνσεις, την **εγκατάσταση** και **απεγκατάσταση** εφαρμογών, την **εκτέλεση** εντολών shell, την **αντίγραφο ασφαλείας** δεδομένων, την **ανάγνωση** καταγραφών, μεταξύ άλλων λειτουργιών. +Αυτό είναι το κύριο εργαλείο που χρειάζεστε για να συνδεθείτε σε μια συσκευή Android (emulated ή physical).\ +**ADB** επιτρέπει τον έλεγχο συσκευών είτε μέσω **USB** είτε μέσω **Network** από έναν υπολογιστή. Αυτό το βοηθητικό πρόγραμμα επιτρέπει την **αντιγραφή** αρχείων και στις δύο κατευθύνσεις, την **εγκατάσταση** και **απεγκατάσταση** εφαρμογών, την **εκτέλεση** εντολών shell, τη **δημιουργία αντιγράφων ασφαλείας** δεδομένων, την **ανάγνωση** των logs, μεταξύ άλλων λειτουργιών. -Ρίξτε μια ματιά στη παρακάτω λίστα με τις [**Εντολές ADB**](adb-commands.md) για να μάθετε πώς να χρησιμοποιείτε το adb. +Ρίξτε μια ματιά στην παρακάτω λίστα με [**ADB Commands**](adb-commands.md) για να μάθετε πώς να χρησιμοποιείτε το adb. ## Smali -Μερικές φορές είναι ενδιαφέρον να **τροποποιήσετε τον κώδικα της εφαρμογής** για να αποκτήσετε πρόσβαση σε **κρυφές πληροφορίες** (ίσως καλά κρυμμένους κωδικούς ή σημαίες). Στη συνέχεια, θα μπορούσε να είναι ενδιαφέρον να αποσυμπιέσετε το apk, να τροποποιήσετε τον κώδικα και να το ξανασυμπιέσετε.\ -[**Σε αυτό το σεμινάριο** μπορείτε να **μάθετε πώς να αποσυμπιέσετε ένα APK, να τροποποιήσετε τον κώδικα Smali και να ξανασυμπιέσετε το APK** με τη νέα λειτουργικότητα](smali-changes.md). Αυτό θα μπορούσε να είναι πολύ χρήσιμο ως **εναλλακτική για πολλές δοκιμές κατά τη διάρκεια της δυναμικής ανάλυσης** που θα παρουσιαστούν. Στη συνέχεια, **κρατήστε πάντα στο μυαλό σας αυτή την πιθανότητα**. +Μερικές φορές είναι χρήσιμο να **τροποποιήσετε τον κώδικα της εφαρμογής** για να αποκτήσετε πρόσβαση σε **κρυφές πληροφορίες** (ίσως καλά obfuscated passwords ή flags). Τότε, μπορεί να είναι ενδιαφέρον να αποσυμπιέσετε το apk, να τροποποιήσετε τον κώδικα και να το ξανασυμπιέσετε.\ +[**Σε αυτό το tutorial** μπορείτε να **μάθετε πώς να αποσυμπιέζετε ένα APK, να τροποποιείτε Smali κώδικα και να επανασυμπιέζετε το APK** με τη νέα λειτουργικότητα](smali-changes.md). Αυτό μπορεί να είναι πολύ χρήσιμο ως **εναλλακτική για αρκετές δοκιμές κατά τη διάρκεια της δυναμικής ανάλυσης** που θα παρουσιαστούν. Επομένως, **κρατήστε πάντα στο μυαλό σας αυτή τη δυνατότητα**. -## Other interesting tricks +## Άλλα ενδιαφέροντα κόλπα - [Spoofing your location in Play Store](spoofing-your-location-in-play-store.md) - [Shizuku Privileged API (ADB-based non-root privileged access)](shizuku-privileged-api.md) - [Exploiting Insecure In-App Update Mechanisms](insecure-in-app-update-rce.md) - [Abusing Accessibility Services (Android RAT)](accessibility-services-abuse.md) -- **Download APKs**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) -- Extract APK from device: +- **Λήψη APKs**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) +- Εξαγωγή APK από συσκευή: ```bash adb shell pm list packages com.android.insecurebankv2 @@ -62,39 +63,39 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ## Στατική Ανάλυση -Πρώτα απ' όλα, για να αναλύσετε ένα APK θα πρέπει να **ρίξετε μια ματιά στον κώδικα Java** χρησιμοποιώντας έναν decompiler.\ -Παρακαλώ, [**διαβάστε εδώ για να βρείτε πληροφορίες σχετικά με διάφορους διαθέσιμους decompilers**](apk-decompilers.md). +Πρώτα απ' όλα, για την ανάλυση ενός APK θα πρέπει να **ρίξετε μια ματιά στον Java code** χρησιμοποιώντας έναν decompiler.\ +Please, [**read here to find information about different available decompilers**](apk-decompilers.md). -### Αναζητώντας ενδιαφέρουσες Πληροφορίες +### Αναζήτηση ενδιαφέρουσας πληροφορίας -Απλά ρίχνοντας μια ματιά στις **αλφαβητικές ακολουθίες** του APK μπορείτε να αναζητήσετε **κωδικούς πρόσβασης**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** κλειδιά, **κρυπτογράφηση**, **bluetooth uuids**, **tokens** και οτιδήποτε ενδιαφέρον... αναζητήστε ακόμη και για εκτέλεση κώδικα **backdoors** ή backdoors αυθεντικοποίησης (σκληρά κωδικοποιημένα διαπιστευτήρια διαχειριστή στην εφαρμογή). +Απλώς κοιτάζοντας τα **strings** του APK μπορείτε να αναζητήσετε **passwords**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **API keys**, **encryption**, **bluetooth uuids**, **tokens** και οτιδήποτε ενδιαφέρον... ψάξτε ακόμα και για code execution **backdoors** ή authentication backdoors (hardcoded admin credentials στην εφαρμογή). **Firebase** -Δώστε ιδιαίτερη προσοχή σε **firebase URLs** και ελέγξτε αν είναι κακώς ρυθμισμένα. [Περισσότερες πληροφορίες σχετικά με το τι είναι το Firebase και πώς να το εκμεταλλευτείτε εδώ.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +Δώστε ιδιαίτερη προσοχή σε **Firebase URLs** και ελέγξτε αν είναι κακώς ρυθμισμένο. [More information about whats is FIrebase and how to exploit it here.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### Βασική κατανόηση της εφαρμογής - Manifest.xml, strings.xml -Η **εξέταση των αρχείων _Manifest.xml_ και **_strings.xml_** μιας εφαρμογής μπορεί να αποκαλύψει πιθανές ευπάθειες ασφαλείας**. Αυτά τα αρχεία μπορούν να προσπελαστούν χρησιμοποιώντας decompilers ή με την αλλαγή της επέκτασης αρχείου APK σε .zip και στη συνέχεια αποσυμπιέζοντάς το. +Η **εξέταση των αρχείων _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 για λόγους ασφαλείας. +- **Debuggable Applications**: Εφαρμογές που έχουν οριστεί ως debuggable (`debuggable="true"`) στο _Manifest.xml_ αποτελούν ρίσκο καθώς επιτρέπουν συνδέσεις που μπορούν να οδηγήσουν σε exploitation. Για περαιτέρω κατανόηση του πώς να εκμεταλλευτείτε debuggable applications, ανατρέξτε σε ένα tutorial για τον εντοπισμό και την εκμετάλλευση debuggable applications σε μια συσκευή. +- **Backup Settings**: Το `android:allowBackup="false"` attribute θα πρέπει να ορίζεται ρητά για εφαρμογές που χειρίζονται ευαίσθητες πληροφορίες ώστε να αποτραπούν μη εξουσιοδοτημένα backups δεδομένων μέσω adb, ιδιαίτερα όταν το usb debugging είναι ενεργοποιημένο. +- **Network Security**: Custom network security configurations (`android:networkSecurityConfig="@xml/network_security_config"`) στο _res/xml/_ μπορούν να καθορίσουν λεπτομέρειες ασφάλειας όπως certificate pins και ρυθμίσεις για HTTP traffic. Ένα παράδειγμα είναι η επιτρεπόμενη HTTP κίνηση για συγκεκριμένα domains. +- **Exported Activities and Services**: Η αναγνώριση exported activities και services στο manifest μπορεί να αναδείξει components που ενδέχεται να καταχραστούν. Περαιτέρω ανάλυση κατά τη διάρκεια dynamic testing μπορεί να δείξει πώς να εκμεταλλευτείτε αυτά τα components. +- **Content Providers and FileProviders**: Εκτεθειμένοι content providers θα μπορούσαν να επιτρέψουν μη εξουσιοδοτημένη πρόσβαση ή τροποποίηση δεδομένων. Η διαμόρφωση των FileProviders πρέπει επίσης να ελεγχθεί προσεκτικά. +- **Broadcast Receivers and URL Schemes**: Αυτά τα components θα μπορούσαν να αξιοποιηθούν για εκμετάλλευση, με ιδιαίτερη προσοχή στον τρόπο που διαχειρίζονται τα URL schemes για πιθανές εισόδους ευπαθειών. +- **SDK Versions**: Τα attributes `minSdkVersion`, `targetSDKVersion`, και `maxSdkVersion` δείχνουν τις υποστηριζόμενες εκδόσεις Android, υπογραμμίζοντας τη σημασία του να μην υποστηρίζονται παλιές, ευάλωτες εκδόσεις Android για λόγους ασφάλειας. -Από το αρχείο **strings.xml**, ευαίσθητες πληροφορίες όπως API κλειδιά, προσαρμοσμένα σχήματα και άλλες σημειώσεις προγραμματιστών μπορούν να ανακαλυφθούν, υπογραμμίζοντας την ανάγκη για προσεκτική ανασκόπηση αυτών των πόρων. +Από το αρχείο **strings.xml**, μπορούν να ανακαλυφθούν ευαίσθητες πληροφορίες όπως API keys, custom schemas, και άλλες σημειώσεις developers, επισημαίνοντας την ανάγκη για προσεκτική ανασκόπηση αυτών των resources. ### Tapjacking -**Tapjacking** είναι μια επίθεση όπου μια **κακόβουλη** **εφαρμογή** εκκινείται και **τοποθετείται πάνω από μια εφαρμογή θύμα**. Μόλις καλύψει ορατά την εφαρμογή θύμα, η διεπαφή χρήστη της είναι σχεδιασμένη με τέτοιο τρόπο ώστε να παραπλανήσει τον χρήστη να αλληλεπιδράσει με αυτήν, ενώ ταυτόχρονα περνά την αλληλεπίδραση στην εφαρμογή θύμα.\ -Στην ουσία, **τυφλώνει τον χρήστη από το να γνωρίζει ότι στην πραγματικότητα εκτελεί ενέργειες στην εφαρμογή θύμα**. +**Tapjacking** είναι μια επίθεση όπου μια **malicious** **application** ξεκινάει και **τοποθετείται πάνω από την εφαρμογή-θύμα**. Μόλις καλύψει οπτικά την εφαρμογή-θύμα, το UI της σχεδιάζεται με τρόπο που να εξαπατά τον χρήστη να αλληλεπιδράσει με αυτό, ενώ ταυτόχρονα περνά την αλληλεπίδραση στην εφαρμογή-θύμα.\ +Στην πράξη, είναι **σαν να τυφλώνεται ο χρήστης από το να ξέρει ότι πραγματοποιεί ενέργειες στην εφαρμογή-θύμα**. -Βρείτε περισσότερες πληροφορίες στο: +Find more information in: {{#ref}} @@ -103,123 +104,127 @@ tapjacking.md ### Task Hijacking -Μια **δραστηριότητα** με το **`launchMode`** ρυθμισμένο σε **`singleTask` χωρίς καμία `taskAffinity`** καθορισμένη είναι ευάλωτη σε task Hijacking. Αυτό σημαίνει ότι μια **εφαρμογή** μπορεί να εγκατασταθεί και αν εκκινείται πριν από την πραγματική εφαρμογή θα μπορούσε να **καταλάβει την εργασία της πραγματικής εφαρμογής** (έτσι ο χρήστης θα αλληλεπιδρά με την **κακόβουλη εφαρμογή νομίζοντας ότι χρησιμοποιεί την πραγματική**). +Μια **activity** με το **`launchMode`** ορισμένο σε **`singleTask` χωρίς κανένα `taskAffinity`** ορισμένο είναι ευάλωτη σε Task Hijacking. Αυτό σημαίνει ότι μια **application** μπορεί να εγκατασταθεί και αν ξεκινήσει πριν από την πραγματική εφαρμογή θα μπορούσε **να υπεξαιρέσει το task της πραγματικής εφαρμογής** (ώστε ο χρήστης να αλληλεπιδρά με την **malicious application νομίζοντας ότι χρησιμοποιεί την πραγματική**). -Περισσότερες πληροφορίες στο: +More info in: {{#ref}} android-task-hijacking.md {{#endref}} -### Ανασφαλής αποθήκευση δεδομένων +### Αποθήκευση δεδομένων με ανασφαλή τρόπο -**Εσωτερική Αποθήκευση** +**Internal Storage** -Στο Android, τα αρχεία που **αποθηκεύονται** στην **εσωτερική** αποθήκευση είναι **σχεδιασμένα** να είναι **προσβάσιμα** αποκλειστικά από την **εφαρμογή** που τα **δημιούργησε**. Αυτό το μέτρο ασφαλείας **επιβάλλεται** από το λειτουργικό σύστημα Android και είναι γενικά επαρκές για τις ανάγκες ασφαλείας των περισσότερων εφαρμογών. Ωστόσο, οι προγραμματιστές μερικές φορές χρησιμοποιούν τρόπους όπως `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` για να **επιτρέψουν** τα αρχεία να **μοιράζονται** μεταξύ διαφορετικών εφαρμογών. Ωστόσο, αυτοί οι τρόποι **δεν περιορίζουν την πρόσβαση** σε αυτά τα αρχεία από άλλες εφαρμογές, συμπεριλαμβανομένων πιθανώς κακόβουλων. +Στο Android, αρχεία **αποθηκευμένα** στο **internal** storage είναι **σχεδιασμένα** να είναι **προσβάσιμα αποκλειστικά από την εφαρμογή** που τα **δημιούργησε**. Αυτό το μέτρο ασφάλειας εφαρμόζεται από το Android OS και είναι γενικά επαρκές για τις ανάγκες ασφάλειας των περισσότερων εφαρμογών. Ωστόσο, οι developers κάποιες φορές χρησιμοποιούν modes όπως `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` για να **επιτρέψουν** στα αρχεία να **μοιράζονται** μεταξύ διαφορετικών εφαρμογών. Αυτά τα modes **δεν περιορίζουν την πρόσβαση** σε αυτά τα αρχεία από άλλες εφαρμογές, συμπεριλαμβανομένων πιθανώς malicious ones. -1. **Στατική Ανάλυση:** -- **Βεβαιωθείτε** ότι η χρήση των `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` **εξετάζεται προσεκτικά**. Αυτοί οι τρόποι **μπορούν να εκθέσουν** τα αρχεία σε **μη προγραμματισμένες ή μη εξουσιοδοτημένες προσβάσεις**. -2. **Δυναμική Ανάλυση:** -- **Επαληθεύστε** τις **άδειες** που έχουν οριστεί στα αρχεία που δημιουργούνται από την εφαρμογή. Συγκεκριμένα, **ελέγξτε** αν οποιαδήποτε αρχεία είναι **ρυθμισμένα να είναι αναγνώσιμα ή εγγράψιμα παγκοσμίως**. Αυτό μπορεί να θέσει σε σημαντικό κίνδυνο την ασφάλεια, καθώς θα επιτρέπει σε **οποιαδήποτε εφαρμογή** εγκατασταθεί στη συσκευή, ανεξαρτήτως προέλευσης ή προθέσεων, να **διαβάσει ή να τροποποιήσει** αυτά τα αρχεία. +1. **Static Analysis:** +- **Ensure** ότι η χρήση των `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` εξετάζεται **προσεκτικά**. Αυτά τα modes **μπορούν να εκθέσουν** αρχεία σε **μη προοριζόμενη ή μη εξουσιοδοτημένη πρόσβαση**. +2. **Dynamic Analysis:** +- **Verify** τα **permissions** που ορίζονται στα αρχεία που δημιουργεί η εφαρμογή. Ειδικότερα, **ελέγξτε** αν κάποιο αρχείο έχει οριστεί να είναι readable ή writable worldwide. Αυτό μπορεί να αποτελέσει σημαντικό ρίσκο ασφάλειας, καθώς θα επέτρεπε σε **οποιαδήποτε εφαρμογή** εγκατεστημένη στη συσκευή, ανεξαρτήτως προέλευσης ή πρόθεσης, να **διαβάσει ή να τροποποιήσει** αυτά τα αρχεία. -**Εξωτερική Αποθήκευση** +**External Storage** -Όταν ασχολείστε με αρχεία σε **εξωτερική αποθήκευση**, όπως κάρτες SD, θα πρέπει να ληφθούν ορισμένες προφυλάξεις: +Όταν χειρίζεστε αρχεία σε **external storage**, όπως SD Cards, πρέπει να ληφθούν υπόψη τα εξής: -1. **Προσβασιμότητα**: -- Τα αρχεία στην εξωτερική αποθήκευση είναι **παγκοσμίως αναγνώσιμα και εγγράψιμα**. Αυτό σημαίνει ότι οποιαδήποτε εφαρμογή ή χρήστης μπορεί να έχει πρόσβαση σε αυτά τα αρχεία. -2. **Ανησυχίες Ασφαλείας**: -- Δεδομένης της ευκολίας πρόσβασης, συνιστάται **να μην αποθηκεύετε ευαίσθητες πληροφορίες** στην εξωτερική αποθήκευση. -- Η εξωτερική αποθήκευση μπορεί να αφαιρεθεί ή να προσπελαστεί από οποιαδήποτε εφαρμογή, καθιστώντας την λιγότερο ασφαλή. -3. **Διαχείριση Δεδομένων από Εξωτερική Αποθήκευση**: -- Πάντα **εκτελέστε έλεγχο εισόδου** στα δεδομένα που ανακτώνται από την εξωτερική αποθήκευση. Αυτό είναι κρίσιμο επειδή τα δεδομένα προέρχονται από μια μη αξιόπιστη πηγή. -- Η αποθήκευση εκτελέσιμων ή αρχείων κλάσης στην εξωτερική αποθήκευση για δυναμική φόρτωση αποθαρρύνεται έντονα. -- Εάν η εφαρμογή σας πρέπει να ανακτήσει εκτελέσιμα αρχεία από την εξωτερική αποθήκευση, βεβαιωθείτε ότι αυτά τα αρχεία είναι **υπογεγραμμένα και κρυπτογραφικά επαληθευμένα** πριν φορτωθούν δυναμικά. Αυτό το βήμα είναι ζωτικής σημασίας για τη διατήρηση της ασφάλειας της εφαρμογής σας. +1. **Accessibility**: +- Τα αρχεία στο external storage είναι **παγκοσμίως readable και writable**. Αυτό σημαίνει ότι οποιαδήποτε εφαρμογή ή χρήστης μπορεί να έχει πρόσβαση σε αυτά. +2. **Security Concerns**: +- Δεδομένης της ευκολίας πρόσβασης, συνιστάται **να μην αποθηκεύετε ευαίσθητες πληροφορίες** στο external storage. +- Το external storage μπορεί να αφαιρεθεί ή να προσπελαστεί από οποιαδήποτε εφαρμογή, καθιστώντας το λιγότερο ασφαλές. +3. **Handling Data from External Storage**: +- Πάντα **εκτελείτε input validation** στα δεδομένα που ανακτάτε από το external storage. Αυτό είναι κρίσιμο επειδή τα δεδομένα προέρχονται από μη αξιόπιστη πηγή. +- Αποφύγετε να αποθηκεύετε executables ή class files στο external storage για dynamic loading. +- Αν η εφαρμογή σας πρέπει να ανακτήσει executable αρχεία από external storage, βεβαιωθείτε ότι αυτά τα αρχεία είναι **signed και cryptographically verified** πριν γίνει dynamic loading. Αυτό το βήμα είναι ζωτικής σημασίας για τη διατήρηση της ακεραιότητας ασφάλειας της εφαρμογής. -Η εξωτερική αποθήκευση μπορεί να **προσεγγιστεί** στο `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` +Το external storage μπορεί να προσπελαστεί στα /storage/emulated/0 , /sdcard , /mnt/sdcard > [!TIP] -> Ξεκινώντας από το Android 4.4 (**API 17**), η κάρτα SD έχει μια δομή καταλόγου που **περιορίζει την πρόσβαση από μια εφαρμογή στον κατάλογο που είναι ειδικά για αυτήν την εφαρμογή**. Αυτό αποτρέπει την κακόβουλη εφαρμογή από το να αποκτήσει πρόσβαση για ανάγνωση ή εγγραφή στα αρχεία άλλης εφαρμογής. +> Starting with Android 4.4 (**API 17**), the SD card has a directory structure which **limits access from an app to the directory which is specifically for that app**. This prevents malicious application from gaining read or write access to another app's files. -**Ευαίσθητα δεδομένα αποθηκευμένα σε καθαρό κείμενο** +**Sensitive data stored in clear-text** -- **Κοινές ρυθμίσεις**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα αρχεία xml στη διαδρομή `/data/data//shared_prefs/` και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο. -- **Βάσεις Δεδομένων**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα βάσεις δεδομένων sqlite στη διαδρομή `/data/data//databases/` και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο. +- **Shared preferences**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα xml αρχεία στη διαδρομή `/data/data//shared_prefs/` και κάποιες φορές είναι πιθανό να βρεθούν ευαίσθητες πληροφορίες σε clear-text σε αυτόν το φάκελο. +- **Databases**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα sqlite databases στη διαδρομή `/data/data//databases/` και κάποιες φορές είναι πιθανό να βρεθούν ευαίσθητες πληροφορίες σε clear-text σε αυτόν το φάκελο. -### Σπασμένο TLS +### Broken TLS -**Αποδοχή Όλων των Πιστοποιητικών** +**Accept All Certificates** -Για κάποιο λόγο, μερικές φορές οι προγραμματιστές αποδέχονται όλα τα πιστοποιητικά ακόμη και αν, για παράδειγμα, το hostname δεν ταιριάζει με γραμμές κώδικα όπως η παρακάτω: +Για κάποιο λόγο, μερικές φορές οι developers αποδέχονται όλα τα certificates ακόμα κι αν, για παράδειγμα, το hostname δεν ταιριάζει, με γραμμές κώδικα όπως η παρακάτω: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ``` -Ένας καλός τρόπος για να το δοκιμάσετε είναι να προσπαθήσετε να καταγράψετε την κίνηση χρησιμοποιώντας κάποιο proxy όπως το Burp χωρίς να εξουσιοδοτήσετε το Burp CA στη συσκευή. Επίσης, μπορείτε να δημιουργήσετε με το Burp ένα πιστοποιητικό για διαφορετικό hostname και να το χρησιμοποιήσετε. +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 -**Κακές Διαδικασίες Διαχείρισης Κλειδιών** +**Poor Key Management Processes** -Ορισμένοι προγραμματιστές αποθηκεύουν ευαίσθητα δεδομένα στην τοπική αποθήκευση και τα κρυπτογραφούν με ένα κλειδί σκληρά κωδικοποιημένο/προβλέψιμο στον κώδικα. Αυτό δεν θα έπρεπε να γίνεται καθώς κάποια αναστροφή θα μπορούσε να επιτρέψει στους επιτιθέμενους να εξάγουν τις εμπιστευτικές πληροφορίες. +Κάποιοι developers αποθηκεύουν sensitive data στο local storage και την κρυπτογραφούν με ένα key hardcoded/predictable μέσα στον κώδικα. Αυτό δεν πρέπει να γίνεται, καθώς κάποιο reversing μπορεί να επιτρέψει σε attackers να εξάγουν τις εμπιστευτικές πληροφορίες. -**Χρήση Ανασφαλών και/ή Παρωχημένων Αλγορίθμων** +**Use of Insecure and/or Deprecated Algorithms** -Οι προγραμματιστές δεν θα πρέπει να χρησιμοποιούν **παρωχημένους αλγορίθμους** για να εκτελούν **ελέγχους** εξουσιοδότησης, **να αποθηκεύουν** ή **να στέλνουν** δεδομένα. Ορισμένοι από αυτούς τους αλγορίθμους είναι: RC4, MD4, MD5, SHA1... Αν χρησιμοποιούνται **hashes** για την αποθήκευση κωδικών πρόσβασης, θα πρέπει να χρησιμοποιούνται hashes ανθεκτικά σε brute-force με salt. +Οι developers δεν θα πρέπει να χρησιμοποιούν **deprecated algorithms** για να κάνουν authorisation **checks**, να **store** ή να **send** δεδομένα. Μερικοί από αυτούς τους αλγορίθμους είναι: RC4, MD4, MD5, SHA1... Αν χρησιμοποιούνται **hashes** για την αποθήκευση κωδικών, θα πρέπει να χρησιμοποιούνται hashes ανθεκτικά στο brute-force μαζί με salt. -### Άλλοι έλεγχοι +### Other checks -- Συνιστάται να **παραποιήσετε το APK** για να δυσκολέψετε τη δουλειά του αναστροφέα για τους επιτιθέμενους. -- Αν η εφαρμογή είναι ευαίσθητη (όπως οι τραπεζικές εφαρμογές), θα πρέπει να εκτελεί τους **δικούς της ελέγχους για να δει αν το κινητό είναι ριζωμένο** και να ενεργεί αναλόγως. -- Αν η εφαρμογή είναι ευαίσθητη (όπως οι τραπεζικές εφαρμογές), θα πρέπει να ελέγχει αν χρησιμοποιείται **emulator**. -- Αν η εφαρμογή είναι ευαίσθητη (όπως οι τραπεζικές εφαρμογές), θα πρέπει να **ελέγχει την ακεραιότητά της πριν την εκτέλεση** για να ελέγξει αν έχει τροποποιηθεί. -- Χρησιμοποιήστε [**APKiD**](https://github.com/rednaga/APKiD) για να ελέγξετε ποιος compiler/packer/obfuscator χρησιμοποιήθηκε για την κατασκευή του APK. +- Συνιστάται να **obfuscate the APK** για να δυσκολέψετε το reverse engineer labour των attackers. +- Αν η app είναι ευαίσθητη (π.χ. bank apps), θα πρέπει να κάνει τα δικά της **checks to see if the mobile is rooted** και να δράσει αναλόγως. +- Αν η app είναι ευαίσθητη (π.χ. bank apps), θα πρέπει να ελέγξει αν χρησιμοποιείται **emulator**. +- Αν η app είναι ευαίσθητη (π.χ. bank apps), θα πρέπει να **check it's own integrity before executing** για να διαπιστώσει αν έχει τροποποιηθεί. +- Χρησιμοποιήστε [**APKiD**](https://github.com/rednaga/APKiD) για να δείτε ποιος compiler/packer/obfuscator χρησιμοποιήθηκε για να γίνει build το APK -### Εφαρμογή React Native +### React Native Application + +Read the following page to learn how to easily access javascript code of React applications: -Διαβάστε την παρακάτω σελίδα για να μάθετε πώς να έχετε εύκολη πρόσβαση στον κώδικα javascript των εφαρμογών React: {{#ref}} react-native-application.md {{#endref}} -### Εφαρμογές Xamarin +### Xamarin Applications + +Read the following page to learn how to easily access C# code of a xamarin applications: -Διαβάστε την παρακάτω σελίδα για να μάθετε πώς να έχετε εύκολη πρόσβαση στον κώδικα C# των εφαρμογών xamarin: {{#ref}} ../xamarin-apps.md {{#endref}} -### Superpacked Εφαρμογές +### Superpacked Applications -Σύμφωνα με αυτήν την [**ανάρτηση στο blog**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) το superpacked είναι ένας Meta αλγόριθμος που συμπιέζει το περιεχόμενο μιας εφαρμογής σε ένα μόνο αρχείο. Το blog μιλάει για την πιθανότητα δημιουργίας μιας εφαρμογής που αποσυμπιέζει αυτού του είδους τις εφαρμογές... και μια ταχύτερη μέθοδο που περιλαμβάνει την **εκτέλεση της εφαρμογής και τη συλλογή των αποσυμπιεσμένων αρχείων από το σύστημα αρχείων.** +According to this [**blog post**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) 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 -Το εργαλείο [**mariana-trench**](https://github.com/facebook/mariana-trench) είναι ικανό να βρίσκει **ευπάθειες** μέσω **σάρωσης** του **κώδικα** της εφαρμογής. Αυτό το εργαλείο περιέχει μια σειρά από **γνωστές πηγές** (που υποδεικνύουν στο εργαλείο τις **θέσεις** όπου η **είσοδος** ελέγχεται από τον χρήστη), **sink** (που υποδεικνύουν στο εργαλείο **επικίνδυνες** **θέσεις** όπου η κακόβουλη είσοδος του χρήστη θα μπορούσε να προκαλέσει ζημίες) και **κανόνες**. Αυτοί οι κανόνες υποδεικνύουν την **συνδυασμένη** **πηγή-sink** που υποδεικνύει μια ευπάθεια. +Το εργαλείο [**mariana-trench**](https://github.com/facebook/mariana-trench) είναι ικανό να βρει **vulnerabilities** σαρώνοντας τον **code** της εφαρμογής. Το εργαλείο περιέχει μια σειρά από **known sources** (που υποδεικνύουν στο εργαλείο τα **places** όπου το **input** είναι **controlled by the user**), **sinks** (που υποδεικνύουν τα **dangerous** **places** όπου κακόβουλο user input θα μπορούσε να προκαλέσει ζημιά) και **rules**. Αυτοί οι κανόνες υποδεικνύουν τον **συνδυασμό** **sources-sinks** που δηλώνει μια ευπάθεια. -Με αυτή τη γνώση, **το mariana-trench θα αναθεωρήσει τον κώδικα και θα βρει πιθανές ευπάθειες σε αυτόν**. +Με αυτή τη γνώση, το **mariana-trench θα ανασκοπήσει τον κώδικα και θα βρει πιθανές vulnerabilities σε αυτόν**. -### Μυστικά που διαρρέουν +### Secrets leaked -Μια εφαρμογή μπορεί να περιέχει μυστικά (API keys, κωδικούς πρόσβασης, κρυφές διευθύνσεις URL, υποτομείς...) μέσα σε αυτήν που μπορεί να είστε σε θέση να ανακαλύψετε. Μπορείτε να χρησιμοποιήσετε ένα εργαλείο όπως το [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks). +Μια εφαρμογή μπορεί να περιέχει secrets (API keys, passwords, hidden urls, subdomains...) μέσα της που μπορεί να καταφέρετε να ανακαλύψετε. Μπορείτε να χρησιμοποιήσετε ένα εργαλείο όπως [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) + +### Bypass Biometric Authentication -### Παράκαμψη Βιομετρικής Αυθεντικοποίησης {{#ref}} bypass-biometric-authentication-android.md {{#endref}} -### Άλλες ενδιαφέρουσες λειτουργίες +### Other interesting functions -- **Εκτέλεση κώδικα**: `Runtime.exec(), ProcessBuilder(), native code:system()` -- **Αποστολή SMS**: `sendTextMessage, sendMultipartTestMessage` -- **Native functions** δηλωμένες ως `native`: `public native, System.loadLibrary, System.load` -- [Διαβάστε αυτό για να μάθετε **πώς να αναστρέψετε native functions**](reversing-native-libraries.md) +- **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**](reversing-native-libraries.md) + +### **Other tricks** -### **Άλλες τεχνικές** {{#ref}} content-protocol.md @@ -229,240 +234,292 @@ content-protocol.md --- -## Δυναμική Ανάλυση +## Dynamic Analysis -> Πρώτα απ' όλα, χρειάζεστε ένα περιβάλλον όπου μπορείτε να εγκαταστήσετε την εφαρμογή και όλο το περιβάλλον (πιστοποιητικό Burp CA, Drozer και Frida κυρίως). Επομένως, μια ριζωμένη συσκευή (εξομοιωμένη ή όχι) είναι εξαιρετικά συνιστώμενη. +> 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 -Μπορείτε να δημιουργήσετε έναν **δωρεάν λογαριασμό** στο: [https://appetize.io/](https://appetize.io). Αυτή η πλατφόρμα σας επιτρέπει να **ανεβάσετε** και να **εκτελέσετε** APKs, οπότε είναι χρήσιμη για να δείτε πώς συμπεριφέρεται ένα apk. +You can create a **free account** in: [https://appetize.io/](https://appetize.io). This platform allows you to **upload** and **execute** APKs, so it is useful to see how an apk is behaving. -Μπορείτε ακόμη να **δείτε τα logs της εφαρμογής σας** στο διαδίκτυο και να συνδεθείτε μέσω **adb**. +You can even **see the logs of your application** in the web and connect through **adb**. ![](<../../images/image (831).png>) -Χάρη στη σύνδεση ADB μπορείτε να χρησιμοποιήσετε **Drozer** και **Frida** μέσα στους εξομοιωτές. +Thanks to the ADB connection you can use **Drozer** and **Frida** inside the emulators. -### Τοπική Δυναμική Ανάλυση +### Local Dynamic Analysis -#### Χρησιμοποιώντας έναν εξομοιωτή +#### Using an emulator + +- [**Android Studio**](https://developer.android.com/studio) (You can create **x86** and **arm** devices, and according to [**this** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**latest x86** versions **support ARM libraries** without needing an slow arm emulator). +- Learn to set it up in this page: -- [**Android Studio**](https://developer.android.com/studio) (Μπορείτε να δημιουργήσετε **x86** και **arm** συσκευές, και σύμφωνα με [**αυτό**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html) οι **latest x86** εκδόσεις **υποστηρίζουν ARM βιβλιοθήκες** χωρίς να χρειάζεται ένας αργός εξομοιωτής arm). -- Μάθετε πώς να το ρυθμίσετε σε αυτή τη σελίδα: {{#ref}} avd-android-virtual-device.md {{#endref}} -- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Δωρεάν έκδοση:** Personal Edition, πρέπει να δημιουργήσετε έναν λογαριασμό. _Συνιστάται να **κατεβάσετε** την έκδοση **ΜΕ**_ _**VirtualBox** για να αποφύγετε πιθανά σφάλματα._) -- [**Nox**](https://es.bignox.com) (Δωρεάν, αλλά δεν υποστηρίζει Frida ή Drozer). +- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Free version:** Personal Edition, you need to create an account. _It's recommend to **download** the version **WITH**_ _**VirtualBox** to avoid potential errors._) +- [**Nox**](https://es.bignox.com) (Free, but it doesn't support Frida or Drozer). > [!TIP] -> Όταν δημιουργείτε έναν νέο εξομοιωτή σε οποιαδήποτε πλατφόρμα, θυμηθείτε ότι όσο μεγαλύτερη είναι η οθόνη, τόσο πιο αργά θα τρέχει ο εξομοιωτής. Επομένως, επιλέξτε μικρές οθόνες αν είναι δυνατόν. +> Όταν δημιουργείτε νέο emulator σε οποιαδήποτε πλατφόρμα, θυμηθείτε ότι όσο μεγαλύτερη είναι η οθόνη τόσο πιο αργά θα τρέχει ο emulator. Επιλέξτε όσο γίνεται μικρότερες οθόνες. -Για να **εγκαταστήσετε τις υπηρεσίες google** (όπως το AppStore) στο Genymotion, πρέπει να κάνετε κλικ στο κόκκινο κουμπί που επισημαίνεται στην παρακάτω εικόνα: +To **install google services** (like AppStore) in Genymotion you need to click on the red marked button of the following image: ![](<../../images/image (277).png>) -Επίσης, σημειώστε ότι στη **ρύθμιση της Android VM στο Genymotion** μπορείτε να επιλέξετε **Bridge Network mode** (αυτό θα είναι χρήσιμο αν θα συνδεθείτε στην Android VM από μια διαφορετική VM με τα εργαλεία). +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: -1. **Ρυθμίσεις**. -2. (Από Android 8.0) Επιλέξτε **Σύστημα**. -3. Επιλέξτε **Σχετικά με το τηλέφωνο**. -4. Πατήστε **Αριθμός κατασκευής** 7 φορές. -5. Επιστρέψτε πίσω και θα βρείτε τις **Επιλογές προγραμματιστή**. +1. **Settings**. +2. (FromAndroid 8.0) Select **System**. +3. Select **About phone**. +4. Press **Build number** 7 times. +5. Go back and you will find the **Developer options**. -> Μόλις εγκαταστήσετε την εφαρμογή, το πρώτο πράγμα που πρέπει να κάνετε είναι να την δοκιμάσετε και να ερευνήσετε τι κάνει, πώς λειτουργεί και να εξοικειωθείτε με αυτήν.\ -> Σας προτείνω να **εκτελέσετε αυτήν την αρχική δυναμική ανάλυση χρησιμοποιώντας MobSF dynamic analysis + pidcat**, ώστε να μπορέσουμε να **μάθουμε πώς λειτουργεί η εφαρμογή** ενώ το MobSF **καταγράφει** πολλά **ενδιαφέροντα** **δεδομένα** που μπορείτε να αναθεωρήσετε αργότερα. +> 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** -Οι προγραμματιστές θα πρέπει να είναι προσεκτικοί με την έκθεση **πληροφοριών αποσφαλμάτωσης** δημόσια, καθώς μπορεί να οδηγήσει σε διαρροές ευαίσθητων δεδομένων. Τα εργαλεία [**pidcat**](https://github.com/JakeWharton/pidcat) και `adb logcat` συνιστώνται για την παρακολούθηση των logs της εφαρμογής για να εντοπίσουν και να προστατεύσουν ευαίσθητες πληροφορίες. **Pidcat** προτιμάται για την ευχρηστία και την αναγνωσιμότητά του. +Οι developers πρέπει να είναι προσεκτικοί στο να μην εκθέτουν **debugging information** δημόσια, καθώς αυτό μπορεί να οδηγήσει σε sensitive data leaks. Τα εργαλεία [**pidcat**](https://github.com/JakeWharton/pidcat) και `adb logcat` συστήνονται για την παρακολούθηση των application logs ώστε να εντοπιστούν και να προστατευτούν ευαίσθητες πληροφορίες. Το **Pidcat** προτιμάται για την ευκολία χρήσης και την αναγνωσιμότητα. > [!WARNING] -> Σημειώστε ότι από **αργότερα από το Android 4.0**, **οι εφαρμογές μπορούν να έχουν πρόσβαση μόνο στα δικά τους logs**. Έτσι, οι εφαρμογές δεν μπορούν να έχουν πρόσβαση στα logs άλλων εφαρμογών.\ -> Ούτως ή άλλως, εξακολουθεί να συνιστάται να **μην καταγράφετε ευαίσθητες πληροφορίες**. +> Σημειώστε ότι από **later newer than Android 4.0**, **applications are only able to access their own logs**. Έτσι οι εφαρμογές δεν μπορούν να έχουν πρόσβαση στα logs άλλων apps.\ +> Παρ' όλα αυτά, εξακολουθεί να συνιστάται να **μην καταγράφονται sensitive information**. -**Caching του Buffer Αντιγραφής/Επικόλλησης** +**Copy/Paste Buffer Caching** -Το **clipboard-based** πλαίσιο του Android επιτρέπει τη λειτουργία αντιγραφής-επικόλλησης σε εφαρμογές, ωστόσο θέτει κίνδυνο καθώς **άλλες εφαρμογές** μπορούν να **πρόσβαση** στο clipboard, εκθέτοντας ενδεχομένως ευαίσθητα δεδομένα. Είναι κρίσιμο να **απενεργοποιήσετε τις λειτουργίες αντιγραφής/επικόλλησης** για ευαίσθητες ενότητες μιας εφαρμογής, όπως λεπτομέρειες πιστωτικών καρτών, για να αποτρέψετε διαρροές δεδομένων. +Το **clipboard-based** framework του Android επιτρέπει λειτουργία copy-paste στις εφαρμογές, αλλά ενέχει ρίσκο καθώς **other applications** μπορούν να **access** το clipboard και να εκθέσουν sensitive data. Είναι κρίσιμο να **disable copy/paste** για ευαίσθητες περιοχές της εφαρμογής, όπως λεπτομέρειες πιστωτικής κάρτας, για να αποφευχθούν data leaks. **Crash Logs** -Αν μια εφαρμογή **καταρρεύσει** και **αποθηκεύσει logs**, αυτά τα logs μπορούν να βοηθήσουν τους επιτιθέμενους, ιδιαίτερα όταν η εφαρμογή δεν μπορεί να αναστραφεί. Για να μετριάσετε αυτόν τον κίνδυνο, αποφύγετε την καταγραφή σε περιπτώσεις κατάρρευσης, και αν τα logs πρέπει να μεταδοθούν μέσω του δικτύου, βεβαιωθείτε ότι αποστέλλονται μέσω καναλιού SSL για ασφάλεια. +Αν μια εφαρμογή **crashes** και **saves logs**, αυτά τα logs μπορούν να βοηθήσουν attackers, ειδικά όταν η εφαρμογή δεν μπορεί να γίνει reverse-engineered. Για να μειωθεί ο κίνδυνος, αποφύγετε το logging σε crashes, και αν πρέπει να αποστέλλονται logs μέσω δικτύου, βεβαιωθείτε ότι στέλνονται μέσω SSL. -Ως pentester, **προσπαθήστε να ρίξετε μια ματιά σε αυτά τα logs**. +Ως pentester, **try to take a look to these logs**. -**Δεδομένα Analytics που αποστέλλονται σε τρίτους** +**Analytics Data Sent To 3rd Parties** -Οι εφαρμογές συχνά ενσωματώνουν υπηρεσίες όπως το Google Adsense, οι οποίες μπορεί να **διαρρεύσουν ευαίσθητα δεδομένα** λόγω κακής υλοποίησης από τους προγραμματιστές. Για να εντοπίσετε πιθανές διαρροές δεδομένων, είναι σκόπιμο να **παρεμβάλετε την κίνηση της εφαρμογής** και να ελέγξετε αν αποστέλλεται οποιαδήποτε ευαίσθητη πληροφορία σε τρίτες υπηρεσίες. +Οι εφαρμογές συχνά ενσωματώνουν υπηρεσίες όπως Google Adsense, που μπορούν άθελά τους να cause sensitive data leaks λόγω λανθασμένης υλοποίησης από τους developers. Για να εντοπίσετε πιθανά data leaks, είναι καλό να **intercept the application's traffic** και να ελέγξετε αν αποστέλλονται ευαίσθητες πληροφορίες σε third-party services. ### SQLite DBs -Οι περισσότερες εφαρμογές θα χρησιμοποιούν **εσωτερικές βάσεις δεδομένων SQLite** για να αποθηκεύσουν πληροφορίες. Κατά τη διάρκεια της pentest, ρίξτε μια **ματιά** στις **βάσεις δεδομένων** που δημιουργούνται, τα ονόματα των **πινάκων** και **στηλών** και όλα τα **δεδομένα** που αποθηκεύονται γιατί θα μπορούσατε να βρείτε **ευαίσθητες πληροφορίες** (που θα ήταν μια ευπάθεια).\ -Οι βάσεις δεδομένων θα πρέπει να βρίσκονται στο `/data/data/the.package.name/databases` όπως `/data/data/com.mwr.example.sieve/databases`. +Οι περισσότερες εφαρμογές χρησιμοποιούν **internal SQLite databases** για να αποθηκεύουν πληροφορίες. Κατά το pentest, ρίξτε μια **ματιά** στις **databases** που δημιουργούνται, τα ονόματα των **tables** και **columns** και όλα τα **data** που αποθηκεύονται γιατί μπορεί να βρείτε sensitive information (το οποίο θα είναι vulnerability).\ +Οι βάσεις δεδομένων θα πρέπει να βρίσκονται σε `/data/data/the.package.name/databases` όπως `/data/data/com.mwr.example.sieve/databases` -Αν η βάση δεδομένων αποθηκεύει εμπιστευτικές πληροφορίες και είναι **κρυπτογραφημένη** αλλά μπορείτε να **βρείτε** τον **κωδικό πρόσβασης** μέσα στην εφαρμογή, είναι ακόμα μια **ευπάθεια**. +Αν η βάση δεδομένων αποθηκεύει εμπιστευτικές πληροφορίες και είναι **encrypted b**ut μπορείτε **find** το **password** μέσα στην εφαρμογή, εξακολουθεί να είναι **vulnerability**. -Αριθμήστε τους πίνακες χρησιμοποιώντας `.tables` και αριθμήστε τις στήλες των πινάκων κάνοντας `.schema `. +Αναγράψτε τα tables με `.tables` και αναλύστε τα σχήματα των table με `.schema ` -### Drozer (Εκμετάλλευση Δραστηριοτήτων, Παρόχων Περιεχομένου και Υπηρεσιών) +### Drozer (Exploit Activities, Content Providers and Services) -Από [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** σας επιτρέπει να **αναλαμβάνετε το ρόλο μιας εφαρμογής Android** και να αλληλεπιδράτε με άλλες εφαρμογές. Μπορεί να κάνει **οτιδήποτε μπορεί να κάνει μια εγκατεστημένη εφαρμογή**, όπως να χρησιμοποιήσει τον μηχανισμό Επικοινωνίας Μεταξύ Διαδικασιών (IPC) του Android και να αλληλεπιδράσει με το υποκείμενο λειτουργικό σύστημα.\ -Το Drozer είναι ένα χρήσιμο εργαλείο για **να εκμεταλλευτείτε εξαγόμενες δραστηριότητες, εξαγόμενες υπηρεσίες και Παρόχους Περιεχομένου** όπως θα μάθετε στις επόμενες ενότητες. +From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **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 -[**Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι μια Δραστηριότητα Android.**](android-applications-basics.md#launcher-activity-and-other-activities)\ -Επίσης θυμηθείτε ότι ο κώδικας μιας δραστηριότητας ξεκινά στη μέθοδο **`onCreate`**. +[**Read this if you want to refresh what is an Android Activity.**](android-applications-basics.md#launcher-activity-and-other-activities)\ +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.** -[**Μάθετε πώς να εκμεταλλευτείτε εξαγόμενες δραστηριότητες με το Drozer.**](drozer-tutorial/index.html#activities) +[**Learn how to exploit exported activities with Drozer.**](drozer-tutorial/index.html#activities) -Μπορείτε επίσης να ξεκινήσετε μια εξαγόμενη δραστηριότητα από το adb: +You can also start an exported activity from adb: -- PackageName είναι com.example.demo -- Exported ActivityName είναι com.example.test.MainActivity +- PackageName is com.example.demo +- Exported ActivityName is com.example.test.MainActivity ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` -**ΣΗΜΕΙΩΣΗ**: Το MobSF θα ανιχνεύσει ως κακόβουλη τη χρήση του _**singleTask/singleInstance**_ ως `android:launchMode` σε μια δραστηριότητα, αλλά λόγω [αυτού](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), προφανώς αυτό είναι επικίνδυνο μόνο σε παλιές εκδόσεις (API εκδόσεις < 21). +**ΣΗΜΕΙΩΣΗ**: Το MobSF θα εντοπίσει ως κακόβουλη τη χρήση του _**singleTask/singleInstance**_ ως `android:launchMode` σε ένα activity, αλλά λόγω [this](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), προφανώς αυτό είναι επικίνδυνο μόνο σε παλιές εκδόσεις (API versions < 21). > [!TIP] -> Σημειώστε ότι μια παράκαμψη εξουσιοδότησης δεν είναι πάντα ευπάθεια, θα εξαρτηθεί από το πώς λειτουργεί η παράκαμψη και ποιες πληροφορίες εκτίθενται. +> Σημειώστε ότι ένα authorisation bypass δεν είναι απαραίτητα ευπάθεια — εξαρτάται από το πώς λειτουργεί το bypass και ποιες πληροφορίες εκτίθενται. -**Διαρροή ευαίσθητων πληροφοριών** +**Sensitive information leakage** -**Οι δραστηριότητες μπορούν επίσης να επιστρέφουν αποτελέσματα**. Εάν καταφέρετε να βρείτε μια εξαγόμενη και μη προστατευμένη δραστηριότητα που καλεί τη μέθοδο **`setResult`** και **επιστρέφει ευαίσθητες πληροφορίες**, υπάρχει διαρροή ευαίσθητων πληροφοριών. +**Activities can also return results**. Εάν καταφέρετε να βρείτε ένα exported και unprotected activity που καλεί τη μέθοδο **`setResult`** και **επιστρέφει ευαίσθητες πληροφορίες**, υπάρχει sensitive information leakage. #### Tapjacking -Εάν δεν προληφθεί το tapjacking, θα μπορούσατε να εκμεταλλευτείτε την εξαγόμενη δραστηριότητα για να κάνετε τον **χρήστη να εκτελέσει απροσδόκητες ενέργειες**. Για περισσότερες πληροφορίες σχετικά με [**τι είναι το Tapjacking ακολουθήστε τον σύνδεσμο**](#tapjacking). +If tapjacking isn't prevented, you could abuse the exported activity to make the **user perform unexpected actions**. For more info about [**what is Tapjacking follow the link**](#tapjacking). -### Εκμετάλλευση Παρόχων Περιεχομένου - Πρόσβαση και χειρισμός ευαίσθητων πληροφοριών +### Exploiting Content Providers - Accessing and manipulating sensitive information -[**Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι ένας Πάροχος Περιεχομένου.**](android-applications-basics.md#content-provider)\ -Οι πάροχοι περιεχομένου χρησιμοποιούνται βασικά για να **μοιράζονται δεδομένα**. Εάν μια εφαρμογή έχει διαθέσιμους παρόχους περιεχομένου, μπορεί να είστε σε θέση να **εξάγετε ευαίσθητα** δεδομένα από αυτούς. Είναι επίσης ενδιαφέρον να δοκιμάσετε πιθανές **SQL injections** και **Path Traversals** καθώς μπορεί να είναι ευάλωτοι. +[**Read this if you want to refresh what is a Content Provider.**](android-applications-basics.md#content-provider)\ +Content providers χρησιμοποιούνται βασικά για να **μοιράζουν δεδομένα**. Αν μια app έχει διαθέσιμους content providers μπορεί να μπορείτε να **εξάγετε ευαίσθητα** δεδομένα από αυτούς. Είναι επίσης σημαντικό να δοκιμάσετε πιθανές **SQL injections** και **Path Traversals** καθώς μπορεί να είναι ευάλωτες. -[**Μάθετε πώς να εκμεταλλευτείτε τους Παρόχους Περιεχομένου με το Drozer.**](drozer-tutorial/index.html#content-providers) +[**Learn how to exploit Content Providers with Drozer.**](drozer-tutorial/index.html#content-providers) -### **Εκμετάλλευση Υπηρεσιών** +### **Exploiting Services** -[**Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι μια Υπηρεσία.**](android-applications-basics.md#services)\ -Θυμηθείτε ότι οι ενέργειες μιας Υπηρεσίας ξεκινούν στη μέθοδο `onStartCommand`. +[**Read this if you want to refresh what is a Service.**](android-applications-basics.md#services)\ +Θυμηθείτε ότι οι ενέργειες ενός Service ξεκινούν στη μέθοδο `onStartCommand`. -Μια υπηρεσία είναι βασικά κάτι που **μπορεί να λάβει δεδομένα**, **να τα επεξεργαστεί** και **να επιστρέψει** (ή όχι) μια απάντηση. Έτσι, εάν μια εφαρμογή εξάγει κάποιες υπηρεσίες, θα πρέπει να **ελέγξετε** τον **κώδικα** για να κατανοήσετε τι κάνει και να **δοκιμάσετε** το **δυναμικά** για να εξάγετε εμπιστευτικές πληροφορίες, παρακάμπτοντας μέτρα αυθεντικοποίησης...\ -[**Μάθετε πώς να εκμεταλλευτείτε τις Υπηρεσίες με το Drozer.**](drozer-tutorial/index.html#services) +Ένα service είναι ουσιαστικά κάτι που **μπορεί να λαμβάνει δεδομένα**, **να τα επεξεργάζεται** και **να επιστρέφει** (ή όχι) μια απάντηση. Επομένως, αν μια εφαρμογή εξάγει services θα πρέπει να **ελέγξετε** τον **κώδικα** για να κατανοήσετε τι κάνει και να το **δοκιμάσετε** **δυναμικά** για εξαγωγή εμπιστευτικών πληροφοριών, παράκαμψη μέτρων αυθεντικοποίησης...\ +[**Learn how to exploit Services with Drozer.**](drozer-tutorial/index.html#services) -### **Εκμετάλλευση Δέκτες Εκπομπών** +### **Exploiting Broadcast Receivers** -[**Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι ένας Δέκτης Εκπομπών.**](android-applications-basics.md#broadcast-receivers)\ -Θυμηθείτε ότι οι ενέργειες ενός Δέκτη Εκπομπών ξεκινούν στη μέθοδο `onReceive`. +[**Read this if you want to refresh what is a Broadcast Receiver.**](android-applications-basics.md#broadcast-receivers)\ +Θυμηθείτε ότι οι ενέργειες ενός Broadcast Receiver ξεκινούν στη μέθοδο `onReceive`. -Ένας δέκτης εκπομπών θα περιμένει για έναν τύπο μηνύματος. Ανάλογα με το πώς ο δέκτης χειρίζεται το μήνυμα, μπορεί να είναι ευάλωτος.\ -[**Μάθετε πώς να εκμεταλλευτείτε τους Δέκτες Εκπομπών με το Drozer.**](#exploiting-broadcast-receivers) +Ένας broadcast receiver θα περιμένει έναν τύπο μηνύματος. Ανάλογα με το πώς ο receiver χειρίζεται το μήνυμα, μπορεί να είναι ευάλωτος.\ +[**Learn how to exploit Broadcast Receivers with Drozer.**](#exploiting-broadcast-receivers) -### **Εκμετάλλευση Σχημάτων / Deep links** +### **Exploiting Schemes / Deep links** -Μπορείτε να αναζητήσετε deep links χειροκίνητα, χρησιμοποιώντας εργαλεία όπως το MobSF ή σενάρια όπως [αυτό](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ -Μπορείτε να **ανοίξετε** ένα δηλωμένο **σχήμα** χρησιμοποιώντας **adb** ή έναν **περιηγητή**: +Μπορείτε να αναζητήσετε deep links χειροκίνητα, χρησιμοποιώντας εργαλεία όπως το MobSF ή scripts όπως [this one](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ +Μπορείτε να **ανοίξετε** ένα δηλωμένο **scheme** χρησιμοποιώντας **adb** ή έναν **browser**: ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` -_Σημειώστε ότι μπορείτε να **παραλείψετε το όνομα πακέτου** και το κινητό θα καλέσει αυτόματα την εφαρμογή που θα πρέπει να ανοίξει αυτόν τον σύνδεσμο._ +_Σημειώστε ότι μπορείτε να **παραλείψετε το package name** και το κινητό θα καλέσει αυτόματα την εφαρμογή που θα ανοίξει αυτόν τον σύνδεσμο._ ```html Click me with alternative ``` -**Κώδικας που εκτελείται** +**Code executed** -Για να βρείτε τον **κώδικα που θα εκτελείται στην εφαρμογή**, πηγαίνετε στη δραστηριότητα που καλείται από το deeplink και αναζητήστε τη συνάρτηση **`onNewIntent`**. +In order to find the **code that will be executed in the App**, go to the activity called by the deeplink and search the function **`onNewIntent`**. ![](<../../images/image (436) (1) (1) (1).png>) -**Ευαίσθητες πληροφορίες** +**Sensitive info** -Κάθε φορά που βρίσκετε ένα deep link ελέγξτε ότι **δεν λαμβάνει ευαίσθητα δεδομένα (όπως κωδικούς πρόσβασης) μέσω παραμέτρων URL**, γιατί οποιαδήποτε άλλη εφαρμογή θα μπορούσε **να προσποιηθεί το deep link και να κλέψει αυτά τα δεδομένα!** +Every time you find a deep link check that i**t's not receiving sensitive data (like passwords) via URL parameters**, because any other application could **impersonate the deep link and steal that data!** -**Παράμετροι στο μονοπάτι** +**Parameters in path** -Πρέπει επίσης να **ελέγξετε αν κάποιο deep link χρησιμοποιεί μια παράμετρο μέσα στο μονοπάτι** του URL όπως: `https://api.example.com/v1/users/{username}`, σε αυτή την περίπτωση μπορείτε να αναγκάσετε μια διαδρομή πρόσβασης σε κάτι όπως: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\ -Σημειώστε ότι αν βρείτε τα σωστά endpoints μέσα στην εφαρμογή μπορεί να είστε σε θέση να προκαλέσετε μια **Open Redirect** (αν μέρος του μονοπατιού χρησιμοποιείται ως όνομα τομέα), **κατάληψη λογαριασμού** (αν μπορείτε να τροποποιήσετε λεπτομέρειες χρηστών χωρίς CSRF token και το ευάλωτο endpoint χρησιμοποίησε τη σωστή μέθοδο) και οποιαδήποτε άλλη ευπάθεια. Περισσότερες [πληροφορίες σχετικά με αυτό εδώ](http://dphoeniixx.com/2020/12/13-2/). +You **must check also if any deep link is using a parameter inside the path** of the URL like: `https://api.example.com/v1/users/{username}` , in that case you can force a path traversal accessing something like: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ +Note that if you find the correct endpoints inside the application you may be able to cause a **Open Redirect** (if part of the path is used as domain name), **account takeover** (if you can modify users details without CSRF token and the vuln endpoint used the correct method) and any other vuln. More [info about this here](http://dphoeniixx.com/2020/12/13-2/). -**Περισσότερα παραδείγματα** +**More examples** -Ένα [ενδιαφέρον bug bounty report](https://hackerone.com/reports/855618) σχετικά με συνδέσμους (_/.well-known/assetlinks.json_). +An [interesting bug bounty report](https://hackerone.com/reports/855618) about links (_/.well-known/assetlinks.json_). -### Αποτυχίες Επιθεώρησης και Επαλήθευσης Στρώματος Μεταφοράς +### Transport Layer Inspection and Verification Failures -- **Οι πιστοποιήσεις δεν ελέγχονται πάντα σωστά** από τις εφαρμογές Android. Είναι συνηθισμένο αυτές οι εφαρμογές να παραβλέπουν προειδοποιήσεις και να αποδέχονται αυτο-υπογεγραμμένες πιστοποιήσεις ή, σε ορισμένες περιπτώσεις, να επιστρέφουν στη χρήση HTTP συνδέσεων. -- **Οι διαπραγματεύσεις κατά τη διάρκεια του SSL/TLS handshake είναι μερικές φορές αδύναμες**, χρησιμοποιώντας ανασφαλείς κρυπτογραφικές σουίτες. Αυτή η ευπάθεια καθιστά τη σύνδεση ευάλωτη σε επιθέσεις man-in-the-middle (MITM), επιτρέποντας στους επιτιθέμενους να αποκρυπτογραφήσουν τα δεδομένα. -- **Διαρροή ιδιωτικών πληροφοριών** είναι ένας κίνδυνος όταν οι εφαρμογές πιστοποιούν χρησιμοποιώντας ασφαλείς διαύλους αλλά στη συνέχεια επικοινωνούν μέσω μη ασφαλών διαύλων για άλλες συναλλαγές. Αυτή η προσέγγιση αποτυγχάνει να προστατεύσει ευαίσθητα δεδομένα, όπως cookies συνεδρίας ή λεπτομέρειες χρηστών, από την παρεμβολή κακόβουλων οντοτήτων. +- **Certificates are not always inspected properly** by Android applications. It's common for these applications to overlook warnings and accept self-signed certificates or, in some instances, revert to using HTTP connections. +- **Negotiations during the SSL/TLS handshake are sometimes weak**, employing insecure cipher suites. This vulnerability makes the connection susceptible to man-in-the-middle (MITM) attacks, allowing attackers to decrypt the data. +- **Leakage of private information** is a risk when applications authenticate using secure channels but then communicate over non-secure channels for other transactions. This approach fails to protect sensitive data, such as session cookies or user details, from interception by malicious entities. -#### Επαλήθευση Πιστοποιητικού +#### Certificate Verification -Θα επικεντρωθούμε στην **επαλήθευση πιστοποιητικού**. Η ακεραιότητα του πιστοποιητικού του διακομιστή πρέπει να επαληθεύεται για να ενισχυθεί η ασφάλεια. Αυτό είναι κρίσιμο γιατί οι ανασφαλείς ρυθμίσεις TLS και η μετάδοση ευαίσθητων δεδομένων μέσω μη κρυπτογραφημένων καναλιών μπορεί να θέσουν σε σημαντικό κίνδυνο. Για λεπτομερείς οδηγίες σχετικά με την επαλήθευση πιστοποιητικών διακομιστή και την αντιμετώπιση ευπαθειών, [**αυτή η πηγή**](https://manifestsecurity.com/android-application-security-part-10/) παρέχει εκτενή καθοδήγηση. +We will focus on **certificate verification**. The integrity of the server's certificate must be verified to enhance security. This is crucial because insecure TLS configurations and the transmission of sensitive data over unencrypted channels can pose significant risks. For detailed steps on verifying server certificates and addressing vulnerabilities, [**this resource**](https://manifestsecurity.com/android-application-security-part-10/) provides comprehensive guidance. #### SSL Pinning -Το SSL Pinning είναι ένα μέτρο ασφαλείας όπου η εφαρμογή επαληθεύει το πιστοποιητικό του διακομιστή με ένα γνωστό αντίγραφο που είναι αποθηκευμένο μέσα στην ίδια την εφαρμογή. Αυτή η μέθοδος είναι απαραίτητη για την αποτροπή επιθέσεων MITM. Συνιστάται έντονα η εφαρμογή SSL Pinning για εφαρμογές που χειρίζονται ευαίσθητες πληροφορίες. +SSL Pinning is a security measure where the application verifies the server's certificate against a known copy stored within the application itself. This method is essential for preventing MITM attacks. Implementing SSL Pinning is strongly recommended for applications handling sensitive information. -#### Επιθεώρηση Κυκλοφορίας +#### Traffic Inspection -Για να επιθεωρήσετε την HTTP κυκλοφορία, είναι απαραίτητο να **εγκαταστήσετε το πιστοποιητικό του εργαλείου proxy** (π.χ., Burp). Χωρίς την εγκατάσταση αυτού του πιστοποιητικού, η κρυπτογραφημένη κυκλοφορία μπορεί να μην είναι ορατή μέσω του proxy. Για οδηγίες σχετικά με την εγκατάσταση ενός προσαρμοσμένου πιστοποιητικού CA, [**κάντε κλικ εδώ**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). +To inspect HTTP traffic, it's necessary to **install the proxy tool's certificate** (e.g., Burp). Without installing this certificate, encrypted traffic might not be visible through the proxy. For a guide on installing a custom CA certificate, [**click here**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). -Οι εφαρμογές που στοχεύουν **API Level 24 και άνω** απαιτούν τροποποιήσεις στη Ρύθμιση Ασφαλείας Δικτύου για να αποδεχτούν το πιστοποιητικό CA του proxy. Αυτό το βήμα είναι κρίσιμο για την επιθεώρηση κρυπτογραφημένης κυκλοφορίας. Για οδηγίες σχετικά με την τροποποίηση της Ρύθμισης Ασφαλείας Δικτύου, [**ανατρέξτε σε αυτό το σεμινάριο**](make-apk-accept-ca-certificate.md). +Applications targeting **API Level 24 and above** require modifications to the Network Security Config to accept the proxy's CA certificate. This step is critical for inspecting encrypted traffic. For instructions on modifying the Network Security Config, [**refer to this tutorial**](make-apk-accept-ca-certificate.md). -Αν χρησιμοποιείται **Flutter** πρέπει να ακολουθήσετε τις οδηγίες σε [**αυτή τη σελίδα**](flutter.md). Αυτό συμβαίνει γιατί, απλά προσθέτοντας το πιστοποιητικό στο κατάστημα δεν θα λειτουργήσει καθώς το Flutter έχει τη δική του λίστα έγκυρων CA. +If **Flutter** is being used you need to to follow the instructions in [**this page**](flutter.md). This is becasue, just adding the certificate into the store won't work as Flutter has its own list of valid CAs. -#### Παράκαμψη SSL Pinning +#### Static detection of SSL/TLS pinning -Όταν έχει εφαρμοστεί το SSL Pinning, η παράκαμψή του γίνεται απαραίτητη για την επιθεώρηση της HTTPS κυκλοφορίας. Διατίθενται διάφορες μέθοδοι για αυτόν τον σκοπό: +Before attempting runtime bypasses, quickly map where pinning is enforced in the APK. Static discovery helps you plan hooks/patches and focus on the right code paths. -- Αυτόματα **τροποποιήστε** το **apk** για να **παρακάμψετε** το SSLPinning με [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Το καλύτερο πλεονέκτημα αυτής της επιλογής είναι ότι δεν θα χρειαστείτε root για να παρακάμψετε το SSL Pinning, αλλά θα χρειαστεί να διαγράψετε την εφαρμογή και να εγκαταστήσετε τη νέα, και αυτό δεν θα λειτουργήσει πάντα. -- Μπορείτε να χρησιμοποιήσετε **Frida** (που συζητείται παρακάτω) για να παρακάμψετε αυτή την προστασία. Εδώ έχετε έναν οδηγό για τη χρήση Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) -- Μπορείτε επίσης να προσπαθήσετε να **παρακάμψετε αυτόματα το SSL Pinning** χρησιμοποιώντας [**objection**](frida-tutorial/objection-tutorial.md)**:** `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](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) +Tool: SSLPinDetect +- Open-source static-analysis utility that decompiles the APK to Smali (via apktool) and scans for curated regex patterns of SSL/TLS pinning implementations. +- Reports exact file path, line number, and a code snippet for each match. +- Covers common frameworks and custom code paths: OkHttp CertificatePinner, custom javax.net.ssl.X509TrustManager.checkServerTrusted, SSLContext.init with custom TrustManagers/KeyManagers, and Network Security Config XML pins. -#### Αναζητώντας Κοινές Ευπάθειες Ιστού +Install +- Prereqs: Python >= 3.8, Java on PATH, apktool +```bash +git clone https://github.com/aancw/SSLPinDetect +cd SSLPinDetect +pip install -r requirements.txt +``` +Χρήση +```bash +# Basic +python sslpindetect.py -f app.apk -a apktool.jar -Είναι σημαντικό να αναζητήσετε επίσης κοινές ευπάθειες ιστού μέσα στην εφαρμογή. Λεπτομερείς πληροφορίες σχετικά με την αναγνώριση και την αντιμετώπιση αυτών των ευπαθειών είναι πέρα από το πεδίο αυτής της σύνοψης αλλά καλύπτονται εκτενώς αλλού. +# Verbose (timings + per-match path:line + snippet) +python sslpindetect.py -a apktool_2.11.0.jar -f sample/app-release.apk -v +``` +Παραδείγματα κανόνων pattern (JSON) +Χρησιμοποιήστε ή επεκτείνετε τις signatures για να εντοπίσετε proprietary/custom pinning styles. Μπορείτε να φορτώσετε το δικό σας JSON και να κάνετε scan σε μεγάλη κλίμακα. +```json +{ +"OkHttp Certificate Pinning": [ +"Lcom/squareup/okhttp/CertificatePinner;", +"Lokhttp3/CertificatePinner;", +"setCertificatePinner" +], +"TrustManager Override": [ +"Ljavax/net/ssl/X509TrustManager;", +"checkServerTrusted" +] +} +``` +Notes and tips +- Γρήγορο σάρωμα σε μεγάλες εφαρμογές μέσω multi-threading και memory-mapped I/O· pre-compiled regex μειώνει το overhead/false positives. +- Pattern collection: https://github.com/aancw/smali-sslpin-patterns +- Τυπικοί στόχοι ανίχνευσης για περαιτέρω αξιολόγηση: +- OkHttp: CertificatePinner usage, setCertificatePinner, okhttp3/okhttp package references +- Custom TrustManagers: javax.net.ssl.X509TrustManager, checkServerTrusted overrides +- Custom SSL contexts: SSLContext.getInstance + SSLContext.init with custom managers +- Declarative pins in res/xml network security config and manifest references +- Χρησιμοποιήστε τις αντιστοιχισμένες θέσεις για να σχεδιάσετε Frida hooks, static patches, ή ανασκοπήσεις config πριν από dynamic testing. + + + +#### Παράκαμψη του SSL Pinning + +Όταν εφαρμόζεται SSL Pinning, η παράκαμψή του γίνεται απαραίτητη για την επιθεώρηση της κίνησης HTTPS. Υπάρχουν διάφορες μέθοδοι για αυτό: + +- Αυτόματα **τροποποιήστε** το **apk** για να **παρακάμψετε** το SSLPinning με [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Το μεγαλύτερο πλεονέκτημα αυτής της επιλογής είναι ότι δεν θα χρειαστείτε root για να παρακάμψετε το SSL Pinning, αλλά θα χρειαστεί να διαγράψετε την εφαρμογή και να εγκαταστήσετε ξανά τη νέα, και αυτό δεν δουλεύει πάντα. +- Μπορείτε να χρησιμοποιήσετε **Frida** (συζητείται παρακάτω) για να παρακάμψετε αυτήν την προστασία. Εδώ έχετε έναν οδηγό για να χρησιμοποιήσετε Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) +- Μπορείτε επίσης να δοκιμάσετε να **αυτόματα παρακάμψετε το SSL Pinning** χρησιμοποιώντας [**objection**](frida-tutorial/objection-tutorial.md)**:** `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](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) + +#### Αναζήτηση κοινών web ευπαθειών + +Είναι σημαντικό να ψάχνετε επίσης για κοινές web ευπάθειες μέσα στην εφαρμογή. Αναλυτικές πληροφορίες για την αναγνώριση και τη μετρίαση αυτών των ευπαθειών υπερβαίνουν το πλαίσιο αυτής της περίληψης αλλά καλύπτονται εκτενώς αλλού. ### Frida -[Frida](https://www.frida.re) είναι ένα εργαλείο δυναμικής εργονομίας για προγραμματιστές, αναλυτές αντίστροφης μηχανικής και ερευνητές ασφαλείας.\ -**Μπορείτε να έχετε πρόσβαση σε εκτελούμενες εφαρμογές και να συνδέσετε μεθόδους σε πραγματικό χρόνο για να αλλάξετε τη συμπεριφορά, να αλλάξετε τιμές, να εξάγετε τιμές, να εκτελέσετε διαφορετικό κώδικα...**\ -Αν θέλετε να κάνετε pentest σε Android εφαρμογές πρέπει να ξέρετε πώς να χρησιμοποιείτε το Frida. +[Frida](https://www.frida.re) είναι ένα dynamic instrumentation toolkit για developers, reverse-engineers, και security researchers.\ +**Μπορείτε να έχετε πρόσβαση σε τρέχουσα εφαρμογή και να κάνετε hook μεθόδους σε run time για να αλλάξετε τη συμπεριφορά, να αλλάξετε τιμές, να εξάγετε τιμές, να εκτελέσετε άλλο κώδικα...**\ +Αν θέλετε να κάνετε pentest σε Android εφαρμογές πρέπει να ξέρετε πώς να χρησιμοποιείτε Frida. -- Μάθετε πώς να χρησιμοποιείτε το Frida: [**Frida tutorial**](frida-tutorial/index.html) -- Μερικά "GUI" για ενέργειες με το Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) -- Ojection είναι εξαιρετικό για την αυτοματοποίηση της χρήσης του Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) -- Μπορείτε να βρείτε μερικά καταπληκτικά σενάρια Frida εδώ: [**https://codeshare.frida.re/**](https://codeshare.frida.re) -- Προσπαθήστε να παρακάμψετε μηχανισμούς anti-debugging / anti-frida φορτώνοντας το Frida όπως υποδεικνύεται σε [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (εργαλείο [linjector](https://github.com/erfur/linjector-rs)) +- Learn how to use Frida: [**Frida tutorial**](frida-tutorial/index.html) +- Some "GUI" for actions with Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) +- Ojection is great to automate the use of Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) +- You can find some Awesome Frida scripts here: [**https://codeshare.frida.re/**](https://codeshare.frida.re) +- Προσπαθήστε να παρακάμψετε anti-debugging / anti-frida μηχανισμούς φορτώνοντας το Frida όπως υποδεικνύεται στο [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (εργαλείο [linjector](https://github.com/erfur/linjector-rs)) -#### Ροή εργασίας παράκαμψης anti-instrumentation & SSL pinning +#### Anti-instrumentation & SSL pinning bypass workflow {{#ref}} android-anti-instrumentation-and-ssl-pinning-bypass.md {{#endref}} -### **Dump Memory - Fridump** +### Εξαγωγή μνήμης - Fridump -Ελέγξτε αν η εφαρμογή αποθηκεύει ευαίσθητες πληροφορίες μέσα στη μνήμη που δεν θα έπρεπε να αποθηκεύει, όπως κωδικούς πρόσβασης ή μνημονικά. +Ελέγξτε αν η εφαρμογή αποθηκεύει ευαίσθητες πληροφορίες στη μνήμη που δεν θα έπρεπε να αποθηκεύει, όπως κωδικούς πρόσβασης ή mnemonics. -Χρησιμοποιώντας [**Fridump3**](https://github.com/rootbsd/fridump3) μπορείτε να κάνετε dump τη μνήμη της εφαρμογής με: +Χρησιμοποιώντας [**Fridump3**](https://github.com/rootbsd/fridump3) μπορείτε να εξάγετε τη μνήμη της εφαρμογής με: ```bash # With PID python3 fridump3.py -u @@ -471,120 +528,120 @@ python3 fridump3.py -u frida-ps -Uai python3 fridump3.py -u "" ``` -Αυτό θα εκφορτώσει τη μνήμη στον φάκελο ./dump, και εκεί μπορείτε να κάνετε grep με κάτι όπως: +Αυτό θα dump τη μνήμη στον φάκελο ./dump, και εκεί μπορείτε να κάνετε grep με κάτι σαν: ```bash 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]+$" ``` -### **Ευαίσθητα δεδομένα στο Keystore** +### **Sensitive data in Keystore** -Στο Android, το Keystore είναι το καλύτερο μέρος για να αποθηκεύσετε ευαίσθητα δεδομένα, ωστόσο, με αρκετά δικαιώματα είναι ακόμα **δυνατό να αποκτήσετε πρόσβαση σε αυτό**. Καθώς οι εφαρμογές τείνουν να αποθηκεύουν εδώ **ευαίσθητα δεδομένα σε καθαρό κείμενο**, οι pentests θα πρέπει να ελέγχουν γι' αυτό ως χρήστες root ή κάποιοι με φυσική πρόσβαση στη συσκευή θα μπορούσαν να είναι σε θέση να κλέψουν αυτά τα δεδομένα. +Στο Android το Keystore είναι το καλύτερο μέρος για να αποθηκεύσετε ευαίσθητα δεδομένα, ωστόσο με επαρκή προνόμια εξακολουθεί να είναι **δυνατό να αποκτηθεί πρόσβαση σε αυτό**. Καθώς οι εφαρμογές τείνουν να αποθηκεύουν εδώ **ευαίσθητα δεδομένα σε απλό κείμενο**, οι pentests πρέπει να το ελέγξουν, καθώς ένας root user ή κάποιος με φυσική πρόσβαση στη συσκευή θα μπορούσε να κλέψει αυτά τα δεδομένα. -Ακόμα και αν μια εφαρμογή αποθηκεύει δεδομένα στο keystore, τα δεδομένα θα πρέπει να είναι κρυπτογραφημένα. +Ακόμη κι αν μια εφαρμογή αποθήκευσε δεδομένα στο keystore, τα δεδομένα θα πρέπει να είναι κρυπτογραφημένα. -Για να αποκτήσετε πρόσβαση στα δεδομένα μέσα στο keystore, μπορείτε να χρησιμοποιήσετε αυτό το σενάριο Frida: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) +Για να αποκτήσετε πρόσβαση στα δεδομένα μέσα στο keystore μπορείτε να χρησιμοποιήσετε αυτό το Frida script: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) ```bash frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` -### **Παράκαμψη Δακτυλικών Αποτυπωμάτων/Βιομετρικών** +### **Fingerprint/Biometrics Bypass** -Χρησιμοποιώντας το παρακάτω σενάριο Frida, θα μπορούσε να είναι δυνατό να **παρακαμφθεί η αυθεντικοποίηση δακτυλικών αποτυπωμάτων** που ενδέχεται να εκτελούν οι εφαρμογές Android προκειμένου να **προστατεύσουν ορισμένες ευαίσθητες περιοχές:** +Χρησιμοποιώντας το παρακάτω Frida script, είναι πιθανό να γίνει **bypass fingerprint authentication** που ενδέχεται να εφαρμόζουν εφαρμογές Android για να **προστατεύσουν ορισμένες ευαίσθητες περιοχές:** ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` -### **Εικόνες Φόντου** +### **Εικόνες φόντου** -Όταν βάζετε μια εφαρμογή σε φόντο, το Android αποθηκεύει μια **στιγμιότυπο της εφαρμογής** έτσι ώστε όταν ανακτηθεί στο προσκήνιο να αρχίσει να φορτώνει την εικόνα πριν από την εφαρμογή, ώστε να φαίνεται ότι η εφαρμογή φορτώθηκε πιο γρήγορα. +Όταν βάζεις μια εφαρμογή στο παρασκήνιο, το Android αποθηκεύει ένα **στιγμιότυπο της εφαρμογής** ώστε όταν επανέλθει στο προσκήνιο να ξεκινήσει φορτώνοντας την εικόνα πριν από την εφαρμογή, ώστε να φαίνεται ότι η εφαρμογή φόρτωσε πιο γρήγορα. -Ωστόσο, αν αυτό το στιγμιότυπο περιέχει **ευαίσθητες πληροφορίες**, κάποιος με πρόσβαση στο στιγμιότυπο μπορεί να **κλέψει αυτές τις πληροφορίες** (σημειώστε ότι χρειάζεστε root για να έχετε πρόσβαση σε αυτό). +Ωστόσο, αν αυτό το στιγμιότυπο περιέχει **ευαίσθητες πληροφορίες**, κάποιος με πρόσβαση στο στιγμιότυπο μπορεί να **κλέψει αυτές τις πληροφορίες** (σημείωση: χρειάζεστε root για να αποκτήσετε πρόσβαση). -Τα στιγμιότυπα συνήθως αποθηκεύονται γύρω από: **`/data/system_ce/0/snapshots`** +Τα στιγμιότυπα συνήθως αποθηκεύονται εδώ: **`/data/system_ce/0/snapshots`** -Το Android παρέχει έναν τρόπο να **αποτρέψει την καταγραφή στιγμιότυπων οθόνης ρυθμίζοντας την παράμετρο διάταξης FLAG_SECURE**. Χρησιμοποιώντας αυτή τη σημαία, το περιεχόμενο του παραθύρου θεωρείται ασφαλές, αποτρέποντας την εμφάνιση σε στιγμιότυπα οθόνης ή την προβολή σε μη ασφαλείς οθόνες. +Το Android παρέχει έναν τρόπο για να **αποτραπεί η λήψη screenshot ρυθμίζοντας την παράμετρο layout FLAG_SECURE**. Χρησιμοποιώντας αυτή τη σημαία, τα περιεχόμενα του παραθύρου θεωρούνται ασφαλή, αποτρέποντας την εμφάνισή τους σε screenshots ή την προβολή τους σε μη ασφαλείς οθόνες. ```bash getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ``` -### **Αναλυτής Εφαρμογών Android** +### **Android Application Analyzer** -Αυτό το εργαλείο μπορεί να σας βοηθήσει να διαχειριστείτε διάφορα εργαλεία κατά τη διάρκεια της δυναμικής ανάλυσης: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) +Αυτό το εργαλείο μπορεί να σας βοηθήσει στη διαχείριση διαφόρων εργαλείων κατά τη δυναμική ανάλυση: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) -### Εισαγωγή Intent +### Intent Injection -Οι προγραμματιστές συχνά δημιουργούν proxy components όπως activities, services και broadcast receivers που χειρίζονται αυτά τα Intents και τα περνούν σε μεθόδους όπως `startActivity(...)` ή `sendBroadcast(...)`, οι οποίες μπορεί να είναι επικίνδυνες. +Οι developers συχνά δημιουργούν proxy components όπως activities, services, και broadcast receivers που χειρίζονται αυτά τα Intents και τα περνούν σε μεθόδους όπως `startActivity(...)` ή `sendBroadcast(...)`, κάτι που μπορεί να είναι επικίνδυνο. -Ο κίνδυνος έγκειται στην επιτρεπτικότητα στους επιτιθέμενους να ενεργοποιούν μη εξαγόμενα components εφαρμογής ή να έχουν πρόσβαση σε ευαίσθητους content providers παραπλανώντας αυτά τα Intents. Ένα αξιοσημείωτο παράδειγμα είναι το component `WebView` που μετατρέπει URLs σε αντικείμενα `Intent` μέσω `Intent.parseUri(...)` και στη συνέχεια τα εκτελεί, ενδεχομένως οδηγώντας σε κακόβουλες εισαγωγές Intent. +Ο κίνδυνος έγκειται στην δυνατότητα οι attackers να ενεργοποιήσουν μη-εξαγόμενα components της εφαρμογής ή να αποκτήσουν πρόσβαση σε ευαίσθητους content providers παραπλανώντας αυτά τα Intents. Ένα χαρακτηριστικό παράδειγμα είναι το `WebView` component που μετατρέπει URLs σε `Intent` objects μέσω `Intent.parseUri(...)` και στη συνέχεια τα εκτελεί, ενδεχομένως οδηγώντας σε κακόβουλες Intent injections. -### Βασικά Σημεία +### Essential Takeaways -- **Εισαγωγή Intent** είναι παρόμοια με το πρόβλημα Open Redirect του ιστού. -- Οι εκμεταλλεύσεις περιλαμβάνουν την παράδοση αντικειμένων `Intent` ως extras, τα οποία μπορούν να ανακατευθυνθούν για να εκτελέσουν μη ασφαλείς λειτουργίες. -- Μπορεί να εκθέσει μη εξαγόμενα components και content providers στους επιτιθέμενους. -- Η μετατροπή URL σε `Intent` του `WebView` μπορεί να διευκολύνει ακούσιες ενέργειες. +- **Intent Injection** is similar to web's Open Redirect issue. +- Exploits involve passing `Intent` objects as extras, which can be redirected to execute unsafe operations. +- It can expose non-exported components and content providers to attackers. +- `WebView`’s URL to `Intent` conversion can facilitate unintended actions. -### Εισαγωγές Πελάτη Android και άλλες +### Android Client Side Injections and others -Πιθανώς γνωρίζετε για αυτούς τους τύπους ευπαθειών από τον Ιστό. Πρέπει να είστε ιδιαίτερα προσεκτικοί με αυτές τις ευπάθειες σε μια εφαρμογή Android: +Πιθανώς να γνωρίζετε αυτό το είδος ευπαθειών από το Web. Πρέπει να είστε ιδιαίτερα προσεκτικοί με αυτές τις ευπάθειες σε μια Android εφαρμογή: -- **SQL Injection:** Όταν ασχολείστε με δυναμικά queries ή Content-Providers, βεβαιωθείτε ότι χρησιμοποιείτε παραμετροποιημένα queries. -- **JavaScript Injection (XSS):** Επαληθεύστε ότι η υποστήριξη JavaScript και Plugin είναι απενεργοποιημένη για οποιαδήποτε WebViews (απενεργοποιημένη από προεπιλογή). [Περισσότερες πληροφορίες εδώ](webview-attacks.md#javascript-enabled). -- **Τοπική Συμπερίληψη Αρχείων:** Οι WebViews θα πρέπει να έχουν απενεργοποιημένη την πρόσβαση στο σύστημα αρχείων (ενεργοποιημένη από προεπιλογή) - `(webview.getSettings().setAllowFileAccess(false);)`. [Περισσότερες πληροφορίες εδώ](webview-attacks.md#javascript-enabled). -- **Διαρκή cookies**: Σε πολλές περιπτώσεις, όταν η εφαρμογή android ολοκληρώνει τη συνεδρία, το cookie δεν ανακαλείται ή μπορεί ακόμη και να αποθηκευτεί στον δίσκο. -- [**Secure Flag** στα cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) +- **SQL Injection:** Όταν χειρίζεστε δυναμικά queries ή Content-Providers βεβαιωθείτε ότι χρησιμοποιείτε parameterized queries. +- **JavaScript Injection (XSS):** Ελέγξτε ότι το JavaScript και το Plugin support είναι απενεργοποιημένα για οποιαδήποτε WebViews (disabled by default). [More info here](webview-attacks.md#javascript-enabled). +- **Local File Inclusion:** Τα WebViews θα πρέπει να έχουν απενεργοποιημένη την πρόσβαση στο file system (enabled by default) - `(webview.getSettings().setAllowFileAccess(false);)`. [More info here](webview-attacks.md#javascript-enabled). +- **Eternal cookies**: Σε αρκετές περιπτώσεις όταν η android εφαρμογή τερματίζει τη συνεδρία, το cookie δεν ανακαλείται ή μπορεί ακόμα και να αποθηκευτεί στο δίσκο. +- [**Secure Flag** in cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) --- -## Αυτόματη Ανάλυση +## Automatic Analysis ### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) -**Στατική ανάλυση** +**Static analysis** ![](<../../images/image (866).png>) -**Αξιολόγηση ευπαθειών της εφαρμογής** χρησιμοποιώντας ένα ωραίο web-based frontend. Μπορείτε επίσης να εκτελέσετε δυναμική ανάλυση (αλλά πρέπει να προετοιμάσετε το περιβάλλον). +**Vulnerability assessment of the application** χρησιμοποιώντας ένα ευχάριστο web-based frontend. Μπορείτε επίσης να εκτελέσετε dynamic analysis (αλλά χρειάζεται να προετοιμάσετε το περιβάλλον). ```bash docker pull opensecurity/mobile-security-framework-mobsf docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest ``` -Παρατηρήστε ότι το MobSF μπορεί να αναλύσει **Android**(apk)**, IOS**(ipa) **και Windows**(apx) εφαρμογές (_Οι εφαρμογές Windows πρέπει να αναλύονται από ένα MobSF εγκατεστημένο σε έναν υπολογιστή Windows_).\ -Επίσης, αν δημιουργήσετε ένα **ZIP** αρχείο με τον πηγαίο κώδικα μιας **Android** ή **IOS** εφαρμογής (πηγαίνετε στον ριζικό φάκελο της εφαρμογής, επιλέξτε τα πάντα και δημιουργήστε ένα ZIP αρχείο), θα μπορέσει να το αναλύσει επίσης. +Σημειώστε ότι το MobSF μπορεί να αναλύσει εφαρμογές **Android**(apk), **IOS**(ipa) και **Windows**(apx) (_Windows applications must be analyzed from a MobSF installed in a Windows host_).\ +Επιπλέον, αν δημιουργήσετε ένα αρχείο **ZIP** με τον πηγαίο κώδικα μιας εφαρμογής **Android** ή **IOS** (μεταβείτε στον root φάκελο της εφαρμογής, επιλέξτε τα πάντα και δημιουργήστε ένα ZIPfile), το MobSF θα μπορέσει επίσης να το αναλύσει. -Το MobSF επιτρέπει επίσης την **diff/Compare** ανάλυση και την ενσωμάτωση του **VirusTotal** (θα χρειαστεί να ρυθμίσετε το API key σας στο _MobSF/settings.py_ και να το ενεργοποιήσετε: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Μπορείτε επίσης να ρυθμίσετε το `VT_UPLOAD` σε `False`, τότε το **hash** θα **ανεβεί** αντί για το αρχείο. +Το MobSF σας επιτρέπει επίσης να κάνετε **diff/Compare** αναλύσεων και να ενσωματώσετε το **VirusTotal** (θα χρειαστεί να ορίσετε το API key σας στο _MobSF/settings.py_ και να το ενεργοποιήσετε: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Μπορείτε επίσης να ορίσετε το `VT_UPLOAD` σε `False`, οπότε το **hash** θα είναι **upload** αντί για το αρχείο. -### Βοηθητική Δυναμική ανάλυση με το MobSF +### Βοηθημένη Δυναμική ανάλυση με MobSF -**MobSF** μπορεί επίσης να είναι πολύ χρήσιμο για **δυναμική ανάλυση** σε **Android**, αλλά σε αυτή την περίπτωση θα χρειαστεί να εγκαταστήσετε το MobSF και το **genymotion** στον υπολογιστή σας (μια VM ή Docker δεν θα λειτουργήσει). _Σημείωση: Πρέπει να **ξεκινήσετε πρώτα μια VM στο genymotion** και **μετά το MobSF.**_\ -Ο **δυναμικός αναλυτής MobSF** μπορεί να: +Το **MobSF** μπορεί επίσης να είναι πολύ χρήσιμο για **dynamic analysis** σε **Android**, αλλά σε αυτή την περίπτωση θα χρειαστεί να εγκαταστήσετε το MobSF και το **genymotion** στον host σας (ένα VM ή Docker δεν θα λειτουργήσει). _Σημείωση: Πρέπει να **start first a VM in genymotion** και **then MobSF.**_\ +Ο **MobSF dynamic analyser** μπορεί: -- **Dump application data** (URLs, logs, clipboard, screenshots που κάνατε εσείς, screenshots που έγιναν από τον "**Exported Activity Tester**", emails, SQLite βάσεις δεδομένων, XML αρχεία και άλλα δημιουργημένα αρχεία). Όλα αυτά γίνονται αυτόματα εκτός από τα screenshots, πρέπει να πατήσετε όταν θέλετε ένα screenshot ή να πατήσετε "**Exported Activity Tester**" για να αποκτήσετε screenshots όλων των εξαγόμενων δραστηριοτήτων. -- Capture **HTTPS traffic** -- Χρησιμοποιήστε το **Frida** για να αποκτήσετε **runtime** **information** +- **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). Όλα αυτά γίνονται αυτόματα εκτός από τα screenshots — πρέπει να πατήσετε όταν θέλετε ένα screenshot ή να πατήσετε "**Exported Activity Tester**" για να λάβετε screenshots όλων των exported activities. +- **Capture HTTPS traffic** +- Use **Frida** to obtain **runtime** **information** -Από τις εκδόσεις Android **> 5**, θα **ξεκινήσει αυτόματα το Frida** και θα ρυθμίσει τις παγκόσμιες ρυθμίσεις **proxy** για να **καταγράψει** την κίνηση. Θα καταγράψει μόνο την κίνηση από την εφαρμογή που δοκιμάζεται. +Από android **versions > 5**, θα **automatically start Frida** και θα ορίσει τις παγκόσμιες ρυθμίσεις **proxy** για να καταγράψει την κίνηση. Θα καταγράφει μόνο την κίνηση από την εφαρμογή που δοκιμάζεται. **Frida** -Από προεπιλογή, θα χρησιμοποιήσει επίσης κάποια Frida Scripts για να **παρακάμψει το SSL pinning**, **root detection** και **debugger detection** και για να **παρακολουθήσει ενδιαφέροντα APIs**.\ -Το MobSF μπορεί επίσης να **καλέσει εξαγόμενες δραστηριότητες**, να τραβήξει **screenshots** από αυτές και να τις **αποθηκεύσει** για την αναφορά. +Κατά προεπιλογή, θα χρησιμοποιήσει επίσης ορισμένα Frida Scripts για να **bypass SSL pinning**, **root detection** και **debugger detection** και για να **monitor interesting APIs**.\ +Το MobSF μπορεί επίσης να **invoke exported activities**, να τραβήξει **screenshots** τους και να τα **save** για την αναφορά. -Για να **ξεκινήσετε** τη δυναμική δοκιμή πατήστε το πράσινο κουμπί: "**Start Instrumentation**". Πατήστε το "**Frida Live Logs**" για να δείτε τα logs που δημιουργούνται από τα Frida scripts και "**Live API Monitor**" για να δείτε όλες τις κλήσεις σε hooked μεθόδους, τα ορίσματα που περνιούνται και τις επιστρεφόμενες τιμές (αυτό θα εμφανιστεί μετά την πίεση του "Start Instrumentation").\ -Το MobSF επιτρέπει επίσης να φορτώσετε τα δικά σας **Frida scripts** (για να στείλετε τα αποτελέσματα των Friday scripts στο MobSF χρησιμοποιήστε τη λειτουργία `send()`). Έχει επίσης **πολλά προ-γραμμένα scripts** που μπορείτε να φορτώσετε (μπορείτε να προσθέσετε περισσότερα στο `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), απλά **επιλέξτε τα**, πατήστε "**Load**" και πατήστε "**Start Instrumentation**" (θα μπορείτε να δείτε τα logs αυτών των scripts μέσα στο "**Frida Live Logs**"). +Για να **start** το dynamic testing πατήστε το πράσινο κουμπί: "**Start Instrumentation**". Πατήστε τα "**Frida Live Logs**" για να δείτε τα logs που παράγονται από τα Frida scripts και το "**Live API Monitor**" για να δείτε όλες τις κλήσεις σε hooked methods, τα arguments που περνάνε και τις τιμές που επιστρέφονται (αυτό θα εμφανιστεί μετά το πάτημα του "Start Instrumentation").\ +Το MobSF επίσης σας επιτρέπει να φορτώσετε τα δικά σας **Frida scripts** (για να στείλετε τα αποτελέσματα των Frida scripts στο MobSF χρησιμοποιήστε τη συνάρτηση `send()`). Έχει επίσης **several pre-written scripts** που μπορείτε να φορτώσετε (μπορείτε να προσθέσετε περισσότερα στο `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), απλώς **select them**, πατήστε "**Load**" και πατήστε "**Start Instrumentation**" (θα μπορείτε να δείτε τα logs αυτών των scripts μέσα στα "**Frida Live Logs**"). ![](<../../images/image (419).png>) -Επιπλέον, έχετε κάποιες βοηθητικές λειτουργίες Frida: +Επιπλέον, έχετε μερικές βοηθητικές λειτουργίες του Frida: -- **Enumerate Loaded Classes**: Θα εκτυπώσει όλες τις φορτωμένες κλάσεις -- **Capture Strings**: Θα εκτυπώσει όλες τις καταγεγραμμένες συμβολοσειρές κατά τη χρήση της εφαρμογής (πολύ θορυβώδες) -- **Capture String Comparisons**: Μπορεί να είναι πολύ χρήσιμο. Θα **δείξει τις 2 συμβολοσειρές που συγκρίνονται** και αν το αποτέλεσμα ήταν True ή False. +- **Enumerate Loaded Classes**: Εκτυπώνει όλες τις φορτωμένες κλάσεις +- **Capture Strings**: Εκτυπώνει όλα τα capture strings κατά τη χρήση της εφαρμογής (πάρα πολύ noisy) +- **Capture String Comparisons**: Μπορεί να είναι πολύ χρήσιμο. Θα **show the 2 strings being compared** και αν το αποτέλεσμα ήταν True ή False. - **Enumerate Class Methods**: Βάλτε το όνομα της κλάσης (όπως "java.io.File") και θα εκτυπώσει όλες τις μεθόδους της κλάσης. -- **Search Class Pattern**: Αναζητήστε κλάσεις κατά μοτίβο -- **Trace Class Methods**: **Trace** μια **ολόκληρη κλάση** (δείτε τις εισόδους και εξόδους όλων των μεθόδων της κλάσης). Θυμηθείτε ότι από προεπιλογή το MobSF παρακολουθεί πολλές ενδιαφέρουσες μεθόδους Android Api. +- **Search Class Pattern**: Αναζήτηση κλάσεων με μοτίβο +- **Trace Class Methods**: **Trace** ολόκληρη μια **class** (δείτε inputs και outputs όλων των μεθόδων της κλάσης). Θυμηθείτε ότι κατά προεπιλογή το MobSF κάνει trace αρκετές ενδιαφέρουσες Android Api μεθόδους. -Αφού επιλέξετε το βοηθητικό module που θέλετε να χρησιμοποιήσετε, πρέπει να πατήσετε "**Start Intrumentation**" και θα δείτε όλες τις εξόδους στο "**Frida Live Logs**". +Μόλις επιλέξετε το auxiliary module που θέλετε να χρησιμοποιήσετε, πρέπει να πατήσετε "**Start Intrumentation**" και θα δείτε όλα τα outputs στα "**Frida Live Logs**". **Shell** -Το MobSF σας παρέχει επίσης ένα shell με κάποιες **adb** εντολές, **MobSF commands**, και κοινές **shell** **εντολές** στο κάτω μέρος της σελίδας δυναμικής ανάλυσης. Ορισμένες ενδιαφέρουσες εντολές: +Το MobSF επίσης παρέχει ένα shell με μερικές εντολές **adb**, **MobSF commands**, και κοινές εντολές **shell** στο κάτω μέρος της σελίδας dynamic analysis. Μερικές ενδιαφέρουσες εντολές: ```bash help shell ls @@ -593,34 +650,34 @@ exported_activities services receivers ``` -**HTTP εργαλεία** +**HTTP tools** -Όταν η κίνηση http καταγράφεται, μπορείτε να δείτε μια άσχημη προβολή της καταγεγραμμένης κίνησης στο "**HTTP(S) Traffic**" κάτω ή μια πιο ωραία προβολή στο "**Start HTTPTools**" πράσινο κουμπί. Από τη δεύτερη επιλογή, μπορείτε να **στείλετε** τα **καταγεγραμμένα αιτήματα** σε **proxy** όπως το Burp ή το Owasp ZAP.\ -Για να το κάνετε αυτό, _ενεργοποιήστε το Burp -->_ _απενεργοποιήστε το Intercept --> στο MobSB HTTPTools επιλέξτε το αίτημα_ --> πατήστε "**Send to Fuzzer**" --> _επιλέξτε τη διεύθυνση proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). +Όταν η HTTP κίνηση καταγράφεται μπορείς να δεις μια άσχημη προβολή της καταγεγραμμένης κίνησης στο κάτω μέρος "**HTTP(S) Traffic**" ή μια πιο καθαρή προβολή στο πράσινο κουμπί "**Start HTTPTools**". Από τη δεύτερη επιλογή, μπορείς να **send** τα **captured requests** σε **proxies** όπως Burp ή Owasp ZAP.\ +Για να το κάνεις, _power on Burp -->_ _turn off Intercept --> in MobSB HTTPTools select the request_ --> πάτησε "**Send to Fuzzer**" --> _select the proxy address_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). -Αφού ολοκληρώσετε την δυναμική ανάλυση με το MobSF, μπορείτε να πατήσετε το "**Start Web API Fuzzer**" για να **fuzz http αιτήματα** και να αναζητήσετε ευπάθειες. +Μόλις τελειώσεις το dynamic analysis με MobSF μπορείς να πατήσεις "**Start Web API Fuzzer**" για να **fuzz http requests** και να ψάξεις για ευπάθειες. > [!TIP] -> Μετά την εκτέλεση μιας δυναμικής ανάλυσης με το MobSF, οι ρυθμίσεις του proxy μπορεί να είναι λανθασμένες και δεν θα μπορείτε να τις διορθώσετε από το GUI. Μπορείτε να διορθώσετε τις ρυθμίσεις του proxy κάνοντας: +> Μετά από ένα dynamic analysis με MobSF οι proxy settings μπορεί να είναι λανθασμένες και να μην μπορείς να τα διορθώσεις από το GUI. Μπορείς να διορθώσεις τα proxy settings εκτελώντας: > > ``` > adb shell settings put global http_proxy :0 > ``` -### Βοηθητική Δυναμική Ανάλυση με το Inspeckage +### Assisted Dynamic Analysis with Inspeckage -Μπορείτε να αποκτήσετε το εργαλείο από [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ -Αυτό το εργαλείο θα χρησιμοποιήσει μερικά **Hooks** για να σας ενημερώσει **τι συμβαίνει στην εφαρμογή** ενώ εκτελείτε μια **δυναμική ανάλυση**. +Μπορείς να πάρεις το εργαλείο από [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ +Αυτό το εργαλείο θα χρησιμοποιήσει μερικά **Hooks** για να σε ενημερώνει **what is happening in the application** ενώ πραγματοποιείς ένα **dynamic analysis**. ### [Yaazhini](https://www.vegabird.com/yaazhini/) -Αυτό είναι ένα **υπέροχο εργαλείο για να εκτελέσετε στατική ανάλυση με GUI** +Αυτό είναι ένα **great tool to perform static analysis with a GUI** ![](<../../images/image (741).png>) ### [Qark](https://github.com/linkedin/qark) -Αυτό το εργαλείο έχει σχεδιαστεί για να αναζητά αρκετές **ευπάθειες σχετικές με την ασφάλεια εφαρμογών Android**, είτε στον **κώδικα πηγής** είτε σε **πακεταρισμένα APKs**. Το εργαλείο είναι επίσης **ικανό να δημιουργεί ένα "Proof-of-Concept" deployable APK** και **εντολές ADB**, για να εκμεταλλευτεί κάποιες από τις ευπάθειες που βρέθηκαν (Εκτεθειμένες δραστηριότητες, intents, tapjacking...). Όπως και με το Drozer, δεν υπάρχει ανάγκη να κάνετε root τη συσκευή δοκιμής. +Αυτό το εργαλείο έχει σχεδιαστεί για να εντοπίζει διάφορες **security related Android application vulnerabilities**, είτε σε **source code** είτε σε **packaged APKs**. Το εργαλείο είναι επίσης **capable of creating a "Proof-of-Concept" deployable APK** και **ADB commands**, για να εκμεταλλευτεί μερικές από τις εντοπισμένες ευπάθειες (Exposed activities, intents, tapjacking...). Όπως και με Drozer, δεν υπάρχει ανάγκη για root στη συσκευή δοκιμής. ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk @@ -630,7 +687,7 @@ qark --java path/to/specific/java/file.java ### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git) - Εμφανίζει όλα τα εξαγόμενα αρχεία για εύκολη αναφορά -- Αυτόματα αποσυμπιέζει αρχεία APK σε μορφή Java και Smali +- Απομεταγλωττίζει αυτόματα τα αρχεία APK σε μορφή Java και Smali - Αναλύει το AndroidManifest.xml για κοινές ευπάθειες και συμπεριφορές - Στατική ανάλυση πηγαίου κώδικα για κοινές ευπάθειες και συμπεριφορές - Πληροφορίες συσκευής @@ -640,11 +697,11 @@ reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -SUPER είναι μια εφαρμογή γραμμής εντολών που μπορεί να χρησιμοποιηθεί σε Windows, MacOS X και Linux, που αναλύει _.apk_ αρχεία αναζητώντας ευπάθειες. Το κάνει αυτό αποσυμπιέζοντας τα APK και εφαρμόζοντας μια σειρά κανόνων για να ανιχνεύσει αυτές τις ευπάθειες. +Το SUPER είναι μια εφαρμογή γραμμής εντολών που μπορεί να χρησιμοποιηθεί σε Windows, MacOS X και Linux, η οποία αναλύει _.apk_ αρχεία αναζητώντας ευπάθειες. Αυτό γίνεται αποσυμπιέζοντας τα APKs και εφαρμόζοντας μια σειρά κανόνων για να εντοπιστούν αυτές οι ευπάθειες. -Όλοι οι κανόνες είναι κεντραρισμένοι σε ένα αρχείο `rules.json`, και κάθε εταιρεία ή δοκιμαστής μπορεί να δημιουργήσει τους δικούς της κανόνες για να αναλύσει ό,τι χρειάζεται. +Όλοι οι κανόνες είναι συγκεντρωμένοι σε ένα αρχείο `rules.json`, και κάθε εταιρεία ή tester μπορεί να δημιουργήσει τους δικούς της κανόνες για να αναλύσει ό,τι χρειάζεται. -Κατεβάστε τα τελευταία δυαδικά από τη [σελίδα λήψης](https://superanalyzer.rocks/download.html) +Κατεβάστε τα πιο πρόσφατα binaries από τη [download page](https://superanalyzer.rocks/download.html) ``` super-analyzer {apk_file} ``` @@ -652,9 +709,9 @@ super-analyzer {apk_file} ![](<../../images/image (297).png>) -Το StaCoAn είναι ένα **crossplatform** εργαλείο που βοηθά προγραμματιστές, κυνηγούς bug bounty και ηθικούς χάκερ να εκτελούν [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) σε κινητές εφαρμογές. +Το StaCoAn είναι ένα **πολυπλατφορμικό** εργαλείο που βοηθά προγραμματιστές, bugbounty hunters και ethical hackers να πραγματοποιούν [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) σε mobile εφαρμογές. -Η έννοια είναι ότι σύρετε και αποθέτετε το αρχείο της κινητής σας εφαρμογής (ένα αρχείο .apk ή .ipa) στην εφαρμογή StaCoAn και θα δημιουργήσει μια οπτική και φορητή αναφορά για εσάς. Μπορείτε να προσαρμόσετε τις ρυθμίσεις και τις λίστες λέξεων για να αποκτήσετε μια εξατομικευμένη εμπειρία. +Η ιδέα είναι να σύρετε και να αποθέσετε το αρχείο της mobile εφαρμογής σας (ένα .apk ή .ipa αρχείο) στην εφαρμογή StaCoAn και αυτή θα δημιουργήσει για εσάς μια οπτική και φορητή αναφορά. Μπορείτε να προσαρμόσετε τις ρυθμίσεις και τις wordlists για να έχετε μια εξατομικευμένη εμπειρία. Κατεβάστε[ latest release](https://github.com/vincentcox/StaCoAn/releases): ``` @@ -662,7 +719,7 @@ super-analyzer {apk_file} ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs_Framework) -Το AndroBugs Framework είναι ένα σύστημα ανάλυσης ευπαθειών Android που βοηθά τους προγραμματιστές ή τους χάκερ να εντοπίσουν πιθανές ευπάθειες ασφαλείας σε εφαρμογές Android.\ +Το AndroBugs Framework είναι ένα σύστημα ανάλυσης ευπαθειών για Android που βοηθά προγραμματιστές ή hackers να εντοπίσουν πιθανές ευπάθειες ασφαλείας στις Android εφαρμογές.\ [Windows releases](https://github.com/AndroBugs/AndroBugs_Framework/releases) ``` python androbugs.py -f [APK file] @@ -670,11 +727,11 @@ androbugs.exe -f [APK file] ``` ### [Androwarn](https://github.com/maaaaz/androwarn) -**Androwarn** είναι ένα εργαλείο του οποίου κύριος στόχος είναι να ανιχνεύει και να προειδοποιεί τον χρήστη για πιθανές κακόβουλες συμπεριφορές που αναπτύσσονται από μια εφαρμογή Android. +**Androwarn** είναι ένα εργαλείο του οποίου ο κύριος στόχος είναι να εντοπίζει και να ειδοποιεί τον χρήστη σχετικά με πιθανές κακόβουλες συμπεριφορές που αναπτύσσει μια εφαρμογή Android. -Η ανίχνευση πραγματοποιείται με την **στατική ανάλυση** του Dalvik bytecode της εφαρμογής, που αναπαρίσταται ως **Smali**, με τη βιβλιοθήκη [`androguard`](https://github.com/androguard/androguard). +Ο εντοπισμός πραγματοποιείται με την **static analysis** του Dalvik bytecode της εφαρμογής, που αναπαρίσταται ως **Smali**, χρησιμοποιώντας τη βιβλιοθήκη [`androguard`](https://github.com/androguard/androguard). -Αυτό το εργαλείο αναζητά **συνηθισμένες συμπεριφορές "κακών" εφαρμογών** όπως: Εξαγωγή τηλεφωνικών αναγνωριστικών, Παρεμβολή ροής ήχου/βίντεο, Τροποποίηση δεδομένων PIM, Εκτέλεση αυθαίρετου κώδικα... +Αυτό το εργαλείο αναζητά **συνηθισμένες συμπεριφορές "κακών" εφαρμογών** όπως: Telephony identifiers exfiltration, Audio/video flow interception, PIM data modification, Arbitrary code execution... ``` python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ``` @@ -682,79 +739,82 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ![](<../../images/image (595).png>) -**MARA** είναι ένα **M**obile **A**pplication **R**everse engineering και **A**nalysis Framework. Είναι ένα εργαλείο που συγκεντρώνει κοινώς χρησιμοποιούμενα εργαλεία αντίστροφης μηχανικής και ανάλυσης εφαρμογών κινητών, για να βοηθήσει στη δοκιμή εφαρμογών κινητών ενάντια στις απειλές ασφάλειας κινητών του OWASP. Σκοπός του είναι να διευκολύνει αυτή την εργασία και να την κάνει πιο φιλική προς τους προγραμματιστές εφαρμογών κινητών και τους επαγγελματίες ασφάλειας. +**MARA** is a **M**obile **A**pplication **R**everse engineering and **A**nalysis Framework. Είναι ένα εργαλείο που συγκεντρώνει κοινά χρησιμοποιούμενα εργαλεία για mobile application reverse engineering και analysis, για να βοηθήσει στο testing mobile applications ενάντια στις OWASP mobile security απειλές. Σκοπός του είναι να κάνει αυτή την εργασία πιο εύκολη και φιλική για mobile application developers και security professionals. -Είναι ικανό να: +It is able to: -- Εξάγει κώδικα Java και Smali χρησιμοποιώντας διάφορα εργαλεία -- Αναλύει APKs χρησιμοποιώντας: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) -- Εξάγει ιδιωτικές πληροφορίες από το APK χρησιμοποιώντας regexps. -- Αναλύει το Manifest. -- Αναλύει βρεθέντα domains χρησιμοποιώντας: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) και [whatweb](https://github.com/urbanadventurer/WhatWeb) -- Αποκωδικοποιεί APK μέσω [apk-deguard.com](http://www.apk-deguard.com) +- Extract Java and Smali code using different tools +- Analyze APKs using: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) +- Extract private information from the APK using regexps. +- Analyze the Manifest. +- Analyze found domains using: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) and [whatweb](https://github.com/urbanadventurer/WhatWeb) +- Deobfuscate APK via [apk-deguard.com](http://www.apk-deguard.com) ### Koodous -Χρήσιμο για την ανίχνευση κακόβουλου λογισμικού: [https://koodous.com/](https://koodous.com) +Χρήσιμο για τον εντοπισμό malware: [https://koodous.com/](https://koodous.com) ## Obfuscating/Deobfuscating code -Σημειώστε ότι ανάλογα με την υπηρεσία και τη διαμόρφωση που χρησιμοποιείτε για να αποκρύψετε τον κώδικα. Τα μυστικά μπορεί να είναι ή να μην είναι αποκρυπτογραφημένα. +Σημειώστε ότι ανάλογα με την υπηρεσία και τη ρύθμιση που χρησιμοποιείτε για να obfuscate τον code, τα secrets ενδέχεται να καταλήξουν obfuscated ή όχι. ### [ProGuard]() -Από [Wikipedia](): **ProGuard** είναι ένα εργαλείο γραμμής εντολών ανοιχτού κώδικα που μειώνει, βελτιστοποιεί και αποκρύπτει τον κώδικα Java. Είναι ικανό να βελτιστοποιεί τον bytecode καθώς και να ανιχνεύει και να αφαιρεί μη χρησιμοποιούμενες εντολές. Το ProGuard είναι δωρεάν λογισμικό και διανέμεται υπό την άδεια GNU General Public License, έκδοση 2. +From [Wikipedia](): **ProGuard** is an open source command-line tool that shrinks, optimizes and obfuscates Java code. Μπορεί να optimize το bytecode καθώς και να εντοπίσει και να αφαιρέσει unused instructions. Το ProGuard είναι free software και διανέμεται υπό τη GNU General Public License, version 2. -Το ProGuard διανέμεται ως μέρος του Android SDK και εκτελείται κατά την κατασκευή της εφαρμογής σε λειτουργία κυκλοφορίας. +Το ProGuard διανέμεται ως μέρος του Android SDK και εκτελείται όταν γίνεται build της εφαρμογής σε release mode. ### [DexGuard](https://www.guardsquare.com/dexguard) -Βρείτε έναν οδηγό βήμα προς βήμα για να αποκωδικοποιήσετε το apk στο [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) +Find a step-by-step guide to deobfuscate the apk in [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) -(Από αυτόν τον οδηγό) Την τελευταία φορά που ελέγξαμε, η λειτουργία του Dexguard ήταν: +(From that guide) Last time we checked, the Dexguard mode of operation was: -- φορτώστε έναν πόρο ως InputStream; -- τροφοδοτήστε το αποτέλεσμα σε μια κλάση που κληρονομεί από το FilterInputStream για να το αποκρυπτογραφήσετε; -- κάντε κάποια άχρηστη απόκρυψη για να σπαταλήσετε λίγα λεπτά χρόνου από έναν αναλυτή; -- τροφοδοτήστε το αποκρυπτογραφημένο αποτέλεσμα σε ένα ZipInputStream για να αποκτήσετε ένα αρχείο DEX; -- τελικά φορτώστε το προκύπτον DEX ως Πόρο χρησιμοποιώντας τη μέθοδο `loadDex`. +- load a resource as an InputStream; +- feed the result to a class inheriting from FilterInputStream to decrypt it; +- do some useless obfuscation to waste a few minutes of time from a reverser; +- feed the decrypted result to a ZipInputStream to get a DEX file; +- finally load the resulting DEX as a Resource using the `loadDex` method. ### [DeGuard](http://apk-deguard.com) -**Το DeGuard αντιστρέφει τη διαδικασία απόκρυψης που εκτελούν τα εργαλεία απόκρυψης του Android. Αυτό επιτρέπει πολλές αναλύσεις ασφάλειας, συμπεριλαμβανομένης της επιθεώρησης κώδικα και της πρόβλεψης βιβλιοθηκών.** +**DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries.** -Μπορείτε να ανεβάσετε ένα αποκρυπτογραφημένο APK στην πλατφόρμα τους. +Μπορείτε να ανεβάσετε ένα obfuscated APK στην πλατφόρμα τους. ### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app -Αυτό είναι ένα εργαλείο LLM για να βρείτε τυχόν πιθανές ευπάθειες ασφάλειας σε εφαρμογές android και να αποκωδικοποιήσετε τον κώδικα της εφαρμογής android. Χρησιμοποιεί το δημόσιο API Gemini της Google. +This is a LLM tool to find any potential security vulnerabilities in android apps and deobfuscate android app code. Uses Google's Gemini public API. ### [Simplify](https://github.com/CalebFenton/simplify) -Είναι ένα **γενικό αποκρυπτογραφητή android.** Το Simplify **εκτελεί εικονικά μια εφαρμογή** για να κατανοήσει τη συμπεριφορά της και στη συνέχεια **προσπαθεί να βελτιστοποιήσει τον κώδικα** έτσι ώστε να συμπεριφέρεται ταυτόχρονα αλλά να είναι πιο εύκολο για έναν άνθρωπο να κατανοήσει. Κάθε τύπος βελτιστοποίησης είναι απλός και γενικός, οπότε δεν έχει σημασία ποιος είναι ο συγκεκριμένος τύπος απόκρυψης που χρησιμοποιείται. +Είναι ένας **generic android deobfuscator.** Το Simplify **virtually executes an app** για να κατανοήσει τη συμπεριφορά της και στη συνέχεια **προσπαθεί να optimize τον code** ώστε να συμπεριφέρεται ταυτόσημα αλλά να είναι πιο κατανοητός σε άνθρωπο. Κάθε τύπος optimization είναι απλός και generic, οπότε δεν έχει σημασία ποιος συγκεκριμένος τύπος obfuscation χρησιμοποιείται. ### [APKiD](https://github.com/rednaga/APKiD) -Το APKiD σας δίνει πληροφορίες για **πώς δημιουργήθηκε ένα APK**. Αναγνωρίζει πολλούς **μεταγλωττιστές**, **πακετάρες**, **αποκρυπτογραφητές** και άλλα περίεργα πράγματα. Είναι το [_PEiD_](https://www.aldeid.com/wiki/PEiD) για το Android. +APKiD σας δίνει πληροφορίες για **πώς φτιάχτηκε ένα APK**. Αναγνωρίζει πολλούς **compilers**, **packers**, **obfuscators** και άλλα περίεργα πράγματα. Είναι [_PEiD_](https://www.aldeid.com/wiki/PEiD) για Android. ### Manual -[Διαβάστε αυτό το tutorial για να μάθετε μερικά κόλπα σχετικά με **το πώς να αντιστρέψετε την προσαρμοσμένη απόκρυψη**](manual-deobfuscation.md) +[Read this tutorial to learn some tricks on **how to reverse custom obfuscation**](manual-deobfuscation.md) ## Labs ### [Androl4b](https://github.com/sh4hin/Androl4b) -Το AndroL4b είναι μια εικονική μηχανή ασφάλειας Android βασισμένη στο ubuntu-mate που περιλαμβάνει τη συλλογή των τελευταίων πλαισίων, tutorials και εργαστηρίων από διάφορους ειδικούς και ερευνητές ασφάλειας για αντίστροφη μηχανική και ανάλυση κακόβουλου λογισμικού. +AndroL4b είναι μια Android security virtual machine βασισμένη σε ubuntu-mate που περιλαμβάνει μια συλλογή από τα πιο πρόσφατα frameworks, tutorials και labs από διάφορους security geeks και researchers για reverse engineering και malware analysis. ## References - [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) - [https://appsecwiki.com/#/](https://appsecwiki.com/#/) Είναι μια εξαιρετική λίστα πόρων -- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Γρήγορο μάθημα Android +- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Android quick course - [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/) - [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) - [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec) +- [SSLPinDetect: Advanced SSL Pinning Detection for Android Security Analysis](https://petruknisme.medium.com/sslpindetect-advanced-ssl-pinning-detection-for-android-security-analysis-1390e9eca097) +- [SSLPinDetect GitHub](https://github.com/aancw/SSLPinDetect) +- [smali-sslpin-patterns](https://github.com/aancw/smali-sslpin-patterns) ## Yet to try