Ανάλυση κακόβουλου λογισμικού με το Ghidra

Υπάρχουν πολυάριθμα εργαλεία που είναι δωρεάν και διαθέσιμα στους επαγγελματίες ασφαλείας για να βοηθήσουν στην ανάλυση κακόβουλου λογισμικού. Το Ghidra κυκλοφόρησε για πρώτη φορά πριν από μερικά χρόνια και έχει αποδειχθεί σχετικά δημοφιλές λόγω του ότι είναι ένα δωρεάν εργαλείο που μπορεί να χρησιμοποιηθεί για την ανάλυση κακόβουλου λογισμικού.

Ωστόσο, πολλοί άνθρωποι που είναι νέοι σε αυτού του είδους τα εργαλεία συχνά δυσκολεύονται να μάθουν πώς να χρησιμοποιούν το . Γι’αυτό είμαι εδώ να σας δείξω πως να το χρησιμοποιήσετε.

Σε αυτό το άρθρο θα δούμε τι είναι το Ghidra, πώς να το εγκαταστήσετε και μερικές χρήσιμες συμβουλές που θα σας βοηθήσουν να ξεκινήσετε να χρησιμοποιείτε αυτό το εργαλείο για την ανάλυση κακόβουλου λογισμικού.

ghidra0

Τι είναι το Ghidra;

Το Ghidra είναι ένα εργαλείο που αναπτύχθηκε από την NSA και κυκλοφόρησε το 2019. Είναι ιδιαίτερα δημοφιλές στους αναλυτές κακόβουλου λογισμικού, καθώς είναι αυτό που είναι γνωστό ως εργαλείο disassembly. Αυτό επιτρέπει σε έναν αναλυτή κακόβουλου λογισμικού να επιθεωρήσει τη λειτουργικότητα ενός δείγματος κακόβουλου λογισμικού χωρίς να το εκτελέσει και αυτό είναι εξαιρετικά χρήσιμο, καθώς ο αναλυτής είναι σε θέση να εξετάσει τον κώδικα του κακόβουλου λογισμικού και να χαρτογραφήσει τη λειτουργία που κάνει.

Η διαφορά μεταξύ του Ghidra και ενός εργαλείου όπως το x64dbg είναι ότι το x64dbg είναι ένας debugger, που σημαίνει ότι θα εκτελέσει πραγματικά το κακόβουλο λογισμικό καθώς θα προχωράτε και θα αναλύετε τον κώδικα. Έτσι, αν βρείτε μια ενδιαφέρουσα λειτουργία στο x64dbg, για παράδειγμα, που κρυπτογραφεί όλα τα αρχεία, θα εκτελέσει αυτή τη λειτουργία και θα κρυπτογραφήσει όλα τα αρχεία στο μηχάνημα που χρησιμοποιείτε για την ανάλυση του κακόβουλου λογισμικού.

Ένα disassembly εργαλείο, όπως το Ghidra, δεν εκτελεί τον κώδικα, αλλά χαρτογραφεί τον κώδικα assembly του κακόβουλου λογισμικού και επιτρέπει στον χρήστη να αναλύσει τον κώδικα χωρίς να επηρεάσει το σύστημα αρχείων της συσκευής ανάλυσης. Αυτό καθιστά το Ghidra ένα ιδανικό εργαλείο για τον εντοπισμό και τη χαρτογράφηση λειτουργιών που μπορεί να έχουν περαιτέρω ενδιαφέρον για έναν αναλυτή κακόβουλου λογισμικού.

Αποποίηση ευθυνών: Το Ghidra πρέπει να χρησιμοποιείται μόνο σε περιβάλλον sandboxed, όπως μια εικονική μηχανή σχεδιασμένη για την ανάλυση κακόβουλου λογισμικού, μην επιχειρήσετε να αναλύσετε κακόβουλο λογισμικό στο λειτουργικό σύστημα του υπολογιστή σας.

Πώς να εγκαταστήσετε το Ghidra

