Το Android Pentesting αναφέρεται στη διαδικασία ελέγχου της ασφάλειας των εφαρμογών και των συσκευών Android προκειμένου να εντοπιστούν πιθανά τρωτά σημεία που θα μπορούσαν να αξιοποιηθούν από επιτιθέμενους.
Περιλαμβάνει την αξιολόγηση της κατάστασης ασφαλείας των εφαρμογών και των συστημάτων Android με την προσομοίωση επιθέσεων και την προσπάθεια εκμετάλλευσης αδυναμιών στο σχεδιασμό, την υλοποίηση ή τη διαμόρφωσή τους.
Σε αυτόν τον οδηγό θα κατεβάσουμε τα εργαλεία που χρησιμοποιούνται για να ξεκινήσουμε το Android Pentesting και θα λύσουμε δύο HTB Mobile Challenges.
Τα εργαλεία που θα χρησιμοποιήσουμε θα είναι τα εξής:
- https://developer.android.com/studio – Android Studio (Δωρεάν πόρος για τη δημιουργία εξομοιωτών Android)
- https://developer.android.com/tools/adb – Android Debug Bridge (Android Bridge για τη μεταφορά αρχείων και την εκτέλεση εντολών από το μηχάνημα υποδοχής στον εξομοιωτή)
- https://portswigger.net/burp – Burp Suite (HTTP/S Proxy Program)
- https://frida.re/ – Dynamic instrumentation toolkit.
Τα challenges του HTB θα είναι:
- Pinned – Θα εκτελέσουμε μια παράκαμψη SSL Pinning Bypass.
- Manager Hack εφαρμογή χρησιμοποιώντας το Burp Suite.
Ας ξεκινήσουμε εγκαθιστώντας τα εργαλεία που θα χρησιμοποιήσουμε. Για να χρησιμοποιήσουμε αυτά τα εργαλεία, θα πρέπει να έχουμε εγκαταστήσει τη Java και την Python στον κεντρικό υπολογιστή.
Πρώτα ας εγκαταστήσουμε το Android Studio. Αυτό θα μας επιτρέψει να δημιουργήσουμε εξομοιωτές για δοκιμές αντί να χρησιμοποιούμε μια φυσική συσκευή.
Μόλις κατεβάσετε το Android Studio, μπορείτε να το εγκαταστήσετε. Το Android Studio μπορεί να εγκατασταθεί σε Windows, MacOS και Linux.
Στη συνέχεια θα εγκαταστήσουμε το Burp Suite.
https://portswigger.net/burp/communitydownload
Τέλος, θα εγκαταστήσουμε τη γέφυρα εντοπισμού σφαλμάτων Android (ADB).
https://developer.android.com/tools/adb
Το πρώτο πρόγραμμα που θα χρησιμοποιήσουμε είναι το Android Studio. Αυτό θα μας επιτρέψει να δημιουργήσουμε εξομοιωτές για συσκευές Android.
Όταν ξεκινάμε το Android Studio για πρώτη φορά θα πρέπει να δημιουργήσουμε ένα project.
Θα ονομάσω το project Android Pentesting.
Δημιουργία μιας συσκευής για δοκιμές.
Κάντε κλικ στο τηλέφωνο με το εικονίδιο Android στην επάνω δεξιά γωνία.
Κάντε κλικ στο “Προσθήκη νέας συσκευής…”
Στη συνέχεια επιλέξτε Δημιουργία εικονικής συσκευής.
Πειραματιστείτε ελεύθερα με αυτό το τμήμα. Μπορείτε να ρυθμίσετε πολλαπλές συσκευές με πρόσβαση στο Play Store και να καθορίσετε το API. Για τους σκοπούς αυτού του οδηγού θα χρησιμοποιήσω μια συσκευή Google Pixel 6 που δεν έχει πρόσβαση στο Play Store.
*Σημειώστε ότι μια συσκευή με πρόσβαση στο Google Play Store δεν μπορεί να κάνει root. Οι συσκευές χωρίς το εικονίδιο του Play Store είναι συσκευές με root.
Το επόμενο βήμα είναι η επιλογή της έκδοσης API. Θα χρησιμοποιήσω την έκδοση 28. Μπορείτε να πειραματιστείτε με τις διάφορες εκδόσεις του API.
Το τελευταίο βήμα για αυτό θα είναι η ονομασία της συσκευής μας. Εγώ επέλεξα Pentesting Device. Μπορείτε να την ονομάσετε όπως εσείς προτιμάτε.
Τώρα μπορούμε να κάνουμε κλικ στο κουμπί Play στη δεξιά πλευρά και ο εξομοιωτής μας θα πρέπει να εμφανιστεί. Μπορεί να χρειαστούν μερικά λεπτά κατά την πρώτη εκκίνηση.
Τώρα έχουμε μια συσκευή για να κάνουμε δοκιμές Android. Είναι απολύτως εφικτό να κάνουμε δοκιμές σε μια φυσική συσκευή. Αυτή είναι μια οικονομικά αποδοτική προσέγγιση χωρίς το φόβο του μπρικανισμού ενός τηλεφώνου.
Στη συνέχεια μπορούμε να ρυθμίσουμε το Burp Suite. Μπορείτε να χρησιμοποιήσετε είτε το Community είτε το Pro.
Το πρώτο βήμα για να κάνετε το Burp να λειτουργήσει με τον εξομοιωτή (ή τη φυσική συσκευή, αν αυτό χρησιμοποιείτε) είναι να ρυθμίσετε τον ακροατή μεσολάβησης.
Κάντε κλικ στο μενού Proxy και στη συνέχεια κάντε κλικ στην επιλογή Proxy Settings (Ρυθμίσεις μεσολάβησης).
Στη συνέχεια κάντε κλικ στο 127.0.0.1:8080 και κάντε κλικ στο κουμπί Επεξεργασία.
Αλλάξτε τη διεύθυνση Bind to σε All interfaces (Όλες οι διασυνδέσεις).
Επιστρέφοντας στο τηλέφωνό μας, θέλουμε να ανοίξουμε τις Ρυθμίσεις στη συσκευή μας Pixel.
Από τις Ρυθμίσεις θέλουμε να ανοίξουμε το Network & Internet
Στη συνέχεια θέλουμε να επιλέξουμε Wi-Fi.
Τώρα κάντε κλικ στο Android Wi-Fi.
Τώρα κάντε κλικ στο εικονίδιο του μολυβιού πάνω δεξιά.
Κάντε κλικ στην επιλογή Advance Options και στη συνέχεια Proxy.
Εδώ μπορούμε να ρυθμίσουμε τον πληρεξούσιο μας. Θα πρέπει να χρησιμοποιήσουμε τη διεύθυνση IP του κεντρικού υπολογιστή μας. Η δική μου είναι 192.168.0.224. Θα πρέπει να συγκεντρώσετε την εσωτερική σας διεύθυνση IP από το ipconfig/ifconfig/ip addr.
Η θύρα θα είναι 8080. Αυτή είναι η προεπιλεγμένη θύρα Burp.
Τώρα κάντε κλικ στο κουμπί Αποθήκευση.
Επιστρέφοντας στο Burp βλέπουμε την κυκλοφορία να περνάει, αλλά έχουμε ένα πρόβλημα με το TLS. Στο επόμενο βήμα θα ρυθμίσουμε ένα πιστοποιητικό από το Burp στη συσκευή Android. Με αυτόν τον τρόπο η κυκλοφορία TLS θα λειτουργεί μέσω του διακομιστή μεσολάβησης και του Burp.
Επιστρέφοντας στην ενότητα Proxy Listeners μπορούμε να κάνουμε κλικ στην επιλογή “Εισαγωγή / εξαγωγή πιστοποιητικού CA”. Κάντε κλικ σε αυτό και στη συνέχεια κάντε κλικ στην επιλογή “Εξαγωγή πιστοποιητικού σε μορφή DER”.
Αποθηκεύστε το πιστοποιητικό στο μηχάνημα υποδοχής σας. Εγώ ονόμασα το δικό μου burp.der.
Το επόμενο βήμα θα είναι η χρήση του Android Bridge για τη μεταφορά του πιστοποιητικού στη συσκευή μας.
Χρησιμοποιώντας την εντολή
adb push burp.der /sdcard/burp.crt
θα στείλει το πιστοποιητικό στην sdcard της συσκευής μας.
Μπορούμε τώρα να εγκαταστήσουμε το πιστοποιητικό στη συσκευή μας. Ανοίξτε τις Ρυθμίσεις στη συσκευή και αναζητήστε την επιλογή “Install Cert” (Εγκατάσταση πιστοποιητικού). Κάντε κλικ στην επιλογή Εγκατάσταση πιστοποιητικών από την κάρτα SD.
Στη συνέχεια επιλέξτε “Εγκατάσταση πιστοποιητικού”.
Η συσκευή Android θα σας δώσει αυτή την προειδοποίηση. Κάντε κλικ στο κουμπί Install anyway (Εγκατάσταση) κάτω αριστερά.
Θα πρέπει να αποθηκεύσετε το πιστοποιητικό burp.crt.
Κάντε κλικ στο αρχείο burp.crt και ονομάστε το πιστοποιητικό burp.
Ενδέχεται να σας ζητηθεί να ορίσετε ένα PIN. Εγώ το κράτησα πολύ απλό με 1111.
Μπορείτε να επαληθεύσετε αν το πιστοποιητικό εγκαταστάθηκε αναζητώντας την επιλογή Trusted και κάνοντας κλικ στην επιλογή Trusted credentials.
Κάντε κλικ στο Trusted credentials.
Τώρα κάνοντας κλικ στο USER θα εμφανιστεί το PortSwigger Cert.
Αυτό συμβαίνει όταν κάνω επανεκκίνηση της συσκευής. Όταν επανεκκινήσω τον εξομοιωτή και βεβαιωθώ ότι ο διακομιστής μεσολάβησης εκτελείται στη θύρα 8080, μπορώ να επαληθεύσω ότι η κυκλοφορία HTTPS πλοηγείται τώρα μέσω του Burp Suite. Αυτό σημαίνει ότι μπορούμε τώρα να αναλύσουμε και να δοκιμάσουμε HTTPS και HTTP με το Burp ακριβώς όπως μια ιστοσελίδα.
Αν έχετε προβλήματα, ανατρέξτε στα βήματά σας και δοκιμάστε την επανεκκίνηση του εξομοιωτή και του Burp, αν χρειάζεται.
Το τελευταίο εργαλείο που θα χρειαστούμε για να ολοκληρώσουμε αυτόν τον οδηγό είναι η Frida.
Το Frida μπορείτε να το βρείτε εδώ.
Το Frida μπορεί να εγκατασταθεί με το pip (διαχειριστής πακέτων python)
pip install frida-tools
Τώρα που έχουμε τις εργαστηριακές μας ρυθμίσεις έτοιμες, μπορούμε να προχωρήσουμε στην επίλυση κάποιων προκλήσεων HTB για να βρεθούμε με το Android Pentesting.
Θα ασχοληθούμε με το Pinned και το Manager.
Πρώτα θα κατεβάσουμε το Pinned and Manager από το HTB Challenges. Αφού τα κατεβάσετε, μπορείτε να εξαγάγετε τα αρχεία στο χώρο εργασίας σας. Χρησιμοποίησα την επιφάνεια εργασίας μου για γρήγορη πρόσβαση.
Ο κωδικός πρόσβασης είναι hackthebox για να λάβετε τα αρχεία.
Τώρα έχουμε πρόσβαση στο αρχείο pinned.apk.
Μπορείτε να σύρετε και να αφήσετε το pinned.apk στη συσκευή εξομοιωτή.
Τώρα θα πρέπει να βλέπετε το Pinned στις εφαρμογές σας.
Ανοίγοντας την εφαρμογή θα πρέπει να εμφανιστεί αυτή η φόρμα σύνδεσης. Είμαστε τώρα έτοιμοι να δοκιμάσουμε αυτή την εφαρμογή Android.
Ο στόχος αυτού του εργαστηρίου είναι να εκτελέσετε μια παράκαμψη SSL Pinning Bypass.
Το SSL pinning αναφέρεται σε μια τεχνική ασφαλείας που χρησιμοποιείται για την αποτροπή επιθέσεων man-in-the-middle (MitM) κατά τη δημιουργία ασφαλών συνδέσεων μέσω HTTPS (SSL/TLS) μεταξύ μιας εφαρμογής για κινητά και ενός διακομιστή. Αυτό μας εμποδίζει να βλέπουμε τα αιτήματα/απαντήσεις HTTP στο Burp.
Θα χρησιμοποιήσουμε το Frida για να παρακάμψουμε το SSL Pinning για αυτή την εφαρμογή και να μας επιτρέψει να δούμε τα αιτήματα και τις απαντήσεις HTTP στη σουίτα Burp.
Το τελευταίο εργαλείο που θα χρειαστεί να κατεβάσουμε είναι ο διακομιστής Frida. Αυτό είναι που θα εγκαταστήσουμε στη συσκευή/εξομοιωτή Android για να επικοινωνεί ο πελάτης μας Frida μαζί του.
Μπορείτε να το κατεβάσετε εδώ.
Μπορούμε να εγκαταστήσουμε τον διακομιστή frida ξεκινώντας με τις ακόλουθες εντολές:
unxz frida-server-[version]-android-x86.xz (unzip file) adb push frida-server-16.1.4-android-x86 /data/local/tmp/frida-server (move frida server to /data/local/tmp/) adb shell “chmod 755 /data/local/tmp/frida-server” (change permissions) adb shell (connect to device in shell) /data/local/tmp/frida-server & (start frida server)
Με τον Frida Server να έχει ξεκινήσει στον εξομοιωτή/συσκευή μας, μπορούμε να εκτελέσουμε μια εντολή frida για να εντοπίσουμε τις διεργασίες που εκτελούνται.
frida-ps -Uai
Θα πρέπει να δούμε το Pinned apk μας να τρέχει. Αυτό σημαίνει ότι μπορούμε να αλληλεπιδράσουμε με αυτή την εφαρμογή.
Τώρα πρέπει να χρησιμοποιήσουμε ένα Frida script για να εκτελέσουμε την παράκαμψη του SSL Pinning.
Θα αξιοποιήσουμε αυτό το script.
Πρέπει να κάνουμε μια τελευταία προετοιμασία. Η ανάγνωση του σεναρίου αποκαλύπτει ότι χρειαζόμαστε ένα πιστοποιητικό για να το εκτελέσουμε. Η εκτέλεση χωρίς το πιστοποιητικό θα προκαλέσει αποτυχία του σεναρίου Frida και θα οδηγήσει σε αυτό το σφάλμα:
Μπορούμε να χρησιμοποιήσουμε το ίδιο cert που εξάγουμε από το Burp Suite, το οποίο επίσης αποθηκεύσαμε στον εξομοιωτή στο /sdcard. Εκτέλεση:
adb shell “cp /sdcard/burp.crt /data/local/tmp/cert-der.crt” adb shell “chmod 755 /data/local/tmp/cert-der.crt” (change permissions)
Αυτό θα πάρει το πιστοποιητικό burp που τοποθετήσαμε εκεί νωρίτερα και θα αντιγράψει το πιστοποιητικό σε αυτό που ψάχνει το script.
Τώρα για να εκτελέσετε το script παράκαμψης της Frida SSL Pinning Bypass. Για να χρησιμοποιήσουμε το script μπορούμε να εκτελέσουμε:
frida -U –codeshare pcipolloni/universal-android-ssl-pinning-bypass-with-frida -f com.example.pinned
Το script μας Frida θα πρέπει να ενεργοποιηθεί και να ανοίξει το Pinned στον εξομοιωτή μας.
Κάνοντας κλικ στο Login θα πρέπει τώρα να στείλετε ένα αίτημα μέσω του Burp. Αυτό σημαίνει ότι για αυτή την εφαρμογή έχουμε παρακάμψει το SSL Pinning και μπορούμε να αναλύσουμε τα αιτήματα HTTP.
Εδώ στο Burp μπορούμε να δούμε το αίτημα POST και τη σημαία.
Το τελευταίο εργαστήριο θα είναι για το Manager. Σκοπός του εργαστηρίου είναι η ανάλυση των αιτήσεων HTTP και η εύρεση ενός προβλήματος στη λογική της εφαρμογής μέσω του Broken Access Control.
Στο Hack the Box μπορούμε να κατεβάσουμε το Manager.zip και να το αποσυμπιέσουμε με κωδικό hackthebox. Σημειώστε ότι αυτή η πρόκληση χρειάζεται έναν back end διακομιστή για να επικοινωνήσει. Βεβαιωθείτε ότι έχετε ενεργοποιήσει την περίπτωση και λάβετε τη δημόσια διεύθυνση IP και τη θύρα.
Με το αρχείο Manager.apk μπορούμε να το σύρουμε στον εξομοιωτή Android για να το εγκαταστήσουμε.
Μπορούμε τώρα να δούμε τον Manager στον εξομοιωτή.
Ανοίγοντας την εφαρμογή εμφανίζονται είσοδοι για τη διεύθυνση IP και τη θύρα από το HTB.
Εισάγοντας τη διεύθυνση IP και τη θύρα από το HTB και κάνοντας κλικ στο connect θα εμφανιστεί μια φόρμα σύνδεσης.
Η προσπάθεια σύνδεσης ως test:test εμφανίζει το μήνυμα “User Not Found”.
Επιστρέφοντας στο Burp μπορούμε να δούμε το αίτημα POST.
Ας προσπαθήσουμε να καταχωρήσουμε έναν χρήστη για την εφαρμογή. Θα χρησιμοποιήσω το test:test.
Με τον δοκιμαστικό χρήστη που δημιουργήθηκε, μπορούμε να δοκιμάσουμε αυτές τις αιτήσεις για να δούμε αν θα βρούμε τυχόν προβλήματα.
Ας αναλύσουμε το αίτημα στο Repeater.
Μπορούμε να ενημερώσουμε με επιτυχία τον κωδικό πρόσβασής μας. Τι θα γινόταν αν μπορούσαμε να ενημερώσουμε έναν άλλο χρήστη;
Μπορούμε να ενημερώσουμε με επιτυχία τον κωδικό πρόσβασης του διαχειριστή λόγω παραβίασης της εποπτείας του ελέγχου πρόσβασης.
Τώρα μπορούμε να συνδεθούμε ως διαχειριστής με τον κωδικό πρόσβασης test και να ανακτήσουμε το flag.
Αυτό ολοκληρώνει αυτόν τον εισαγωγικό οδηγό για το Android Pentesting.