mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
7.4 KiB
7.4 KiB
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Υποστήριξη HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Αναγνώριση πακεταρισμένων δυαδικών αρχείων
- έλλειψη συμβολοσειρών: Είναι κοινό να βρείτε ότι τα πακεταρισμένα δυαδικά αρχεία δεν έχουν σχεδόν καμία συμβολοσειρά
- Πολλές μη χρησιμοποιούμενες συμβολοσειρές: Επίσης, όταν ένα κακόβουλο λογισμικό χρησιμοποιεί κάποιο είδος εμπορικού πακετάρη, είναι κοινό να βρείτε πολλές συμβολοσειρές χωρίς διασταυρώσεις. Ακόμα και αν αυτές οι συμβολοσειρές υπάρχουν, αυτό δεν σημαίνει ότι το δυαδικό αρχείο δεν είναι πακεταρισμένο.
- Μπορείτε επίσης να χρησιμοποιήσετε κάποια εργαλεία για να προσπαθήσετε να βρείτε ποιος πακετάρης χρησιμοποιήθηκε για να πακετάρει ένα δυαδικό αρχείο:
- PEiD
- Exeinfo PE
- Language 2000
Βασικές Συστάσεις
- Ξεκινήστε να αναλύετε το πακεταρισμένο δυαδικό αρχείο από το κάτω μέρος στο IDA και προχωρήστε προς τα πάνω. Οι αποπακετάρηδες εξέρχονται μόλις ο αποπακεταρισμένος κώδικας εξέρχεται, οπότε είναι απίθανο ο αποπακετάρης να περάσει την εκτέλεση στον αποπακεταρισμένο κώδικα στην αρχή.
- Αναζητήστε JMP's ή CALLs σε καταχωρητές ή περιοχές της μνήμης. Αναζητήστε επίσης συναρτήσεις που σπρώχνουν παραμέτρους και μια διεύθυνση και στη συνέχεια καλούν
retn
, επειδή η επιστροφή της συνάρτησης σε αυτή την περίπτωση μπορεί να καλέσει τη διεύθυνση που μόλις σπρώχτηκε στο στοίβα πριν την καλέσει. - Βάλτε ένα breakpoint στο
VirtualAlloc
καθώς αυτό εκχωρεί χώρο στη μνήμη όπου το πρόγραμμα μπορεί να γράψει αποπακεταρισμένο κώδικα. "τρέξτε στον κώδικα χρήστη" ή χρησιμοποιήστε το F8 για να πάρετε την τιμή μέσα στο EAX μετά την εκτέλεση της συνάρτησης και "ακολουθήστε αυτή τη διεύθυνση στο dump". Ποτέ δεν ξέρετε αν αυτή είναι η περιοχή όπου θα αποθηκευτεί ο αποπακεταρισμένος κώδικας. VirtualAlloc
με την τιμή "40" ως επιχείρημα σημαίνει Ανάγνωση+Γράψιμο+Εκτέλεση (κάποιος κώδικας που χρειάζεται εκτέλεση θα αντιγραφεί εδώ).- Κατά την αποπακετοποίηση του κώδικα είναι φυσιολογικό να βρείτε πολλές κλήσεις σε αριθμητικές λειτουργίες και συναρτήσεις όπως
memcopy
ήVirtual
Alloc
. Αν βρεθείτε σε μια συνάρτηση που προφανώς εκτελεί μόνο αριθμητικές λειτουργίες και ίσως κάποιαmemcopy
, η σύσταση είναι να προσπαθήσετε να βρείτε το τέλος της συνάρτησης (ίσως ένα JMP ή κλήση σε κάποιον καταχωρητή) ή τουλάχιστον την κλήση στην τελευταία συνάρτηση και να τρέξετε σε αυτήν καθώς ο κώδικας δεν είναι ενδιαφέρον. - Κατά την αποπακετοποίηση του κώδικα σημειώστε όποτε αλλάζετε περιοχή μνήμης καθώς μια αλλαγή περιοχής μνήμης μπορεί να υποδηλώνει την έναρξη του αποπακεταρισμένου κώδικα. Μπορείτε εύκολα να κάνετε dump μια περιοχή μνήμης χρησιμοποιώντας το Process Hacker (process --> properties --> memory).
- Κατά την προσπάθεια αποπακετοποίησης του κώδικα, ένας καλός τρόπος για να γνωρίζετε αν ήδη εργάζεστε με τον αποπακεταρισμένο κώδικα (έτσι ώστε να μπορείτε απλά να το κάνετε dump) είναι να ελέγξετε τις συμβολοσειρές του δυαδικού αρχείου. Αν σε κάποιο σημείο κάνετε ένα άλμα (ίσως αλλάζοντας την περιοχή μνήμης) και παρατηρήσετε ότι προστέθηκαν πολλές περισσότερες συμβολοσειρές, τότε μπορείτε να γνωρίζετε ότι εργάζεστε με τον αποπακεταρισμένο κώδικα.
Ωστόσο, αν ο πακετάρης περιέχει ήδη πολλές συμβολοσειρές, μπορείτε να δείτε πόσες συμβολοσειρές περιέχουν τη λέξη "http" και να δείτε αν αυτός ο αριθμός αυξάνεται. - Όταν κάνετε dump ένα εκτελέσιμο από μια περιοχή μνήμης, μπορείτε να διορθώσετε κάποιες κεφαλίδες χρησιμοποιώντας το PE-bear.