Για να εγκαταστήσετε το Ghidra στα Windows, μεταβείτε στον επίσημο ιστότοπο του Ghidra όπως φαίνεται παρακάτω:

ghidra

Επιλέξτε ‘Download from Github‘, αυτό θα σας μεταφέρει στη σελίδα Ghidra Github, όπου μπορείτε να κατεβάσετε την τελευταία έκδοση του λογισμικού.

ghidra1

Κατεβάστε το αρχείο zip και αποσυμπιέστε τα περιεχόμενα σε μια τοποθεσία της επιλογής σας, αφού τα αποσυμπιέσετε θα πρέπει να έχετε τα ακόλουθα αρχεία:

ghidra2

Για να εκκινήσετε το Ghidra, κάντε διπλό κλικ στο αρχείο δέσμης των Windows που ονομάζεται ‘ghidraRun’, μπορεί να εμφανιστεί το ακόλουθο μήνυμα σφάλματος:

ghidra3

Μπορείτε να το διορθώσετε ακολουθώντας τα βήματα στον παρακάτω οδηγό.

Μόλις ανοίξει, θα εμφανιστούν τα ακόλουθα παράθυρα, το παράθυρο “Active Project” και το παράθυρο “Tip of the Day“. Το παράθυρο “Tip of the Day” είναι αρκετά αυτονόητο και μπορεί να κλείσει.

ghidra4

Για να αρχίσετε να χρησιμοποιείτε το Ghidra και να αναλύσετε ένα δείγμα, πρέπει πρώτα να δημιουργήσετε ένα project το οποίο χρησιμοποιείται για την αποθήκευση του δείγματος και των αρχείων που παράγει το Ghidra.

Για να ξεκινήσετε, επιλέξτε ‘File’ και στη συνέχεια ‘New Project’.

ghidra5

Επιλέξτε αν θέλετε να μοιραστείτε το project ή όχι, σε αυτό το παράδειγμα, θα επιλέξω ‘Non-Shared Project‘ και θα κάνω κλικ στο ‘Next‘.

ghidra6

Στη συνέχεια, δώστε ένα όνομα στο project σας, το οποίο μπορεί να είναι το όνομα του δείγματος κακόβουλου λογισμικού που αναλύεται, και κάντε κλικ στο ‘Finish’ (Τέλος).

Τώρα έχουμε ένα project και μπορούμε να κάνουμε drop τα δείγματα κακόβουλου λογισμικού στο project για ανάλυση.

Έπειτα βλέπουμε ένα αρχείο που έχει προστεθεί στο project με το όνομα ‘remcos.exe’, και το Ghidra μας λέει ότι έχει αναγνωρίσει το αρχείο ως ένα αρχείο Windows PE 32bit.

Κάντε κλικ στο ok και το Ghidra θα αρχίσει να εισάγει το αρχείο.

Μόλις το αρχείο εισαχθεί επιτυχώς στο Ghidra, θα εμφανιστεί το ακόλουθο παράθυρο που παρέχει λεπτομέρειες σχετικά με το εισαχθέν αρχείο.

ghidra7

Επιλέξτε “OK” και στη συνέχεια, κάντε διπλό κλικ στο όνομα του εισαγόμενου κακόβουλου λογισμικού ή πατήστε το εικονίδιο με το λογότυπο του δράκου για να ανοίξετε το πρόγραμμα περιήγησης του κώδικα.

Θα εμφανιστεί η ακόλουθη προτροπή που ενημερώνει ότι το Ghidra δεν έχει ακόμη αναλύσει το αρχείο και σας ρωτά αν θέλετε να το αναλύσετε τώρα, επιλέξτε ‘Yes’.

ghidra8

