Υπάρχουν πολυάριθμα εργαλεία που είναι δωρεάν και διαθέσιμα στους επαγγελματίες ασφαλείας για να βοηθήσουν στην ανάλυση κακόβουλου λογισμικού. Το Ghidra κυκλοφόρησε για πρώτη φορά πριν από μερικά χρόνια και έχει αποδειχθεί σχετικά δημοφιλές λόγω του ότι είναι ένα δωρεάν εργαλείο που μπορεί να χρησιμοποιηθεί για την ανάλυση κακόβουλου λογισμικού.
Ωστόσο, πολλοί άνθρωποι που είναι νέοι σε αυτού του είδους τα εργαλεία συχνά δυσκολεύονται να μάθουν πώς να χρησιμοποιούν το Ghidra. Γι’αυτό είμαι εδώ να σας δείξω πως να το χρησιμοποιήσετε.
Σε αυτό το άρθρο θα δούμε τι είναι το Ghidra, πώς να το εγκαταστήσετε και μερικές χρήσιμες συμβουλές που θα σας βοηθήσουν να ξεκινήσετε να χρησιμοποιείτε αυτό το εργαλείο για την ανάλυση κακόβουλου λογισμικού.
Table of Contents
Τι είναι το Ghidra;
Το Ghidra είναι ένα
εργαλείο που αναπτύχθηκε από την NSA και κυκλοφόρησε το 2019. Είναι ιδιαίτερα δημοφιλές στους αναλυτές κακόβουλου λογισμικού, καθώς είναι αυτό που είναι γνωστό ως εργαλείο . Αυτό επιτρέπει σε έναν αναλυτή κακόβουλου λογισμικού να επιθεωρήσει τη λειτουργικότητα ενός δείγματος κακόβουλου λογισμικού χωρίς να το εκτελέσει και αυτό είναι εξαιρετικά χρήσιμο, καθώς ο αναλυτής είναι σε θέση να εξετάσει τον κώδικα του κακόβουλου λογισμικού και να χαρτογραφήσει τη λειτουργία που κάνει.Η διαφορά μεταξύ του Ghidra και ενός εργαλείου όπως το x64dbg είναι ότι το x64dbg είναι ένας
, που σημαίνει ότι θα εκτελέσει πραγματικά το κακόβουλο λογισμικό καθώς θα προχωράτε και θα αναλύετε τον κώδικα. Έτσι, αν βρείτε μια ενδιαφέρουσα λειτουργία στο x64dbg, για παράδειγμα, που κρυπτογραφεί όλα τα αρχεία, θα εκτελέσει αυτή τη λειτουργία και θα κρυπτογραφήσει όλα τα αρχεία στο μηχάνημα που χρησιμοποιείτε για την ανάλυση του κακόβουλου λογισμικού.Ένα
εργαλείο, όπως το Ghidra, δεν εκτελεί τον κώδικα, αλλά χαρτογραφεί τον κώδικα του κακόβουλου λογισμικού και επιτρέπει στον χρήστη να αναλύσει τον κώδικα χωρίς να επηρεάσει το σύστημα αρχείων της συσκευής ανάλυσης. Αυτό καθιστά το Ghidra ένα ιδανικό εργαλείο για τον εντοπισμό και τη χαρτογράφηση λειτουργιών που μπορεί να έχουν περαιτέρω ενδιαφέρον για έναν αναλυτή κακόβουλου λογισμικού.Αποποίηση ευθυνών: Το Ghidra πρέπει να χρησιμοποιείται μόνο σε περιβάλλον sandboxed, όπως μια εικονική μηχανή σχεδιασμένη για την ανάλυση κακόβουλου λογισμικού, μην επιχειρήσετε να αναλύσετε κακόβουλο λογισμικό στο λειτουργικό σύστημα του υπολογιστή σας.
Πώς να εγκαταστήσετε το Ghidra
Για να εγκαταστήσετε το Ghidra στα Windows, μεταβείτε στον επίσημο ιστότοπο του Ghidra όπως φαίνεται παρακάτω:
Επιλέξτε ‘
‘, αυτό θα σας μεταφέρει στη σελίδα Ghidra Github, όπου μπορείτε να κατεβάσετε την τελευταία έκδοση του λογισμικού.Κατεβάστε το αρχείο zip και αποσυμπιέστε τα περιεχόμενα σε μια τοποθεσία της επιλογής σας, αφού τα αποσυμπιέσετε θα πρέπει να έχετε τα ακόλουθα αρχεία:
Για να εκκινήσετε το Ghidra, κάντε διπλό κλικ στο αρχείο δέσμης των Windows που ονομάζεται ‘ghidraRun’, μπορεί να εμφανιστεί το ακόλουθο μήνυμα σφάλματος:
Μπορείτε να το διορθώσετε ακολουθώντας τα βήματα στον παρακάτω οδηγό.
Μόλις ανοίξει, θα εμφανιστούν τα ακόλουθα παράθυρα, το παράθυρο “
” και το παράθυρο “ “. Το παράθυρο “ ” είναι αρκετά αυτονόητο και μπορεί να κλείσει.Για να αρχίσετε να χρησιμοποιείτε το Ghidra και να αναλύσετε ένα δείγμα, πρέπει πρώτα να δημιουργήσετε ένα project το οποίο χρησιμοποιείται για την αποθήκευση του δείγματος και των αρχείων που παράγει το Ghidra.
Για να ξεκινήσετε, επιλέξτε ‘File’ και στη συνέχεια ‘New Project’.
Επιλέξτε αν θέλετε να μοιραστείτε το project ή όχι, σε αυτό το παράδειγμα, θα επιλέξω ‘
‘ και θα κάνω κλικ στο ‘ ‘.Στη συνέχεια, δώστε ένα όνομα στο project σας, το οποίο μπορεί να είναι το όνομα του δείγματος κακόβουλου λογισμικού που αναλύεται, και κάντε κλικ στο ‘Finish’ (Τέλος).
Τώρα έχουμε ένα
και μπορούμε να κάνουμε drop τα δείγματα κακόβουλου λογισμικού στο project για ανάλυση.Έπειτα βλέπουμε ένα αρχείο που έχει προστεθεί στο project με το όνομα ‘remcos.exe’, και το Ghidra μας λέει ότι έχει αναγνωρίσει το αρχείο ως ένα αρχείο Windows PE 32bit.
Κάντε κλικ στο ok και το Ghidra θα αρχίσει να εισάγει το αρχείο.
Μόλις το αρχείο εισαχθεί επιτυχώς στο Ghidra, θα εμφανιστεί το ακόλουθο παράθυρο που παρέχει λεπτομέρειες σχετικά με το εισαχθέν αρχείο.
Επιλέξτε “OK” και στη συνέχεια, κάντε διπλό κλικ στο όνομα του εισαγόμενου κακόβουλου λογισμικού ή πατήστε το εικονίδιο με το λογότυπο του δράκου για να ανοίξετε το πρόγραμμα περιήγησης του κώδικα.
Θα εμφανιστεί η ακόλουθη προτροπή που ενημερώνει ότι το Ghidra δεν έχει ακόμη αναλύσει το αρχείο και σας ρωτά αν θέλετε να το αναλύσετε τώρα, επιλέξτε ‘Yes’.
Στη συνέχεια, θα εμφανιστεί το ακόλουθο παράθυρο σχετικά με τις επιλογές ανάλυσης, από εδώ επιλέξτε την επιλογή που έχω επισημάνει και ονομάζεται ‘WindowsPE x86 Propagate External Parameters’. Αυτό βοηθάει κατά την ανάλυση μιας εισαγόμενης συνάρτησης, καθώς οι παράμετροι της συνάρτησης που θα προωθηθούν στη στοίβα θα παρατίθενται μέσα στο εργαλείο.
Επιλέξτε ‘Analyze’, και το Ghidra θα αρχίσει να αναλύει το αρχείο, η γραμμή κατάστασης στην κάτω δεξιά γωνία του Ghidra θα εμφανίζει μια γραμμή κατάστασης που δείχνει την πρόοδο της ανάλυσης.
Μόλις ολοκληρωθεί η διαδικασία, το Ghidra είναι έτοιμο για να ξεκινήσετε το
του δείγματος του κακόβουλου λογισμικού.Reverse Engineering με το Ghidra
Όταν ανοίγετε ένα κακόβουλο λογισμικό στο Ghidra που έχει εισαχθεί και αναλυθεί από το εργαλείο, θα δείτε έναν αριθμό παραθύρων.
Κύρια παράθυρα του Ghidra
Στην επάνω αριστερή γωνία, υπάρχει ένα παράθυρο που περιέχει τα τμήματα του κακόβουλου λογισμικού, αυτό είναι το τμήμα ‘Program Trees’ (Δέντρα προγραμμάτων). Εάν έχετε χρησιμοποιήσει ένα εργαλείο όπως το PeStudio στο παρελθόν, τότε αυτό θα πρέπει να σας είναι οικείο.
Η ενότητα “
” είναι πολύ χρήσιμη, καθώς περιέχει τις εισαγωγές, τις εξαγωγές και τις συναρτήσεις που χρησιμοποιεί το κακόβουλο λογισμικό για να εκτελέσει τις κακόβουλες δραστηριότητές του.Κάνοντας κλικ στο ‘Imports’ μπορούμε να δούμε ποιες βιβλιοθήκες έχουν εισαχθεί από το κακόβουλο λογισμικό, κάνοντας κλικ σε ένα DLL αποκαλύπτει τις εισαγόμενες συναρτήσεις που σχετίζονται με αυτή τη βιβλιοθήκη.
Από την εξέταση των εισαγωγών είναι στη συνέχεια δυνατό να εντοπιστούν οποιεσδήποτε ενδιαφέρουσες λειτουργίες που χρησιμοποιεί το κακόβουλο λογισμικό.Αυτό είναι εξαιρετικό για έναν αναλυτή κακόβουλου λογισμικού, καθώς σημαίνει ότι μπορούμε να κάνουμε διπλό κλικ σε αυτές τις εισαγωγές για να δούμε αν χρησιμοποιούνται από το κακόβουλο λογισμικό και να προσπαθήσουμε να κατανοήσουμε ποια δραστηριότητα μπορεί να εκτελέσει σε έναν εκτεθειμένο υπολογιστή.
Το ίδιο μπορεί να γίνει και με την καρτέλα
για να δούμε ποιες λειτουργίες έχουν εξαχθεί από το κακόβουλο λογισμικό, ωστόσο, δεν υπάρχουν εξαγωγές στο δείγμα κακόβουλου λογισμικού σε αυτό το αρχείο που αναλύουμε.Το ‘Symbol Tree’ περιέχει όλες τις λειτουργίες που έχουν γραφτεί από τον developer του κακόβουλου λογισμικού. Όταν το Ghidra εισάγει και στη συνέχεια αναλύει το κακόβουλο λογισμικό, θα προσπαθήσει να αποδώσει ονόματα σε ορισμένες από τις λειτουργίες με βάση την αυτοματοποιημένη ανάλυση που έχει πραγματοποιήσει.
Στην παρακάτω εικόνα μια από τις συναρτήσεις ονομάζεται ‘CreateToolhelp32Snapshot’, αυτό είναι το όνομα μιας εισαγόμενης συνάρτησης που χρησιμοποιείται για την απαρίθμηση των διεργασιών που εκτελούνται σε μια συσκευή, οπότε το Ghidra είδε ότι αυτή η εισαγωγή χρησιμοποιείται σε αυτή τη συνάρτηση και την ονόμασε ανάλογα.
Μπορούμε επίσης να δούμε μερικές συναρτήσεις που έχουν μια σύμβαση
που αρχίζει με ‘FUN_’ και στη συνέχεια μια σειρά αριθμών.Πρόκειται για συναρτήσεις που δεν έχουν οριστεί από την Ghidra και γι’ αυτό ονομάζονται ‘FUN_’, που είναι η συντομογραφία της συνάρτησης, και στη συνέχεια τους δίνεται μια δεκαεξαδική αριθμητική τιμή που αντιπροσωπεύει τη θέση της συνάρτησης στο δυαδικό σύστημα.
Υπάρχει επίσης μια καταχώριση για το ‘entry’, αυτό είναι το σημείο εισόδου του κακόβουλου λογισμικού, και κάνοντας διπλό κλικ σε αυτό, το κύριο παράθυρο ‘Listing’ του Ghidra θα ενημερωθεί και θα εμφανίσει τον κώδικα συναρμολόγησης στο σημείο εισόδου του κακόβουλου λογισμικού.
Στην παραπάνω εικόνα βλέπουμε τις οδηγίες συναρμολόγησης και τις πληροφορίες που ωθούνται στη στοίβα αλλά και τις διάφορες κλήσεις που γίνονται σε αυτές. Αυτές οι πληροφορίες μπορούν να μας δώσουν μια ιδέα για το τι κάνει το κακόβουλο λογισμικό, εστιάζοντας σε τυχόν κλήσεις σε ενδιαφέροντα API που παρατίθενται στο παράθυρο ‘Symbol Tree’ του Ghidra.
Κάνοντας κλικ στο ‘entry’, το παράθυρο ‘Decompile’ θα ενημερωθεί τώρα και θα περιέχει κάποια δεδομένα. Αυτό το παράθυρο δείχνει πού προσπάθησε το Ghidra να μετατρέψει τον κώδικα συναρμολόγησης στο παράθυρο ‘Listing’ σε κώδικα προγραμματισμού C. Αυτό επιτρέπει στον αναλυτή κακόβουλου λογισμικού να δει πώς μπορεί να έμοιαζε ο κώδικας του developer του κακόβουλου λογισμικού και να βοηθήσει στην ανάλυση του κακόβουλου λογισμικού.
Γράφημα συνάρτησης
Μια άλλη απεικόνιση που θα βοηθήσει στην ανάλυση κακόβουλου λογισμικού είναι η χρήση του γραφήματος συναρτήσεων, το οποίο μπορεί να χρησιμοποιηθεί επιλέγοντας το εικονίδιο ‘Display Function Graph’ (Εμφάνιση γραφήματος συναρτήσεων) στη γραμμή εργαλείων του Ghidra.
Αυτό θα εκκινήσει μια γραφική αναπαράσταση της συνάρτησης που εμφανίζεται αυτή τη στιγμή στο παράθυρο ‘Listing’.
Η μεγέθυνση του γραφήματος επιτρέπει στον αναλυτή να δει με μεγαλύτερη σαφήνεια τις αποφάσεις που λαμβάνει το κακόβουλο λογισμικό και τη ροή που ακολουθεί το κακόβουλο λογισμικό ανάλογα με ορισμένες συνθήκες.
Στην παραπάνω εικόνα έχω επισημάνει το σημείο όπου έχω εντοπίσει ότι η συνάρτηση καλεί το ‘GetStartupInfoA’, οπότε αυτό μου λέει ότι η συνάρτηση αυτή ανακτά τις πληροφορίες εκκίνησης της παραβιασμένης συσκευής.
Κάνοντας διπλό κλικ στο όνομα οποιασδήποτε συνάρτησης που καλείται μέσα στο γράφημα, ο χρήστης θα μεταβεί στη συγκεκριμένη συνάρτηση και θα ενημερώσει την οθόνη ώστε να εμφανίζεται η νέα επιλεγμένη συνάρτηση.
Αναζήτηση Strings
Κάνοντας κλικ στην επιλογή ‘Windows’ στην καρτέλα της γραμμής εργαλείων και επιλέγοντας ‘Defined Strings’, το Ghidra θα απαριθμήσει τις συμβολοσειρές μέσα στο εκτελέσιμο αρχείο.
Αυτό είναι χρήσιμο, καθώς το
κακόβουλο λογισμικό συχνά περιέχει συμβολοσειρές που μπορεί να υποδεικνύουν τι κάνει το κακόβουλο λογισμικό μόλις παραβιάσει έναν κεντρικό υπολογιστή. Μόλις επιλεγεί αυτή η επιλογή, θα εμφανιστεί το ακόλουθο παράθυρο:Εδώ μπορούμε να δούμε ότι το κακόβουλο λογισμικό μπορεί να δημιουργεί κάποια
, καθώς η θέση μητρώου ‘Software\\Microsoft\\Windows\CurrentVersion\Run’ όπου αναφέρεται, είναι ένας κοινός μηχανισμός για κακόβουλο λογισμικό.Υπάρχει επίσης ένα αρχείο που αναφέρεται με την ονομασία ‘install.bat’, αυτό θα ήταν τώρα ένα αρχείο που θα με ενδιέφερε να ανακτήσω από την ανάλυση του κακόβουλου λογισμικού. Κάνοντας διπλό κλικ σε οποιαδήποτε από αυτές τις συμβολοσειρές θα σας μεταφέρει στο σημείο όπου βρίσκονται στο δυαδικό αρχείο, οπότε οι προβολές ‘Listing’, ‘Decompile’ και ‘Function Graph’ μπορούν να χρησιμοποιηθούν για περαιτέρω διερεύνηση του σημείου όπου βρίσκονται αυτές οι συμβολοσειρές και τι κάνει το κακόβουλο λογισμικό με αυτά τα δεδομένα.
Στην παρακάτω εικόνα έχω κάνει διπλό κλικ στο ‘install.bat’, το παράθυρο ‘Listing’ έχει ενημερωθεί για να δείξει πού βρίσκεται αυτή η συμβολοσειρά μέσα στο δυαδικό αρχείο.
Στην παραπάνω εικόνα βλέπουμε επίσης τη συμβολοσειρά ‘XREF[1]’ και στη συνέχεια το όνομα της συνάρτησης. Το Ghidra λέει στο χρήστη ότι έχει διασταυρώσει τη συμβολοσειρά ‘install.bat’ και παραθέτει το όνομα της συνάρτησης όπου βρίσκεται η συμβολοσειρά.
Κάνοντας διπλό κλικ στο όνομα της συνάρτησης θα εμφανιστεί η συνάρτηση αυτή στο παράθυρο ‘Listing’ του Ghidra και το σημείο όπου βρίσκεται η συμβολοσειρά ‘install.bat’.
Για χάρη του demo ας πούμε ότι έχω πλέον αναλύσει αυτή τη συνάρτηση και έχω διαπιστώσει ότι η install.bat δημιουργείται στο δίσκο και όταν εκτελείται δημιουργεί ένα κλειδί εκτέλεσης που ξεκινά το κακόβουλο λογισμικό κάθε φορά που γίνεται εκκίνηση του εκτεθειμένου κεντρικού υπολογιστή.
Κοιτάζοντας την παραπάνω εικόνα δεν θα θυμάμαι ποτέ τη συνάρτηση που ονομάζεται ‘FUN_00040560d’, οπότε για να βοηθήσω στην ανάλυσή μου θα της δώσω ένα άλλο όνομα.
Αυτό μπορεί να γίνει κάνοντας δεξί κλικ στη συνάρτηση και επιλέγοντας ‘Edit Function’ (Επεξεργασία συνάρτησης).
Αυτό θα ανοίξει το ακόλουθο παράθυρο:
Χρησιμοποιώντας το πεδίο “
“, το όνομα της συνάρτησης μπορεί τώρα να αλλάξει σε κάτι πιο αξιομνημόνευτο.Αυτό είναι χρήσιμο επειδή το όνομα αυτής της συνάρτησης θα αλλάξει τώρα σε όλο το project στο Ghidra και είναι τώρα εμφανές στην ενότητα “
” στην ενότητα “ “:
Τέλος
Το Ghidra είναι ένα χρήσιμο εργαλείο που πρέπει να έχετε απαραιτήτως για την ανάλυση κακόβουλου λογισμικού. Ελπίζουμε ότι αυτό το άρθρο σας έδωσε μια επισκόπηση του τρόπου με τον οποίο το εργαλείο μπορεί να χρησιμοποιηθεί για την περαιτέρω διερεύνηση συγκεκριμένων λειτουργιών σε ένα δείγμα κακόβουλου λογισμικού. Να θυμάστε ότι όταν χρησιμοποιείτε ένα εργαλείο όπως το Ghidra μπορεί να είναι πολύ χρονοβόρο να ξεκινήσετε από το σημείο εισόδου και να αρχίσετε να αναλύετε κάθε γραμμή κώδικα.
Αντ’ αυτού, χρησιμοποιήστε ορισμένα από τα χαρακτηριστικά που έχω αναφέρει σε αυτή τη δημοσίευση, και εξετάστε τη λειτουργικότητα του κακόβουλου λογισμικού. Πολλές από τις εισαγωγές μπορεί να παρουσιάζουν ενδιαφέρον, υπάρχουν κάποιες που χρησιμοποιούνται για τη σύνδεση στο διαδίκτυο ή την κρυπτογράφηση των δεδομένων. Εξετάστε πού χρησιμοποιούνται αυτές οι εισαγωγές στο κακόβουλο λογισμικό και δείτε αν μπορείτε να εντοπίσετε για ποιο λόγο που το κακόβουλο λογισμικό χρησιμοποιεί αυτές τις λειτουργίες. Το ίδιο μπορεί να γίνει και με τυχόν κάποιες συμβολοσειρές. Κοιτάξτε πού βρίσκονται στο κακόβουλο λογισμικό και δείτε τι κάνει το κακόβουλο λογισμικό με αυτά τα δεδομένα.