Manual DeObfuscation
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Στον τομέα της ασφάλειας λογισμικού, η διαδικασία καθιστώντας τον κωδικό που έχει αποκρυφτεί κατανοητό, γνωστή ως de-obfuscation, είναι κρίσιμη. Αυτός ο οδηγός εξερευνά διάφορες στρατηγικές για την απο-αποκρυπτογράφηση, εστιάζοντας σε τεχνικές στατικής ανάλυσης και αναγνώριση προτύπων απόκρυψης. Επιπλέον, εισάγει μια άσκηση για πρακτική εφαρμογή και προτείνει περαιτέρω πόρους για όσους ενδιαφέρονται να εξερευνήσουν πιο προχωρημένα θέματα.
Όταν ασχολείστε με obfuscated code, μπορούν να χρησιμοποιηθούν αρκετές στρατηγικές ανάλογα με τη φύση της απόκρυψης:
DEX bytecode (Java): Μια αποτελεσματική προσέγγιση περιλαμβάνει την αναγνώριση των μεθόδων απο-αποκρυπτογράφησης της εφαρμογής, και στη συνέχεια την αναπαραγωγή αυτών των μεθόδων σε ένα αρχείο Java. Αυτό το αρχείο εκτελείται για να αντιστρέψει την απόκρυψη στα στοχευμένα στοιχεία.
Java και Native Code: Μια άλλη μέθοδος είναι να μεταφράσετε τον αλγόριθμο απο-αποκρυπτογράφησης σε μια γλώσσα scripting όπως η Python. Αυτή η στρατηγική τονίζει ότι ο κύριος στόχος δεν είναι να κατανοηθεί πλήρως ο αλγόριθμος αλλά να εκτελείται αποτελεσματικά.
Η αναγνώριση του αποκρυφθέντος κώδικα είναι το πρώτο βήμα στη διαδικασία απο-αποκρυπτογράφησης. Κύριοι δείκτες περιλαμβάνουν:
Η έλλειψη ή η ανακατασκευή συμβολοσειρών σε Java και Android, που μπορεί να υποδηλώνει απόκρυψη συμβολοσειρών.
Η παρουσία δυαδικών αρχείων στον κατάλογο assets ή κλήσεις προς DexClassLoader
, υποδεικνύοντας αποσυμπίεση κώδικα και δυναμική φόρτωση.
Η χρήση native libraries μαζί με μη αναγνωρίσιμες JNI functions, υποδεικνύοντας πιθανή απόκρυψη των native methods.
Με την εκτέλεση του κώδικα σε ελεγχόμενο περιβάλλον, η δυναμική ανάλυση επιτρέπει την παρατήρηση του πώς συμπεριφέρεται ο αποκρυφθέν κώδικας σε πραγματικό χρόνο. Αυτή η μέθοδος είναι ιδιαίτερα αποτελεσματική στην αποκάλυψη των εσωτερικών λειτουργιών πολύπλοκων προτύπων απόκρυψης που έχουν σχεδιαστεί για να κρύβουν την αληθινή πρόθεση του κώδικα.
Runtime Decryption: Πολλές τεχνικές απόκρυψης περιλαμβάνουν την κρυπτογράφηση συμβολοσειρών ή τμημάτων κώδικα που αποκρυπτογραφούνται μόνο κατά την εκτέλεση. Μέσω της δυναμικής ανάλυσης, αυτά τα κρυπτογραφημένα στοιχεία μπορούν να καταγραφούν τη στιγμή της αποκρυπτογράφησης, αποκαλύπτοντας την αληθινή τους μορφή.
Identifying Obfuscation Techniques: Παρακολουθώντας τη συμπεριφορά της εφαρμογής, η δυναμική ανάλυση μπορεί να βοηθήσει στην αναγνώριση συγκεκριμένων τεχνικών απόκρυψης που χρησιμοποιούνται, όπως η εικονικοποίηση κώδικα, οι packers ή η δυναμική δημιουργία κώδικα.
Uncovering Hidden Functionality: Ο αποκρυφθέν κώδικας μπορεί να περιέχει κρυφές λειτουργίες που δεν είναι προφανείς μόνο μέσω στατικής ανάλυσης. Η δυναμική ανάλυση επιτρέπει την παρατήρηση όλων των διαδρομών κώδικα, συμπεριλαμβανομένων εκείνων που εκτελούνται υπό προϋποθέσεις, για να αποκαλύψει τέτοιες κρυφές λειτουργίες.
BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” [video]
Αυτή η ομιλία καλύπτει την αντίστροφη μηχανική μιας από τις πιο πολύπλοκες βιβλιοθήκες anti-analysis που έχω δει να χρησιμοποιούνται από μια εφαρμογή Android. Καλύπτει κυρίως τεχνικές απόκρυψης σε native code.
REcon 2019: “The Path to the Payload: Android Edition” [video]
Αυτή η ομιλία συζητά μια σειρά τεχνικών απόκρυψης, αποκλειστικά σε Java code, που χρησιμοποιούσε ένα botnet Android για να κρύψει τη συμπεριφορά του.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)