Στη συνέχεια, θα εμφανιστεί το ακόλουθο παράθυρο σχετικά με τις επιλογές ανάλυσης, από εδώ επιλέξτε την επιλογή που έχω επισημάνει και ονομάζεται ‘WindowsPE x86 Propagate External Parameters’. Αυτό βοηθάει κατά την ανάλυση μιας εισαγόμενης συνάρτησης, καθώς οι παράμετροι της συνάρτησης που θα προωθηθούν στη στοίβα θα παρατίθενται μέσα στο εργαλείο.

ghidra9

Επιλέξτε ‘Analyze’, και το Ghidra θα αρχίσει να αναλύει το αρχείο, η γραμμή κατάστασης στην κάτω δεξιά γωνία του Ghidra θα εμφανίζει μια γραμμή κατάστασης που δείχνει την πρόοδο της ανάλυσης.

ghidra10

Μόλις ολοκληρωθεί η διαδικασία, το Ghidra είναι έτοιμο για να ξεκινήσετε το reverse engineering του δείγματος του κακόβουλου λογισμικού.

Reverse Engineering με το Ghidra

Όταν ανοίγετε ένα κακόβουλο λογισμικό στο Ghidra που έχει εισαχθεί και αναλυθεί από το εργαλείο, θα δείτε έναν αριθμό παραθύρων.

Κύρια παράθυρα του Ghidra

Στην επάνω αριστερή γωνία, υπάρχει ένα παράθυρο που περιέχει τα τμήματα του κακόβουλου λογισμικού, αυτό είναι το τμήμα ‘Program Trees’ (Δέντρα προγραμμάτων). Εάν έχετε χρησιμοποιήσει ένα εργαλείο όπως το PeStudio στο παρελθόν, τότε αυτό θα πρέπει να σας είναι οικείο.

ghidra11

Η ενότητα “Symbol Tree” είναι πολύ χρήσιμη, καθώς περιέχει τις εισαγωγές, τις εξαγωγές και τις συναρτήσεις που χρησιμοποιεί το κακόβουλο λογισμικό για να εκτελέσει τις κακόβουλες δραστηριότητές του.

ghidra12

Κάνοντας κλικ στο ‘Imports’ μπορούμε να δούμε ποιες βιβλιοθήκες έχουν εισαχθεί από το κακόβουλο λογισμικό, κάνοντας κλικ σε ένα DLL αποκαλύπτει τις εισαγόμενες συναρτήσεις που σχετίζονται με αυτή τη βιβλιοθήκη.

ghidra13

Από την εξέταση των εισαγωγών είναι στη συνέχεια δυνατό να εντοπιστούν οποιεσδήποτε ενδιαφέρουσες λειτουργίες που χρησιμοποιεί το κακόβουλο λογισμικό.Αυτό είναι εξαιρετικό για έναν αναλυτή κακόβουλου λογισμικού, καθώς σημαίνει ότι μπορούμε να κάνουμε διπλό κλικ σε αυτές τις εισαγωγές για να δούμε αν χρησιμοποιούνται από το κακόβουλο λογισμικό και να προσπαθήσουμε να κατανοήσουμε ποια δραστηριότητα μπορεί να εκτελέσει σε έναν εκτεθειμένο υπολογιστή.

Το ίδιο μπορεί να γίνει και με την καρτέλα Exports για να δούμε ποιες λειτουργίες έχουν εξαχθεί από το κακόβουλο λογισμικό, ωστόσο, δεν υπάρχουν εξαγωγές στο δείγμα κακόβουλου λογισμικού σε αυτό το αρχείο που αναλύουμε.

  Τι είναι το Open XDR και ποια τα οφέλη του

Το ‘Symbol Tree’ περιέχει όλες τις λειτουργίες που έχουν γραφτεί από τον developer του κακόβουλου λογισμικού. Όταν το Ghidra εισάγει και στη συνέχεια αναλύει το κακόβουλο λογισμικό, θα προσπαθήσει να αποδώσει ονόματα σε ορισμένες από τις λειτουργίες με βάση την αυτοματοποιημένη ανάλυση που έχει πραγματοποιήσει.

