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

Η μεταγλώττιση συμβαίνει όταν ο υπολογιστής παίρνει τον κώδικα που μπορεί να διαβάσει ο άνθρωπος και τον μετατρέπει σε εντολές που μπορεί να κατανοήσει ο επεξεργαστής, δημιουργώντας στατικά αρχεία. Για παράδειγμα, μεταγλωττίζει κώδικα C ή C++ σε εκτελέσιμα αρχεία όπως .exe ή .dll για τα Windows.

Τί είναι τα κακόβουλα scripts;

Τα scripts έχουν γίνει όλο και πιο δημοφιλή τα τελευταία χρόνια, κυρίως επειδή αποφεύγουν αποτελεσματικά τις παραδοσιακές ανιχνεύσεις στα endpoints και είναι εύκολα στην απόκρυψη.

Οι hackers γενικά τα χρησιμοποιούν με δύο τρόπους:

  • Προσθέτουν ένα script που εκτελεί ένα βήμα επίθεσης σε compiled malware για να εκτελέσει μια εντολή ή να κατεβάσει ένα payload.
  • Δημιουργούν malware χρησιμοποιώντας απευθείας μια γλώσσα scripting. Ένα παράδειγμα είναι το Lu0bot, το οποίο είναι γραμμένο σε Node.js.

Συγκεκριμένα, το WSHRAT πρόκειται για ένα RAT γραμμένο σε JavaScript, γνωστό για τη χρήση πολλαπλών κλήσεων JS, δημιουργώντας μια πολύπλοκη δομή. Παράλληλα, Lu0Bot είναι ένα botnet γραμμένο σε Node.js και διακρίνεται για τη συσκευασία με έναν διερμηνέα NodeJS. Στην ίδια κατηγορία ανήκει και το STRRAT, ένα RAT γραμμένο σε JavaScript που ανήκει στην κατηγορία των compiled Java-based malware, το οποίο αποσυμπιέζεται κατά την εκτέλεση. Τέλος, το Jsoutprox είναι ένα script-based backdoor γραμμένο σε JavaScript, παρέχοντας κρυφή πρόσβαση στο σύστημα.

Διαβάστε περισσότερα: Monocle: Open-Source LLM για αναζήτηση δυαδικής ανάλυσης

Παρά την ύπαρξη αποτελεσματικών μεθόδων ανίχνευσης, όπως οι κανόνες YARA για μεταγλωττισμένο κακόβουλο λογισμικό, οι σύγχρονες απειλές όπως το Mirai και το FormBook εξακολουθούν να παραμένουν. Ωστόσο, οι hackers στρέφονται πλέον στη χρήση κακόβουλων scripts, τα οποία ξεφεύγουν από την παραδοσιακή ανίχνευση στα τελικά σημεία και είναι πιο εύκολο να παραμείνουν κρυφά. Τα scripts αυτά μπορεί να αποτελούν μέρος του μεταγλωττισμένου κακόβουλου λογισμικού ή να είναι γραμμένα εξ ολοκλήρου σε script γλώσσες, όπως το Node.js, το JavaScript και το PowerShell.

Χαρακτηριστικά των κακόβουλων scripts

Τα βασικά χαρακτηριστικά των κακόβουλων scripts περιλαμβάνουν την εκτέλεση χωρίς αρχεία, τη λειτουργία στη μνήμη χωρίς να αφήνουν ίχνη, και τη χρήση ενσωματωμένων βοηθητικών προγραμμάτων του λειτουργικού συστήματος. Συχνά αξιοποιούν γλώσσες όπως JavaScript, PowerShell, batch scripts, VBScript και JScript στα Windows, καθώς και shell scripts στο Linux. Ορισμένα από ατα scripts απαιτούν επιπλέον περιβάλλοντα εκτέλεσης ή λογισμικό, όπως το JavaScript που χρειάζεται web browser ή Node.js server και το Python που απαιτεί εγκατεστημένο διερμηνέα.


Scripting Language Execution Environment

JavaScript Web browsers (e.g., Chrome, Firefox), Node.js runtime

JScript Windows OS, Internet Explorer

VBScript Windows OS, Microsoft Office applications (e.g., Word, Excel)

PowerShell Windows OS, built-in Windows tool

Batch Scripts Windows OS, command-line interface

Shell Scripts (Bash) Unix/Linux OS, command-line interface

Python Scripts Cross-platform (Windows, macOS, Linux)

Πώς να αναλύσετε κακόβουλα scripts και script-based κακόβουλο λογισμικό (Malware);

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

Δείτε ακόμη: Galaxy Z Fold 6 και Flip 6 υιοθετούν το dual-screen για μετάφραση, όπως το Pixel Fold

Οι δυναμικές μέθοδοι, όπως το sandboxing, θεωρούνται γενικά πιο αποτελεσματικές από τις στατικές μεθόδους, ειδικά για κακόβουλο λογισμικό που στηρίζεται σε scripts, λόγω του ότι το reverse-engineering μιας μη ξεκάθαρης βάσης κωδικών (codebase) είναι απίστευτα χρονοβόρα. Αυτή η περίπλοκη ανάλυση, αλλάζει τα ονόματα μεταβλητών, κωδικοποιεί συμβολοσειρές και προσθέτει επίπεδα πολυπλοκότητας, όπως η κρυπτογράφηση. Σε τέτοιες περιπτώσεις, είναι πιο πρακτικό να επικεντρωνόμαστε στη ροή εκτέλεσης και στη συμπεριφορά του προγράμματος αντί να προσπαθούμε να αποκωδικοποιήσουμε έναν όχι και τόσο σαφή source-code (πηγαίο κώδικα).

Πηγή: any.run