mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
41 lines
7.0 KiB
Markdown
41 lines
7.0 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Χειροκίνητες **Τεχνικές Απο-αποκρυπτογράφησης**
|
||
|
||
Στον τομέα της **ασφάλειας λογισμικού**, η διαδικασία καθιστώντας τον κωδικό που έχει αποκρυφθεί κατανοητό, γνωστή ως **απο-αποκρυπτογράφηση**, είναι κρίσιμη. Αυτός ο οδηγός εξετάζει διάφορες στρατηγικές για την απο-αποκρυπτογράφηση, εστιάζοντας σε τεχνικές στατικής ανάλυσης και αναγνώριση προτύπων αποκρυπτογράφησης. Επιπλέον, εισάγει μια άσκηση για πρακτική εφαρμογή και προτείνει περαιτέρω πόρους για όσους ενδιαφέρονται να εξερευνήσουν πιο προχωρημένα θέματα.
|
||
|
||
### **Στρατηγικές για Στατική Απο-αποκρυπτογράφηση**
|
||
|
||
Όταν ασχολείστε με **αποκρυφωμένο κώδικα**, μπορούν να χρησιμοποιηθούν αρκετές στρατηγικές ανάλογα με τη φύση της αποκρυπτογράφησης:
|
||
|
||
- **DEX bytecode (Java)**: Μια αποτελεσματική προσέγγιση περιλαμβάνει την αναγνώριση των μεθόδων απο-αποκρυπτογράφησης της εφαρμογής, και στη συνέχεια την αναπαραγωγή αυτών των μεθόδων σε ένα αρχείο Java. Αυτό το αρχείο εκτελείται για να αντιστρέψει την αποκρυπτογράφηση στα στοχευμένα στοιχεία.
|
||
- **Java και Native Code**: Μια άλλη μέθοδος είναι να μεταφράσετε τον αλγόριθμο απο-αποκρυπτογράφησης σε μια γλώσσα scripting όπως η Python. Αυτή η στρατηγική τονίζει ότι ο κύριος στόχος δεν είναι να κατανοηθεί πλήρως ο αλγόριθμος αλλά να εκτελείται αποτελεσματικά.
|
||
|
||
### **Αναγνώριση Αποκρυπτογράφησης**
|
||
|
||
Η αναγνώριση του αποκρυφωμένου κώδικα είναι το πρώτο βήμα στη διαδικασία απο-αποκρυπτογράφησης. Κύριοι δείκτες περιλαμβάνουν:
|
||
|
||
- Η **απουσία ή η ανακατωμένη μορφή των συμβολοσειρών** σε Java και Android, που μπορεί να υποδηλώνει αποκρυπτογράφηση συμβολοσειρών.
|
||
- Η **παρουσία δυαδικών αρχείων** στον κατάλογο assets ή κλήσεις προς `DexClassLoader`, υποδεικνύοντας αποσυμπίεση κώδικα και δυναμική φόρτωση.
|
||
- Η χρήση **native βιβλιοθηκών μαζί με μη αναγνωρίσιμες JNI συναρτήσεις**, υποδεικνύοντας πιθανή αποκρυπτογράφηση των native μεθόδων.
|
||
|
||
## **Δυναμική Ανάλυση στην Απο-αποκρυπτογράφηση**
|
||
|
||
Με την εκτέλεση του κώδικα σε ελεγχόμενο περιβάλλον, η δυναμική ανάλυση **επιτρέπει την παρατήρηση του πώς συμπεριφέρεται ο αποκρυφωμένος κώδικας σε πραγματικό χρόνο**. Αυτή η μέθοδος είναι ιδιαίτερα αποτελεσματική στην αποκάλυψη των εσωτερικών λειτουργιών πολύπλοκων προτύπων αποκρυπτογράφησης που έχουν σχεδιαστεί για να κρύβουν την αληθινή πρόθεση του κώδικα.
|
||
|
||
### **Εφαρμογές Δυναμικής Ανάλυσης**
|
||
|
||
- **Αποκρυπτογράφηση σε Χρόνο Εκτέλεσης**: Πολλές τεχνικές αποκρυπτογράφησης περιλαμβάνουν την κρυπτογράφηση συμβολοσειρών ή τμημάτων κώδικα που αποκρυπτογραφούνται μόνο κατά την εκτέλεση. Μέσω της δυναμικής ανάλυσης, αυτά τα κρυπτογραφημένα στοιχεία μπορούν να καταγραφούν τη στιγμή της αποκρυπτογράφησης, αποκαλύπτοντας την αληθινή τους μορφή.
|
||
- **Αναγνώριση Τεχνικών Αποκρυπτογράφησης**: Παρακολουθώντας τη συμπεριφορά της εφαρμογής, η δυναμική ανάλυση μπορεί να βοηθήσει στην αναγνώριση συγκεκριμένων τεχνικών αποκρυπτογράφησης που χρησιμοποιούνται, όπως η εικονικοποίηση κώδικα, οι packers ή η δυναμική δημιουργία κώδικα.
|
||
- **Ανακάλυψη Κρυφής Λειτουργικότητας**: Ο αποκρυφωμένος κώδικας μπορεί να περιέχει κρυφές λειτουργίες που δεν είναι προφανείς μόνο μέσω στατικής ανάλυσης. Η δυναμική ανάλυση επιτρέπει την παρατήρηση όλων των διαδρομών κώδικα, συμπεριλαμβανομένων εκείνων που εκτελούνται υπό προϋποθέσεις, για να αποκαλύψει τέτοιες κρυφές λειτουργίες.
|
||
|
||
## Αναφορές και Περαιτέρω Ανάγνωση
|
||
|
||
- [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
|
||
- BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
|
||
- Αυτή η ομιλία καλύπτει την αντίστροφη μηχανική μιας από τις πιο πολύπλοκες βιβλιοθήκες anti-analysis που έχω δει να χρησιμοποιούνται από μια εφαρμογή Android. Καλύπτει κυρίως τεχνικές αποκρυπτογράφησης σε native κώδικα.
|
||
- REcon 2019: “The Path to the Payload: Android Edition” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
|
||
- Αυτή η ομιλία συζητά μια σειρά τεχνικών αποκρυπτογράφησης, αποκλειστικά σε κώδικα Java, που χρησιμοποιούσε ένα Android botnet για να κρύψει τη συμπεριφορά του.
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|