Στην παρακάτω εικόνα μια από τις συναρτήσεις ονομάζεται ‘CreateToolhelp32Snapshot’, αυτό είναι το όνομα μιας εισαγόμενης συνάρτησης που χρησιμοποιείται για την απαρίθμηση των διεργασιών που εκτελούνται σε μια συσκευή, οπότε το Ghidra είδε ότι αυτή η εισαγωγή χρησιμοποιείται σε αυτή τη συνάρτηση και την ονόμασε ανάλογα.

ghidra14

Μπορούμε επίσης να δούμε μερικές συναρτήσεις που έχουν μια σύμβαση convention που αρχίζει με ‘FUN_’ και στη συνέχεια μια σειρά αριθμών.

Πρόκειται για συναρτήσεις που δεν έχουν οριστεί από την Ghidra και γι’ αυτό ονομάζονται ‘FUN_’, που είναι η συντομογραφία της συνάρτησης, και στη συνέχεια τους δίνεται μια δεκαεξαδική αριθμητική τιμή που αντιπροσωπεύει τη θέση της συνάρτησης στο δυαδικό σύστημα.

Υπάρχει επίσης μια καταχώριση για το ‘entry’, αυτό είναι το σημείο εισόδου του κακόβουλου λογισμικού, και κάνοντας διπλό κλικ σε αυτό, το κύριο παράθυρο ‘Listing’ του Ghidra θα ενημερωθεί και θα εμφανίσει τον κώδικα συναρμολόγησης στο σημείο εισόδου του κακόβουλου λογισμικού.

ghidra15

Στην παραπάνω εικόνα βλέπουμε τις οδηγίες συναρμολόγησης και τις πληροφορίες που ωθούνται στη στοίβα αλλά και τις διάφορες κλήσεις που γίνονται σε αυτές. Αυτές οι πληροφορίες μπορούν να μας δώσουν μια ιδέα για το τι κάνει το κακόβουλο λογισμικό, εστιάζοντας σε τυχόν κλήσεις σε ενδιαφέροντα API που παρατίθενται στο παράθυρο ‘Symbol Tree’ του Ghidra.

Κάνοντας κλικ στο ‘entry’, το παράθυρο ‘Decompile’ θα ενημερωθεί τώρα και θα περιέχει κάποια δεδομένα. Αυτό το παράθυρο δείχνει πού προσπάθησε το Ghidra να μετατρέψει τον κώδικα συναρμολόγησης στο παράθυρο ‘Listing’ σε κώδικα προγραμματισμού C. Αυτό επιτρέπει στον αναλυτή κακόβουλου λογισμικού να δει πώς μπορεί να έμοιαζε ο κώδικας του developer του κακόβουλου λογισμικού και να βοηθήσει στην ανάλυση του κακόβουλου λογισμικού.

ghidra16

Γράφημα συνάρτησης

Μια άλλη απεικόνιση που θα βοηθήσει στην ανάλυση κακόβουλου λογισμικού είναι η χρήση του γραφήματος συναρτήσεων, το οποίο μπορεί να χρησιμοποιηθεί επιλέγοντας το εικονίδιο ‘Display Function Graph’ (Εμφάνιση γραφήματος συναρτήσεων) στη γραμμή εργαλείων του Ghidra.

ghidra17

Αυτό θα εκκινήσει μια γραφική αναπαράσταση της συνάρτησης που εμφανίζεται αυτή τη στιγμή στο παράθυρο ‘Listing’.

ghidra18

Η μεγέθυνση του γραφήματος επιτρέπει στον αναλυτή να δει με μεγαλύτερη σαφήνεια τις αποφάσεις που λαμβάνει το κακόβουλο λογισμικό και τη ροή που ακολουθεί το κακόβουλο λογισμικό ανάλογα με ορισμένες συνθήκες.

ghidra19

Στην παραπάνω εικόνα έχω επισημάνει το σημείο όπου έχω εντοπίσει ότι η συνάρτηση καλεί το ‘GetStartupInfoA’, οπότε αυτό μου λέει ότι η συνάρτηση αυτή ανακτά τις πληροφορίες εκκίνησης της παραβιασμένης συσκευής.

Κάνοντας διπλό κλικ στο όνομα οποιασδήποτε συνάρτησης που καλείται μέσα στο γράφημα, ο χρήστης θα μεταβεί στη συγκεκριμένη συνάρτηση και θα ενημερώσει την οθόνη ώστε να εμφανίζεται η νέα επιλεγμένη συνάρτηση.

Αναζήτηση Strings

Κάνοντας κλικ στην επιλογή ‘Windows’ στην καρτέλα της γραμμής εργαλείων και επιλέγοντας ‘Defined Strings’, το Ghidra θα απαριθμήσει τις συμβολοσειρές μέσα στο εκτελέσιμο αρχείο.

ghidra20

Αυτό είναι χρήσιμο, καθώς το unpacked κακόβουλο λογισμικό συχνά περιέχει συμβολοσειρές που μπορεί να υποδεικνύουν τι κάνει το κακόβουλο λογισμικό μόλις παραβιάσει έναν κεντρικό υπολογιστή. Μόλις επιλεγεί αυτή η επιλογή, θα εμφανιστεί το ακόλουθο παράθυρο:

ghidra21

Εδώ μπορούμε να δούμε ότι το κακόβουλο λογισμικό μπορεί να δημιουργεί κάποια persistence, καθώς η θέση μητρώου ‘Software\\Microsoft\\Windows\CurrentVersion\Run’ όπου αναφέρεται, είναι ένας κοινός μηχανισμός persistence για κακόβουλο λογισμικό.

Υπάρχει επίσης ένα αρχείο που αναφέρεται με την ονομασία ‘install.bat’, αυτό θα ήταν τώρα ένα αρχείο που θα με ενδιέφερε να ανακτήσω από την ανάλυση του κακόβουλου λογισμικού. Κάνοντας διπλό κλικ σε οποιαδήποτε από αυτές τις συμβολοσειρές θα σας μεταφέρει στο σημείο όπου βρίσκονται στο δυαδικό αρχείο, οπότε οι προβολές ‘Listing’, ‘Decompile’ και ‘Function Graph’ μπορούν να χρησιμοποιηθούν για περαιτέρω διερεύνηση του σημείου όπου βρίσκονται αυτές οι συμβολοσειρές και τι κάνει το κακόβουλο λογισμικό με αυτά τα δεδομένα.

Στην παρακάτω εικόνα έχω κάνει διπλό κλικ στο ‘install.bat’, το παράθυρο ‘Listing’ έχει ενημερωθεί για να δείξει πού βρίσκεται αυτή η συμβολοσειρά μέσα στο δυαδικό αρχείο.

ghidra22

Στην παραπάνω εικόνα βλέπουμε επίσης τη συμβολοσειρά ‘XREF[1]’ και στη συνέχεια το όνομα της συνάρτησης. Το Ghidra λέει στο χρήστη ότι έχει διασταυρώσει τη συμβολοσειρά ‘install.bat’ και παραθέτει το όνομα της συνάρτησης όπου βρίσκεται η συμβολοσειρά.

Κάνοντας διπλό κλικ στο όνομα της συνάρτησης θα εμφανιστεί η συνάρτηση αυτή στο παράθυρο ‘Listing’ του Ghidra και το σημείο όπου βρίσκεται η συμβολοσειρά ‘install.bat’.

Για χάρη του demo ας πούμε ότι έχω πλέον αναλύσει αυτή τη συνάρτηση και έχω διαπιστώσει ότι η install.bat δημιουργείται στο δίσκο και όταν εκτελείται δημιουργεί ένα κλειδί εκτέλεσης που ξεκινά το κακόβουλο λογισμικό κάθε φορά που γίνεται εκκίνηση του εκτεθειμένου κεντρικού υπολογιστή.

Κοιτάζοντας την παραπάνω εικόνα δεν θα θυμάμαι ποτέ τη συνάρτηση που ονομάζεται ‘FUN_00040560d’, οπότε για να βοηθήσω στην ανάλυσή μου θα της δώσω ένα άλλο όνομα.

Αυτό μπορεί να γίνει κάνοντας δεξί κλικ στη συνάρτηση και επιλέγοντας ‘Edit Function’ (Επεξεργασία συνάρτησης).

ghidra23

Αυτό θα ανοίξει το ακόλουθο παράθυρο:

ghidra24

Χρησιμοποιώντας το πεδίο “Function Name“, το όνομα της συνάρτησης μπορεί τώρα να αλλάξει σε κάτι πιο αξιομνημόνευτο.

ghidra25

Αυτό είναι χρήσιμο επειδή το όνομα αυτής της συνάρτησης θα αλλάξει τώρα σε όλο το project στο Ghidra και είναι τώρα εμφανές στην ενότητα “Symbol Tree” στην ενότητα “Functions“:

ghidra26

 

Τέλος

Το Ghidra είναι ένα χρήσιμο εργαλείο που πρέπει να έχετε απαραιτήτως για την ανάλυση κακόβουλου λογισμικού. Ελπίζουμε ότι αυτό το άρθρο σας έδωσε μια επισκόπηση του τρόπου με τον οποίο το εργαλείο μπορεί να χρησιμοποιηθεί για την περαιτέρω διερεύνηση συγκεκριμένων λειτουργιών σε ένα δείγμα κακόβουλου λογισμικού. Να θυμάστε ότι όταν χρησιμοποιείτε ένα εργαλείο όπως το Ghidra μπορεί να είναι πολύ χρονοβόρο να ξεκινήσετε από το σημείο εισόδου και να αρχίσετε να αναλύετε κάθε γραμμή κώδικα.

Αντ’ αυτού, χρησιμοποιήστε ορισμένα από τα χαρακτηριστικά που έχω αναφέρει σε αυτή τη δημοσίευση, και εξετάστε τη λειτουργικότητα του κακόβουλου λογισμικού. Πολλές από τις εισαγωγές μπορεί να παρουσιάζουν ενδιαφέρον, υπάρχουν κάποιες που χρησιμοποιούνται για τη σύνδεση στο διαδίκτυο ή την κρυπτογράφηση των δεδομένων. Εξετάστε πού χρησιμοποιούνται αυτές οι εισαγωγές στο κακόβουλο λογισμικό και δείτε αν μπορείτε να εντοπίσετε για ποιο λόγο που το κακόβουλο λογισμικό χρησιμοποιεί αυτές τις λειτουργίες. Το ίδιο μπορεί να γίνει και με τυχόν κάποιες συμβολοσειρές. Κοιτάξτε πού βρίσκονται στο κακόβουλο λογισμικό και δείτε τι κάνει το κακόβουλο λογισμικό με αυτά τα δεδομένα.

Ghidra,ghidra linux,ghidra scripting,ghidra graph view,reverse engineering

Written by Anastasis Vasileiadis

Οι μεταφράσεις είναι σαν τις γυναίκες. Όταν είναι ωραίες δεν είναι πιστές και όταν είναι πιστές δεν είναι ωραίες.

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Το μήνυμα σας δεν θα δημοσιευτεί εάν:
1. Περιέχει υβριστικά, συκοφαντικά, ρατσιστικά, προσβλητικά ή ανάρμοστα σχόλια.
2. Προκαλεί βλάβη σε ανηλίκους.
3. Παρενοχλεί την ιδιωτική ζωή και τα ατομικά και κοινωνικά δικαιώματα άλλων χρηστών.
4. Διαφημίζει προϊόντα ή υπηρεσίες ή διαδικτυακούς τόπους .
5. Περιέχει προσωπικές πληροφορίες (διεύθυνση, τηλέφωνο κλπ).